Stellar Data: Index Payments, Operations, and Soroban Contract Events

Index Stellar's classic operations and Soroban contract events in one pipeline, delivered to your own database. Real-time and complete historical data, no Horizon or RPC to run.


Stellar describes itself as an open-source blockchain for enterprises and institutions, offering secure smart contracts, fast payments, and asset tokenization at scale. Assets are issued natively by accounts, payments and trades run as built-in operations, and Soroban adds smart contracts on top. You can read how the network frames it at stellar.org.

That two-layer design is the data problem. A single Stellar ledger mixes classic operations (payments, path payments, offers, trustlines) with Soroban contract invocations that emit their own events, and the two have historically come from different APIs. Indexing Co covers Stellar in a single pipeline, hands you classic operations and Soroban contract events from the same ledger, and delivers the rows you shape to your own PostgreSQL, warehouse, or webhook. Real-time and full history, with no Horizon or RPC to operate.

Source Stellar ledgers
Ingest operations + events
Decode classic and Soroban
Transform your JavaScript
Deliver your database

Why Stellar data is hard

Two Data Models in One Ledger Classic operations and Soroban contract events describe the same ledger in different shapes. Payments are typed operations with asset codes and issuers, while contract events carry typed topics and values. A complete picture means joining both.
Many Operation Types Payments, path payments in both directions, buy and sell offers, trustline changes, and contract invocations each have their own fields. Busy ledgers carry hundreds of operations, and each type needs handling to land in a clean table.
Assets Are Code Plus Issuer A Stellar asset is identified by its code and the issuing account, so USDC from one issuer is not the same asset as USDC from another. Indexers that key on the code alone merge assets that should stay separate.
History Is Spread Across Services Horizon serves classic history and is nearing end-of-life, while Stellar RPC serves Soroban data with a short retention window. Building a full-history dataset yourself means running your own archive pipeline and stitching both data models together.

What Indexing Co delivers for Stellar

The DIY Path

Stand up and maintain the Stellar data stack yourself.

  • Run your own history pipeline for classic operations and Stellar RPC for Soroban events.
  • Page through operations, effects, and events per ledger.
  • Join classic operations and contract events by transaction.
  • Build backfill and real-time delivery from scratch.
Indexing Co

One pipeline sources and delivers Stellar to your store.

  • Classic operations with their effects and Soroban contract events, per ledger.
  • Shaped by your JavaScript transform into one schema.
  • Lands in your PostgreSQL, BigQuery, warehouse, or webhook.
  • Real-time delivery plus complete backfilled history. No Horizon, no RPC.

What you can index

Stellar data type For example
Payments and path payments USDC and other issued-asset payments, with from, to, and amount
DEX offers and trustlines manage_buy_offer, manage_sell_offer, change_trust
Soroban contract events Contract ID, topics, and values, such as token transfer events
Ledger and transaction context Fees charged, success flags, operation counts, protocol version

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 ledger server-side: pick the operations and contract events you care about and return rows for your destination.

// Indexing Co transform: classic operations and Soroban events in one table
function transform(block) {
  const results = [];

  // classic operations: payments, path payments, offers, trustlines
  for (const tx of block.transactions || []) {
    for (const op of tx.operations || []) {
      results.push({
        chain: block._network,
        ledger: block.sequence,
        tx_hash: tx.hash,
        kind: op.type,
        account: op.source_account,
        asset: op.asset_code || op.asset_type,
        from: op.from,
        to: op.to,
        amount: op.amount,
      });
    }
  }

  // Soroban contract events: topics and values as JSON
  for (const ev of block.contract_events || []) {
    results.push({
      chain: block._network,
      ledger: block.sequence,
      tx_hash: ev.txHash,
      kind: 'contract_event',
      account: ev.contractId,
      topics: JSON.stringify(ev.topicJson),
      value: JSON.stringify(ev.valueJson),
    });
  }
  return results;
}

Stellar with Indexing Co

Run it yourself if

You want full control of Stellar infrastructure and have the team to operate Horizon and Stellar RPC, join classic and Soroban data, and build your own backfill and delivery.

Use Indexing Co if

You want Stellar classic operations and Soroban contract events delivered together to your own database, with real-time plus complete history and no infrastructure to run.

Get a DemoOpen the Console

Related Reading

FAQ

Do I need to run Horizon or Stellar RPC?

No. Indexing Co sources Stellar ledgers for you, including full history, so you do not operate Horizon, Stellar RPC, or a core node.

Can I get classic operations and Soroban events together?

Yes. Each ledger arrives with its transactions, their operations, and the Soroban contract events emitted in that ledger. Your transform can write both into one table, as in the example above, or split them.

How are Stellar assets identified?

Operations carry the asset type, code, and issuer, and contract events carry the contract ID. Your transform can key on code plus issuer so assets from different issuers stay separate.

Are failed transactions included?

Yes. Transactions arrive with a success flag and the fee charged, so you can keep or filter failed ones as your use case needs.

Where does the Stellar 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 Stellar in minutes. Set up your first payments or Soroban events pipeline without running Horizon or a node.

Get a DemoOpen the Console