HOPPA API Reference
The HOPPA API is a REST API for embedded finance: create users, issue and manage cards, open accounts and wallets, exchange currencies, and move money. Authenticate every request with an x-api-key header. The interactive reference below is generated live from the OpenAPI 3.0 specification (JSON), so it always matches the current API. New to HOPPA? Start with the Quickstart — a user, a card, a top-up, and your first transaction in four calls.
Endpoints by resource
285 endpoints across 18 resources — each with its own reference page.
Banking
- GET
/api/v2/banking/accountsGet all accounts across all banking providers - POST
/api/v2/banking/accounts/fund-testFund an Equals Money account with a sandbox test credit. - GET
/api/v2/banking/balanceGet aggregated balance across all banking providers - POST
/api/v2/banking/budgets/{budgetId}/transfer - POST
/api/v2/banking/equalsmoney-onboardingCreate an EqualsMoney personal onboarding application - POST
/api/v2/banking/orders/quote - POST
/api/v2/banking/orders/trade - POST
/api/v2/banking/otp/resendResend the OTP code for a pending banking operation. - POST
/api/v2/banking/otp/verifyVerify an OTP code for a pending banking operation such as payout creation. - GET
/api/v2/banking/payeesList payees across all banking providers - POST
/api/v2/banking/payeesPayee Step 1: validate a new payee and send the OTP required by Equals Money. - POST
/api/v2/banking/payees/confirmPayee Step 2: create and confirm the payee after OTP verification. - GET
/api/v2/banking/payees/required-fieldsGet required fields for payee creation - DELETE
/api/v2/banking/payees/{payeeId}Delete a payee from ALL banking providers where user has accounts - GET
/api/v2/banking/payoutsList payout transactions for the authenticated user or API-key selected user. - POST
/api/v2/banking/payoutsPayout Step 4: create the payout after OTP verification. - POST
/api/v2/banking/payouts/checkPayout Step 2: check the quoted payout before OTP approval. - POST
/api/v2/banking/payouts/initiatePayout Step 3: send the OTP for a checked payout. - GET
/api/v2/banking/payouts/{payoutId}Get a payout transaction by ID for the authenticated user or API-key selected user. - GET
/api/v2/banking/providersGet list of banking providers the current user has accounts with - POST
/api/v2/banking/quotationsPayout Step 1: create a quote for an existing payee. - POST
/api/v2/banking/quotesGet a quote for a transfer - POST
/api/v2/banking/trades/executeExecute FX trade - POST
/api/v2/banking/trades/quoteGet FX trade quote - GET
/api/v2/banking/transactionsGet transactions across all banking providers - POST
/api/v2/banking/transfers/internalExecute an internal transfer between balances for a specific user within the authenticated company. - GET
/api/v2/banking/users/{userId}/budgets - POST
/api/v2/banking/users/{userId}/budgets - GET
/api/v2/banking/users/{userId}/budgets/{budgetId} - PUT
/api/v2/banking/users/{userId}/budgets/{budgetId}Updates user-editable budget details. Budget status is managed by Equals Money and is read-only. - POST
/api/v2/banking/users/{userId}/budgets/{budgetId}/transfer - GET
/api/v2/banking/users/{userId}/equals-banking-infoGet Equals banking information for a specific user in the authenticated company.
BusinessOnboarding
- GET
/api/v2/business/onboarding/applicationGet the current application status - POST
/api/v2/business/onboarding/applicationCreate a business application for KYB - POST
/api/v2/business/onboarding/application/documentsUpload an EqualsMoney business onboarding document - POST
/api/v2/business/onboarding/application/submitSubmit the application for review - GET
/api/v2/business/onboarding/associated-peopleGet associated people for the current user - POST
/api/v2/business/onboarding/associated-peopleCreate associated people for a business application (Directors, UBOs, Applicants) - POST
/api/v2/business/onboarding/associated-people/{associatedPersonId}/documentsUpload an EqualsMoney associated person onboarding document - GET
/api/v2/business/onboarding/optionsGet canonical EqualsMoney KYB onboarding option values for client select fields.
Card Loads
Asynchronous crypto-to-fiat card loads executed through the crypto on/off-ramp
Cards
Card management operations
- GET
/api/v2/cardsGet list of cards for a user - POST
/api/v2/cardsCreate a new card - GET
/api/v2/cards/cardHoldersGet list of card holders for a user - GET
/api/v2/cards/physical-card-feesGet the card platform physical card production and mailing fees for a user and destination country - GET
/api/v2/cards/quantum-topup/estimateEstimate Quantum top-up conversion using CryptoConnect quotes for USD to USDT/USDC and USDT/USDC to USD - POST
/api/v2/cards/topupTopUp - Direct card top-up with card ID - POST
/api/v2/cards/unload-cardUnloadFromCard - Unload funds from a card to quantum wallet - GET
/api/v2/cards/{cardId}Get detailed card information including sensitive data - DELETE
/api/v2/cards/{cardId}Permanently delete an card. - POST
/api/v2/cards/{cardId}/activateActivate a physical card - PUT
/api/v2/cards/{cardId}/auto-lockEnable or disable Auto Lock for a card - POST
/api/v2/cards/{cardId}/bulk-shipExecute the card platform physical card shipment for the authenticated user's card. - GET
/api/v2/cards/{cardId}/bulk-ship/quoteQuote the card platform physical card shipment fees for the authenticated user's card. - POST
/api/v2/cards/{cardId}/bulk-ship/quoteQuote the card platform physical card shipment fees for the authenticated user's card. - POST
/api/v2/cards/{cardId}/enableEnable (unfreeze) a card to re-enable it - POST
/api/v2/cards/{cardId}/freezeFreeze a card to temporarily disable it - PUT
/api/v2/cards/{cardId}/limitsUpdate card spending limits (daily/weekly/monthly) for a specific user and card - PUT
/api/v2/cards/{cardId}/pinUpdate card PIN - GET
/api/v2/cards/{cardId}/transactionsGet card transactions for a specific user and card - GET
/api/v2/cards/{cardId}/widgetGet secure widget URL for displaying card details in an iframe
Crypto Exchange
the crypto on/off-ramp onboarding, balances, exchange quotes, the card platform/EqualsMoney transfer workflows, user decisions, payouts, and payment tracking
- POST
/api/v2/crypto-virtual-accounts - POST
/api/v2/crypto-virtual-accounts/bank-address-bookRegister a the crypto on/off-ramp fiat external account - POST
/api/v2/crypto-virtual-accounts/equals-to-interlaceTransfer EqualsMoney fiat to the card platform crypto through the crypto on/off-ramp - POST
/api/v2/crypto-virtual-accounts/equals-to-wallet/confirm - POST
/api/v2/crypto-virtual-accounts/equals-to-wallet/initiate - POST
/api/v2/crypto-virtual-accounts/equalsmoney-depositsDeposit crypto into an EqualsMoney budget through the crypto on/off-ramp - GET
/api/v2/crypto-virtual-accounts/equalsmoney-deposits/{id}Get a the crypto on/off-ramp-to-EqualsMoney deposit - POST
/api/v2/crypto-virtual-accounts/exchange/acceptAccept an exact the crypto on/off-ramp exchange quote - POST
/api/v2/crypto-virtual-accounts/exchange/quoteRequest an exact the crypto on/off-ramp balance-to-balance quote - POST
/api/v2/crypto-virtual-accounts/interlace-to-equals/confirmConfirm an the card platform-to-EqualsMoney transfer through the crypto on/off-ramp - POST
/api/v2/crypto-virtual-accounts/interlace-to-equals/initiateInitiate an the card platform-to-EqualsMoney transfer through the crypto on/off-ramp - POST
/api/v2/crypto-virtual-accounts/interlace-to-equals/quoteQuote an the card platform-to-EqualsMoney transfer through the crypto on/off-ramp - POST
/api/v2/crypto-virtual-accounts/payin-address - POST
/api/v2/crypto-virtual-accounts/ramp-quote - GET
/api/v2/crypto-virtual-accounts/trading-overview - GET
/api/v2/crypto-virtual-accounts/transfersList the crypto on/off-ramp transfer workflows - GET
/api/v2/crypto-virtual-accounts/transfers/{id}Get a the crypto on/off-ramp transfer workflow - POST
/api/v2/crypto-virtual-accounts/transfers/{transferId}/decisionRespond to a changed the crypto on/off-ramp quote
MOR
Merchant of Record onboarding, users, cards, secure card widgets, and company wallets
- POST
/api/v2/mor/public/cardholderCreate or return the merchant's company-level CORPORATE_MANAGED cardholder. - GET
/api/v2/mor/public/cardsGet all merchant cards with their current available and pending balances. - POST
/api/v2/mor/public/cards/batchOrder 1-20 prepaid cards in a batch. - POST
/api/v2/mor/public/cards/{cardId}/assignAssign a merchant-owned card to a user_simple in the same company. - POST
/api/v2/mor/public/cards/{cardId}/loadLoad a merchant-owned card from the merchant's account. - GET
/api/v2/mor/public/cards/{cardId}/secure-widgetGet a secure hosted card-information widget. - POST
/api/v2/mor/public/cards/{cardId}/unloadUnload a merchant-owned card to the merchant's account. - POST
/api/v2/mor/public/kybSubmit or resubmit KYB for the API key's MoR merchant. - GET
/api/v2/mor/public/onboarding-statusGet the merchant onboarding status; optionally refresh it from the card platform. - POST
/api/v2/mor/public/usersAdd a user_simple to the API key's MoR company. - GET
/api/v2/mor/public/users/{userId}/cardsGet one user_simple's assigned cards and aggregate card balances. - GET
/api/v2/mor/public/walletsGet merchant wallets, deposit addresses, and fiat/crypto balances.
Payments
Payment processing and transaction management
- GET
/api/v2/payments/assets/co-brandGet co-brand assets - POST
/api/v2/payments/createCreate a payment with automatic currency exchange and transfer - GET
/api/v2/payments/mandatesList payment mandates with filtering and pagination - POST
/api/v2/payments/mandatesCreate a payment mandate - GET
/api/v2/payments/mandates/{mandateId}Get payment mandate by ID - PUT
/api/v2/payments/mandates/{mandateId}/revokeRevoke a payment mandate - POST
/api/v2/payments/payoutsCreate a payout - GET
/api/v2/payments/requestsList payment requests with filtering and pagination - POST
/api/v2/payments/requestsCreate a payment request - GET
/api/v2/payments/requests/{requestId}Get payment request by ID - PUT
/api/v2/payments/requests/{requestId}/cancelCancel a payment request - POST
/api/v2/payments/withdrawalsCreate a withdrawal - POST
/api/v2/payments/withdrawals/feeGet withdrawal fee estimate
Prices
- GET
/api/v2/pricesReturns the latest database-backed reference prices. - GET
/api/v2/prices/convertReturns a cross-rate derived entirely from stored canonical-base prices. - GET
/api/v2/prices/estimated-total-assetsFetches live provider balances and values them using database-backed reference prices. - GET
/api/v2/prices/{assetCode}Returns one latest database-backed reference price.
PublicUserReferrals
- POST
/api/v2/users/{userId}/referrals/attributionCreates the immutable rewarded relationship after registration succeeds. - GET
/api/v2/users/{userId}/referrals/commissionsReturns the user's referral commission history. - GET
/api/v2/users/{userId}/referrals/invitationsLists the invitations sent by this user. - POST
/api/v2/users/{userId}/referrals/invitationsSends or resends an email-bound, expiring referral invitation. - GET
/api/v2/users/{userId}/referrals/summaryReturns invite, level progress, referral counts, commission totals, and payout mode. - GET
/api/v2/users/{userId}/referrals/vouchersLists assigned vouchers that can be rendered in a WL-hosted user experience. - POST
/api/v2/users/{userId}/referrals/vouchers/redeem-allInitiates all eligible assigned vouchers through the existing voucher processor. - POST
/api/v2/users/{userId}/referrals/vouchers/{assignmentId}/redeemRedeems an assigned voucher without exposing or typing its voucher code.
PublicVouchers
- GET
/api/v2/vouchers - POST
/api/v2/vouchers - GET
/api/v2/vouchers/approvals - POST
/api/v2/vouchers/approvals/{id} - POST
/api/v2/vouchers/assignments - POST
/api/v2/vouchers/assignments/from-group - POST
/api/v2/vouchers/assignments/mass - GET
/api/v2/vouchers/audit - POST
/api/v2/vouchers/batch - GET
/api/v2/vouchers/groups - POST
/api/v2/vouchers/groups - PUT
/api/v2/vouchers/groups/{id}/status/{status} - POST
/api/v2/vouchers/imports/preview - GET
/api/v2/vouchers/imports/template - POST
/api/v2/vouchers/imports/{id}/confirm - GET
/api/v2/vouchers/jobs - GET
/api/v2/vouchers/jobs/{id} - GET
/api/v2/vouchers/jobs/{id}/codes/export - GET
/api/v2/vouchers/jobs/{id}/items - POST
/api/v2/vouchers/jobs/{id}/retry - GET
/api/v2/vouchers/liability - POST
/api/v2/vouchers/liability/preview - POST
/api/v2/vouchers/redemptions - GET
/api/v2/vouchers/redemptions/{id} - DELETE
/api/v2/vouchers/redemptions/{id} - POST
/api/v2/vouchers/redemptions/{id}/retry - POST
/api/v2/vouchers/redemptions/{id}/reversal - POST
/api/v2/vouchers/redemptions/{id}/verification/resend - POST
/api/v2/vouchers/redemptions/{id}/verify - GET
/api/v2/vouchers/reports/daily-statistics - GET
/api/v2/vouchers/reports/liability-snapshots - GET
/api/v2/vouchers/reports/redemptions - GET
/api/v2/vouchers/reports/{report}/export - GET
/api/v2/vouchers/rules - POST
/api/v2/vouchers/rules - PUT
/api/v2/vouchers/rules/{id}/enabled/{enabled} - GET
/api/v2/vouchers/settings - PUT
/api/v2/vouchers/settings - POST
/api/v2/vouchers/validate - POST
/api/v2/vouchers/{id}/reveal - PUT
/api/v2/vouchers/{id}/status/{status}
ReferralInvitations
Tiers
User tier and membership management
Transactions
- GET
/api/v2/transactionsGet paginated transactions with advanced filtering - GET
/api/v2/transactions/exportExport transactions in CSV or PDF format - GET
/api/v2/transactions/statsGet transaction statistics - POST
/api/v2/transactions/syncSync current user's transactions with the card platform (Quantum Account). Adds any missing transactions by external_id. - POST
/api/v2/transactions/top-upProcesses a wallet top-up operation using external payment methods. - GET
/api/v2/transactions/{id}Get transaction by ID - GET
/api/v2/transactions/{id}/equals-money/payment-confirmation
Transfers
Transfer operations between accounts and external services
- GET
/api/v2/transfersList transfers with filtering and pagination - GET
/api/v2/transfers/crypto-refundsGet crypto refunds for a user - POST
/api/v2/transfers/crypto-refundsCreate a crypto refund - POST
/api/v2/transfers/crypto-refunds/gas-feeGet refund gas fee for a specific currency and chain - POST
/api/v2/transfers/crypto-to-quantum-transferCreate a crypto-to-quantum transfer for internal account transfers (destination is always USD) - GET
/api/v2/transfers/crypto-transactionsGet user crypto transactions (CryptoConnect transfers) - POST
/api/v2/transfers/master-to-userCreate a transfer from master account to user - POST
/api/v2/transfers/quantum-usd-to-crypto-exchangeExchange Quantum USD to Crypto (USDC/USDT) - POST
/api/v2/transfers/test-feesTest endpoint for fee charging flow - POST
/api/v2/transfers/user-to-masterCreate a transfer from user to master account - POST
/api/v2/transfers/wallet-topupRequest a wallet top-up via Transak - GET
/api/v2/transfers/withdrawals/available-balanceGet available withdrawal balance for a user - POST
/api/v2/transfers/withdrawals/cryptoCreate an external crypto withdrawal (to blockchain address) - POST
/api/v2/transfers/withdrawals/crypto/confirmConfirm a crypto withdrawal with an emailed OTP code - POST
/api/v2/transfers/withdrawals/crypto/resendResend the OTP for a pending API crypto withdrawal. - GET
/api/v2/transfers/withdrawals/fee-and-quotaGet withdrawal fee and quota information - GET
/api/v2/transfers/withdrawals/validateValidate withdrawal request - GET
/api/v2/transfers/{transferId}Get transfer by ID
Users
User management operations including creation, updates, and KYC
- GET
/api/v2/usersList users with filtering and pagination - POST
/api/v2/usersCreate a new user - POST
/api/v2/users/account-claim/challengesSends a six-digit verification code when the email exactly matches a user in the API-key company. - POST
/api/v2/users/account-claim/challenges/verifyVerifies the emailed code and returns the company-scoped Hoppa identity exactly once. - POST
/api/v2/users/account-links/exchangeConsumes an approved token and returns the company-scoped Hoppa identity exactly once. - POST
/api/v2/users/account-links/scanRegisters that a White Label app scanned an account-link QR code. - POST
/api/v2/users/account-links/statusReturns the approval state for a scanned QR token without exposing user data. - GET
/api/v2/users/check-referralCheck if a referral code is valid for a company - POST
/api/v2/users/create-interlace-account/{userId}Create an account for the authenticated user - GET
/api/v2/users/occupation-codesGet complete list of occupation codes - GET
/api/v2/users/{userId}Get user by ID - PUT
/api/v2/users/{userId}Update user information - GET
/api/v2/users/{userId}/assetsGet user assets (balances). Passing `userId = 0` returns master account balances for the authenticated company. - GET
/api/v2/users/{userId}/crypto-addressesGet user crypto wallet addresses. Passing `userId = 0` returns master account addresses for the authenticated company. - GET
/api/v2/users/{userId}/kyc/detailed-statusGet detailed KYC status breakdown for the user - POST
/api/v2/users/{userId}/kyc/equalsmoney/documentsRespond to an EqualsMoney document request - POST
/api/v2/users/{userId}/kyc/equalsmoney/informationSubmit a text answer requested by EqualsMoney for a user. Requires company API key authentication. - POST
/api/v2/users/{userId}/kyc/sumsub-access-tokenGet a SumSub access token for the user (for mobile SDK) - PUT
/api/v2/users/{userId}/kyc/sumsub-tokenUpdate user SumSub KYC token - POST
/api/v2/users/{userId}/kyc/verifyVerify and update user KYC information with comprehensive verification data - POST
/api/v2/users/{userId}/sumsub/kyc-urlGenerate SumSub KYC verification URL for user - POST
/api/v2/users/{userId}/tierSet user tier and queue the first subscription fee for scheduled fee charging - GET
/api/v2/users/{userId}/walletsList crypto wallets for a user. Passing `userId = 0` returns master account wallets for the authenticated company.
Webhooks
Outbound webhook requests sent by CryptoCard Platform to configured partner webhook URLs.
- POST
/webhooks/outbound/account.activatedaccount.activated - POST
/webhooks/outbound/account.createdaccount.created - POST
/webhooks/outbound/account.deposit.addressaccount.deposit.address - POST
/webhooks/outbound/account.status_updatedaccount.status_updated - POST
/webhooks/outbound/bank_account.statusbank_account.status - POST
/webhooks/outbound/budget.createdbudget.created - POST
/webhooks/outbound/budget.credit_pendingbudget.credit_pending - POST
/webhooks/outbound/budget.creditedbudget.credited - POST
/webhooks/outbound/budget.debitedbudget.debited - POST
/webhooks/outbound/budget.deletedbudget.deleted - POST
/webhooks/outbound/budget.transaction.closedbudget.transaction.closed - POST
/webhooks/outbound/budget.updatedbudget.updated - POST
/webhooks/outbound/business_account.transactionbusiness_account.transaction - POST
/webhooks/outbound/card.3ds.otpcard.3ds.otp - POST
/webhooks/outbound/card.3ds_auth_requestcard.3ds_auth_request - POST
/webhooks/outbound/card.activatedcard.activated - POST
/webhooks/outbound/card.createdcard.created - POST
/webhooks/outbound/card.deletedcard.deleted - POST
/webhooks/outbound/card.shippedcard.shipped - POST
/webhooks/outbound/card.state_updatedcard.state_updated - POST
/webhooks/outbound/card.topupcard.topup - POST
/webhooks/outbound/card.transactioncard.transaction - POST
/webhooks/outbound/card.unloadcard.unload - POST
/webhooks/outbound/card.updatedcard.updated - POST
/webhooks/outbound/cardholder.approvedcardholder.approved - POST
/webhooks/outbound/cardholder.createdcardholder.created - POST
/webhooks/outbound/cardholder.deletedcardholder.deleted - POST
/webhooks/outbound/cardholder.statuscardholder.status - POST
/webhooks/outbound/digitalwallet.token_transitiondigitalwallet.token_transition - POST
/webhooks/outbound/fee.createdfee.created - POST
/webhooks/outbound/kyc.information_requestkyc.information_request - POST
/webhooks/outbound/kyc.interlace_submission_failedkyc.interlace_submission_failed - POST
/webhooks/outbound/kyc.updatekyc.update - POST
/webhooks/outbound/kyc.verifiedkyc.verified - POST
/webhooks/outbound/legal_entity.statuslegal_entity.status - POST
/webhooks/outbound/order.cancelledorder.cancelled - POST
/webhooks/outbound/order.completedorder.completed - POST
/webhooks/outbound/order.createdorder.created - POST
/webhooks/outbound/payment.completedpayment.completed - POST
/webhooks/outbound/payment.createdpayment.created - POST
/webhooks/outbound/payment.mandate.cancelledpayment.mandate.cancelled - POST
/webhooks/outbound/payment.mandate.createdpayment.mandate.created - POST
/webhooks/outbound/payment.request.cancelledpayment.request.cancelled - POST
/webhooks/outbound/payment.request.confirmed.directpayment.request.confirmed.direct - POST
/webhooks/outbound/payment.request.confirmed.with.exchangepayment.request.confirmed.with.exchange - POST
/webhooks/outbound/payment.request.createdpayment.request.created - POST
/webhooks/outbound/payment.returnedpayment.returned - POST
/webhooks/outbound/paymentbatch.cancelledpaymentbatch.cancelled - POST
/webhooks/outbound/paymentbatch.completedpaymentbatch.completed - POST
/webhooks/outbound/paymentbatch.createdpaymentbatch.created - POST
/webhooks/outbound/paymentbatch.processingpaymentbatch.processing - POST
/webhooks/outbound/paymentbatch.validation_errorpaymentbatch.validation_error - POST
/webhooks/outbound/paymentbatchorder.cancelledpaymentbatchorder.cancelled - POST
/webhooks/outbound/paymentbatchorder.completedpaymentbatchorder.completed - POST
/webhooks/outbound/paymentbatchorder.createdpaymentbatchorder.created - POST
/webhooks/outbound/payout.paymentpayout.payment - POST
/webhooks/outbound/person.createdperson.created - POST
/webhooks/outbound/recipient.createdrecipient.created - POST
/webhooks/outbound/recipient.deletedrecipient.deleted - POST
/webhooks/outbound/user.kyc.updateduser.kyc.updated - POST
/webhooks/outbound/user.registereduser.registered - POST
/webhooks/outbound/wallet.refundwallet.refund - POST
/webhooks/outbound/wallet.topped_upwallet.topped_up - POST
/webhooks/outbound/wallet.withdrawalwallet.withdrawal