Persistent Deposit Addresses
One POST returns a permanent deposit address — send USDC from any supported chain to reach USDC-SPOT on HyperCore.
POST /deposit-addresses returns a persistent, never-expiring deposit address that delivers USDC-SPOT to a recipient on HyperCore. The same request parameters always resolve to the same address, so you can request it once and reuse it — the amount is not part of the request. Send any amount, any time, and it's swept to the destination automatically; no wallet signing or per-transfer quote is required.
API key with the deposit-address permission required (Bearer auth). Get an API key + Integrator ID.
Supported routes
- Destination: always
USDC-SPOTon HyperCore — chainId1337,0x2000000000000000000000000000000000000000. - Recipient: an EVM address.
- Origins: you don't need to hardcode these. The response's
supportedInputs[]lists every origin chain you can deposit USDC from, the token to send on each, that route's min/max limits, and its indicative fees and fill time — read them from there. The list stays current as new chains are added.
The response returns a single deposit instruction. Other destinations or non-EVM recipients return 400.
Integrate
Request an address
Send the destination (token + recipient) and a refundAddresses entry to refund to if a deposit can't be completed.
curl -X POST https://app.across.to/api/deposit-addresses \
-H "Authorization: Bearer $ACROSS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"destination": {
"token": { "chainId": 1337, "address": "0x2000000000000000000000000000000000000000" },
"recipient": "0x1111111111111111111111111111111111111111"
},
"refundAddresses": [
{ "namespace": "evm", "address": "0x2222222222222222222222222222222222222222" }
]
}'Read the deposit instruction
The response returns depositInstructions[]. Each has a depositAddress (an Account — { namespace, address }) and the supportedInputs it accepts: origin chain, input token, that route's min/max limits, plus an indicative fee breakdown and fill time. expiresAt is always null.
{
"destination": {
"token": { "chainId": 1337, "address": "0x2000…0000", "symbol": "USDC-SPOT", "name": "USDC", "decimals": 8 },
"recipient": { "namespace": "evm", "address": "0x1111…1111" }
},
"refundAddresses": [
{ "namespace": "evm", "address": "0x2222…2222" }
],
"expiresAt": null,
"depositInstructions": [
{
"depositAddress": { "namespace": "evm", "address": "0xAcc0…BD6E" },
"supportedInputs": [
{
"originChainId": 1,
"inputToken": { "chainId": 1, "address": "0xA0b8…eB48", "symbol": "USDC", "name": "USD Coin", "decimals": 6 },
"limits": { "minInputAmount": "5000000", "maxInputAmount": "10000000000000" },
"indicativeFees": { "proportionalPct": "100000000000000", "fixedFeeUsd": 0.246894 },
"indicativeFillTime": 30
}
// …one entry per supported origin chain
]
}
],
"id": "75795-1781095882239-8e49a5353db9"
}Send funds
Send native USDC on any supported origin chain to the depositAddress. It's swept to HyperCore USDC-SPOT for the recipient. The address is amount-agnostic and permanent — reuse it for future transfers; re-POSTing the same parameters returns the same address.
Track your deposit
Two calls: list the deposits made through your deposit address, then fetch full details for the latest one.
List deposits for the address
Call GET /deposits with the depositAddress query param. It returns the transfers sent to that address, newest first, each enriched with the bridge deposit created for it. depositTxnRef is the hash of the transfer you sent to the deposit address. A transfer that hasn't been swept yet reports status deposit-pending; once the sweep is picked up, the item carries the bridge deposit's fill status (pending → filled).
curl "https://app.across.to/api/deposits?depositAddress=0xAcc0dDdb8169FD06a34AADd52a39A4166a15BD6E" \
-H "Authorization: Bearer $ACROSS_API_KEY"[
{
"status": "filled",
"depositTxnRef": "0x92ffc5d69d00e14e79254f68adab030dd38119996501a88cac0da76557703d11"
// …other deposit fields
}
]Fetch the latest deposit
Pick the latest transfer — the first item in the response — and pass its depositTxnRef to GET /deposit for the full deposit record, including fill status.
curl "https://app.across.to/api/deposit?depositTxnRef=0x92ffc5d69d00e14e79254f68adab030dd38119996501a88cac0da76557703d11" \
-H "Authorization: Bearer $ACROSS_API_KEY"See the full schema, fields, and error responses in the POST /deposit-addresses API reference.