Webhooks: versioning policy and legacy removal date
The deprecated event names —payout.update, balance.updated and card.transaction.refund —
will be removed on 15 November 2026. Both the new and the legacy names are delivered until
then, so point your handlers at the new names before that date.The webhooks reference now also documents how events are versioned and deprecated. Events are
versioned by event type: breaking changes ship as a new type with a version suffix, such as
payin.updated.v2, never as a change to an existing one. Adding an optional field is not a
breaking change, so your handler must ignore fields it doesn’t recognize. Deprecations get at
least 90 days of notice, parallel delivery of both events for the whole window, and are not
removed until subscribers have migrated.Self-custody wallets
New Self-custody section documenting the SDKs that add a stablecoin wallet to your web or mobile app. Users hold and send US-dollar stablecoins, sign in with email or a passkey, and never see a seed phrase or a network fee — the wallet key is created on the user’s device and never leaves it. Covers the overview, a quickstart, authentication, passkeys, the wallet flow, and the backend handler, with SDKs for Web, React Native, Flutter, iOS and Android.Also adds a page for the white-label wallet, a fully branded wallet product powered by Meru, currently in development.Webhooks: standardized event names
Some webhook event names are being standardized:payout.update → payout.updated,
card.transaction.refund → card.transaction.refunded, and balance.updated is split
into payin.updated (fiat deposits) and crypto_deposit.updated (on-chain deposits). During
the transition both the new and legacy names are delivered for the same event, each carrying a
shared data.eventId for deduplication. The legacy names are deprecated and will be removed on
15 November 2026.Meru Checkout
New Checkout section documenting the hosted crypto payment page: an overview, a quickstart, thePOST /v1/checkouts and GET /checkouts/{id} references, the
crypto-exchanges and QR Bolivia payment methods, and the iframe embed with
postMessage events. Also adds a React SDK guide for
@meru.app/checkout-react (<MeruCheckout>, redirectToCheckout, and the
useCheckoutStatus hook).Payin codes (PIX & QR)
New reference pages for generating a payin code viaPOST /v1/payins/qr-code —
routed by currency to a PIX copy-and-paste code (BRL), a QR code (BOB), or a
default QR — and for checking its status via
GET /v1/payins/qr-code/{paymentId}/status. Adds a TypeScript “Collect a Payin”
guide covering the quote → generate → status flow for Bolivia and Brazil.Webhooks reference
The webhooks reference now covers every event we send —payout.update,
balance.updated, customer.status.updated, customer.product.request.updated,
and card.transaction.* — split into a page per event, each with its payload,
states, and an example.Date range filtering and export
The payins and payouts list endpoints now supportstartDate and endDate
filters (ISO 8601). New GET /v1/payins/export and GET /v1/payouts/export
endpoints download the full filtered range as CSV (default) or JSON.Webhooks reference
The webhooks documentation now reflects the real event payloads: thepayout.update and balance.updated events, the full list of payout states,
the data fields, and how to verify request signatures.