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-SPOT on HyperCore — chainId 1337, 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, and that route's min/max limits — 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 (origin chain + input token + limits) it accepts. expiresAt is always null.

{
  "destination": {
    "token": { "chainId": 1337, "address": "0x2000…0000", "symbol": "USDC-SPOT", "decimals": 8 },
    "recipient": { "namespace": "evm", "address": "0x1111…1111" }
  },
  "expiresAt": null,
  "depositInstructions": [
    {
      "depositAddress": { "namespace": "evm", "address": "0xac00…0000" },
      "supportedInputs": [
        {
          "originChainId": 1,
          "inputToken": { "chainId": 1, "address": "0xA0b8…eB48", "symbol": "USDC", "decimals": 6 },
          "limits": { "minInputAmount": "0", "maxInputAmount": "0" },
          "indicativeFees": null
        }
      ]
    }
  ]
}

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.

See the full schema, fields, and error responses in the POST /deposit-addresses API reference.

On this page