# CheckCreate [[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/CreateCheck.cpp) Create an on-ledger [check](/es-es/docs/concepts/payment-types/checks), which is a deferred payment that can be cashed by its intended destination. The sender of this transaction is the sender of the check. Checks ## Example JSON ```json { "TransactionType": "CheckCreate", "Account": "rUn84CUYbNjRoTQ6mSW7BVJPSVJNLb1QLo", "Destination": "rfkE1aSy9G8Upk4JssnwBxhEv5p4mn2KTy", "SendMax": "100000000", "Expiration": 570113521, "InvoiceID": "6F1DFD1D0FE8A32E40E1F2C05CF1C15545BAB56B617F9C6C2D63A6B704BEF59B", "DestinationTag": 1, "Fee": "12" } ``` ## Fields In addition to the [common fields](/docs/references/protocol/transactions/common-fields), transactions use the following fields: | Field | JSON Type | [Internal Type](/docs/references/protocol/binary-format) | Description | | --- | --- | --- | --- | | `Destination` | String | AccountID | The unique address of the [account](/es-es/docs/concepts/accounts) that can cash the Check. | | `SendMax` | [Currency Amount](/docs/references/protocol/data-types/basic-data-types#specifying-currency-amounts) | Amount | Maximum amount of source currency the Check is allowed to debit the sender, including [transfer fees](/es-es/docs/concepts/tokens/fungible-tokens/transfer-fees) on non-XRP currencies. The Check can only credit the destination with the same currency (from the same issuer, for non-XRP currencies). For non-XRP amounts, the nested field names MUST be lower-case. | | `DestinationTag` | Number | UInt32 | *(Optional)* Arbitrary tag that identifies the reason for the Check, or a hosted recipient to pay. | | `Expiration` | Number | UInt32 | *(Optional)* Time after which the Check is no longer valid, in [seconds since the Ripple Epoch](/docs/references/protocol/data-types/basic-data-types#specifying-time). | | `InvoiceID` | String | UInt256 | *(Optional)* Arbitrary 256-bit hash representing a specific reason or identifier for this Check. | ## Error Cases - If the `Destination` account is blocking incoming Checks, the transaction fails with the result code `tecNO_PERMISSION`. - If the `Destination` is the sender of the transaction, the transaction fails with the result code `temREDUNDANT`. - If the `Destination` [account](/es-es/docs/concepts/accounts) does not exist in the ledger, the transaction fails with the result code `tecNO_DST`. - If the `Destination` account has the `RequireDest` flag enabled but the transaction does not include a `DestinationTag` field, the transaction fails with the result code `tecDST_TAG_NEEDED`. - If `SendMax` specifies a token which is [frozen](/es-es/docs/concepts/tokens/fungible-tokens/freezes), the transaction fails with the result `tecFROZEN`. - If the `Expiration` of the transaction is in the past, the transaction fails with the result `tecEXPIRED`. - If the sender does not have enough XRP to meet the [owner reserve](/es-es/docs/concepts/accounts/reserves#owner-reserves) after adding the Check, the transaction fails with the result `tecINSUFFICIENT_RESERVE`. - If either the sender or the destination of the Check cannot own more objects in the ledger, the transaction fails with the result `tecDIR_FULL`. ## See Also - [Check entry](/docs/references/protocol/ledger-data/ledger-entry-types/check)