BVNK
Enterprise-grade stablecoin payment infrastructure — now Mastercard's on-chain rail.
What it is
BVNK is a stablecoin payments platform for enterprises, fintechs, and marketplaces. It gives a business one API to accept (payin), hold, convert, and pay out (payout) money across fiat and stablecoins, plus virtual accounts in GBP/EUR and embedded wallets. Its Layer1 product lets large enterprises run a self-custody stablecoin stack in-house. BVNK is the pick when SLAs, named virtual accounts, and broad licensing matter more than raw chain coverage — and in March 2026 Mastercard agreed to acquire it for up to $1.8B, the largest stablecoin deal to date.
How it works
- Payments API: create a payin or payout (type IN/OUT) via the merchant API; BVNK quotes FX, settles across stablecoin networks and bank rails, and pays out in local currency.
- Channels: a reusable crypto address/route an end user can repeatedly pay into, with per-customer compliance metadata attached.
- Virtual accounts: named GBP/EUR IBAN-style accounts connected to major payment schemes for fiat payin/payout.
- Embedded wallets: white-label, per-end-user wallets that move between USD/EUR/GBP and stablecoins inside the partner's product (BVNK custodies).
- Layer1: self-custody infrastructure so an enterprise runs its own wallets, keys, reconciliation, and routing — BVNK is not in the flow of funds.
- Webhooks push status changes (payment, channel, crypto, customer, ledger) signed with HMAC-SHA256 so the partner treats them as source of truth.
- Visa Direct partnership lets enterprises pre-fund in stablecoins and send payouts to recipient wallets across Visa's network.
Differentiators
- Enterprise SLAs + named virtual accounts + embedded wallets vs. developer-only APIs.
- Layer1 self-custody: enterprises keep their own keys and data — a different posture from custodial rivals (Bridge, Zero Hash).
- Deep licensing: 25+ authorizations incl. US MSB + state MTLs, UK & Malta EMI, VASP, and a Malta MiCA CASP licence (Feb 2026) it passports across the EU.
- Distribution: Visa Direct partnership and Visa Ventures + Citi Ventures backing, then a Mastercard acquisition for up to $1.8B.
Business model
Processing fees on payment volume + FX spread on conversion; SaaS/platform fees for Layer1 self-custody infrastructure and embedded wallets.
Depends on
- Banking partners (fiat payin/payout, virtual accounts)
- Card networks (Visa Direct; now Mastercard parent)
- Stablecoin issuers (USDC/USDT/EURC) + underlying chains
- Compliance vendors (e.g. Elliptic risk intelligence on Layer1)
Risks
- Enterprise sales cycles are long; growth tied to large-customer wins.
- Integration + strategic risk from the pending Mastercard acquisition (up to $1.8B, ~$300M contingent, expected to close 2026).
- Competes directly with Bridge/Stripe and Zero Hash on distribution.
- Regulatory exposure as a multi-jurisdiction money transmitter / EMI / CASP.
The product lines
Payments (Payins & Payouts)
One API to accept, convert, and pay out across fiat and stablecoins.The core merchant product: accept incoming payments (fiat payin to a virtual account, or crypto via a payment/channel), convert with a quoted FX rate, and pay out to a bank account (EUR/GBP) or a wallet/address. Reusable Channels handle repeat inbound flows; hosted and merchant-hosted integration patterns are both supported.
- Payin: fiat to named GBP/EUR virtual accounts, or crypto via a payment summary / channel.
- Convert: BVNK quotes an FX rate (with expiry) between fiat and stablecoins.
- Payout: to bank accounts (EUR/GBP) or to wallets/addresses across major chains, in 130+ countries.
- Status delivered by signed webhooks; hosted flow returns a redirectUrl, merchant-hosted routes inline.
Embedded Wallets
White-label, per-user wallets unifying fiat and stablecoins.Full-stack embedded wallets (launched as part of Layer1, Mar 2025) that let a platform's end users hold and move between USD/EUR/GBP and stablecoins inside the partner's own product. Programmable, white-labelable, and mapped per end-user, with custody, payment, liquidity, and compliance handled by BVNK.
- Per-end-user wallets mapped inside the partner platform.
- Move between USD/EUR/GBP and stablecoins; programmable + white-label.
- BVNK provides custody, liquidity, and compliance underneath.
- BVNK claims the first embedded wallet 'unifying fiat and stablecoins'.
Layer1 (Self-Custody Settlement Infrastructure)
Run your own stablecoin payments network in-house.A self-hosted, self-custody infrastructure product so an enterprise runs its own stablecoin stack — wallets, keys, integrations, and reconciliation — under direct control. BVNK is not in the flow of funds; it provides a modular, payments-first orchestration engine (omnibus wallets, automated consolidation, multi-venue trading, treasury) plus Smart Treasury for AI-driven, real-time liquidity management.
- Enterprise self-custodies keys and owns its data; BVNK only orchestrates.
- Automates wallet creation, reconciliation, asset management, and third-party integrations.
- Smart Treasury: AI-powered, 24/7 liquidity routing across chains, wallets, and venues.
- Risk intelligence powered by Elliptic for compliant settlement at scale.
Architecture & mechanics
Architecture: payments, channels & virtual accounts
BVNK bridges bank rails and stablecoin chains behind one RESTful merchant API (JSON over HTTPS, Hawk auth). The primitives compose into payin/payout flows.
- Payment: an IN or OUT object carrying a quoted FX rate and an expiry; hosted flow returns a redirectUrl, merchant-hosted routes inline with payout details.
- Channel: a reusable address/route an end user pays into repeatedly, tagged with per-customer compliance/originator metadata (api/v2/channel).
- Virtual accounts: named GBP/EUR accounts wired to major payment schemes for fiat payin/payout.
- Webhooks (x-signature, HMAC-SHA256) are the source of truth for status — payment, channel, crypto, customer, ledger events.
Layer1 & the self-custody settlement model
Layer1 inverts the usual custodial model: instead of BVNK holding funds, the enterprise runs its own stablecoin network and BVNK provides orchestration only — so BVNK is explicitly not in the flow of funds.
- Enterprise controls wallets, keys, integrations, reconciliation, and data.
- Modular, payments-first orchestration: omnibus wallets, automated consolidation, multi-venue trading, Digital Asset Engine.
- Smart Treasury adds predictive, AI-powered, 24/7 liquidity management across chains/wallets/venues.
- Elliptic supplies risk intelligence to keep self-managed settlement compliant.
Visa Direct partnership & the Mastercard acquisition
BVNK moved from card-network partner to card-network asset within roughly a year — a signal of how strategic stablecoin rails became to the networks.
- Visa Ventures invested in BVNK (May 2025); BVNK then powers stablecoin payouts for Visa Direct pilots (enterprises pre-fund in stablecoins, recipients get wallet payouts).
- Citi Ventures took a stake (Oct 2025), pushing valuation above the prior ~$750M.
- Coinbase reportedly neared a ~$2B acquisition before talks ended around Nov 2025.
- Mastercard agreed to acquire BVNK for up to $1.8B (~$300M contingent), announced Mar 2026 — the largest stablecoin deal to date, eclipsing Stripe/Bridge ($1.1B).
Compliance & licensing footprint
BVNK's moat is heavily regulatory: a broad, multi-jurisdiction license stack underpins enterprise trust and the network partnerships.
- US: registered MSB with FinCEN + state money transmitter (or equivalent) licenses (NMLS ID 2531294).
- UK/EU: two EMI licenses — UK FCA (via the 2022 SPS acquisition) and Malta — plus a VASP registration.
- Malta MiCA CASP licence secured Feb 2026, passported across the EU.
- 25+ authorizations in total; compliance/KYC/sanctions screening embedded in payin/channel flows.
How it's built
Architecture
BVNK sits between bank rails (for fiat payin/payout and virtual accounts) and stablecoin chains, exposing one RESTful merchant API over HTTPS with JSON. Core primitives are the Payment (an IN or OUT object with a quoted FX rate and an expiry), the Channel (a reusable address/route an end user can pay into repeatedly), and the Wallet (fiat + stablecoin balances). For custodial products BVNK holds keys and is in the flow of funds; for Layer1, the enterprise self-custodies and BVNK only provides orchestration. State changes are delivered via signed webhooks, which are the source of truth — the client/redirect is not.
Integration shape
Authenticate with Hawk auth (an API key ID + secret you generate in the Merchant Portal) over a sandbox (api.sandbox.bvnk.com) then production base URL. Two main collection patterns: hosted — create a payment and redirect the customer to BVNK's returned redirectUrl to finish; or merchant-hosted — quote currencies/protocols yourself and supply payout details so funds route with no redirect. Reusable inbound flows use Channels. Verify every webhook's x-signature (HMAC-SHA256 over the raw JSON body) before acting.
API surface
POST /api/v1/pay/summary- Create a payment summary — an incoming (IN) or outgoing (OUT) crypto payment with a quoted rate; returns a redirectUrl unless payout details are supplied inline.
PUT /api/v1/pay/{uuid}/update/summary- Select the pay currency/protocol on an existing payment summary to lock the quote. [verify exact path]
GET /api/v1/pay/{uuid}- Read a payment's current status and details (poll fallback to webhooks).
POST /api/v2/channel- Create a Channel — a reusable address/route end users pay into, with payCurrency, displayCurrency, reference, customerId, and compliance/originator details.
GET /api/v2/channel/{id}- Read a channel and its associated payments (channelPaymentRead).
POST payout (fiat/crypto)- Create a payout to a bank account (EUR/GBP) or wallet/address; settles from your merchant balance or wallet.
Webhooks (x-signature, HMAC-SHA256)- Subscribe to payment, channel, crypto, customer, and ledger status events; verify signature over the raw payload.
Minimal integration
Create a crypto payin via the merchant API, then verify the status webhook (Hawk auth + HMAC-SHA256).
import crypto from 'node:crypto';
// 1) Create an incoming payment (hosted flow returns a redirectUrl).
const res = await fetch('https://api.sandbox.bvnk.com/api/v1/pay/summary', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
// Hawk auth header derived from your API key id + secret:
Authorization: hawkHeader(BVNK_KEY_ID, BVNK_SECRET, 'POST', '/api/v1/pay/summary'),
},
body: JSON.stringify({
merchantId: BVNK_MERCHANT_ID,
type: 'IN',
displayCurrency: { currency: 'EUR' },
walletCurrency: 'USDC',
reference: 'order-123',
}),
});
const payment = await res.json();
// Redirect the customer to payment.redirectUrl to complete the pay-in.
// 2) Webhook handler — treat the webhook, NOT the redirect, as source of truth.
function handleWebhook(rawBody: string, headers: Record<string, string>) {
const expected = crypto
.createHmac('sha256', BVNK_WEBHOOK_SECRET)
.update(rawBody) // raw JSON, unparsed
.digest('hex');
if (headers['x-signature'] !== expected) throw new Error('bad signature');
const event = JSON.parse(rawBody); // { status: 'COMPLETE' | 'EXPIRED' | ... }
// reconcile order-123 against event.status
}Build notes
- Hawk auth signs each request with your key id + secret; quotes on a payment expire, so lock the pay currency/protocol promptly and handle EXPIRED.
- Always build against the sandbox base URL first; switch host + keys for production.
- Webhook signature is HMAC-SHA256 over the raw, unparsed body — verify before JSON.parse, and idempotently reconcile by your own reference.
- [verify exact endpoint paths, versions (v1 pay vs v2 channel), and field names against the live docs.bvnk.com reference.]