ADDRESS FLOW SUMMARY / top counterparties: who an XRP Ledger (xrp, XRP, ripple, XRPL) account
pays and who pays it, in one call — profile (payments sent / received, distinct receivers /
senders, tagged incoming payments) + TOP receivers AND TOP senders (ranked by number of payments
then Σ amount).
NOT only the statistics, without counterparties → use xrp_address_profile.
Collapses address_profile + trace_next_hop(out) + an incoming convergence into a
single call — call this FIRST when triaging a hop. Returns a computed Role over the same window
and currencies as the profile counts (the last `days`, all currencies): receive_only (no
outgoing payment in the window) / send_only (no incoming one) / no_transfers (neither) / hub
(thousands of senders AND receivers — don't trace deeper) / consolidator (senders ≫ receivers)
/ distributor (receivers ≫ senders) / relay (neither dominates). An account paid mostly with
destination tags (Tagged_Payments_Received close to Payments_Received) is a shared deposit
account — an exchange or custodian — whatever its Role. Profile counts are all-currency; the
top arrays honor currency, currency_id, issuer, min_amount and max_amount.
The arrays carry NO labels: pass Address and the Top_Receivers / Top_Senders counterparties to
labels_for_addresses(chain='ripple') in ONE call — it knows the reserve and proof-of-reserves
accounts of the large exchanges (Binance's among them); coverage is otherwise sparse, so an
empty answer is a coverage gap, not a clean account. For raw rows use xrp_transfers_in /
xrp_transfers_out.
READING THE TOP ARRAYS: positional 6-tuples [counterparty, amount, currency, currency_id,
payments, tagged_payments] (the Top_Fields column lists these names in the same order), one
entry per (counterparty, currency) — the same address repeats once per currency it moved.
tagged_payments > 0 on a receiver = you paid a shared deposit account (exchange) with
destination tags.
ONLY PAYMENTS between two different accounts are counted; value moved by an account deletion,
check, escrow, payment channel, AMM or NFT sale has no recorded counterparty and is not in the
arrays (see Type=other in xrp_transfers_in / xrp_transfers_out). Failed transactions never
count.
CURRENCY: native XRP is currency_id 413663; any other currency_id is a currency CODE that
look-alike issuers reuse — pin the real token with currency_id plus issuer (receivers: the token
this account sent; senders: the token this account received).
Amounts here are TOKEN UNITS, never USD - no USD value is available in this data, so there is
no usd filter and totals for different currencies must not be compared or added together. For
a ranking you can reason about, pin ONE currency with currency_id, or bound the range with
min_amount / max_amount.
Counts and rankings cover the LAST 90 DAYS by default, not the account's whole lifetime; raise
days for a longer period. Window_Days / Window_From on the row state the period actually
covered: an account busy long ago but quiet since comes back all zeros - raise days.