When none of the components fit, skip them
If your flow is genuinely different, the same API sits underneath the components, and none of it requires you to render anything of ours.
One payment, four hops, one quote shown to the user.
What you get instead of a widget
The same routing, settlement, and webhook guarantees, with the interface left entirely to you.
Every component is optional
PayKit and SwapKit are conveniences layered on the same public API. Nothing in the platform requires you to render our interface, load our styles, or accept our copy.
Headless from the first call
ApiClient covers orders, quotes, swaps, invoices, refunds, fees, and off-ramp intents. Your server holds the secret key, your front end holds nothing it should not.
Your brand, end to end
Chain and token pickers, quote presentation, confirmation states, receipts, and failure messaging are yours to design. We return data, not markup.
The order lifecycle stays the same
Orders move through the same states and fire the same signed webhooks whatever the surface, so reconciliation never changes.
How a custom build usually goes
Four steps, and an honest answer at step two if the platform is the wrong shape for what you need.
01
Tell us the flow
What the user is paying for, where funds must land, which chains matter to your audience, and whether settlement is crypto, fiat, or both.
02
We map it to the primitives
Most flows reduce to a DEPOSIT, SALE, or SWAP order with a particular settlement configuration. We will tell you plainly if yours does not.
03
You build against the API
Server-side order creation, your own front end, webhook-driven fulfilment. The docs cover every endpoint and every terminal state.
04
We review before you go live
Key handling, webhook signature verification, refund paths, and failure handling, checked against the production checklist in the docs.
What you are integrating against
Server SDK
@coin-voyage/paykit (ApiClient)
Swap SDK
@coin-voyage/swapkit (quote and execute)
API
REST, v3
Authentication
Public API key in the browser, secret key server-side only
Webhooks
ORDER_CREATED through ORDER_COMPLETED, each delivery signed and timestamped (CoinVoyage-Webhook-Signature-V2) and verifiable with verifyWebhookSignature()
WebSocket
Live order events per order or organization-wide, via subscribeOrderStatus() on the server or useOrderStatusWS() in React
KYC / KYB
Hosted verification links and status checks through the API, so onboarding for fiat flows runs inside your own product
Fees
Fee balance, fee entries, and claim endpoints for the custom fee layer, paid out in USDC
Order modes
DEPOSIT, SALE, SWAP
Describe the flow and we will tell you if it fits
Including when it does not. A short description of what you are building is enough to start.