
A payment the receiver pulls
4 minDifficulty Checked 2026-11-10- A check names one receiver and a maximum amount. Only that receiver can cash it.
- No funds are set aside. Money moves only when the check is cashed.
- The check is a ledger object. It costs its sender one owner reserve until it is gone.
A normal payment is a push. You send, and the money lands.
A check is a pull. You write a note on the ledger that says: "This account may take up to 50 XRP from me." The receiver picks it up when they want. That step is called cashing the check.
It works like a paper check:
- You name who can cash it. Nobody else can.
- You set the most it can take. The receiver can take less.
- Your balance does not change when you write it.
- If your balance is too low when they cash it, cashing fails. They can try again later.
That last point is the big difference from an escrow or a payment channel. Those lock the money up front. A check locks nothing. It is a promise, and the ledger does not back it with funds.
Why use one?
- The receiver says yes. Some accounts block payments from strangers. A check lets them accept your money by their own action.
- Flexible amounts. The receiver can cash for an exact amount or for as much as is there.
- A familiar shape. Banks and businesses already think in checks.
Checks work for XRP and for tokens. They have been on mainnet since 2020-06-18.
CheckCreate creates a Check ledger entry. Fields:
| Field | Required | Meaning |
|---|---|---|
Destination | Yes | The only account that can cash the check |
SendMax | Yes | The most the check can debit the sender, transfer fees included |
Expiration | No | Time after which the check cannot be cashed |
DestinationTag | No | Tag for a hosted recipient or a reason |
InvoiceID | No | A 256-bit hash chosen by the sender |
The check can only credit the receiver in the same currency as SendMax, from the same issuer for tokens. There is no currency conversion inside a check.
The Check entry is linked from both owner directories, but it counts toward the sender's owner reserve only: one item, 0.2 XRP today. The reserve frees up when the check is cashed or canceled.
The entry's ID is a hash of the sender's address and the Sequence of the CheckCreate (or its TicketSequence). The receiver needs this CheckID to cash or cancel.
CheckCreate can fail with:
tecNO_DST: the destination account does not exist.tecDST_TAG_NEEDED: the destination requires a tag and none was given.tecNO_PERMISSION: the destination blocks incoming checks.tecFROZEN:SendMaxnames a frozen token.tecEXPIRED: theExpirationis already in the past.tecINSUFFICIENT_RESERVE: the sender cannot cover the new owner reserve.temREDUNDANT: the sender and destination are the same account.
There are no flags on a Check entry.
Related: Owner reserve, Payments, tags and paths.
- ChecksRead 2026-11-10
- CheckCreateRead 2026-11-10
- CheckRead 2026-11-10
- Known AmendmentsRead 2026-11-10
