OK WIRE DEVELOPERS
Cross-border payment APIs,integrated with your workflows.
Integrate individual payments, customer registration, collection accounts, receipt queries and account balances.
/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
API integration workflow
Configure access and validate queries before integrating the required business endpoints.
- 01
Prepare your access
Complete merchant onboarding and obtain your appKey, appSecret and environment details.
Open the business console - 02
Configure authentication
Store credentials on the server and confirm endpoint authentication, encryption mode and applicable IP settings.
Signing & authentication - 03
Make your first query
Use a balance query to verify signing, connectivity and response handling.
Query account balances - 04
Connect your workflow
Integrate payment or collection endpoints, retain business identifiers and handle status queries and asynchronous notifications.
Explore the API
02 / Query account balances
Query account balances
Use the read-only currency account balance endpoint to validate the request format. Run examples on your server; this website does not submit live business 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 appKey, timestamp, nonce and sign in the request body and validate the timestamp window and request replay. Use appSecret only on the server to calculate the signature; never transmit it. Generate fresh authentication parameters when retrying.
appKeystringRequiredMerchant application identifier
timestampintegerRequiredUnix timestamp in milliseconds, within a ±15-minute window
noncestringRequiredA fresh random string per request, up to 256 characters, excluding &, = and control characters
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
Use multipart/form-data with required text fields appKey, timestamp and sign. nonce is optional and must follow the string rules when supplied. Sign sorted non-empty text fields except sign, together with appSecret; file contents are excluded. Timestamps allow a ±15-minute window; do not resend the same signature. Send one value per text field and no URL query parameters. tagIds currently accepts one 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 an individual payment/v1/tf/order/create
Submit a merchant payment reference in orderNo and details for one payment. Supply beneficiary, bank and purpose fields required by the payment product.
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 payment orders/v1/tf/order/list
Retrieve paginated payment orders and status. Filter by merchant order number using merOrderNo to obtain the system order ID.
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 payment details/v1/tf/order
Pass the system order ID in id to retrieve payment details. The merchant-supplied orderNo is not the system id.
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.
POSTSubmit customer registration/v1/va/user/registration/create
Submit customer verification information, including individual, business, legal representative and beneficial owner details required for the customer 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 a collection account/v1/va/account/apply
Submit a collection account application for a registered customer and confirm activation from the review result. Accounts, currencies and documentation depend on 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 collection documents/v1/va/collection/records/attachment/submit
Submit uploaded file IDs and attachment details for a collection, then query the collection record for subsequent review status.
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.
POSTQuery net collection totals/v1/va/collection/records/balance/summary
Summarise net collection amounts by collection account number and currency. This is a receipt statistic, not the available currency 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.
POSTQuery currency account balances/v1/merchant/fundPool/balance
Query the current merchant currency accounts, including identifiers, account balances, frozen and available balances, and status. Filter by currency if required.
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.
POSTQuery a currency-pair rate/v1/tf/quote
Query a rate for the source and target currencies. This query does not create a conversion transaction or move funds.
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.
POSTQuery payment currencies and channel partners/v1/tf/currency/partner
Query supported currencies and channel 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.
POSTQuery payment business modes/v1/tf/business/mode
Query supported payment business modes for the specified country and 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
Use multipart/form-data with required text fields appKey, timestamp and sign. nonce is optional and must follow the string rules when supplied. Sign sorted non-empty text fields except sign, together with appSecret; file contents are excluded. Timestamps allow a ±15-minute window; do not resend the same signature. Send one value per text field and no URL query parameters. tagIds currently accepts one 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
Configure the payment notification URL and verify transaction status through order queries.
Set your receiving URL
Provide notifyUrl when creating a payment to receive status notifications. Confirm payloads, source verification and response requirements during integration, and retain order queries for result reconciliation.
https://merchant.example.com/webhooks/okwireNotification verification and status reconciliation
Verify the notification source and handle duplicates using order identifiers and business status. The order detail endpoint requires the system order ID. If only a merchant order number is available, filter the list with merOrderNo to obtain the ID before reconciling the result.
Query payout and collection statusBUILD WITH OK WIRE
Discuss API integration
Complete merchant onboarding and access configuration to integrate cross-border payment services.