Skip to content

API Reference

Complete endpoint inventory for the Rach Payments API.

Base URL

https://payments-api-dev-966260606560.europe-west2.run.app

Authentication

MethodHeaderWhen to use
JWTAuthorization: Bearer <token>Dashboard, account management, KYC
API KeyX-API-Key: <key>Merchant integrations (checkout, remittance, wallet)

Public Endpoints (no auth)

MethodPathDescription
GET/healthHealth check
GET/docsSwagger UI
GET/docs/swagger.yamlOpenAPI 3.0 spec
GET/api/v1/rate/checkCheck exchange rate (query params: pair or from+to)
POST/api/v1/wallet/estimate-gasEstimate gas fee for a transfer
GET/pay/:uuidHosted payment page (rendered HTML)
POST/api/v1/subscription/crypto-checkoutSubscription crypto checkout (public)

Webhooks (inbound, no auth)

MethodPathSource
POST/webhooks/tatumTatum blockchain events
POST/webhooks/stripeStripe payment events
POST/webhooks/vertoVerto virtual account events

Auth Endpoints

MethodPathAuthDescription
POST/api/v1/auth/registerCreate account
POST/api/v1/auth/verify-emailVerify email address
POST/api/v1/auth/loginLogin, get JWT
POST/api/v1/auth/refreshRefresh access token
POST/api/v1/auth/forgot-passwordRequest password reset email
POST/api/v1/auth/reset-passwordSet new password
GET/api/v1/auth/meJWTGet current user profile
PUT/api/v1/auth/profileJWTUpdate profile
POST/api/v1/auth/workspace/switchJWTSwitch active workspace
POST/api/v1/auth/change-passwordJWTChange password
GET/api/v1/auth/api-keyJWTGet business API key

Two-Factor Authentication

Requires JWT. See 2FA docs →

MethodPathDescription
GET/api/v1/auth/2fa/statusGet 2FA status
POST/api/v1/auth/2fa/setupInitiate TOTP setup (returns QR code)
POST/api/v1/auth/2fa/enableConfirm and enable 2FA
POST/api/v1/auth/2fa/disableDisable 2FA

Team Management

Requires JWT. Permission: team:view / team:invite / team:manage_permissions. See Team docs →

MethodPathDescription
GET/api/v1/team/invites/verify/:tokenVerify invite token (public)
POST/api/v1/team/registerRegister as invited team member (public)
GET/api/v1/teamList team members
GET/api/v1/team/roles-permissionsGet available roles and permissions
POST/api/v1/team/invitesInvite a team member
PUT/api/v1/team/:id/permissionsUpdate member permissions
DELETE/api/v1/team/:idRemove a team member

KYC

Requires JWT.

MethodPathPermissionDescription
POST/api/v1/kyc/submitkyc:submitSubmit KYC documents
GET/api/v1/kyc/statuskyc:viewGet KYC status
GET/api/v1/kyc/otc/statuskyc:viewGet OTC AML status
PUT/api/v1/kyc/otc/draftkyc:submitSave OTC AML draft
POST/api/v1/kyc/otc/submitkyc:submitSubmit OTC AML form

Balance & Withdrawal

Requires JWT + KYC approval.

MethodPathPermissionDescription
GET/api/v1/balancebalance:viewGet crypto balances
POST/api/v1/balance/swapbalance:swapSwap between currencies
POST/api/v1/withdrawal/requestwithdrawal:requestRequest fiat withdrawal
GET/api/v1/withdrawal/historywithdrawal:viewWithdrawal history
GET/api/v1/withdrawal/:idwithdrawal:viewGet single withdrawal

Remittance

Requires API key + KYC approval.

MethodPathPermissionDescription
POST/api/v1/remittance/quoteremittance:quoteGet transfer quote
POST/api/v1/remittance/transferremittance:createCreate transfer (requires HMAC signature)
GET/api/v1/remittance/transfers/:idremittance:viewGet transfer details
GET/api/v1/remittance/transfersremittance:viewList transfers
GET/api/v1/remittance/ratesremittance:viewList exchange rates

JWT variant (dashboard):

MethodPathPermissionDescription
POST/api/v1/remittance/createremittance:createCreate transfer (JWT + 2FA OTP required)

Crypto Checkout

Requires API key + KYC + business account (individuals blocked).

MethodPathPermissionDescription
POST/api/v1/checkout/createcheckout:manageCreate a checkout session
GET/api/v1/checkout/verify/:sessionIdcheckout:viewVerify a checkout session
GET/api/v1/checkout/addressescheckout:viewList deposit addresses
GET/api/v1/checkout/listcheckout:viewList all checkout payments
GET/api/v1/checkout/statscheckout:viewPayment statistics

Public checkout (no auth — for hosted payment page):

MethodPathDescription
GET/api/v1/checkout/:uuidGet checkout session (customer-facing)
POST/api/v1/checkout/:uuid/select-networkCustomer selects payment network
GET/api/v1/checkout/:uuid/verify-nowTrigger immediate verification

Rates

MethodPathAuthDescription
GET/api/v1/rate/checkCheck rate (public, query: pair or from+to)
GET/api/v1/rates/:pairAPI keyGet rate for pair (e.g. NGNGBP)

Wallet-as-a-Service (WaaS)

Requires API key + KYC + business account. See Wallet Service docs →

MethodPathPermissionDescription
GET/api/v1/wallet/customersList all customers with wallets
GET/api/v1/wallet/addressesList all business-level addresses
POST/api/v1/wallet/customersCreate a customer wallet
GET/api/v1/wallet/:customerID/addressesList addresses for customer
GET/api/v1/wallet/:customerID/seedwallet:reveal_seedGet seed phrase
POST/api/v1/wallet/:customerID/deriveDerive new address for network
POST/api/v1/wallet/:customerID/export-keywallet:export_keyExport private key
POST/api/v1/wallet/:customerID/transferwallet:transferSend crypto
GET/api/v1/wallet/:customerID/transactionsTransaction history
POST/api/v1/wallet/estimate-gasEstimate gas (public)

Analytics

Requires JWT + KYC. Permission: analytics:view. See Analytics docs →

MethodPathDescription
GET/api/v1/analytics/overviewRevenue & volume overview
GET/api/v1/analytics/revenueRevenue breakdown
GET/api/v1/analytics/payment-methodsPayment method distribution
GET/api/v1/analytics/transactionsTransaction list with filters
GET/api/v1/analytics/fraud-alertsFraud alert summary
GET/api/v1/analytics/dashboardCombined dashboard data

OTC Trading

Requires JWT. Business must have OTC access approved by admin. See OTC docs →

MethodPathPermissionDescription
GET/api/v1/otc/accountsotc:viewAvailable OTC accounts
GET/api/v1/otc/quoteotc:viewGet OTC quote
POST/api/v1/otc/ordersotc:tradeCreate OTC order
POST/api/v1/otc/orders/:id/paidotc:tradeMark order as paid
GET/api/v1/otc/orders/:idotc:viewGet order details
POST/api/v1/otc/orders/:id/refreshotc:tradeRefresh quote on order
GET/api/v1/otc/historyotc:viewOTC trade history

Settings

Requires JWT. Permission: settings:manage. See Settings docs →

Webhook Configuration

MethodPathDescription
GET/api/v1/settings/webhookGet current webhook config
POST/api/v1/settings/webhookConfigure webhook endpoint
POST/api/v1/settings/webhook/rotate-secretRotate HMAC signing secret
POST/api/v1/settings/webhook/testSend a test webhook event

Settlement Accounts

MethodPathDescription
POST/api/v1/settings/settlement-accountsAdd settlement account
GET/api/v1/settings/settlement-accountsList settlement accounts
PUT/api/v1/settings/settlement-accounts/:idUpdate settlement account
DELETE/api/v1/settings/settlement-accounts/:idRemove settlement account

Business Wallet (Internal)

MethodPathPermissionDescription
POST/api/v1/settings/wallet/generatewallet:manageGenerate business wallet (requires KYC)
GET/api/v1/settings/walletwallet:manageGet business wallet
GET/api/v1/settings/wallet/address/:networkwallet:manageGet address for network
POST/api/v1/settings/wallet/seedwallet:reveal_seedExport seed phrase (requires KYC + 2FA)

API Keys

Requires JWT.

MethodPathDescription
GET/api/v1/api-keysList API keys (test + production)
POST/api/v1/api-keys/initializeInitialize keys for existing users
POST/api/v1/api-keys/rotate/testRotate test API key
POST/api/v1/api-keys/rotate/productionRotate production API key
POST/api/v1/api-keys/toggle-sandboxToggle sandbox mode
GET/api/v1/api-keys/sandbox/balanceGet sandbox balances
POST/api/v1/api-keys/sandbox/resetReset sandbox balances

Push Notifications

Requires JWT. See Notifications docs →

MethodPathDescription
POST/api/v1/auth/fcm-tokenRegister FCM device token
DELETE/api/v1/auth/fcm-tokenUnregister FCM device token
GET/api/v1/auth/notification-preferencesGet notification preferences
PUT/api/v1/auth/notification-preferencesUpdate notification preferences

Virtual Accounts

Requires JWT + KYC. Permission: virtual_account:manage. See Virtual Accounts docs →

MethodPathDescription
POST/api/v1/virtual-accounts/createCreate a virtual bank account
GET/api/v1/virtual-accountsList virtual accounts

Subscription & Billing

Requires JWT. Permission: billing:manage.

MethodPathDescription
GET/api/v1/subscription/currentGet current plan
GET/api/v1/subscription/plansList available plans
POST/api/v1/subscription/upgradeRequest plan upgrade

File Uploads

Requires JWT.

MethodPathDescription
POST/api/v1/files/upload-urlGet signed GCS upload URL
POST/api/v1/files/view-urlGet signed GCS view URL

Stripe

MethodPathAuthDescription
POST/api/v1/stripe/checkoutCreate Stripe checkout session (email-based)

Admin Endpoints

Requires JWT with admin role.

KYC Administration

MethodPathDescription
GET/api/v1/admin/kyc/pendingList pending KYC submissions
GET/api/v1/admin/kyc/submissions/:idGet KYC submission
POST/api/v1/admin/kyc/submissions/:id/approveApprove KYC
POST/api/v1/admin/kyc/submissions/:id/rejectReject KYC
GET/api/v1/admin/kyc/statisticsKYC statistics
GET/api/v1/admin/kyc/otc/pendingPending OTC AML submissions
POST/api/v1/admin/kyc/otc/submissions/:id/approveApprove OTC AML
POST/api/v1/admin/kyc/otc/submissions/:id/rejectReject OTC AML

Business Management

MethodPathDescription
GET/api/v1/admin/businessesList all businesses
GET/api/v1/admin/businesses/:idGet business details
POST/api/v1/admin/businesses/:id/suspendSuspend business
POST/api/v1/admin/businesses/:id/activateActivate business
GET/api/v1/admin/businesses/:id/activityBusiness activity log

Transaction Monitoring

MethodPathDescription
GET/api/v1/admin/transactionsAll transactions
GET/api/v1/admin/transactions/failedFailed transactions

Fraud Management

MethodPathDescription
GET/api/v1/admin/fraud/alertsAll fraud alerts
GET/api/v1/admin/fraud/alerts/:idGet alert detail
POST/api/v1/admin/fraud/alerts/:id/reviewReview alert
GET/api/v1/admin/fraud/rules/:businessIdGet fraud rules
POST/api/v1/admin/fraud/rules/:businessIdUpdate fraud rules

Admin Analytics

MethodPathDescription
GET/api/v1/admin/analytics/system-overviewPlatform-wide metrics
GET/api/v1/admin/analytics/businessesTop businesses by volume
GET/api/v1/admin/analytics/revenueRevenue by payment method
GET/api/v1/admin/analytics/fraud-summaryFraud summary

Other Admin

MethodPathDescription
POST/api/v1/admin/rates/updateOverride exchange rate
POST/api/v1/admin/rates/configSet rate config
GET/api/v1/admin/rates/configGet rate configs
POST/api/v1/admin/withdrawal/:ref/settleSettle a pending withdrawal
POST/api/v1/admin/sweep/allSweep all addresses
POST/api/v1/admin/sweep/:addressIdSweep specific address
GET/api/v1/admin/otc/ordersAll OTC orders
POST/api/v1/admin/otc/orders/:id/completeComplete OTC order
GET/api/v1/admin/otc/accountsList OTC platform accounts
POST/api/v1/admin/otc/accountsCreate OTC platform account
PATCH/api/v1/admin/otc/accounts/:idUpdate OTC platform account
DELETE/api/v1/admin/otc/accounts/:idDelete OTC platform account
POST/api/v1/admin/notifications/sendSend admin push notification
POST/api/v1/admin/emails/promotionalSend promotional email

Error Format

json
{
  "error": "Descriptive error message"
}

HTTP Status Codes

CodeMeaning
200OK
201Created
400Bad Request — invalid parameters
401Unauthorized — missing or invalid auth
403Forbidden — insufficient permissions or KYC not approved
404Not Found
500Internal Server Error

Rach Payments API