XRP Ledger Data: Index Payments, DEX Offers, and Ledger State

Index XRP Ledger payments, DEX offers, trust lines, and ledger object changes in one pipeline, delivered to your own database. Real-time and complete historical data, no node to run.


The XRP Ledger describes itself as a decentralized public Layer 1 blockchain for creating, transferring, and exchanging digital assets with a focus on compliance. It has run for more than a decade with a native decentralized exchange, issued tokens on trust lines, and automated market makers built into the protocol rather than deployed as contracts. You can read how the project frames it at xrpl.org.

That built-in feature set is the data problem. XRPL transactions are typed (Payment, OfferCreate, TrustSet, and many more), and what actually happened lives in the transaction metadata: the result code, the ledger objects each transaction touched, and the amount that was really delivered. Indexing Co covers the XRP Ledger in a single pipeline, hands you each closed ledger with its transactions, metadata, and object changes, and delivers the rows you shape to your own PostgreSQL, warehouse, or webhook. Real-time and full history, with no node to operate.

Source XRPL ledgers
Ingest transactions + metadata
Decode delivered amounts, diffs
Transform your JavaScript
Deliver your database

Why XRP Ledger data is hard

Amount Is Not What Was Delivered A Payment's Amount field is what the sender asked for. With partial payments, the amount that actually arrived can be far smaller, and only the delivered_amount in the transaction metadata tells you the truth. Indexers that read Amount alone overcount, sometimes by orders of magnitude.
Typed Transactions, Native DEX Trading on the XRPL happens through native transaction types like OfferCreate and OfferCancel, not contract calls. Each type has its own fields, so a usable dataset needs per-type handling rather than one generic event decoder.
Issued Currencies and Trust Lines Tokens other than XRP are identified by a currency code plus an issuer account, often as a 40-character hex code, and held through trust lines. XRP amounts come as plain strings in drops. Normalizing both into one amount column is easy to get wrong.
State Lives in Ledger Objects Balances, offers, and trust lines are ledger objects (AccountRoot, Offer, RippleState) that transactions create, modify, and delete. Reconstructing state means reading the affected nodes and object changes, not just the transaction list.

What Indexing Co delivers for the XRP Ledger

The DIY Path

Stand up and maintain the XRPL stack yourself.

  • Run a rippled server with full history, or depend on a public one.
  • Fetch every closed ledger with transactions and metadata.
  • Handle each transaction type and the delivered_amount rule by hand.
  • Build backfill and real-time delivery from scratch.
Indexing Co

One pipeline sources and delivers XRP Ledger data to your store.

  • Every transaction with its metadata, result code, and delivered amount.
  • Ledger object changes alongside the transactions that caused them.
  • Shaped by your JavaScript transform into your PostgreSQL, BigQuery, warehouse, or webhook.
  • Real-time delivery plus complete backfilled history. No rippled to run.

What you can index

XRP Ledger data type For example
Payments XRP and issued-currency payments, requested vs delivered amount
DEX activity OfferCreate and OfferCancel against the native order book
Trust lines and accounts TrustSet, AccountSet, and TicketCreate transactions
Ledger object changes AccountRoot, RippleState, and Offer objects per ledger

A transform, not a subgraph

You write the transform in JavaScript, not AssemblyScript, and change it without re-indexing from ledger zero. Indexing Co runs your function over each closed ledger server-side: pick the transaction types you care about and return rows for your destination.

// Indexing Co transform: one row per XRPL payment, requested vs delivered
function transform(block) {
  const results = [];
  const fmt = (a) => (typeof a === 'string'
    ? { currency: 'XRP', issuer: null, value: a } // XRP in drops
    : a || {});

  for (const tx of block.transactions || []) {
    if (tx.TransactionType !== 'Payment') continue;
    const requested = fmt(tx.Amount);
    const delivered = fmt(tx.metaData?.delivered_amount);
    results.push({
      chain: block._network,
      ledger_index: Number(block.ledger_index),
      close_time: block.close_time_iso,
      tx_hash: tx.hash,
      result: tx.metaData?.TransactionResult,
      from: tx.Account,
      to: tx.Destination,
      currency: delivered.currency,
      issuer: delivered.issuer,
      amount_requested: requested.value,
      amount_delivered: delivered.value,
    });
  }
  return results;
}

XRP Ledger with Indexing Co

Run it yourself if

You want full control of XRPL infrastructure and have the team to operate a full-history rippled server, per-type transaction parsing, and your own backfill and delivery.

Use Indexing Co if

You want XRP Ledger payments, DEX offers, and ledger object changes delivered to your own database, with delivered amounts handled correctly and no infrastructure to run.

Get a DemoOpen the Console

Related Reading

FAQ

Do I need to run a rippled server?

No. Indexing Co sources XRP Ledger ledgers for you, including full history, so you never operate a rippled server or rely on a rate-limited public one.

How does Indexing Co handle partial payments?

Each Payment comes with its transaction metadata, including delivered_amount. Your transform reads that field, as in the example above, so your dataset records what actually arrived rather than what the sender requested.

Can I index XRPL DEX activity?

Yes. OfferCreate and OfferCancel transactions come through with their fields and metadata, and the Offer objects they create or remove appear in the ledger's object changes.

Are issued currencies supported, not just XRP?

Yes. Issued-currency amounts arrive with their currency code, issuer, and value, and XRP amounts arrive in drops. Your transform can normalize both into the columns you want.

Where does the XRP Ledger data go?

Into your own destination: PostgreSQL, BigQuery, a warehouse, or a webhook. You define the output schema and own the storage.

Get Started

Index the XRP Ledger in minutes. Set up your first payments or DEX pipeline without running a node.

Get a DemoOpen the Console