Payment Rails
| Rail | Status | Who pays |
|---|---|---|
| Payment link (card) | live | The buyer, in their browser |
| Coinbase Commerce | beta | The buyer: USDC on Base or card |
| x402 USDC on Base | beta | The agent, with a signed proof |
Card purchases are always confirmed by the buyer. For new integrations, use the payment link.
Payment link
Call the checkout MCP tool or POST /api/agent/payment-link. You get back a URL for the buyer:
{
"session_id": "cs_live_XXXXXXXXXX",
"payment_url": "https://checkout.stripe.com/c/pay/cs_live_XXXXXXXXXX",
"amount": 8550,
"currency": "usd"
}
Give the buyer payment_url, then poll order_status until it is paid.
Coinbase Commerce (beta)
Same request as the payment link. For sellers who accept it, the link lets the buyer choose USDC or card. Sellers can opt in by emailing hello@kifly.ai.
x402 USDC on Base (beta)
For agents that pay on-chain, using the x402 protocol. Available on REST only, with a credential, on POST /api/agent/cart/{cart_id}/checkout. The first call returns 402 with the payment requirements; repeat it with an X-Payment header. Contact us to enable it.
Idempotency
Mutating requests need an Idempotency-Key of 16 to 64 characters. Reuse the same key when retrying the same operation.