✨ New Features
Customers
-
New Endpoint:
GET /v2/customersList customers with the same filtering and pagination as V1. The V1 endpoint remains available. -
New Endpoint:
GET /v2/customers/{customer_id}Retrieve customer details with new fields not available in V1. The response now includesrejection_reason(populated whencustomer_statusisREJECTEDorACTION_REQUIRED) andrequest_for_information(populated whencustomer_statusisACTION_REQUIRED). These fields give developers structured visibility into why a customer was rejected or what action is needed, without requiring a separate API call or webhook. -
New Endpoint:
POST /v2/customers/businessCreate a business customer with a significantly expanded KYB profile. Key additions over V1 include:industry_codes— accepts NAICS 2022 6-digit codes instead of the V1business_industry_idintegertax_info[]array — replaces the singletax_idstring, supporting multiple tax documents per countryholding_structure— captures corporate shareholders and foreign branch registrationspublic_listings— stock exchange details for publicly traded companiescompliance— full AML/KYC program details including risk profile, regulated activity, and sanctions screeningsource_of_fund_idsandsource_of_wealth_ids— accept arrays instead of a single integer, ordered by contribution size_entransliteration fields — for non-ASCII business names and addresses- Granular volume fields:
expected_monthly_deposits_usd,expected_monthly_withdrawals_usd,expected_transaction_value_usd, andexpected_monthly_transaction_countreplace the singlemonthly_volumefield
POST /v1/customers/businessendpoint remains available. Returns201on success (V1 returns200). -
New Endpoint:
POST /v2/customers/{customer_id}/business/attachAttach documents to a V2 business customer. Documents are organized into three categories:formation_documents,ownership_documents, andsupporting_documents. This replaces the V1 structure ofownership_structure,company_details, andlegal_presence. Thecustomer_idis now a path parameter instead of a request body field. -
New Endpoint:
POST /v2/customers/{customer_id}/associated-parties/individual/attachAttach identity and address documents for associated parties of a V2 business customer. Replacesproof_of_identityandproof_of_addresswithidentifying_documentsandaddress_documentsarrays, allowing multiple identity documents per party. Also adds an optionalsupporting_documentsarray. -
New Endpoint:
PATCH /v1/customers/{customer_id}Unified endpoint for responding to RFI requests across all customer types and API versions. Submit only the fields and documents specified in thecustomer.rfiwebhook. Sending unrequested fields will trigger an error. The request body accepts the same field structures used by the customer creation and document attachment endpoints (both V1 and V2). This single endpoint replaces the need for separate PATCH calls per document category.
Beneficiaries
- New Endpoint:
POST /v3/beneficiariesCreate a beneficiary with a requiredcounter_partyfield (FIRST_PARTYorTHIRD_PARTY). Theoccupation_remarksfield is no longer required inreceiver_meta_data. The response returnsbeneficiary_iddirectly instead ofidandstatus. The beneficiary is ready for transactions only when itsstatusreachesACTIVE(delivered via thebeneficiary.statuswebhook).
Virtual Accounts
-
New Endpoint:
POST /v2/customers/virtual-accountCreate a virtual account with a restructured request body. Key changes from V1:customer_idis no longer in the request body (inferred from auth context)- Uses
destination.wallet,destination.currency,destination.railinstead of flat fields - Uses
source.currencyandsource.railinstead ofsource_currencyandsource_rail - Accepts both
developer_fee.percentageanddeveloper_fee.fixedinstead of onlydeveloper_fee_percentage - The account starts in
PROCESSINGstatus.deposit_instructionswill be null until the account becomesACTIVE.
-
New Endpoint:
GET /v2/customers/virtual-accountList virtual accounts with the same filtering as V1. The response addsdeveloper_fee_fixed,rfi,bank_country,account_type, andbank_codefields. Thestatusenum is expanded to includePROCESSING,IN_COMPLIANCE,REQUEST_FOR_INFORMATION,ACTIVE,INACTIVE, andDECLINED.
Catalogue
- New Endpoint:
GET /v1/source-of-wealthRetrieve a list of source of wealth options. Acceptstype(INDIVIDUALorBUSINESS) as a required query parameter. Used byPOST /v2/customers/businessvia thesource_of_wealth_idsfield.
Webhooks
-
New Webhook:
customer.rfiFires when the compliance team requests additional documents or data from a customer. Sets the customer status toACTION_REQUIRED. The payload includes a structuredrequest_for_informationarray describing exactly which sections, document types, and fields areMISSING,EXPIRED, orINVALID. Scoped to either the customer or a specific associated party. Can also fire after a customer is alreadyAPPROVED.Customer Type Section Values Individual proof_of_identity,proof_of_address,tos_policies_valueBusiness V1 company_details,ownership_structure,legal_presenceBusiness V2 formation_documents,ownership_documents,supporting_documentsAssociated Party V1 proof_of_identity,proof_of_addressAssociated Party V2 identifying_documents,tax_info,address_documents -
New Webhook:
virtual_account.created.v2Fires when a V2 virtual account is created. The account starts inPROCESSINGstatus withdeposit_instructionsset to null. Includes adeveloper_fee_fixedfield and anrfiobject (null initially). -
New Webhook:
virtual_account.status.v2Fires when a V2 virtual account status changes. Possible values:PROCESSING,IN_COMPLIANCE,REQUEST_FOR_INFORMATION,ACTIVE,INACTIVE,DECLINED. The payload includesdeposit_instructions(populated once active),developer_fee_fixed,developer_fee_percent, andrfi.
🛠️ Improvements
Customers
-
V2 Customer Status Names
Three customer status values have been renamed in V2 endpoints and webhooks. V1 status names remain unchanged for V1 created customers.
The status values you receive are determined by which version of the Get Customer Details endpoint you call, not which version was used to create the customer. A business customer created via
Status V1 Name V2 Name Awaiting processing QUEUEDPROCESSINGPaused for compliance ON_HOLDIN_COMPLIANCEAction needed REINITIATEACTION_REQUIREDPOST /v1/customers/businesswill return V2 status names when retrieved viaGET /v2/customers/{customer_id}, and vice versa. -
V1 entity_type enum:
PRIVATE_LIMITEDremoved ThePRIVATE_LIMITEDvalue has been removed from theentity_typeenum inPOST /v2/customers/business. It remains available in V1. -
Identity document types expanded
The
ProofOfIdentityschema now includesRESIDENCE_PERMITandPERMANENT_RESIDENCY_IDas accepted types.PERMANENT_RESIDENCY_IDis only supported for USA residents and will be rejected for non-USA residents. -
GET /v1/industriesscoped to V1 only The List Industries catalogue endpoint now applies only toPOST /v1/customers/business. The V2 business customer endpoint usesindustry_codes(NAICS 6-digit codes) instead.
Beneficiaries
-
counter_partyfield added toPOST /v2/beneficiariesAn optionalcounter_partyfield (FIRST_PARTYorTHIRD_PARTY) has been added to the existing V2 Create Beneficiary endpoint. -
statusandcounter_partyfields added toGET /v2/beneficiaries/detailsThe Fetch Beneficiary Details V2 response now includes astatusfield with valuesPROCESSING,ACTIVE,INACTIVE, orREJECTED, and acounter_partyfield with valuesFIRST_PARTYorTHIRD_PARTY. -
beneficiary.statuswebhook now includesstatusfield Thebeneficiary.statuswebhook payload now includes astatusfield (PROCESSING,ACTIVE,INACTIVE,REJECTED) alongside the existingactiveboolean. The webhook now fires for all four status transitions.
