/dapi/v1, newest first. An entry marked Breaking requires a code change and lists the migration.
POST /dapi/v1/clientscreates a company client with no wallet at HEVN and returns202with the client inprovisioning. HEVN enables it per integrator (External wallets, Clients).- New resource
/dapi/v1/client/accounts:POST,GET,GET /{accountId}andDELETE /{accountId}. It holds external accounts and sub accounts, both named by anacc_…id (Accounts). - New
authorizationvaluewallet: a payout from an external account returnstransfer, and the customer’s wallet funds it (Authorization values). - Sub accounts:
POST /dapi/v1/client/accountswithkind: "sub"opens a further wallet of your own account, inUSDCorRD(Sub accounts). sourceAccountonPOST /dapi/v1/payouts,sourceAccountanddestinationAccountonPOST /dapi/v1/swaps, anddestinationAccountonPOST /dapi/v1/payinstake anacc_…id.POST /dapi/v1/payinstakesrefundAddress.POST /dapi/v1/banksandGET /dapi/v1/banks/{product}takeaccountId(Virtual accounts).accountIdis returned on virtual accounts, payins, balance rows and transactions.GET /dapi/v1/transactions,/summaryand/exporttake anaccountIdfilter. A move is two rows oftype: "move"(Balances and transactions).debithassourceAddressandoperation, the user operation the approval signs (Debit contents).- Sandbox:
POST /dapi/v1/sandbox/depositstakesaccountId, and the credit and payout responses return it (Sandbox). - New error codes:
account_address_taken,account_address_refused,account_not_spendable,account_destination_unsupported,source_account_unsupported,account_funding_invalid,account_spend_forbidden,refund_address_required,safe_mode_requiredandaccount_archive_unsupported. - The documentation is split into tabs: For developers, HEVN Connect, External wallets and Sub Accounts. Pages under
/whitelabel/redirect to/developers/or/connect/.
- New error codes:
verification_not_applicable(409),kyb_documents_processing(409, complete again in a few seconds) andtransfer_policy_denied(403, refused by the holder’s transfer policy). rail_requirements_unmetandphone_requiredare no longer returned.- The
slotenum on documents no longer includesdirectors_registryorlist_of_authorized_signatories. - A contact’s
addressis returned with all of its fields. - The sandbox runs no registry or document check on KYB.
feeBpson a virtual account comes from the client’s plan and can differ between clients (Fees).
- The KYB document takes
company.regulatoryLicenseType,company.regulatorCountry,company.verifiesCustomerIdentityandcompany.hasTransactionMonitoring. They can be required whenisRegulatedistrue(KYB fields).
- New account
FDIC_EUR, a euro balance held at the partner bank (Balances and transactions). A payin cannot settle into it. railCurrencycan beEUR.
Breaking: virtual accounts are requested by product.
POST /dapi/v1/bankstakes{"product": "eu"}instead of{"rail": "…"}. Products:eu,us,uk,swift,uae,br,mx,co,au,ng. HEVN picks the rail (Rails).GET /dapi/v1/banks/{rail}andGET /dapi/v1/banks/{rail}/rateare nowGET /dapi/v1/banks/{product}andGET /dapi/v1/banks/{product}/rate.GET /dapi/v1/banks/{rail}/requirementsis removed. A request with something missing creates the record aspreparingwithblockers[]:kyb_required,verification_requiredorterms_required(Virtual accounts).- Each record has
product.railis still returned, is informational and can change while the record ispreparing. Do not store it or send it. - A phone number on the account no longer blocks a virtual account.
product instead of rail, key stored records by product, read blockers[] in place of the requirements route, and drop handling for 422 rail_requirements_unmet and 422 phone_required.Identity verification for linked individuals:POST /dapi/v1/connect/sessionstakesaction: "verify"with aclientId. The holder verifies their identity in the sign-in window (Sign in with HEVN).- The client record has
verifiedAt, the time a business passed KYB or an individual verified their identity (Clients). - In the sandbox,
POST /dapi/v1/sandbox/kyb/statuswithapprovedalso verifies an individual client.
- Linking issues the code right after sign-in. The consent screen is removed, and
access_deniednow means the holder cancelled. login_hinton the session URL signs the holder in with a one-time code sent to that email. Without it the window offers Google and email sign-in.- HEVN sets the window’s title, logo, colours and theme on request. The Sign-in window card keeps Allowed sites.
Breaking: your customers create their clients through Sign in with HEVN.
POST /dapi/v1/clientsis removed. Link a client through Sign in with HEVN:POST /dapi/v1/connect/sessionswithaction: "link", the HEVN-hosted window, thenPOST /dapi/v1/clients/linkwith the returned code.- The holder’s key signs for the client’s wallet. Your developer key signs only for your integrator account.
- A payout booked for a linked client returns
authorization: "client", and the holder approves it in asignsession. - Developer key scopes are removed.
cl_… from POST /dapi/v1/clients/link on your server, and route each client payout through a sign session (HEVN Connect).quote.sourceAccountnames the account a payout is paid from. Read it instead offromCurrency(Payouts).- A SEPA contact requires
bank.bankName.
- Sandbox limits: 5 clients per integrator, at most
1per payout, escrow and payin credit, and a faucet that sends at most5to a wallet holding less than1. New refusalssandbox_client_limit_reached,sandbox_amount_limit_exceededandsandbox_faucet_balance_too_high(Limits). - In the sandbox you decide a completed KYB submission with
POST /dapi/v1/sandbox/kyb/status:approved,rfiorrejected(Sandbox). - Chain errors
bundler_*anduser_operation_*return503instead of502.simulation_failed,bundler_unavailableanduser_operation_unavailableincludedetails.reason. - Unreadable values in a KYB document are reported in an RFI comment. Answer with
PUT /dapi/v1/documents/{documentId}/content.document_fields_missingis removed, and completion returns onlykyb_incomplete. - Two clients may share a phone number.
- New swaps between two accounts of the same client, with
POST /dapi/v1/swaps/preview,POST /dapi/v1/swapsand a signed confirmation.