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.
Choose a rail
| Rail | Best for | Bounds |
|---|---|---|
| Hosted checkout | People with a browser wallet; USDC on Solana or other chains via Circle CCTP | $5 to $1,000 per top-up |
| Wallet purchase | Agents with a Solana wallet, no browser | $5 to $1,000 per purchase |
| x402 | Agents paying per request, no key | From $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 it | Per 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/reconcileasks 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
| Answer | Meaning |
|---|---|
400 invalid_amount, amount_out_of_range | Not whole cents, or outside the bounds. |
402 paid_daily_cap_exceeded | The account received $2,000 of paid credit in the last 24 hours. |
403 payment_refused | The paying wallet is on the OFAC sanctions list. |
451 location_blocked | The service is not offered where the request comes from. |
503 geo_unavailable, payments_unavailable, checkout_unavailable | Temporarily 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).
GET /v1/credits/near-intents/assetslistsasset_id,symbol,blockchain,decimals,price_usdandcontract_address.POST
with/v1/credits/near-intents{"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_inandamount_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),deadlineand aqr_svgof the address.- Send
amount_inof the origin asset todeposit_address, withdeposit_memowhen set, beforedeadline. - A poller follows every deposit, including terminal deposits on a six-hour backfill;
POST /v1/credits/near-intents/:deposit_address/checkasks 1Click at once (120 an hour).GET /v1/credits/near-intentslists the key's newest 20,GET /v1/credits/near-intents/:deposit_addressreads one.
| Status | Meaning |
|---|---|
open | Waiting for the deposit. |
pending | Deposit seen and swapping, or an incomplete deposit that NEAR Intents may return through its own mechanism at the deadline. |
credited | Verified on Solana and posted: credited_micros from received_micros received after fee_micros in rail fees. |
returned_by_near_intents | NEAR Intents returned the funds to refund_address through its own mechanism. |
failed | 1Click failed the swap. |
expired | The deadline passed with no deposit. |
held | 1Click 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_microsfrom the quote, never a later setting. The response keepsamount_microsas the quote and exposes aggregatereceived_micros,fee_microsandcredited_micros. - For a deposit below
min_amount_in, one after the deadline, or a failed swap, NEAR Intents may return the origin asset torefund_addressthrough 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_rejectedwith 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