deposit.now documentation

Open x402 funding rail

Introduction

deposit.now is an open x402 funding rail: call POST /api/deposit with a target address and net amount, pay amount + 1% via x402, and the platform forwards net USDC after settlement. It does not create wallets and does not replace Coinbase CDP Fund/Send inside Agentic or Server Wallets.

  • Network: Base mainnet (eip155:8453) in production
  • Fee: flat 1% of net · response status is payment_received (forward is async)
  • Machine contracts: llms.txt, openapi.json

Who needs what

deposit.now is an agent / API rail. You do not connect a browser wallet on this site to use the product. Credentials differ by role:

WhoNeedsDoes not need
Paying agentAny x402 client (e.g. @x402/fetch + viem), a wallet/signer, and USDC on Basedeposit.now API key, site account, browser "Connect wallet", or Coinbase AgentKit (optional only)
Target walletAn EVM address you already have (EOA, agent wallet, CDP wallet, etc.)To be created by deposit.now — we do not mint sub-wallets
deposit.now platformCDP credentials + storage on the server (for receive + forward + optional receipts)Your payer private keys — never send those to deposit.now
Humans on the websiteDocs, OpenAPI, llms.txtWallet connect to call the API (agents call it in code)

Coinbase AgentKit / Agentic Wallet: not required for payers. Use them if you already run on CDP. Any x402-capable wallet works.

CDP Fund / Send:great inside Coinbase's stack. deposit.now is the open HTTP 402 deposit call when you want any target + optional public receipt without a deposit.now API key.

Auth model: payment is auth. Unpaid requests get HTTP 402; paid requests include the x402 payment proof — not Authorization: Bearer ….

Quickstart

  1. Install an x402 client (e.g. @x402/fetch + viem for JS).
  2. POST JSON: { target, amount, memo? }
  3. Handle 402 — pay gross (amount + 1%) in USDC.
  4. Retry with payment proof; read receiptId / receiptUrl from the 200 body.

Bare-bones flow

  1. 1. Agent calls POST /api/deposit with { target: "0x…", amount: "50.00", memo?: "…" }
  2. 2. Server returns 402 + x402 payment request for amount + 1% fee.
  3. 3. Agent pays full gross via x402 to the platform Coinbase Agentic (CDP) wallet.
  4. 4. Backend confirms settlement → keeps fee → forwards net to target via CDP.
  5. 5. Returns payment_received + receiptUrl. Check the receipt for forwardStatus and Basescan links — 200 does not mean the target already holds funds.

Endpoints

POST /api/deposit

Body: target (required EVM address), amount (required net USDC 0.01–100000), memo (optional, max 256 chars).

GET /api/deposit

Service metadata (also x402-protected when paid probes are used).

GET /api/discovery · GET /.well-known/x402

Machine-readable discovery manifest.

GET /receipt/:id

Public verifiable receipt page.

Code examples

JavaScript (@x402/fetch)

import { wrapFetchWithPayment } from '@x402/fetch';
import { x402Client } from '@x402/core/client';
import { ExactEvmScheme } from '@x402/evm/exact/client';
import { privateKeyToAccount } from 'viem/accounts';

const signer = privateKeyToAccount(process.env.EVM_PRIVATE_KEY); // payer agent only
const client = new x402Client();
client.register('eip155:*', new ExactEvmScheme(signer));
const fetchWithPayment = wrapFetchWithPayment(fetch, client);

const res = await fetchWithPayment('https://deposit.now/api/deposit', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    target: '0xChildOrSubWalletAddress',
    amount: '50.00',
    memo: 'Fund child trading agent',
  }),
});
console.log(await res.json());

EVM_PRIVATE_KEY is only for the paying agent client — never for the deposit.now server.

curl (probe 402)

curl -i -X POST https://deposit.now/api/deposit \
  -H 'Content-Type: application/json' \
  -d '{"target":"0x...","amount":"50.00","memo":"Fund child trading agent"}'
# → HTTP 402 + Payment-Required header (pay amount + 1%)

Security

  • Platform hot wallet via Coinbase CDP / Agentic Wallet only — no raw platform private keys in app code.
  • Strict validation: EVM address + amount caps (0.01–100000 USDC).
  • Rate limiting on /api/* (stricter on deposit).
  • x402 facilitator verifies payment on-chain before success response.
  • Forward to target only after settlement; retries + settlement logs on failure.

FAQ

Can I fund any wallet?

You can set target to any EVM address you already have (including another agent’s wallet). deposit.now does not create wallets. Net forward is async after settlement.

Why not just use Coinbase Fund?

If you already run on Coinbase Agentic / Server Wallets, CDP Fund/Send is usually better. deposit.now is for an open x402 deposit call to any target without a deposit.now API key.

Do I need AgentKit or a connect-wallet button?

No. Payers use any x402 client and their own wallet/signer. AgentKit is optional. This site does not require browser wallet connect — agents call the API in code. See .

Does 200 mean the target is funded?

No. payment_received means the x402 payment was accepted. Check receiptUrl for forwardStatus and tx links.

Where is the machine-readable guide?

/llms.txt and /llms-full.txt.