BVNK Stablecoin Payments — a Mastercard Company
BVNK is enterprise stablecoin payment infrastructure: one API to accept stablecoins from customers, hold balances across fiat and digital currencies, and pay out to any wallet — with BVNK handling quotes, conversion, blockchain monitoring and gas. On August 3, 2026 Mastercard completed its acquisition of BVNK (up to $1.8B), becoming the first major card network to own stablecoin settlement rails. This guide covers the architecture, pay-in and payout transaction flows, the status model, and what the acquisition means.
Pay-ins: accepting stablecoins
Two collection methods cover the two commercial shapes. Payment Links are single-use: a fixed amount, a live quote, a unique address, an expiry — right for checkout and deposits of an exact amount. Channels are permanent per-customer addresses converted at spot — right for neobank-style top-ups. Both can settle into fiat, a different stablecoin, or the same coin.
A customer tops up a platform account with stablecoins via a BVNK Payment Link: the platform creates a payment with a live quote, BVNK generates a unique deposit address, the customer sends funds on-chain, and BVNK converts and settles into the platform's wallet — in fiat, a different stablecoin, or the same one.
"Deposit $10 in crypto"
Customer picks stablecoin at the platform's cashier or checkout.
A trading platform, neobank or e-commerce site offers stablecoins as a deposit / payment option next to cards and bank transfers. The customer chooses the amount in the display currency; everything after this is orchestrated through BVNK.
Payment Link status model
| Status | Final? | Meaning |
|---|---|---|
PENDING | No | Created; waiting for an on-chain transaction or expiry. Default window 48 h (expiryMinutes). |
PROCESSING | No | Transaction seen on-chain; awaiting confirmations. Can still expire (e.g. insufficient gas). |
COMPLETE | Yes | Full amount received, converted, and credited to the wallet. |
UNDERPAID | Yes | Partial amount received and credited — customer sent less than quoted. Handle in reconciliation. |
EXPIRED | Yes | No (sufficient) payment before expiry. |
Channel status model
| Status | Final? | Meaning |
|---|---|---|
DETECTED | No | Transfer visible at the channel address; a Channel Payment transaction is created and waits for network confirmations. |
COMPLETE | Yes | Confirmations reached; funds converted at spot and credited. |
Create
POST /api/v1/pay/summary with type: IN — or POST /api/v2/channel once per customer. Restrict coins with currencyOptions; skip the selection screen by pinning payInDetails.currency + protocol.
Redirect
Send the customer to the returned redirectUrl (hosted page with QR and live rate) rather than showing a raw address — this kills mistyped-address risk.
Reconcile
Verify the webhook signature, return 200 fast, then GET /api/v1/pay/{uuid} and credit off the API state — final amounts can differ (UNDERPAID).
Try it live: the BVNK Flow Simulator animates the Payment Link, Channel, and payout sequences step by step with every API call and webhook annotated.