send a real payment, on testnet

This is the actual send21 flow, end to end, with no account and no email: a real draft, a real signature in your own wallet, a real confirmation on a public test network. Direct. Non-custodial. Yours.

How it works

  1. An agent or the API creates a payment draft — here the server does it for you with the same scoped, draft-only access an AI agent gets. Nothing here can spend.
  2. A human reviews and signs in their own wallet. send21 never holds keys, never signs, never broadcasts.
  3. send21 watches the chain until the payment confirms — in production your backend gets a signed draft.confirmed webhook at that moment.
Need test coins? Faucets

For AI agents: the same flow over API or MCP

In production an agent holds a scoped API key that can create and track drafts but never spend — the human always signs in their own wallet. Use the test networks (Testnet4, Signet, SolanaDevnet, EthereumSepolia, BaseSepolia) while integrating.

# an AI agent (or your backend) creates the draft with a scoped key —
# draft-only scopes: the key can create and track drafts but can never spend
curl -X POST https://send21.io/api/v1/drafts \
  -H "Authorization: Bearer s21_YOUR_TESTNET_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: agent-demo-001" \
  -d '{
    "receiverAddress": "tb1q...your-testnet-address",
    "network": "Testnet4",
    "paymentMethod": "MultiOutput",
    "amountSats": 5000,
    "memo": "agent testnet draft"
  }'
// MCP (Streamable HTTP) — same key, same draft-only scopes
{
  "mcpServers": {
    "send21": {
      "url": "https://send21.io/mcp",
      "headers": { "Authorization": "Bearer s21_YOUR_TESTNET_KEY" }
    }
  }
}
// then call the create_draft tool with { "network": "Testnet4", ... }

Full API: /swagger · agent overview: /llms.txt · status via GET /drafts/{id}/status or signed webhooks (draft.confirmed).