How a merchant relates to ZBX
ZBX knows one unit: a merchant organisation. That organisation owns settlement, API keys, webhooks, and paylinks.
A customer who pays a paylink pays that merchant. Settlement, dashboard transactions, and
org_id on webhooks all belong to that merchant’s organisation.
You are a merchant too
Your PSP is itself a ZBX merchant. You can have your own organisation, keys, and settlement if you take payments for yourself. Each merchant you acquire for is also a ZBX merchant, with their own organisation. ZBX does not model your PSP-to-merchant contract. When you create a paylink for one of them, you are calling the Merchants API as that merchant.Do not create a sub-merchant’s paylink with your own PSP API key. Use their key so checkout, settlement, and webhooks belong to their organisation. You are only handling keys and driving the flow.
account_ids or account_ref. That is a different model: Account-Specific Paylinks.
Before you proceed
Use these pages to decide whether this path works for your merchants. Wrong-chain or unsupported-token payments may not be credited.
Need commercial terms? Contact ZBX support.
What you integrate
A PSP integration is three documented surfaces. Open each before you write code.Merchants API
REST at
https://mapi.zbx.boomfi.xyz/v1. Start with Authentication and Response Patterns. In the API reference, use Paylinks, Payments, Events, and Organisation.Webhooks
Signed events per organisation. Configure, verify signatures, then handle event types (start with
Payment.Updated).Paylinks and checkout
Create links, variant URLs, and send the customer to hosted checkout.
Use the merchant paylink flow
This cookbook does not replace those guides. Create, share, and confirm paylinks the same way a single merchant does, then swap in the right merchant’s key. Read these in order:- API Overview and Authentication: how you call the API
- Networks and Currencies and Settlement Overview: what that merchant can accept
- Webhooks Overview, Configure Webhooks, Verify Webhook Signatures, Event Types
- Payments Overview and Payment Links: create, list, update, disable
- Paylink Features: prefill,
customer_ident, redirects, variant URLs - Checkout: hosted customer experience
- Cookbook: Sell a Product: one-off sale from create through webhook
- Cookbook: Recurring Billing: if that merchant bills on a schedule
1. Onboard each merchant as a merchant
For each merchant you enable for crypto:- Create an Account for that merchant, or have them create one and give you API access.
- Configure settlement for the chains and assets they accept. Dashboard: Payments Settings.
- Create an API key at
https://merchants.zbx.boomfi.xyz/dashboard/settings/api-keys. See Authentication and API Authentication. - Point that organisation’s webhook URL at your PSP endpoint. See Configure Webhooks.
org_id; still verify the raw body before you apply any business logic.
2. Hold their keys
Store credentials keyed by your internal merchant id:3. Create a paylink as that merchant
When your PSP opens a crypto payment, load that merchant’s API key and create a paylink the same way Payment Links and Cookbook: Sell a Product describe. Request and response schemas are in the API reference Paylinks group.name, amount, and currency. reference is at most 50 characters. metadata accepts at most 10 entries. Store the returned paylink id against your PSP payment.
For field-by-field detail (quantity, expiry, settlement accounts, recurring interval), use Payment Links.
4. Variant paylinks (typical for a PSP)
Most PSPs do not create a new catalog paylink for every invoice. Create one (or a few) paylinks per merchant, then generate a variant URL when this checkout needs a different amount, currency, customer, or redirect. That is the same Generate variant URL call a merchant uses (API reference → Paylinks → Generate Paylink Variant URL):amount, currency, customer_ident, description, expires_at, redirect_to. The response wraps the checkout URL at data.url. Send the customer there. See Checkout.
You can also append query parameters on the base paylink URL (prefill name/email,
redirect_to, skip_redirect_delay). Full list: Paylink Features.
5. Present checkout
Redirect the customer to the variantdata.url, or to hosted checkout for the paylink (https://pay.zbx.boomfi.xyz/<PAYLINK_ID>).
After payment, redirect_to receives a pid query parameter (the payment id). You can fetch that payment with the same merchant API key (API reference → Payments). Do not fulfill from the browser landing on a success URL. Wait for a verified webhook.
6. Handle webhooks for many organisations
Webhooks are how you know a payment succeeded. Read Webhooks Overview and Webhook Best Practices first. Each merchant organisation signs deliveries with its own key pair. On each POST:- Select the merchant (URL path, or
org_idused only to look up the public key). - Read raw body bytes and headers
X-BoomFi-Signature,X-BoomFi-Timestamp. - Verify the signature with that organisation’s public key.
- Confirm
org_idmatches the merchant you resolved. - Branch on
event. For a one-off sale, ifeventisPayment.UpdatedandstatusisSucceeded, mark your PSP payment paid (idempotent on payment id) and notify the merchant through your existing PSP channels. Full catalog: Event Types.
2xx after you persist the event.
7. Reconcile and operate
If delivery fails, open that merchant’s event history athttps://merchants.zbx.boomfi.xyz/dashboard/settings/api-keys?tab=webhooksthen retry or bulk replay. See Event History and Replay. The API reference Events group lists the same deliveries. List payments with the same merchant API key when you need to backfill independently of webhooks:
Related
API Webhooks- Webhooks Overview
- Configure Webhooks
- Verify Webhook Signatures
- Event Types
- Event History and Replay
- Webhook Best Practices