Sub Account V2

Smart Controls for Account and Funds Visibility

Overview

Sub Account simplifies how businesses manage deposits, commissions, and fund flows in one system with transparency, visibility, and control. With one API, you can create sub-accounts, monitor transactions, and handle internal transfers with ease. It’s built for platforms that need control, visibility, and flexibility in managing complex fund flows.

Integration Guides

Choose how to onboard sub accounts, accept payments, pay out, and more.

1. Register Sub Account

Once the service has been verified for your business, you may use the Register Sub Account API to create Sub Accounts. You must consider several factors when choosing a sub account type, because the type of sub account you choose determines your partner experience and operational responsibilities such as KYC/ KYB, user support, etc. Currently there are three account types you can use with DOKU Sub Account, each of which is designed for different use cases.

  • Default: This sub account is almost completely invisible to the account holder and DOKU has no direct contact with them. Default sub accounts are suitable for platforms who want to control the entire user experience. Liability for partner KYC/ KYB is on Merchant.

  • Standard: Merchant can manage payout, customize the flow of funds. An account with a Standard account is able to log in to DOKU Dashboard to view their transaction history and account balance. Liability for partner KYC/ KYB is on Merchant.

  • Partner: Merchant can manage payout, customize the flow of funds. Liability for partner KYC/ KYB is on DOKU. If you decide to use this type of account, please register your sub account via DOKU Partner APIarrow-up-right.

Default
Standard
Partner

Availability

Collect and Route, Smart Acquired

Collect and Route

Collect and Route

Verification Process

Merchant

Merchant

DOKU

Integration Method

API

API

API

Integration Effort

Low

Low

Medium

New Register Sub Account

post
/sac/h2h/v1.0/sub-account/register

Endpoint to Sub Account Register H2H SNAP.

Body
objectOptional
Responses
chevron-right
200

OK

application/json
responseCodestringOptionalExample: 2000600
responseMessagestringOptionalExample: Request has been processed successfully
profileIdstringOptionalExample: SAC-001-00001
post
/sac/h2h/v1.0/sub-account/register

2. Accept Payment

After you create your account, you can start processing transactions on behalf of your partner or you can topup your sub account balance via Virtual Account.

3. Transfer Funds

The funds from the payments or topup that you process for your partners are held in their balance accounts until you pay them out or until you transfer the balances to another sub accounts

a. Transfer Inquiry

Before initiating a fund transfer, it is crucial to verify the validity of both the sender's and the recipient's bank accounts. Ensuring account accuracy helps prevent transaction errors and supports a seamless transfer process

Transfer Inquiry

post
/sac/h2h/v1.0/transaction/transfer-inquiry

Endpoint Transfer Inquiry H2H SNAP.

Body
typestring · enum · max: 20Required

type of transfer inquiry

Example: BANK_ACCOUNTPossible values:
methodstring · enum · max: 22Required

optional field, and the default value is ONLINE

Example: ONLINEPossible values:
sourceAccountNostring · max: 22Required

the doku BMS account number

Example: 1234567890
beneficiaryBankCodestring · max: 16Required

beneficiary Bank Code

Example: 123
beneficiaryAccountNumberstring · max: 22Optional

destination account

Example: 18520102416246
remarkstring · max: 256OptionalExample: transfer remarks length should be same with BMS
Responses
chevron-right
200

OK

application/json
responseCodestring · max: 7OptionalExample: 2004200
responseMessagestring · max: 128OptionalExample: Request has been processed successfully
referenceNostring · max: 64OptionalExample: 45af25e8c4dd5c1634e967a2ebfff3a4043e7fd6
partnerReferenceNostring · max: 64OptionalExample: 3f97a11c4476420897f2224de1ccea73
typestring · max: 20OptionalExample: BANK_ACCOUNT
methodstring · max: 22OptionalExample: ONLINE
beneficiaryAccountNumberstring · max: 10OptionalExample: 18520102416246
beneficiaryAccountNamestring · max: 256OptionalExample: BAGUS SAMPURNA
beneficiaryBankCodestring · max: 16Optional

beneficiary Bank Code

Example: 123
post
/sac/h2h/v1.0/transaction/transfer-inquiry

b. Transfer Payment

This process involves transferring funds from the sub account to the recipient's account. Ensure all required details, including the recipient's bank account information and the transfer amount, are accurately provided.

Transfer Payment

post
/sac/h2h/v1.0/transaction/transfer-payment

Endpoint Transfer Payment H2H SNAP.

Body
typestring · enum · max: 20Required

type of transfer payment

Example: BANK_ACCOUNTPossible values:
methodstring · enum · max: 22Required

optional field, and the default value is ONLINE

Example: ONLINEPossible values:
sourceAccountNostring · max: 22Required

the doku BMS account number

Example: 1234567890
beneficiaryBankCodestring · max: 16Required

beneficiary Bank Code

Example: 123
beneficiaryAccountNumberstring · max: 22Optional

destination account

Example: 18520102416246
beneficiaryAccountNamestring · max: 256Optional

destination account

Example: BAGUS SAMPURNA
Responses
chevron-right
200

OK

application/json
responseCodestring · max: 7OptionalExample: 2004300
responseMessagestring · max: 256OptionalExample: Request has been processed successfully
referenceNostring · max: 64OptionalExample: 45af25e8c4dd5c1634e967a2ebfff3a4043e7fd6
partnerReferenceNostring · max: 64OptionalExample: 3f97a11c4476420897f2224de1ccea73
typestring · max: 20OptionalExample: BANK_ACCOUNT
methodstring · max: 22OptionalExample: ONLINE
transactionDatestring · max: 25Optional

UTC dateTime

Example: 2022-11-23T18:39:41+07:00
beneficiaryBankCodestring · max: 16Optional

beneficiary Bank Code

Example: 123
beneficiaryAccountNumberstring · max: 10OptionalExample: 18520102416246
beneficiaryAccountNamestring · max: 22OptionalExample: BAGUS SAMPURNA
referenceNumberstringOptionalExample: e73771a15652c5aace3f05d0feaa8cb82b40e5cd
sourceAccountNostring · max: 22OptionalExample: 1234567890
post
/sac/h2h/v1.0/transaction/transfer-payment

4. Check Status

Track the status of your transaction to confirm its completion. This feature allows real-time monitoring.

Check Status

post
/sac/h2h/v1.0/transaction/check-status

Endpoint Check Status H2H SNAP.

Body
objectOptional
Responses
chevron-right
200

OK

application/json
responseCodestring · max: 7OptionalExample: 2005300
responseMessagestring · max: 128OptionalExample: Request has been processed successfully
partnerReferenceNostring · max: 64OptionalExample: 2020102900000000000001
latestTransactionStatusstring · max: 2OptionalExample: 00
transactionStatusDescstring · max: 32OptionalExample: success
transactionDatestring · max: 25Optional

UTC dateTime

Example: 2019-07-03T12:08:56+07:00
post
/sac/h2h/v1.0/transaction/check-status

5. Inquiry Balance

Balance is like your wallet since it will tell you how much money is available to you on DOKU. You can retrieve it to see the current balance of your sub account.

Balance Inquiries

post
/sac/h2h/v1.0/account/balance-inquiries

Endpoint to Balaance Inquiries H2H SNAP.

Body
profileIdstring · max: 22RequiredExample: SAC-001-00001
accountsstring[]RequiredExample: 1234567890
Responses
chevron-right
200

OK

application/json
responseCodestring · max: 7OptionalExample: 2001100
responseMessagestring · max: 128OptionalExample: Request has been processed successfully
referenceNostring · max: 64OptionalExample: 2020102977770000000009
namestring · max: 128OptionalExample: JONOMADE
customerIdstring · max: 64OptionalExample: mchCustomerId
profileIdstring · max: 128OptionalExample: SAC-001-00001
post
/sac/h2h/v1.0/account/balance-inquiries

6. Account Mutation

This endpoint is used to get account mutation data.

Account Mutation List

post
/sac/h2h/v1.0/account/account-mutation-list

Endpoint Account Mutation List H2H SNAP.

Body
accountNostring · max: 10Required

the doku BMS account number

Example: 1234567890
fromDateTimestring · max: 25Required

UTC dateTime

Example: 2019-07-03T12:08:56Z
toDateTimestring · max: 25Required

UTC dateTime

Example: 2019-07-03T12:08:56Z
pageSizestring · max: 3RequiredExample: 10
pageNumberstring · max: 3RequiredExample: 2
Responses
chevron-right
200

OK

application/json
responseCodestring · max: 7OptionalExample: 2001200
responseMessagestring · max: 128OptionalExample: Request has been processed successfully
referenceNostring · max: 64OptionalExample: 2020102977770000000009
partnerReferenceNostring · max: 64OptionalExample: 2020102900000000000001
post
/sac/h2h/v1.0/account/account-mutation-list

Last updated