BchainPayBchainPay

Payment intents


title: "Payment intents" description: "A payment intent represents a single on-chain charge with a fresh address and an expected amount." section: "Concepts" order: 1 updated: "2026-04-18" sourcePath: "content/docs/concepts/payment-intents.mdx"

A payment intent is BchainPay's central object for accepting a payment. You declare the amount, the settlement coin, and the network. We allocate a fresh on-chain address and track every confirmation against it until the intent is completed, expired, or canceled.

Lifecycle

  1. requires_payment — created, waiting for funds.
  2. processing — payment seen on-chain, waiting for confirmations.
  3. completed — confirmed and credited to the matching pocket.
  4. expiredexpires_at passed before the customer paid.
  5. canceled — you canceled before payment.

When to use one intent vs. many

  • One intent per order. Every checkout, invoice, or recurring charge gets its own intent.
  • Never reuse an address across orders. Each intent gets a unique address so you can attribute payments unambiguously.

Why we settle in stablecoins

You always receive the asset your customer paid in. BchainPay does not auto-swap, so you keep the upside (and downside) of price moves until you withdraw. To realize a fiat amount, settle in USDC or USDT.

Last updated Edit on GitHub