Deposits
Heimdallm is prepaid: deposits credit your balance and every request settles against it (see Pricing & billing). $1 of stablecoin becomes $1 of credits, with no deposit fee.
Depositing
Open the Credits tab and connect your wallet. The page reads the network your wallet is on and the balances it holds there, so you choose from what you actually have — then approve the transfer in the wallet. Your balance updates once the transfer confirms.
Base deposits, including x402 payments, require 60 confirmations: approximately two minutes plus processing time. This is the deposit acceptance policy, not a guarantee of Ethereum L1 finality.
The first deposit from a new wallet asks for one signature first. It is free, moves no funds and grants no spending permission; it is how the deposit is matched to your account. One signature covers every network.
If you have no browser wallet, Send manually instead on the same tab gives you the address and a QR code for hardware wallets and CLIs.
Send only on a network listed below. A transfer on any other network cannot be credited or recovered, so check the network in your wallet before approving.
Accepted coins
Your deployment may enable only some of these. The Credits tab lists the ones it accepts, and those are the only ones to send.
| Network | Chain id | Coins | Confirmations |
|---|---|---|---|
| Ethereum | 1 | USDC(6)USDT(6)DAI(18) | 12 · about 2 minutes |
| Base | 8453 | USDC(6)USDT(6)DAI(18)USDbC(6) | 60 · about 2 minutes |
| Arbitrum One | 42161 | USDC(6)USDC.e(6)USDT(6)DAI(18) | 4400 · about 19 minutes |
| OP Mainnet | 10 | USDC(6)USDC.e(6)USDT(6)DAI(18) | 600 · about 20 minutes |
| Polygon | 137 | USDC(6)USDC.e(6)USDT(6)DAI(18) | 200 · about 5 minutes |
| BNB Smart Chain | 56 | USDC(18)USDT(18)DAI(18) | 30 · about 14 seconds |
| Avalanche | 43114 | USDC(6)USDT(6)DAI(18) | 15 · about 17 seconds |
Coins are matched by contract address rather than by name, so a token that merely calls itself
USDC credits nothing, and a legitimate coin with an unusual on-chain symbol still credits
correctly. Precision differs by network — USDC is 6 decimals on most and 18 on BNB Smart Chain —
and the deposit form always uses the right one, so amounts are never rounded.
Coins marked bridged are issued by a bridge rather than by the name on the coin. They are credited at face value like any other.
Depositing from an exchange
Prefer a wallet you control. An exchange withdrawal arrives from an address you cannot sign for, so it cannot be matched to your account automatically and needs support to credit — with the transaction hash and the network.
Depositing with a card
Where an operator has configured it, the Credits tab also offers a card path: enter an amount and the page hands you to Stripe Checkout. No card details reach this marketplace — the card form is Stripe's, and this site only redirects there and back.
The balance is credited the full amount paid, with no deposit fee. Credit posts when the payment confirms, not when the browser returns from checkout, and the deposit appears in the ledger the moment it lands.
Depositing with x402
An agent with a wallet key but no browser can fund a balance by signing a payment rather than sending
one. This is the x402 exact scheme over USDC, and it is available only where an
operator has configured it.
GET /api/v1/deposits/x402 answers with the terms, or with { "enabled": false } where the rail is
off. It needs no API key, so the terms can be read before one is held.
POST /api/v1/deposits/x402 with the amount you want answers 402 and an offer naming the network,
the asset, the address and the exact atomic amount to authorize. Sign that offer as an EIP-3009
authorization and send the same request again with the signature in a PAYMENT-SIGNATURE header. The
answer carries the settlement in a PAYMENT-RESPONSE header. Signing costs no gas: the payment is
submitted for you, and you never need the network's own gas token.
Which account the money lands in is decided by the wallet, not by the key that sent the request. An unbound wallet credits the account of the API key that presented the payment, and a signed authorization is worth its face value to anyone holding it, so treat that header the way you treat the key itself and send it over TLS to this API only. Bind the wallet first and the money lands in the account it is bound to whoever submits it; a key naming a different account than the wallet is bound to is refused before anything settles.
Credit posts after the transfer confirms, not with the response. The settlement is an ordinary
transfer to the same address every deposit uses, and it waits the same confirmation depth as any
other, which the terms give you as confirmation_seconds. Poll
GET /credits for the balance.
Funding an organization
An organization is funded exactly like a personal account. Choose it in the account switcher on the Credits tab and every rail on that tab funds it: a card payment, a wallet transfer, a manual send. An x402 authorization follows the wallet that signed it, so binding that wallet to the organization is what points it there. Admins of the organization may fund it; its other members cannot.
Deposits into an organization show up for its admins in the same history as any other.
The ledger
Every movement on your balance appears in your account, newest first, and can be filtered by kind:
| Kind | Meaning |
|---|---|
deposit | A credit from a deposit, referencing its transaction. |
usage | A charge for one generation, referencing its generation id. |
refund | A credit for a charge the marketplace got wrong, with its reason. |
adjustment | A manual credit or debit by an administrator. |
A refund carries the reason it was issued for, and names the generation it answers where it answers one. It credits this balance rather than returning money to a card or a wallet, and it can never exceed what the account has been charged and not already been refunded.
Amounts are exact decimal strings; nothing about your balance is rounded. Programmatic balance
checks go through GET /credits.