Dagon InferenceDocs Console

Payments

Payments and USDC checkout

All payment is in USDC. Credits are prepaid, denominated in US dollars (1 USDC buys US$1 of credit) and usable only for the service.

On this page

Choose a rail

RailBest forBounds
Hosted checkoutPeople with a browser wallet; USDC on Solana or other chains via Circle CCTP$5 to $1,000 per top-up
Wallet purchaseAgents with a Solana wallet, no browser$5 to $1,000 per purchase
x402Agents paying per request, no keyFrom $0.5 (top-ups from $1), at most $1,000 a payment
Any coin (NEAR Intents)Paying in another asset or chain, swapped to USDC on Solana; when the operator enables itPer the deposit bounds in GET /v1/payment-methods, and 1Click's chain minimums

Across checkout, wallet purchases and x402, one account (a root and all its children) receives at most $2,000 of paid credit in any 24 hours: 402 paid_daily_cap_exceeded past it. GET /v1/payment-methods reports what is enabled.

Hosted USDC checkout

POST/v1/credits/checkout

Body {"amount_usd": 20}, whole cents, $5 to $1,000. Returns 201 {"session_id", "url"}. Open url and pay; email is optional, because credits belong to the key. The page also offers Pay from another chain: USDC from an EVM chain Circle CCTP V2 supports, minted on Solana and forwarded to the treasury. Such a payment is credited net of the relayer's refuel fee, which GET /v1/payment-methods reports as credits.zoneless.cross_chain_fee_micros, capped at cross_chain_fee_max_bps of the amount.

  • The credit posts once the payment is final. POST /v1/credits/reconcile asks for any paid checkouts of the key and posts them, if a credit seems late (30 per hour).
  • Each key may open 10 checkouts an hour and hold 5 unpaid at once (429 too_many_open_checkouts).

Check before you approve

Our checkout runs only at https://pay.dagon.so and you reach it only from a top-up you start. Before approving, check the amount and that the destination matches, in full, the address on official domains and payment addresses.

Refusals

AnswerMeaning
400 invalid_amount, amount_out_of_rangeNot whole cents, or outside the bounds.
402 paid_daily_cap_exceededThe account received $2,000 of paid credit in the last 24 hours.
403 payment_refusedThe paying wallet is on the OFAC sanctions list.
451 location_blockedThe service is not offered where the request comes from.
503 geo_unavailable, payments_unavailable, checkout_unavailableTemporarily unavailable; retry after Retry-After.

Pay with any coin (NEAR Intents)

When the operator enables it (NEAR_INTENTS=on; GET /v1/payment-methods reports credits.near_intents.enabled with min_micros, max_micros, fee_micros and deadline_minutes), a key can pay in an asset and chain that NEAR Intents 1Click, a third party, swaps into USDC on Solana. Dagon's minimum is $5; 1Click's per-chain minimums also apply. The gateway never holds the origin coin. Otherwise these routes answer 404 near_intents_disabled. Not for lease keys (400 not_topup_key).

  1. GET /v1/credits/near-intents/assets lists asset_id, symbol, blockchain, decimals, price_usd and contract_address.
  2. POST/v1/credits/near-intents

    with {"amount_usd": 20, "origin_asset": "<asset_id>", "refund_address": "<your address on the origin chain>"}. The answer (201) is the deposit: deposit_address, deposit_memo, amount_in and amount_in_formatted (what to send, including 1Click's fees and slippage buffer), min_amount_in, amount_micros (the immutable USDC quote), fee_snapshot_micros (the immutable Dagon rail fee), deadline and a qr_svg of the address.
  3. Send amount_in of the origin asset to deposit_address, with deposit_memo when set, before deadline.
  4. A poller follows every deposit, including terminal deposits on a six-hour backfill; POST /v1/credits/near-intents/:deposit_address/check asks 1Click at once (120 an hour). GET /v1/credits/near-intents lists the key's newest 20, GET /v1/credits/near-intents/:deposit_address reads one.
StatusMeaning
openWaiting for the deposit.
pendingDeposit seen and swapping, or an incomplete deposit that NEAR Intents may return through its own mechanism at the deadline.
creditedVerified on Solana and posted: credited_micros from received_micros received after fee_micros in rail fees.
returned_by_near_intentsNEAR Intents returned the funds to refund_address through its own mechanism.
failed1Click failed the swap.
expiredThe deadline passed with no deposit.
held1Click reported success, but the USDC could not be verified on chain (or a sanctions match). Nothing credited; the operator is alerted.
  • Credit posts only after the gateway checks every Solana destination transaction 1Click reports. A receipt must contain exactly one parsed USDC transfer whose amount equals the treasury account's complete transaction delta. Batched, unparsed, reused or otherwise ambiguous transfers are held and never credited as a whole transaction. Each unambiguous finalized transfer posts exactly once, including late and additional receipts. The current Dagon rail fee is 0%; settlement uses fee_snapshot_micros from the quote, never a later setting. The response keeps amount_micros as the quote and exposes aggregate received_micros, fee_micros and credited_micros.
  • For a deposit below min_amount_in, one after the deadline, or a failed swap, NEAR Intents may return the origin asset to refund_address through its own mechanism, less its network fee. Dagon neither performs nor guarantees that return. Make sure the address is yours and can receive the asset.
  • Dagon's minimum is $5. 1Click's larger chain minimums apply and are returned as 400 quote_rejected with 1Click's message.
  • The return address is screened against the OFAC SDN list at quote time and before credit. For USDC on Solana, the visible origin token-account owner and transfer authority are also screened; an exchange withdrawal exposes the exchange hot wallet, not its customer. Destination source evidence is screened too. A list or RPC outage, missing finality, or unresolved visible source fails closed until evidence is available. Other origin chains do not expose a reliable sender through 1Click.
  • Each account may hold 3 unpaid deposits (429 too_many_open_deposits) and open 10 an hour. Open deposits count toward the daily cap.
  • Other answers: 400 invalid_asset, invalid_refund_address, invalid_amount, amount_out_of_range, 502 near_intents_unavailable, 404 deposit_not_found.

Credits

  • Credits are not money and have no cash value. They move only between keys under the same account.
  • Credits are non-refundable except where the law requires otherwise; see the terms of service.
  • From 2026-11-27, credits still unused 365 days after the top-up that bought them may expire, except where the law requires otherwise.

Last updated