OK WIRE DEVELOPERS
Build your nextpayment experience.
Connect global payouts, collection accounts and balance queries to your product with the OK Wire API.
/v1/merchant/fundPool/balance
{ "currency": "USD", "appKey": "your_app_key", "sign": "…" }
code: 0All request URLs use example domains. Replace them with your assigned service URL when integrating.
api.example.comOn this page
01 / Quickstart
Start with one request.
Set up your integration, then connect your business workflow.
- 01
Prepare your access
Complete merchant onboarding and obtain your appKey, appSecret and environment details.
Open console - 02
Configure authentication
Store credentials on your server. Confirm IP settings and whether encrypted payloads are needed.
Signing & authentication - 03
Make your first query
Use a balance query to verify signing, connectivity and response handling.
Your first request - 04
Connect your workflow
Integrate payouts or collections, then handle order status and asynchronous results.
Explore the API
02 / Your first request
Your first request
Learn the request format with a read-only fund-pool balance query. Run the example on your server; this page does not send API requests.
export OKWIRE_APP_KEY='your_app_key'
export OKWIRE_APP_SECRET='your_app_secret'
TIMESTAMP="$(date +%s)000"
NONCE="$(openssl rand -hex 12)"
SIGN=$(printf '%s' "appKey=$OKWIRE_APP_KEY&appSecret=$OKWIRE_APP_SECRET¤cy=USD&nonce=$NONCE×tamp=$TIMESTAMP" \
| openssl dgst -md5 -r | cut -d ' ' -f 1)
curl --request POST \
'https://api.example.com/v1/merchant/fundPool/balance' \
--header 'Content-Type: application/json' \
--data "{\"appKey\":\"$OKWIRE_APP_KEY\",\"currency\":\"USD\",\"timestamp\":$TIMESTAMP,\"nonce\":\"$NONCE\",\"sign\":\"$SIGN\"}"Node.js 18+ / Python 3: first set OKWIRE_APP_KEY and OKWIRE_APP_SECRET on your server. This example signs flat fields only.
{
"code": 0,
"msg": "success",
"data": {
"total": 1,
"data": [
{
"fundPoolId": 1001,
"merchantId": 2001,
"currency": "USD",
"balance": 12500,
"frozenBalance": 500,
"availableBalance": 12000,
"status": 1,
"channel": 0
}
]
}
}Example response · Illustrative amounts and IDs
A code of 0 indicates business success; balances are in data.data. Handle both HTTP errors and non-zero business codes.
03 / Signing & authentication
Signing & authentication
Signed JSON endpoints carry authentication fields in the request body. Use appSecret locally to compute the signature; never send it in the request.
appKeystringRequiredMerchant application identifier
timestampintegerRequiredUnix timestamp in milliseconds
noncestringRequiredA fresh random string for each request
signstringRequiredLowercase hexadecimal MD5 signature
- Exclude sign, add appSecret, skip empty strings and null, and retain 0 and false.
- Sort field names in ascending order and join key=value pairs with &. Do not append a trailing & or URL-encode the values.
- Hash the UTF-8 string with MD5, output lowercase hexadecimal, then add sign to the original request body.
Signing objects and arrays
Objects and arrays enter the signature as compact JSON. Match Go encoding/json serialisation: sort object keys, preserve array order, and account for character escaping and number formatting. Do not use a plain object-to-string conversion.
Encrypted payload mode
For encrypted payloads, send appKey, sKey and sIv headers together. Payloads use AES-CBC; the key and IV use RSA PKCS#1 v1.5 encryption. Confirm public-key configuration before integrating. The example above demonstrates signed JSON mode.
File upload authentication
Uploads use multipart/form-data with required text fields appKey, timestamp and sign. Sign all non-empty text fields except sign, together with appSecret; exclude file contents. The timestamp allows a ±15-minute window. tagIds currently accepts a single ID as text.
04 / API reference
API reference
Choose an endpoint for your workflow. Expand it for its request URL, authentication mode and business fields.
POSTCreate a payout/v1/tf/order/create
Submit payout details and a merchant order number. Recipient requirements depend on destination and payment method.
https://api.example.com/v1/tf/order/createBusiness request fields
Also include appKey, timestamp, nonce and sign; see signing and authentication.
orderNostringRequiredextstringOptionaltransferTypeinteger · 1 2 3RequiredtransferSegmentinteger · 1 2RequiredsourceCurrencyTypeinteger · 1 2 3RequiredsourceCurrencystringRequireddestinationCurrencyTypeinteger · 1 2 3RequireddestinationCurrencystringRequiredcardNumberstringRequiredamountnumberRequirednotifyUrlstringOptionalremarkstringOptionalchannelinteger · 1 2RequiredcustomerIdstringRequiredfirstNamestringRequiredlastNamestringRequiredcountrystringOptionalcitystringOptionaladdressstringOptionalpostcodestringOptionalsortCodestringOptionalroutingNumberstringOptionalbsbCodestringOptionalifscstringOptionalibanstringOptionalbicstringOptionalclabestringOptional
Conditional requirements depend on customer type, payment method and integration configuration. Expand objects to inspect nested fields.
POSTList payouts/v1/tf/order/list
Retrieve paginated payout orders and their processing status.
https://api.example.com/v1/tf/order/listBusiness request fields
Also include appKey, timestamp, nonce and sign; see signing and authentication.
pageintegerRequiredpageSizeintegerRequiredmerOrderNostringOptionalsourceCurrencyTypeintegerOptionalcardNumberstringOptional
Conditional requirements depend on customer type, payment method and integration configuration. Expand objects to inspect nested fields.
POSTRetrieve a payout/v1/tf/order
Retrieve an order using its system ID, rather than the merchant orderNo.
https://api.example.com/v1/tf/orderBusiness request fields
Also include appKey, timestamp, nonce and sign; see signing and authentication.
idintegerRequired
Conditional requirements depend on customer type, payment method and integration configuration. Expand objects to inspect nested fields.
POSTList payout products/v1/tf/transfer_product/list
Retrieve available payout products and configuration.
https://api.example.com/v1/tf/transfer_product/listBusiness request fields
Also include appKey, timestamp, nonce and sign; see signing and authentication.
pageintegerRequiredpageSizeintegerRequirednamestringOptionalstatusintegerOptional
Conditional requirements depend on customer type, payment method and integration configuration. Expand objects to inspect nested fields.
POSTRetrieve a payout product/v1/tf/transfer_product
Retrieve payout product details by product ID.
https://api.example.com/v1/tf/transfer_productBusiness request fields
Also include appKey, timestamp, nonce and sign; see signing and authentication.
idintegerRequired
Conditional requirements depend on customer type, payment method and integration configuration. Expand objects to inspect nested fields.
POSTRegister a customer/v1/va/user/registration/create
Submit customer KYC information. Individual, company, legal representative and beneficial owner details depend on KYC type.
https://api.example.com/v1/va/user/registration/createBusiness request fields
Also include appKey, timestamp, nonce and sign; see signing and authentication.
merchantTypeinteger · 1 2RequiredkycTypeintegerRequiredindustrystring[]RequiredemailstringOptionalphonestringOptionalindividualInfoobjectConditionalattachmentsobject[]ConditionalfileUrlstringOptionalfileTypestringRequiredfileNamestringOptionalfileSizeintegerOptionalmimeTypestringOptional
namestringConditionalnameEnstringConditionalidNumberstringConditionaldateOfBirthstringConditionalissueDatestringConditionalexpirationDatestringConditionalresidentialAddressobjectConditionalcountrystringRequiredstatestringRequiredcitystringRequiredpostcodestringRequiredline1stringRequiredline2stringOptional
companyInfoobjectConditionalcompanyTypestringRequiredidentifyNostringConditionalcompanyNamestringConditionalcompanyNameEnstringConditionalestablishDatestringConditionalcommencementDatestringConditionalvalidPeriodstringConditionallistedinteger · 0 1RequiredstateOwnedEnterprisedinteger · 0 1RequiredforeignOwnedEnterprisedinteger · 0 1Requiredattachmentsobject[]RequiredfileUrlstringOptionalfileTypestringRequiredfileNamestringOptionalfileSizeintegerOptionalmimeTypestringOptional
registerAddressobjectConditionalcountrystringRequiredstatestringRequiredcitystringRequiredpostcodestringRequiredline1stringRequiredline2stringOptional
operationAddressobjectRequiredcountrystringRequiredstatestringRequiredcitystringRequiredpostcodestringRequiredline1stringRequiredline2stringOptional
legalInfoobjectConditionalnamestringConditionalnameEnstringConditionalidNumberstringConditionalidTypestringOptionaldateOfBirthstringConditionalissueDatestringConditionalexpirationDatestringConditionalphonestringOptionalemailstringOptionalnationalitystringOptionalattachmentsobject[]RequiredfileUrlstringOptionalfileTypestringRequiredfileNamestringOptionalfileSizeintegerOptionalmimeTypestringOptional
residentialAddressobjectConditionalcountrystringRequiredstatestringRequiredcitystringRequiredpostcodestringRequiredline1stringRequiredline2stringOptional
uboListobject[]ConditionalnamestringConditionalnameEnstringConditionalidNumberstringConditionalidTypestringOptionaldateOfBirthstringConditionalissueDatestringConditionalexpirationDatestringConditionalemailstringOptionalnationalitystringOptionalattachmentsobject[]RequiredfileUrlstringOptionalfileTypestringRequiredfileNamestringOptionalfileSizeintegerOptionalmimeTypestringOptional
residentialAddressobjectConditionalcountrystringRequiredstatestringRequiredcitystringRequiredpostcodestringRequiredline1stringRequiredline2stringOptional
remarkstringOptional
Conditional requirements depend on customer type, payment method and integration configuration. Expand objects to inspect nested fields.
POSTUpdate a registration/v1/va/user/registration/update
Update registration information using vaUserId.
https://api.example.com/v1/va/user/registration/updateBusiness request fields
Also include appKey, timestamp, nonce and sign; see signing and authentication.
vaUserIdstringRequiredmerchantTypeinteger · 1 2RequiredkycTypeintegerRequiredindustrystring[]RequiredemailstringOptionalphonestringOptionalindividualInfoobjectConditionalattachmentsobject[]ConditionalfileUrlstringOptionalfileTypestringRequiredfileNamestringOptionalfileSizeintegerOptionalmimeTypestringOptional
namestringConditionalnameEnstringConditionalidNumberstringConditionaldateOfBirthstringConditionalissueDatestringConditionalexpirationDatestringConditionalresidentialAddressobjectConditionalcountrystringRequiredstatestringRequiredcitystringRequiredpostcodestringRequiredline1stringRequiredline2stringOptional
companyInfoobjectConditionalcompanyTypestringRequiredidentifyNostringConditionalcompanyNamestringConditionalcompanyNameEnstringConditionalestablishDatestringConditionalcommencementDatestringConditionalvalidPeriodstringConditionallistedinteger · 0 1RequiredstateOwnedEnterprisedinteger · 0 1RequiredforeignOwnedEnterprisedinteger · 0 1Requiredattachmentsobject[]RequiredfileUrlstringOptionalfileTypestringRequiredfileNamestringOptionalfileSizeintegerOptionalmimeTypestringOptional
registerAddressobjectConditionalcountrystringRequiredstatestringRequiredcitystringRequiredpostcodestringRequiredline1stringRequiredline2stringOptional
operationAddressobjectRequiredcountrystringRequiredstatestringRequiredcitystringRequiredpostcodestringRequiredline1stringRequiredline2stringOptional
legalInfoobjectConditionalnamestringConditionalnameEnstringConditionalidNumberstringConditionalidTypestringOptionaldateOfBirthstringConditionalissueDatestringConditionalexpirationDatestringConditionalphonestringOptionalemailstringOptionalnationalitystringOptionalattachmentsobject[]RequiredfileUrlstringOptionalfileTypestringRequiredfileNamestringOptionalfileSizeintegerOptionalmimeTypestringOptional
residentialAddressobjectConditionalcountrystringRequiredstatestringRequiredcitystringRequiredpostcodestringRequiredline1stringRequiredline2stringOptional
uboListobject[]ConditionalnamestringConditionalnameEnstringConditionalidNumberstringConditionalidTypestringOptionaldateOfBirthstringConditionalissueDatestringConditionalexpirationDatestringConditionalemailstringOptionalnationalitystringOptionalattachmentsobject[]RequiredfileUrlstringOptionalfileTypestringRequiredfileNamestringOptionalfileSizeintegerOptionalmimeTypestringOptional
residentialAddressobjectConditionalcountrystringRequiredstatestringRequiredcitystringRequiredpostcodestringRequiredline1stringRequiredline2stringOptional
remarkstringOptional
Conditional requirements depend on customer type, payment method and integration configuration. Expand objects to inspect nested fields.
POSTRetrieve a registration/v1/va/user/registration/detail
Retrieve customer registration information and review status.
https://api.example.com/v1/va/user/registration/detailBusiness request fields
Also include appKey, timestamp, nonce and sign; see signing and authentication.
vaUserIdstringRequired
Conditional requirements depend on customer type, payment method and integration configuration. Expand objects to inspect nested fields.
POSTList customers/v1/va/user/list
Retrieve a paginated list of registered collection customers.
https://api.example.com/v1/va/user/listBusiness request fields
Also include appKey, timestamp, nonce and sign; see signing and authentication.
pageintegerRequiredpageSizeintegerRequiredstatusintegerOptionalmerchantTypeinteger · 1 2OptionalkycTypeintegerOptionalneedExtraDocumentintegerOptional
Conditional requirements depend on customer type, payment method and integration configuration. Expand objects to inspect nested fields.
POSTApply for an account/v1/va/account/apply
Apply for a collection account for a registered customer. Required information and currencies depend on your business configuration.
https://api.example.com/v1/va/account/applyBusiness request fields
Also include appKey, timestamp, nonce and sign; see signing and authentication.
vaUserIdstringRequiredcurrencystringRequiredcountryCodestringRequiredbusinessPurposestringRequiredkycTypeintegerRequiredcompanyTypestringRequiredaccountNamestringOptionalexpectedVolumestringOptionalaccountPurposestringConditionalmultiCurrencystringOptionalremarkstringOptionalaccountNicknamestringOptionalattachmentFileIdsobjectOptional
Conditional requirements depend on customer type, payment method and integration configuration. Expand objects to inspect nested fields.
POSTList collection accounts/v1/va/account/list
Filter collection accounts by account number, currency or status.
https://api.example.com/v1/va/account/listBusiness request fields
Also include appKey, timestamp, nonce and sign; see signing and authentication.
pageintegerRequiredpageSizeintegerRequiredaccountNostringOptionalcurrencystringOptionalstatusintegerOptionalisActiveintegerOptionalbusinessPurposestringOptional
Conditional requirements depend on customer type, payment method and integration configuration. Expand objects to inspect nested fields.
POSTRetrieve an account/v1/va/account/detail
Retrieve account details using vaAccountId.
https://api.example.com/v1/va/account/detailBusiness request fields
Also include appKey, timestamp, nonce and sign; see signing and authentication.
vaAccountIdstringRequired
Conditional requirements depend on customer type, payment method and integration configuration. Expand objects to inspect nested fields.
POSTList collections/v1/va/collection/records/list
Query paginated collection records by currency, date, account and other filters.
https://api.example.com/v1/va/collection/records/listBusiness request fields
Also include appKey, timestamp, nonce and sign; see signing and authentication.
pageintegerRequiredpageSizeintegerRequiredcurrencystringOptionalcountryCodestringOptionalstatusintegerOptionalstartDatestringOptionalendDatestringOptionalaccountNostringOptionalvaCollectionIdstringOptional
Conditional requirements depend on customer type, payment method and integration configuration. Expand objects to inspect nested fields.
POSTRetrieve a collection/v1/va/collection/records
Retrieve a collection and its supporting-document status using vaCollectionId.
https://api.example.com/v1/va/collection/recordsBusiness request fields
Also include appKey, timestamp, nonce and sign; see signing and authentication.
vaCollectionIdstringRequired
Conditional requirements depend on customer type, payment method and integration configuration. Expand objects to inspect nested fields.
POSTSubmit supporting documents/v1/va/collection/records/attachment/submit
Submit uploaded file IDs and attachment information for review.
https://api.example.com/v1/va/collection/records/attachment/submitBusiness request fields
Also include appKey, timestamp, nonce and sign; see signing and authentication.
vaCollectionIdstringRequiredattachmentTypestringRequiredattachmentsstringRequiredunitIdstringRequiredfileIdsstring[]RequiredwebStoreUrlstringConditionalsenderInfoobjectConditionalcompanyNamestringRequiredlegalNamestringRequiredaddressstringRequired
Conditional requirements depend on customer type, payment method and integration configuration. Expand objects to inspect nested fields.
POSTSummarise collection amounts/v1/va/collection/records/balance/summary
Summarise net collection amounts by account and currency. This is not the available account balance.
https://api.example.com/v1/va/collection/records/balance/summaryBusiness request fields
Also include appKey, timestamp, nonce and sign; see signing and authentication.
accountNostringRequiredcurrencystringRequired
Conditional requirements depend on customer type, payment method and integration configuration. Expand objects to inspect nested fields.
POSTRetrieve fund-pool balances/v1/merchant/fundPool/balance
Retrieve the current merchant’s balance, frozen amount and available balance, optionally filtered by currency.
https://api.example.com/v1/merchant/fundPool/balanceBusiness request fields
Also include appKey, timestamp, nonce and sign; see signing and authentication.
currencystringOptional
Conditional requirements depend on customer type, payment method and integration configuration. Expand objects to inspect nested fields.
POSTList exchange rates/v1/tf/quote/all
Retrieve the exchange-rate quote list.
https://api.example.com/v1/tf/quote/allBusiness request fields
No business request fields. Send an empty JSON object.
POSTRetrieve a currency quote/v1/tf/quote
Retrieve an exchange rate for a source and destination currency.
https://api.example.com/v1/tf/quoteBusiness request fields
sourceCurrencystringRequireddestinationCurrencystringRequired
Conditional requirements depend on customer type, payment method and integration configuration. Expand objects to inspect nested fields.
POSTList countries/v1/tf/country/list
Retrieve destination country codes and names.
https://api.example.com/v1/tf/country/listBusiness request fields
No business request fields. Send an empty JSON object.
POSTList currencies and partners/v1/tf/currency/partner
Retrieve supported currencies and partners for a country and channel type.
https://api.example.com/v1/tf/currency/partnerBusiness request fields
typestringRequiredcountrystringRequired
Conditional requirements depend on customer type, payment method and integration configuration. Expand objects to inspect nested fields.
POSTList business modes/v1/tf/business/mode
Retrieve supported modes for a country and business type.
https://api.example.com/v1/tf/business/modeBusiness request fields
countrystringRequiredtypestringRequired
Conditional requirements depend on customer type, payment method and integration configuration. Expand objects to inspect nested fields.
POSTList banks/v1/tf/bank/list
Retrieve bank codes and names for a country.
https://api.example.com/v1/tf/bank/listBusiness request fields
countrystringRequired
Conditional requirements depend on customer type, payment method and integration configuration. Expand objects to inspect nested fields.
POSTUpload a file/v1/file/upload
Upload a file using multipart/form-data. Sign non-empty text fields; file contents are excluded.
https://api.example.com/v1/file/uploadBusiness request fields
Uploads use multipart/form-data with required text fields appKey, timestamp and sign. Sign all non-empty text fields except sign, together with appSecret; exclude file contents. The timestamp allows a ±15-minute window. tagIds currently accepts a single ID as text.
filebinaryRequiredfileTypeintegerOptionaltagIdsstringOptional
Conditional requirements depend on customer type, payment method and integration configuration. Expand objects to inspect nested fields.
05 / Async notifications
Async notifications
Provide a notification URL for payout orders and use order queries to confirm the result.
Set your receiving URL
Payout creation accepts notifyUrl. Confirm notification fields, signature verification and retry arrangements during integration.
https://merchant.example.com/webhooks/okwireHandle results reliably
Deduplicate by order identifier and verify the notification source before updating state. Use query endpoints to confirm duplicate or uncertain results.
Query payout and collection statusBUILD WITH OK WIRE
Ready to connect your next workflow?
Start with merchant onboarding and connect your product to global payments.