Account provisioning at customer creation 🏦
Enhancement:- Provision accounts at customer creation
accounts array of currency codes when creating a customer. Each currency provisions an account that enters verification and becomes ACTIVE once approved. The customer response now also returns the linked accounts with their id and currency.- Read accounts
GET /accounts. Each account is linked to a customer and runs through a verification workflow (PROVISIONING → ACTIVE). See Accounts for details.- Account webhook events
account.provisioning, account.rfi, account.active, and account.closed to receive real-time updates as an account moves through verification. See Available events.Bank accounts renamed to destinations 📦
Deprecated:- Resource renamed across the API
/bank-accounts resource is now /destinations. The bankAccountId field is now destinationId. See Destinations for the updated concept.POST /transactions/off-ramp will accept either destinationId or bankAccountId until June 15, 2026 (three weeks). After this date, only destinationId will be accepted.bank_account.*webhook events renamed todestinations.*
bank_account.under_verification, bank_account.approved, and bank_account.final_rejection are now destinations.under_verification, destinations.approved, and destinations.final_rejection.typefield removed from destination requests
type field is no longer documented for POST /destinations. The /destinations route will continue to accept type as an optional field until June 15, 2026 (three weeks) so existing integrations migrating from /bank-accounts keep working. After this date, the field will be rejected. Continue sending type on /bank-accounts; stop sending it on /destinations.Update your subscriptions on the dashboard to start receiving the new
destinations.* events — the old event names will no longer fire.TEMPORARY_REJECTION renamed to RFI ✏️
Deprecated:- Customer and associated party status renamed
TEMPORARY_REJECTION is now RFI (Request for Information). The rename applies to the status field on both the customer and each entry in the associatedParties array, in API responses and webhook payloads.- New
customer.rfiwebhook event
customer.rfi webhook event has been introduced. The customer.temporary_rejection event will continue to exist, but it will no longer fire — only the new customer.rfi event will be emitted. The customer.temporary_rejection event will be removed in a future release.Update your subscriptions on the dashboard to
start receiving the new
customer.rfi event.Wallets only returned for APPROVED customers 👛
Deprecated:walletsgated by verification status
wallets array is now only returned on customer responses once the customer’s verification.status is APPROVED. This also means Create a customer no longer returns wallets. Call Read a customer or register the customer.approved webhook to get notified once verification is approved and the wallets become available.Isolated retry for associated party verification 🔁
Enhancement:- Retry verification for specific associated parties
associatedPartyIds array in the request body. When provided, only the listed associated parties are sent for verification again, and any associated party not included keeps its current verification status. See Retrying verification for specific associated parties for details.Applies only to BUSINESS customers. Resubmit any corrected
documents/information for the affected associated parties before starting the
retry.
Improving customer onboarding 🛩️
Enhancement:- Auto-assign UBO role to sole shareholders
UBO to their roles array. No action required from your side.PROOF_OF_ADDRESSdocument now required
PROOF_OF_ADDRESS document is now required when uploading documents for individual customers, business customers, UBOs, and representatives. You can’t start a verification without sending this document.The proof of address document must have been issued within the last 90
days.
- Terms of service acceptance required before verification
POST request to /customers/{id}/tos with an optional redirectUrl to get the acceptance URL. Share the returned URL with your customer. The requirements array includes TERMS_OF_SERVICE until the customer has accepted. See also Read a customer.Request body (optional)
Response
Webhooks v2 🔔
Enhancement:- New webhook delivery system
eventId, eventType, and data fields. See Webhooks for details.Deprecated:- Legacy webhook format deprecated: Migrate to the new webhook format and update your signature verification to use the
webhook-id,webhook-timestamp, andwebhook-signatureheaders. See Verifying webhook signatures for implementation examples.
MXN support is now live 🇲🇽
New feature:- MXN transactions now available
- MXN bank accounts now supported
Sandbox magic numbers for testing 🪄
New feature:- Magic numbers for customer verification testing
taxId field when creating customers in sandbox to simulate different verification statuses. No API changes required, magic numbers use existing fields.taxId ending | Simulated status |
|---|---|
1 | NOT_STARTED - verification never starts automatically |
2 | RFI - requests additional documents |
3 | FINAL_REJECTION - permanent rejection |
| Any other | APPROVED - default behavior |
Multiple roles for associated parties 🎭
Deprecated:rolechanged torolesarray in associated parties: ThePOST /customers/{id}/associated-partiesendpoint now requires arolesarray instead of the singlerolestring field. This allows associated parties to hold multiple roles simultaneously (e.g., both UBO and REPRESENTATIVE). Valid values:UBO,REPRESENTATIVE,SHAREHOLDER.
KYC/KYB API and idempotency support 🤯
New feature:- KYC/KYB verification endpoints
PATCH /customers/{id}/additional-information— Submit KYC/KYB dataPOST /customers/{id}/documents— Upload verification documentsPOST /customers/{id}/associated-parties— Add UBOs, shareholders, and representativesGET /customers/{id}/associated-parties— List associated partiesGET /customers/{id}/associated-parties/{associatedPartyId}— Read an associated partyPOST /customers/{id}/verifications— Start a verificationGET /customers/{id}/verifications/{verificationId}— Read verification status
additionalInformationin customer response
additionalInformation object with all submitted KYC/KYB data.- Multi-level corporate structures
parentId field, allowing you to nest shareholders across multiple levels of ownership hierarchy.- Idempotency support
POST, PUT, PATCH) now accept an Idempotency-Key header to prevent duplicate operations. Keys expire after 24 hours. See Idempotency for details.Individual customers and bank account holders 🥳
New feature:- Individual customer type
type: "INDIVIDUAL" for natural persons. Individual customers require name, taxId, and birthDate fields.- Individual bank account holders
birthDate is optional.- Individual bank account identifier key type as CPF
CPF as a valid keyType identifier for PIX.Enhancement:- New relationship types for bank account holders
FRIEND, RELATIVE, and EMPLOYEE to the available relationship types for bank account holders.Multi-blockchain support 🔥
New feature:- Multiple wallets per customer
wallets array includes blockchain, address, block explorer link, stablecoin balances, and default blockchain indication.- Blockchain field in transactions
blockchain field. If not specified, the project’s default blockchain is used.- Blockchain field in exchange rates
blockchain field. The response indicates which blockchain was used for rate calculation.Enhancement:- Improved balance tracking
-
walletandbalancesfields deprecated on customers: Migrate to the newwalletsarray. Affected endpoints:POST /customers,GET /customers. -
Default partner fee removed: If no
partnerFeeIdis provided, partner fees will be zero. Remove any logic that depends on a default fee. Affected endpoints:GET /partner-fees,POST /partner-fees.
Transaction limits response improved ⚡
Enhancement:- Transaction limits now include usage tracking
includeTransactionLimits=true, the transactionLimits object now returns detailed usage information with used and remaining fields for daily and monthly limits, giving you real-time visibility into your customer’s limit consumption.-
transactionLimitsno longer returned by default: ThetransactionLimitsfield is no longer included inGET /customers/{id}responses by default. Use the new query parameterincludeTransactionLimits=trueto retrieve transaction limits. -
transactionLimitsremoved from customer listing: TheGET /customersendpoint no longer returns thetransactionLimitsfield in the response array. - 10-second timelock removed from exchange rates: The 10-second timelock option is no longer available. The 30-second timelock now has no additional fees, and fees for other timelock options have been optimized.
SEPA and SWIFT are live 🚀
New feature:- SEPA support now available
- SWIFT support now available
- Purpose field now returned in transaction responses
purpose field is now included in transaction responses under the request object, providing full visibility of the original transaction intent.- Target amount visibility improved
targetAmount in the receipt object when the conversion is complete, ensuring you always have access to the final conversion amounts.- Bank account ordering updated
Bank Accounts are live 🎉
New feature:- Supplier payments now available
/bank-accounts endpoint allows you to register and manage bank accounts for supplier payments. Refer to the Create a Bank Account for details.Enhancement:-
PROCESSINGstatus renamed toTRANSFERRING_STABLECOIN -
state.blockchainmoved tostate.receipt
receipt object includes transactionHash and blockExplorerUrl fields for better transaction tracking.purposenow required for on-ramp and off-ramp transactions
purpose field. Requests without this field will be rejected.-
On-ramp:
payment.railmoved to request levelrail -
Off-ramp:
customerIdandpaymentobject removed, usebankAccountIdonly -
Exchange Rate:
railandcustomerIdparameters now required