Skip to main content
The SDK provides full coverage of core payment flows including authorization, release, charge, refund, dispute resolution, and evidence submission. This page documents the known limitations.

API Constraints

EIP-155 Network Identifiers

Network configuration requires EIP-155 format strings, not chain ID numbers:
// Correct
const config = getNetworkConfig('eip155:84532');

// Incorrect - will return undefined
const config = getNetworkConfig(84532);

PaymentInfo Must Be Complete

All SDK methods require a complete PaymentInfo object. You cannot query by hash alone:
// Works - full PaymentInfo
const status = await client.getRefundStatus(paymentInfo, 0n);

// Not supported - hash-only queries require the full struct
// const state = await client.getPaymentStateByHash(hash);

Event Log Scanning Limits

getPayerPayments(), getReceiverPayments(), and getPaymentDetails() scan AuthorizationCreated events using eth_getLogs. Base Sepolia RPCs typically limit responses to 10,000 blocks. Pass a fromBlock parameter for large ranges:
// Scan only recent blocks to avoid RPC limits
const payments = await client.getPayerPayments(recentBlockNumber);
const details = await client.getPaymentDetails(hash, recentBlockNumber);

No Express/Hono Middleware

The refundable() helper in @x402r/helpers is framework-agnostic. There is no dedicated Express or Hono middleware — use refundable() directly when constructing payment options.

Getting Updates

SDK Overview

Return to SDK documentation.

Examples

Working examples for each role.

GitHub Releases

Watch for new SDK releases.