Get a transfer
Returns the current state of one transfer; orderId is the same value as the quoteId from POST /v1/quotes, so no lookup is needed.
Gate anything irreversible on status.finalized.
Path Parameters
The transfer's id -- the same value as the quote's quoteId.
Response Body
application/json
application/json
application/json
curl -X GET "https://api.staging.across.to/v1/transfers/0x97a6ac2098d69b6f5ee153cea9ca164f1431185948e3ef76b05b60047dbf7e55"{
"orderId": "0x97a6ac2098d69b6f5ee153cea9ca164f1431185948e3ef76b05b60047dbf7e55",
"externalId": "assurance:561cfae280b7aba63403:erc3009:exact_input:1788471069469",
"status": {
"state": "completed",
"reason": "filled",
"description": "The transfer completed and the funds were delivered.",
"isTerminal": true,
"finalized": true
},
"origin": {
"input": {
"token": {
"type": "token",
"address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"symbol": "USDC",
"name": "USD Coin",
"decimals": 6,
"chain": {
"id": 1,
"name": "mainnet",
"displayName": "Mainnet",
"logoUrl": "https://alexandria-blond.vercel.app/assets/chains/mainnet.svg"
},
"logoUrl": "https://alexandria-blond.vercel.app/assets/tokens/usdc.svg",
"priceUsd": 0.9999236439138891,
"priceUsdAt": "2026-09-03T21:30:00.000Z"
},
"amount": "99960"
},
"depositor": {
"address": "0x9A8f92a830A5cB89a3816e3D267CB7791c16b04D",
"chain": {
"id": 1,
"name": "mainnet",
"displayName": "Mainnet",
"logoUrl": "https://alexandria-blond.vercel.app/assets/chains/mainnet.svg"
}
}
},
"destination": {
"output": {
"token": {
"type": "token",
"address": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
"symbol": "USDC",
"name": "USD Coin",
"decimals": 6,
"chain": {
"id": 42161,
"name": "arbitrum-one",
"displayName": "Arbitrum One",
"logoUrl": "https://alexandria-blond.vercel.app/assets/chains/arbitrum.svg"
},
"logoUrl": "https://alexandria-blond.vercel.app/assets/tokens/usdc.svg",
"priceUsd": 0.9999236439138891,
"priceUsdAt": "2026-09-03T21:30:00.000Z"
},
"amount": "99910"
},
"recipient": {
"address": "0x9A8f92a830A5cB89a3816e3D267CB7791c16b04D",
"chain": {
"id": 42161,
"name": "arbitrum-one",
"displayName": "Arbitrum One",
"logoUrl": "https://alexandria-blond.vercel.app/assets/chains/arbitrum.svg"
}
}
},
"fees": {
"totalUsd": 0.00004999618219568569
},
"submittedAt": "2026-09-03T21:31:18.940Z",
"filledAt": "2026-09-03T21:31:53.000Z",
"completedAt": "2026-09-03T21:31:53.648Z",
"fillTimeMs": 34060,
"sponsorshipUsd": "0.5",
"funding": {
"method": "erc3009"
},
"transactions": [
{
"type": "deposit",
"transaction": {
"txnRef": "0x03c1ce3513f44bb3366b43964e1a67a118721dadb1941a60b1ea622ec547d925",
"chain": {
"id": 1,
"name": "mainnet",
"displayName": "Mainnet",
"logoUrl": "https://alexandria-blond.vercel.app/assets/chains/mainnet.svg"
},
"blockRef": 25899489,
"blockTimestamp": "2026-09-03T21:31:47.000Z",
"explorerUrl": "https://etherscan.io/tx/0x03c1ce3513f44bb3366b43964e1a67a118721dadb1941a60b1ea622ec547d925"
}
},
{
"type": "fill",
"transaction": {
"txnRef": "0x08a4066189536400df4546ebcac211d0a47c32e2decc81c560a0e4a50471e9fa",
"chain": {
"id": 42161,
"name": "arbitrum-one",
"displayName": "Arbitrum One",
"logoUrl": "https://alexandria-blond.vercel.app/assets/chains/arbitrum.svg"
},
"blockRef": 501449833,
"blockTimestamp": "2026-09-03T21:31:53.000Z",
"explorerUrl": "https://arbiscan.io/tx/0x08a4066189536400df4546ebcac211d0a47c32e2decc81c560a0e4a50471e9fa"
}
}
],
"quoted": {
"sponsorshipUsd": "0.5",
"origin": {
"input": {
"token": {
"type": "token",
"address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"symbol": "USDC",
"name": "USD Coin",
"decimals": 6,
"chain": {
"id": 1,
"name": "mainnet",
"displayName": "Mainnet",
"logoUrl": "https://alexandria-blond.vercel.app/assets/chains/mainnet.svg"
},
"logoUrl": "https://alexandria-blond.vercel.app/assets/tokens/usdc.svg",
"priceUsd": 0.9999236439138891,
"priceUsdAt": "2026-09-03T21:30:00.000Z"
},
"amount": "99960",
"maxAmount": "99960"
},
"depositor": {
"address": "0x9A8f92a830A5cB89a3816e3D267CB7791c16b04D",
"chain": {
"id": 1,
"name": "mainnet",
"displayName": "Mainnet",
"logoUrl": "https://alexandria-blond.vercel.app/assets/chains/mainnet.svg"
}
}
},
"destination": {
"output": {
"token": {
"type": "token",
"address": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
"symbol": "USDC",
"name": "USD Coin",
"decimals": 6,
"chain": {
"id": 42161,
"name": "arbitrum-one",
"displayName": "Arbitrum One",
"logoUrl": "https://alexandria-blond.vercel.app/assets/chains/arbitrum.svg"
},
"logoUrl": "https://alexandria-blond.vercel.app/assets/tokens/usdc.svg",
"priceUsd": 0.9999236439138891,
"priceUsdAt": "2026-09-03T21:30:00.000Z"
},
"amount": null,
"minAmount": "1"
},
"recipient": {
"address": "0x9A8f92a830A5cB89a3816e3D267CB7791c16b04D",
"chain": {
"id": 42161,
"name": "arbitrum-one",
"displayName": "Arbitrum One",
"logoUrl": "https://alexandria-blond.vercel.app/assets/chains/arbitrum.svg"
}
}
},
"fees": {
"totalUsd": 0.09995136752198844
},
"fillTimeMs": 2000
}
}{
"error": {
"type": "not_found",
"code": "not_found.transfer",
"message": "No transfer found for order: 0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
"requestId": "e27f327f-775f-43cf-ad8a-0a1e742bfff1"
}
}{
"error": {
"type": "request",
"code": "not_found.transfer",
"message": "string",
"param": "string",
"requestId": "string",
"details": {}
}
}List transfers GET
Lists transfers, newest first. Filters are repeatable and combine — values within one filter match any, separate filters must all match — and for reconciliation `externalId` matches your own id while `txnRef` matches any transaction in the transfer's lifecycle.
Create persistent deposit addresses POST
Returns a persistent, infinite-TTL deposit address. The same request parameters always resolve to the same address, so you can request it once and reuse it. Requires an API key with the `deposit-address` permission (Bearer auth). The supported destination is currently only `USDC-SPOT` on HyperCore, delivered to an EVM recipient address. Additionally, `USDC` is also supported on HyperEVM - chainId `999`, `0xb88339CB7199b77E23DB6E890353E22632Ba630f`. More destination tokens and chains will be supported in the future. You don't need to hardcode which chains you can deposit from (input chains), the API response will include that information in the `supportedInputs` field including the input token to send there, and that route's min/max limits. **Strongly provide `refundAddresses`.** It is optional, but if a deposit can't be completed and no refund address was supplied, funds can only be recovered through a **manual refund process that takes significantly longer** than the automatic refund. You would need to contact Across support to initiate the manual refund.