Current docs describe the v3 API and PayKit
^3 surface. Older entries below
are retained for historical context.3.6.0 - 2026-10-05
Released as@coin-voyage/shared, @coin-voyage/crypto, and @coin-voyage/paykit 3.6.0, and @coin-voyage/swapkit 0.4.0.
Added
- Browser-safe ApiClient entry point:
@coin-voyage/shared/api/browserexports anApiClientwithout Nodecrypto, for client bundles. The serverApiClientin@coin-voyage/shared/apiextends it and keeps every secret-signed method. - Off-ramp email challenge:
ApiClient.issueOffRampVerificationEmailChallenge()issues the challenge that must be completed before creating an off-ramp verification. The returned code is sensitive and must only be delivered from a trusted server. - Verification requirement link:
OffRampVerificationResponsenow includes an optionalrequirement_url. - Invoice note and visibility:
CreateInvoiceParams,SaveInvoiceDraftParams, andInvoiceDataacceptnoteandis_public. - GBP and COP bank rails:
BankOnrampPaymentRailnow includesfaster_paymentsandbre_b, and thecopendorsement maps to COP. - Masked bank account details:
BankAccountMaskedDetailsnow includesbank_codeandaccount_type_detail. - WalletConnect modal connector:
createWalletConnectModalConnector()in@coin-voyage/crypto/connectorsbuilds a WalletConnect connector with the QR modal enabled from an existing connector. - BTC fee rate helpers:
estimateFeeRate()returns a priority fee rate in whole sat/vB, andsendBtc()accepts an optionalfeeRate. - SwapKit custom recipient on same-chain swaps: The destination wallet selector is always available with “Paste Address”, and now sits in the BUY card header.
- SwapKit destination balance: The BUY card shows the balance of the connected destination wallet.
- Off-ramp verification requests:
OffRampVerificationRequestnow requiresemail_challenge_idandemail_challenge_code. Issue a challenge first, then create the verification. - Off-ramp request signing:
createOffRampVerification()now signs the request body as well as the path. No caller changes are needed. - Bank account request types:
AddBankAccountRequestis now a strict union per account type.bank_nameis required for every account type except Bre-B and Colombian bank transfer;addressis also required except for those two and GB accounts;first_nameandlast_nameare required whenaccount_owner_typeisindividual. Fields that belong to another account type are rejected.buildAddBankAccountRequest()enforces the same rules. - SWIFT account details:
SWIFTAccountInfonow requires at least one ofaccount_numberorbic. - PayKit package exports: The
exportsmap liststypesfirst and uses adefaultcondition instead ofimport. - SwapKit theming: The root background is transparent unless
theme.backgroundis set, and the light themesurfacecolor is now#f4f5f7. - Peer dependency:
@bigmi/reactis now^0.9.4for crypto, PayKit, and SwapKit.
- Mobile WalletConnect: Mobile WalletConnect flows work again in PayKit and SwapKit, keeping the configured project metadata and modal options. In SwapKit the wallet is labelled “Mobile Wallets” and its modal renders above the swap UI.
- BTC wallet deposit fees: UniSat, OneKey, and OKX deposits now request a priority fee rate instead of the wallet’s cheapest default, so deposits confirm within provider deadlines. If the estimate fails, the wallet default is used.
- WalletConnect modal options:
createWalletConnectConnector()merges callerqrModalOptionswith the default z-index instead of replacing it. - PayKit primary button hover color: The hover color now reads
--ck-primary-button-hover-color. Themes that set the misnamed--ck-button-primary-hover-colorneed to rename it. - SwapKit amount precision: Swap amounts and balances keep full precision, so Max and percentage buttons no longer round.
- SwapKit same-chain progress: Same-chain swaps no longer show a redundant “Receive” step in the transaction details.
- SwapKit balance refresh: Balances refresh after a refund, and are refetched shortly after a swap settles to catch lagging chain data.
- SwapKit token matching: Held tokens match the token list regardless of address casing on EVM and Sui.
3.4.0 - 2026-08-03
Added- Invoice generation via API: Create and publish invoices, save drafts, list and retrieve invoices, archive invoices, and delete unpublished drafts through the v3 API and
ApiClient. Published invoices create a linkedSALEorder and email the recipient a PDF with a hosted payment link. See the Invoices guide.
- Recoverable Pay to Address partial payments: Orders in
PARTIAL_PAYMENTcan now accept additional deposits through Pay to Address until the required amount is received and the order can be fulfilled. This recovery behavior is available only for Pay to Address; other payment methods still require a separate resolution flow.
3.3.0 - 2026-07-29
Added- Robinhood Chain: Added payment and settlement support for Robinhood Chain (
4663). - Across provider: Added Across as a cross-chain routing provider.
- Uniswap V2 and V4: Expanded Uniswap routing beyond V3 to include V2 and V4 liquidity.
- EUR card payments: Card Payments can now fund eligible orders in EUR as well as USD.
- Multi-wallet portfolio requests:
ApiClient.portfolio()andPOST /wallet/portfolionow acceptwallets, an array of 1–10 wallets. Responses contain aportfolioarray of successful scans and anerrorsarray for wallets that could not be scanned.
- ChangeNow provider: ChangeNow is no longer used for routing.
3.2.0 - 2026-07-07
Added- PayButton direct payment routing:
PayButtonandPayButton.Customnow acceptpaymentMethod, so integrations can open the modal directly toPaymentMethod.WALLET,PaymentMethod.DEPOSIT_ADDRESS, orPaymentMethod.CARDinstead of first showing method selection.
- On-ramp API errors: On-ramp API responses now return user-friendly
error.messagevalues for common Link, identity, payment-method, session, and checkout failures.
3.1.0 - 2026-06-27
Changed- PayKit Modal: Improvements to Card Payment flow
3.0.0 - 2026-06-25
Changed- API base URL: Current API requests use
https://api.coinvoyage.io/v3; the generated OpenAPI reference is served from/v3/openapi.json. - Order API naming: SDK helpers now use
Ordernaming:createDepositOrder(),createSaleOrder(),createRefundOrder(),getOrder(),listOrders(),orderQuotes(),createPayment(), andgetOrderPaymentMethods(). - PayButton lifecycle callbacks: Payment lifecycle callbacks are now split into
onAwaitingPayment,onConfirmingPayment,onExecutingPayment,onPaymentCompleted, andonPaymentBounced. - Off-ramp API naming: Verification and fiat payout APIs use
createOffRampVerification(),getOffRampVerificationStatus(),listOffRampIntents(), andcreateOffRampIntent(). - Webhook payloads: Webhook deliveries now use the v3 envelope
{ event, delivered_at, order }with uppercaseORDER_*event identifiers.
- Legacy PayOrder client helper names:
createDepositPayOrder(),createSalePayOrder(),createRefundPayOrder(),getPayOrder(),listPayOrders(),payOrderQuote(),payOrderPaymentDetails(),getPayOrderPaymentMethods(), andswapData()are no longer the current PayKit API surface.
2.5.0 - 2026-05-27
Added- KYC helpers:
ApiClient.createKYCLink()creates an identity-verification link for an organization, andApiClient.getKYCStatus()retrieves the current KYC and terms-of-service status.
- Signed organization methods:
ApiClient.listPayOrders(),ApiClient.listWithdrawals(), andApiClient.createWithdrawal()now requireapiSecretas an argument. Server integrations that call these methods must pass the API secret from server-side code.
2.4.6 - 2026-05-27
Added- PayKit Headless (Preview): Added
@coin-voyage/paykit-headlessfor server and agent runtimes that need to satisfy CoinVoyage x402PAYMENT-REQUIREDchallenges. Sui x402 signing is supported through this package. - Order status WebSocket hook: Added
useOrderStatusWS()for React integrations that need live backend PayOrder events outside the default PayButton UI. - Backend API access: Added
useBackendApi()for advanced PayKit integrations that need direct access to the configured API client. - ApiClient helpers: Added
currencySearch(),portfolio(),listPayOrders(),listBankAccounts(),getBankAccount(),addBankAccount(),listWithdrawals(), andcreateWithdrawal(). - Organization-wide WebSocket subscriptions:
ApiClient.subscribeOrderStatus()can now subscribe to all organization PayOrder events when called with a server-generated authorization signature forGET /ws.
- Quote filters:
PayOrderQuoteParamsnow acceptschain_idsinstead of a singlechain_id. - Swap requests: Swap requests now support
payment_railand nestedcryptoinput options, includingsource_currency,sender_address, andslippage_bps. - Route quote field: Route quote responses use
quote_id. - Payment details: Payment details now use the shared
PaymentDataBaseshape for rail-specific payment instruction data.
- PayButton order creation errors: Backend order-creation failures are now surfaced to consumers.
- PayButton lifecycle callbacks: Payment lifecycle callbacks continue working across multiple orders for the same button.
resetOnSuccessbehavior: Successful payments reset payment state when configured.- EVM transaction errors: User-facing EVM transaction errors are clearer.
- Desktop WalletConnect: Desktop WalletConnect routes through the QR flow correctly.
2.4.1 — 2026-04-08
AddedPARTIAL_PAYMENTstatus: A new terminal state for PayOrders that receive an insufficient amount. Use this status to detect and handle partial-payment outcomes in your order fulfillment logic.PayOrderPartialPaymentEvent: A new event type so you can explicitly handle partial-payment outcomes in your event flows.
2.4.0 — 2026-04-04
Added- Stripe on-ramp integration: Full Stripe fiat-to-crypto on-ramp support, including geo-blocking for restricted regions.
PaymentStepsmodel: Tracks granular payment progress across stages such as on-ramp, swap, and delivery.- Payment methods endpoint:
GET /pay-orders/{payorder_id}/payment-methodsreturns available payment methods for a given PayOrder. - Organization settings in PayOrder responses:
Organization.settingsis now a JSON field and is returned inGET /pay-ordersandGET /pay-orders/{payorder_id}responses. hosted_urlfield: Added toGET /pay-ordersandGET /pay-orders/{payorder_id}responses so you can link customers directly to the hosted pay page.
- Webhook payload coverage:
payorder_errorandpayorder_refundedevents now include the fullpayment_dataobject. - PayKit payment handling: The widget now consumes
payment_data.steps, supports organization settings, and exposes location-aware payment method options. - SDK request and response models: Added
metadatasupport toClaimFeesRequestandSwapQuoteRequest, updated order event types andClaimFeeResponse, and expandedApiClientto acceptOpts. - EVM prefunding flow: Improved prefunding across CCTP, Direct, Relay, and Uniswap providers with better gas estimation, prefund calculation, and error handling.
- Webhook subscription filtering: Webhook deliveries now correctly respect each subscriber’s registered event types.
- Payment state persistence: Improved handling of
payment_dataso the correct exchange state is always persisted throughout the payment flow. - Refund PayOrder client flow: Fixed
createRefundPayOrderhandling inApiClient. - WalletConnect desktop routing: Desktop WalletConnect flows now route through the QR flow correctly.
- Deprecated
RequestData/requestfield: Removed fromPayOrderResponse. - Legacy transaction hash aliases: Removed
SourceTransactionHashandDestinationTransactionHashalias fields.
0.1.25 — 2025-11-04
Added- Phantom wallet (EVM): Users can now connect an EVM wallet through the Phantom browser extension.
0.1.24 — 2025-10-29
Added- German localization: Display the PayKit modal in German by specifying the
de-DElanguage in your widget configuration.
ApiClientresponses: AllApiClientmethods now returnAPIResponse<T>for a consistent response shape.
0.1.23 — 2025-10-21
ChangedWalletProviderprops: Updated property names and nesting structure. Review yourWalletProviderconfiguration if you pass custom props.
0.1.22 — 2025-10-17
Added- Stable Testnet support: Added support for the Stable Testnet network so you can test integrations without using mainnet funds.