Xrp Transfers Out
xrp_transfers_outOUTGOING XRP Ledger (xrp, XRP, ripple, XRPL) transfers from an r-address — where this account sent XRP and issued tokens, newest first: receiver, amount, currency, Destination_Tag, record Type and transaction type per row. Page back through older history with cursor: pass the Cursor value of the LAST row of a page to get the next one — unlike before_time it never skips rows that share a ledger. For the aggregated "where did the bulk go" view use xrp_trace_next_hop; for incoming use xrp_transfers_in; for every record of one transaction use xrp_tx_transfers. AMOUNTS: Amount / Currency is what actually left this account, Delivered_Amount / Delivered_Currency what the receiver actually got — never the inflated face value of a partial payment. They differ on a cross-currency payment, and can also differ on a payment of an issued token (for example by the issuer's transfer fee). XRP is in XRP (not drops). TYPE: payment = a Payment to another account (Receiver = this account means a currency conversion); trade = a standing exchange offer of this account was filled (it gave Currency and got Delivered_Currency); other = one leg of an account deletion, check, escrow, payment channel, AMM or NFT sale, or path-payment rounding, so Receiver is EMPTY here. Rounding remainders of that kind below 0.000001 (floating-point leftovers of token payments and offer fills, no real value) are hidden unless include_dust=1. For an account deletion, cashed check, AMM or NFT sale the receiving leg is a separate record of the same transaction: open the Tx with xrp_tx_transfers to see where it went. Funding an escrow or payment channel records only this paying leg — the payout is a later, separate transaction on the receiver's side. nft_trade / mint / burn = NFTs (Currency is the NFT id). FEES are listed only on request: include_fees=1 adds one record per transaction this account signed (Type fee, Receiver empty, Amount = the fee in XRP, with its Value_Usd), and type='fee' lists the fees alone. A FAILED transaction leaves only its fee, so without the fees failed transactions do not appear — except a failed (expired) NFT offer acceptance, which still shows its nft_trade record although the NFT did not move; xrp_tx_transfers shows Success. Pass type='payment' for payments only. CURRENCY: native XRP is always Currency_Id 413663. Other currencies are issued tokens shown by their code (hex codes decoded to text when readable). Currency_Id identifies the CODE, not the token — every issuer's "USD" or "RLUSD" shares one id, including look-alike counterfeit issuers. Pin the real token with currency_id plus issuer (keeps payments whose SENT token has that issuer); the issuers of each payment are shown by xrp_tx_transfers. USD: Price_Usd is the hourly USD price of Currency at the time of the transfer and Value_Usd = Amount x Price_Usd - for XRP only (Price_Status ok). An issued token has no price here (Price_Status no_price, both columns null): never assume one, a currency code says nothing about the token's value. The newest hour may not be priced yet. Amounts and their filters stay in TOKEN UNITS (there is no usd filter), and amounts of different currencies must not be compared or added together: pin ONE currency with currency_id, or bound the range with min_amount / max_amount. Destination_Tag identifies the receiver's customer at a shared account (an exchange deposit carries one); "0" = no tag. Rows carry no labels: identify receivers with labels_for_addresses(chain='ripple') — coverage is sparse, mostly exchange reserve wallets. Covers the LAST 90 DAYS by default; raise days to reach older history (a short or empty page can just mean the window ended, not that the history did). Records arrive a few minutes after the ledger closes.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"address": "<address>"
},
"name": "xrp_transfers_out"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | How far back to search, in days (default 90, max 20000). The window ends at the newest bound in play (cursor or before_time, else today) and reaches `days` back from it; an explicit after_time overrides the lower edge. An empty or short page can simply mean the window ran out - raise days to search deeper. | |
| sort | No | "recent" (default) = newest first; "amount" = largest Amount first. Ranking by amount returns a TOP-N, not the head of a page-walk: such a page carries no Cursor, so start a walk with sort='recent'. | recent |
| type | No | Record type: "payment", "trade", "other", "nft_trade", "mint", "burn" or "fee" (see the tool description; "fee" lists only the fees this account paid). Empty (default) = every type except fees, or every type with them when include_fees=1. Any other value is rejected. | |
| limit | No | Max transfers per page (1-1000); a page can exceed it by a few rows when identical records share the last position. | |
| cursor | No | Exact paging cursor: pass the Cursor value of the LAST row of the previous page to get the next page. When set, before_time is ignored and rows come back newest-first whatever sort says. Empty = first page. Records identical in every field (several equal offers filled, or a batch of NFT mints, in one transaction) always come back together, so a page can hold a few rows more than limit. | |
| format | No | Shape of the returned data. "rows" (the default) returns one item per row. "columnar" returns a single item, {"columns":[...],"rows":[[value,...],...]}, naming the columns once and listing each row's values in that order; it is more compact for large results and carries the same values. | rows |
| issuer | No | Keep only PAYMENTS that sent a token issued by this r-address (e.g. the real RLUSD issuer rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De) — the way to separate a real token from look-alike issuers of the same code. The issuer is matched on what LEFT this account (the Issuer column of xrp_tx_transfers), so a payment that spent XRP or a look-alike token to deliver this issuer's token is dropped, as are other record types. Empty (default) = no issuer filter. | |
| address | Yes | Classic XRP Ledger account address (starts with "r", 25-35 base58 characters), case-sensitive. An X-address (starts with "X") is not accepted: split it into its classic address and destination tag first. | |
| currency | No | Restrict to one currency by its code as shown in Currency ("XRP", "RLUSD", "USD" or the 40-character hex code, in any letter case). A code is NOT a token identifier — several issuers use the same code — so pin the real one with issuer. Empty = all. No backslashes. | |
| after_time | No | Only transfers at/after this UTC time, "YYYY-MM-DD", "YYYY-MM-DD HH:MM:SS" or ISO "2026-09-20T00:00:00Z" (the form Time comes back in). Overrides the lower edge of the days window. Empty = no lower bound. | |
| max_amount | No | Maximum transfer amount in the currency's own units. 0 (default) = no upper bound. Amounts are NOT comparable across currencies, so with sort="amount" a token with a huge supply can push real transfers off the page - cap it here, or pin one currency with currency_id. | |
| min_amount | No | Minimum transfer amount in the currency's own units (XRP, not drops). 0 = no lower bound. Rounding remainders without a receiver are already hidden (see include_dust); set this to drop small real transfers as well. | |
| before_time | No | Only transfers strictly before this UTC time ("YYYY-MM-DD", "YYYY-MM-DD HH:MM:SS" or ISO "2026-09-20T00:00:00Z" (the form Time comes back in)) — a coarse upper bound, NOT a paging cursor: it skips every row that shares the last row's timestamp, so page with cursor instead; before_time is ignored when cursor is set. Empty = now. | |
| currency_id | No | Restrict to one Currency_Id (413663 = native XRP). Faster than currency. It identifies a currency CODE shared by every issuer of that code; add issuer to pin one token. 0 (default) = all. | |
| include_dust | No | 0 (default) hides rounding remainders: records of Type "other" with no counterparty and an Amount below 0.000001 - floating-point leftovers of payments and offer fills that carry no value (a token issuer collects hundreds of thousands of them, and they would fill every page). 1 = show them too. | |
| include_fees | No | 1 = also list the transaction fees this account paid: one record per transaction it signed (Type "fee", Receiver empty, Amount in XRP), including FAILED transactions, which leave nothing but their fee. 0 (default) = no fee records. A fee record carries no issuer or destination tag, so those filters drop it; type="fee" lists the fees alone. An account that signs tens of thousands of transactions a day (a market maker) has far more fee records than transfers: keep days small there, or bound the period with after_time / before_time. | |
| destination_tag | No | Only transfers carrying this destination tag (digits, e.g. the tag an exchange assigned to one customer). Empty (default) = any. |