The List Wallet Transfers API allows you to retrieve the transfer history for a wallet, including both inbound and outbound token transfers. This endpoint supports multiple blockchains and provides cursor-based pagination for efficient data retrieval.
When your wallet has a lot of transactions, results are split into pages. Use the nextCursor value from each response in your next API call to get the next page of results.
Report incorrect code
Copy
Ask AI
async function getAllTransfers(walletLocator, chain, tokens) { const baseUrl = `https://staging.crossmint.com/api/unstable/wallets/${walletLocator}/transfers`; const allTransfers = []; let cursor = null; do { const params = new URLSearchParams({ chain, tokens, status: "successful", limit: "30" }); if (cursor) { params.set("cursor", cursor); } const response = await fetch(`${baseUrl}?${params}`, { headers: { "X-API-KEY": "<your-server-api-key>" } }); const result = await response.json(); allTransfers.push(...result.data); cursor = result.nextCursor; } while (cursor); return allTransfers;}
When your wallet has a lot of transactions, results are split into pages. Use the nextCursor value from each response in your next API call to get the next page of results.
Report incorrect code
Copy
Ask AI
async function getAllTransfers(walletLocator, chain, tokens) { const baseUrl = `https://staging.crossmint.com/api/unstable/wallets/${walletLocator}/transfers`; const allTransfers = []; let cursor = null; do { const params = new URLSearchParams({ chain, tokens, status: "successful", limit: "30" }); if (cursor) { params.set("cursor", cursor); } const response = await fetch(`${baseUrl}?${params}`, { headers: { "X-API-KEY": "<your-server-api-key>" } }); const result = await response.json(); allTransfers.push(...result.data); cursor = result.nextCursor; } while (cursor); return allTransfers;}
When your wallet has a lot of transactions, results are split into pages. Use the nextCursor value from each response in your next API call to get the next page of results.
Report incorrect code
Copy
Ask AI
async function getAllTransfers(walletLocator, chain, tokens) { const baseUrl = `https://staging.crossmint.com/api/unstable/wallets/${walletLocator}/transfers`; const allTransfers = []; let cursor = null; do { const params = new URLSearchParams({ chain, tokens, status: "successful", limit: "30" }); if (cursor) { params.set("cursor", cursor); } const response = await fetch(`${baseUrl}?${params}`, { headers: { "X-API-KEY": "<your-server-api-key>" } }); const result = await response.json(); allTransfers.push(...result.data); cursor = result.nextCursor; } while (cursor); return allTransfers;}
EVM chains: Fully supported. Results are cached for 10 minutes to improve performance.
Solana: Supported. Includes native SOL and SPL token transfers (e.g., USDC). Results are cached for 10 minutes.
Stellar: Supported with tokens usdc, usdm0, usdm1, and usdxm.
EVM Limitations
Outgoing smart wallet native token transfers (e.g., ETH, MATIC) are not supported on all EVM chains. This limitation affects chains where internal transaction tracing is not available.
Pagination
Uses cursor-based pagination for efficient data retrieval
Supports bidirectional pagination with nextCursor and previousCursor
The cursor encodes the sort order, so you don’t need to re-specify it when paginating
Activity sessions expire after 10 minutes on EVM and Solana chains; refresh to load the latest data if the cursor expires
Timestamps
All timestamps are returned in ISO 8601 format (e.g., 2025-01-15T10:30:00.000Z).
Transfer Types
The API returns both inbound (wallets.transfer.in) and outbound (wallets.transfer.out) transfers. Transfers initiated through Crossmint include a transferId that can be used with the Get Transaction API.