Transaction API
Retrieve Naven-indexed x402 payments for a recipient address.
Use the public Transaction API to retrieve x402 payment transfers that Naven has indexed for a receiving address. Your application remains responsible for matching payments to orders, preventing reuse, and fulfilling the purchased service.
List transactions by recipient
GET https://api.naven.network/x402scan/transactions?recipient=0x...&chain=robinhood&page=1&pageSize=100No API key is required.
| Parameter | Required | Description |
|---|---|---|
recipient | no | EVM receiving address. Omit it to list transactions across recipients. |
chain | no | Network filter. Defaults to robinhood; use all for every indexed network. |
page | no | Page number starting at 1. Defaults to 1. |
pageSize | no | Number of records from 1 to 100. Defaults to 10. |
afterSequence | no | Exclusive recipient sequence cursor. Requires recipient and a specific chain; returns records in ascending sequence order. |
Transactions are returned newest first.
For reliable synchronization, use a recipient sequence cursor instead of page numbers:
GET https://api.naven.network/x402scan/transactions?recipient=0x...&chain=robinhood&afterSequence=0&pageSize=100Process the response in order and persist the last
attestation.recipientSequence. Use that value as afterSequence in the next
request. The cursor is exclusive, so records are not repeated.
The API validates that every returned batch starts at afterSequence + 1 and
remains contiguous. It does not return later records across an unexpected gap,
so a consumer cannot silently advance past a missing payment.
[
{
"from": "0x1111111111111111111111111111111111111111",
"to": "0x2222222222222222222222222222222222222222",
"transactionHash": "0x...",
"value": "1000000",
"tokenAddress": "0x5fc5360d0400a0fd4f2af552add042d716f1d168",
"tokenSymbol": "USDG",
"tokenDecimals": 6,
"logIndex": 0,
"authorizationId": "0x...",
"blockTimestamp": 1786500000,
"blockNumber": "123456",
"facilitator": "0x...",
"chainId": 4663,
"attestation": {
"paymentId": "0x...",
"payer": "0x1111111111111111111111111111111111111111",
"recipient": "0x2222222222222222222222222222222222222222",
"recipientSequence": "1",
"token": "0x5fc5360d0400a0fd4f2af552add042d716f1d168",
"amount": "1000000"
},
"signature": "0x...",
"signer": "0x..."
}
]value is expressed in the token's atomic units. Use tokenDecimals when
displaying or comparing a human-readable amount.
Get an attested transaction
GET https://api.naven.network/x402scan/transactions/0xPAYMENT_IDThe response contains the same transaction object returned by the list route.
The EIP-712 signature covers exactly paymentId, payer, recipient,
recipientSequence, token, and amount under the
Naven Payment Attestation version 2 domain.
See Payment Attestations for the payment ID definition, sequence semantics, and verification examples.
Fulfill from indexed payments
Treat a returned row as a payment transfer recognized by Naven's x402 indexer.
Your application should still verify that to, tokenAddress, value, and
chainId match its own requirements before fulfilling the request.
Use attestation.paymentId as the payment's unique consumption key. A consumer
that treats an attestation as one-time authorization must store consumed payment
IDs and reject reuse according to its own business rules.
Naven indexes its facilitator's payments from the Robinhood Chain subgraph and stores the validated transfers in its transaction database. The existing chain scanner runs separately as a recovery path, so the API contract does not depend on either indexing provider.
New payments may take a few seconds to appear. Poll with afterSequence at an
interval, persist each record before advancing the cursor, and continue until
the payment appears or your application-defined timeout expires. Page contents
can shift as new transactions are indexed, so do not use a page number as a
persistent synchronization checkpoint.