Create Your Duitku Account

To get started, follow these 3 simple steps to activate your Duitku Account and get the API Keys needed to start receiving payments.

Register Account

Before integrating with Duitku, you need to register for Account.

Register Duitku Here
Please also check your spam folder or your promotion folder (for gmail) to find your email verification link.

You will then be asked to verify your phone number through OTP sent to your registered number, so please keep your phone nearby.

Upon successful login, Dashboard is displayed and you can continue to activate your account.
Notes: Duitku follows certain practices to maintain the security of your account.
If your session is inactive for more than 10 minutes, you will be logged out automatically.

Account Activation

Log in to your account and complete the required information in the Dashboard > Merchant Application Form


In this form, you will also be asked to provide a list of documents for verification purposes.

Required Documents :
  • ID Card (KTP)
  • Taxpayer Identification Number (NPWP)
  • Bank Account’s Information
  • Logo
Available Payment Channels :

If you want to accept payments through QRIS and E-wallets (OVO, Shopeepay, LinkAja, Dana), You will be asked to download the e-wallet T&C at the end of the form


After the form has been completed, our verification team will check your account and your registered website. You can switch your account to production mode after your account has been verified.

Our team will check your website. Informations that needs to be displayed in your website includes :
  • Contact information, including : phone number, address and email
  • Product information needs to be relevant to your registered business license
  • Your transaction must be in Indonesian Rupiah
  • Website content must not breach Indonesian law and ethics

Account Integration & Getting API Key


After our verification team has verified your account, you can switch your account from sandbox1testing environment to test features to production2live and fully working environment (live). To start receiving payments, you need to log in to your account dashboard to create projects and get your API keys.

What is an API Key?
API key is your unique integration code that links our payment system to your dashboard account. This key will be inserted at the start of your API integration or put into your CMS plugins as your Duitku ID.

Creating your Project & Getting your API Keys

You can create new projects for each of your websites. You can also create multiple projects or multiple accounts for the same website if you wish to differentiate your payment funneling.

You can add new projects for each website and application from dashboard > my project to get your API key.

Notes :

You can edit, and choose the payment methods available on each website or application on this page.

Edit Project
Manage Payment Channel
Delete Project

UPDATE : How to see API key in the menu ‘My Project’

To improve your account security, we have moved the project’s API key under the ‘edit project’ menu. Your API key can be viewed after you enter your account’s password.

You can create a project and integrate your website to Duitku using the API key (Merchant key) generated in the sandbox environment.
After your account has been verified, you need to create a new project in the production mode, then, replace the API key with the one that is generated in the production environment to receive real payments.

Managing your payment channel

You can activate/deactivate each payment channel of your choice at the tip of your finger. You can also choose if you wish to include the transaction fee in the final addition or charge it as an additional fee to your customer here. Learn more about payment control here

After you submit your project, our verification team will verify your project and activate your API keys.
This process will take approximately 1 to 3 days.

Payment Channels Availability based on Entity Type

Your payment channels availability may vary depending on your entity type. Please use this guide below to see what payment channels are available for your entity type:

Product NameAvailable For
Virtual Account
(Mandiri, BCA*, Permata, CIMB, Arta Graha, BNI, BRI, BNC, Maybank, ATM Bersama, Sahabat Sampoerna, Danamon, and BSI)
Individual, Business Entity, and Foreign Business
Retail Outlet
(Alfamart, Pos Indonesia, Pegadaian, Indomaret*)
Individual, Business Entity, and Foreign Business
Credit Cards
(VISA, Mastercard, JCB, American Express*)
Individual, Business Entity, and Foreign Business
(OVO, Dana, LinkAja, Shopeepay, Jenius Pay)
Individual, Business Entity, and Foreign Business
(Indodana, Atome)
Individual, Business Entity, and Foreign Business
QRISIndividual, Business Entity, and Foreign Business
Direct Debit
(Visa, Mastercard)
Individual, Business Entity, and Foreign Business
Disbursement, Batch DisbursementBusiness Entity, and Foreign Business
Note: *This payment methods are currently only available for Business Entity

Check more about how you can manage your payment channels on Dashboard Feature > Payment Control

Payment methods that do not need further registration (open API) will be immediately available on the dashboard. However, there are several other payment methods that require approval from the payment channel provider. Payment channels that are not yet available will still appear on the dashboard with the instructions and the requirements to open them.


Payment Method

Duitku support E-wallet payments from OVO e-wallet, ShopeePay, Dana, LinkAja, and Jenius Pay. After the your account is verified and has created a project in production mode, Duitku team will immediately register your project for the QRIS and E-wallet payment channel.

Note: Merchants are required to create a project before they can open an e-wallet payment channel.

Each account can only register 1 project using OVO and Dana payment channels. However, for other e-wallet payment channels or QRIS, you can open these payment methods for more than one project in the same account.

After each respective E-wallet payment account is verified, you can immediately set up the activation of the E-wallet payment method via dashboard > 'My project' > 'Payment Method' button.

If you wish to test e-wallet payment channels in the sandbox mode, you can contact Duitku team via email [email protected] or live chat to submit a testing request. Duitku team will arrange a testing schedule for you.

Information about any given promotions related to e-wallets will be directly informed by the e-wallet provider. You will immediately receive money in full on the dashboard (except in co-funding promos).

The limit of transactions amounts that can be paid with an E-wallet will be adjusted to the payment limit of the e-money account owned by the user/customer. Such as, if the user has a premium account, the user can pay up to IDR 10-20 million, while if the user only has a basic account, the user will only be able to pay up to IDR 2 million.

Note that the settlement time for E-wallet transactions is D+2 transactions. Except for Jenius Pay, it has D+1 transactions settlement time.

When your customer’s e-wallet balance is insufficient to make a payment, the customer will receive notification from the e-wallet used, and they will be asked to top up their balance before completing the payment. If the customer does not complete the payment within the specified time given, the transaction will be considered unsuccessful.

If the customer has made a payment, but you haven’t received the money on your dashboard, please contact our customer service via live chat or send an email to [email protected] with a screenshot of the transaction receipt. Our team will check the transactions immediately.

If you wish to refund an e-wallet payment made by the customer, the refund process has to be carried out by the merchant. If the money has been in your dashboard, you can send it back manually or through the Duitku disbursement feature (prices and conditions apply).

All transactions made by e-wallet will be recorded on the dashboard, on the “Merchant Project Report” menu. You can filter transactions by payment method (3rd column, all PG), to see transactions paid via e-wallet.

After your QRIS payment account is verified, you can immediately set up the activation of the QRIS payment method thru dashboard > 'My project' > the 'Payment Method' button

There are 2 types of QRIS, which are static and dynamic. For static QRIS, the customer makes a transaction by scanning the QR listed at the merchant's retail outlet and entering a nominal according to the total price at the cashier. Usually, the customer will show the payment receipt screen to the cashier to confirm the payment.

As for Dynamic QRIS, merchants generate a different QRIS for each transaction, which contains transaction amount and other payment details information. These payment details allow the system to perform automated checks, therefore, merchants will immediately get the notification after the bill is paid without having to do a manual check. QRIS online is suitable for merchants who have an online business where the checkout process is carried out independently by the customer.

Note: When you open an account at duitku.com, you will be automatically registered to the Qris payment channel, thus, you don't have to register it manually at qris.id.

QRIS can accept payment from e-wallet apps in Indonesia such as OVO, Go-pay, ShopeePay, Dana, LinkAja, and via internet / m-banking that have QR code payment service, such as BCA (m-BCA), Mandiri (living by Mandiri), CIMB Niaga (Octo Click), BRI, BNI, Mega, Permata, Nobu, UOB, Danamon, Maybank, Sinarmas, BJB, etc.

The settlement time for QRIS transactions is D+2 transactions.

If you wish to test the QRIS payment channel in sandbox mode, you can download and use the following apps to perform payment simulations. If the QRIS payment channel is not yet available in the sandbox payment option, you can email an opening request to [email protected]

A virtual account (VA) is a payment method with a non-physical/online bank account created virtually. A virtual account contains ID numbers created by a bank to process a related payment transaction. Virtual accounts are usually created for payment confirmation automation, where the company will create a virtual account to make related payment transactions. This account allows the system to check automatically every time there is an incoming payment so that the transaction status will be updated in real-time. Usually, a virtual account also contains a transaction nominal balance that must be paid, so that it will reduce payment errors (human error) made by the customer.

BankService FeeSettlement time
Arta Graha1.500 IDR / trxH+1
CIMB, Permata, BNI, BRI3.000 IDR / trxH+1
Mandiri4.000 IDR / trxH+1
BCA5.000 IDR / trxH+2
BSI3.000 IDR / trxH+2

If you wish to set the name that will appear on the merchant's ATM/Mobile Banking/Internet Banking bill, you can set it during the integration process via the 'customerVaName' parameter. If you don’t set this parameter, the name listed will be directly the name of the store in the merchant project.

There are 2 types of virtual accounts that can be selected, which are fixed and dynamic virtual account numbers.

For fixed VA numbers, you will need to provide a separate number associated with each member. You can choose to use the closed amount or open amount for transaction nominal. While for dynamic VA numbers, the transaction number will automatically be generated and always change every time a customer checks out because this virtual account will be associated with the transaction.

Fixed virtual accounts can only be used by a merchant registered as a company. To use this feature, please contact Duitku team or send an email to [email protected]. Then, Our team will provide a virtual account prefix (5-6 numbers at the beginning of VA).

The integration for fixed VA will be different from dynamic VA, whether in sandbox or production mode. The merchant team and Duitku team will set a testing schedule before the VA can run live.

Dynamic virtual accounts will have an expiration date. The expiration date is the period of validity of the virtual account that has been created. Usually, the validity period of a dynamic virtual account number will be at a maximum of 24 hours. You can also set this time period via the 'Expiry Period' (int) parameter when performing API integration, or set the desired time in the plugins configuration section (only for the latest version of plugins). If you want to cancel the virtual account number that was created before it expires, you can change the VA status to expired for dynamic VA and change the VA status to inactive for fixed VA

The maximum limit for virtual account payments will depend on the limit set by the bank for each customer. While the minimum limit is the transfer limit determined by the bank, usually around 10,000 IDR. Duitku system can accept virtual account payments to more than 1,000,000,000 IDR

Your customers can also make virtual account payments from different banks. However, they will be charged an interbank transfer fee. In this case, the virtual account will serve to automate transaction checking. In addition, you can also pay virtual account bills from abroad as long as the customer has access to their payment bank account.

If you want to simulate a virtual account payment in sandbox testing mode, you can do so via this page

BCA virtual account payment channel

Currently, BCA virtual accounts can only be opened by merchants with company business legality. Merchants who want to open a BCA VA payment channel will be asked to present a BCA account that is registered under the merchant’s company name. Please note that this bank account does not have to be your settlement account.

For individual merchants who want to open payments through BCA, you can use payment via QRIS. QRIS can be paid by customers through BCA m-banking and various other banking apps.

With PayLater, you can allow your customer to buy now and pay later in installments. As of now, Duitku supports Indodana and Atome as PayLater Services. Customers are required to have an account at Indodana and Atome to use this payment channel. Paylater payment channels can be opened for both personal and corporate merchants. Note that only merchants with products in the form of physical goods (not intangible or digital products such as balance, credit, etc.) can open this payment channel. If you wish to open this payment channel, you can submit a request to [email protected]. The approval process will be processed and reviewed by the Indodana or Atome team.

  • Settlement Time and Services Fee
Settlement TimeH+2H+2
Services Fee (MDR)1%5.5% (Paid by merchants)
How to Pay Customer will be directed to the new page to log in to their Indodana Account.Customers can scan the generated QR through ATOME Apps. The transaction will automatically be converted to 3 installments.

UAT will be carried out once the integration is done. UAT will be scheduled and done by the Indodana and Atome team. Sandbox testing credentials:

No telp : 081282325566
Pin   : 000000

UAT will be scheduled and carried out by Duitku & Merchant’s team Sandbox testing credentials:

Successful Scenario
Country Code : ID
Mobile : +62811000122
OTP : 7524

Failure Scenario
Country Code : ID
Mobile : +62810000001500
OTP: 1111

All payments made through Indodana and Atome payment channel will automatically be shown in your dashboard along with the transactions from other payment methods. Funds will arrive in full amount, minus service fee.

You can integrate with Indodana and Atome PayLater payment methods via API and plugins. Check the Duitku integration page to see the list of available plugins.

Currently, Duitku support retail payment channels thru Alfamart, Pos Indonesia, Pegadaian, and Indomaret. Alfamart, Pos Indonesia, and Pegadaian payment channels will be opened and activated immediately after your Duitku account has been verified. Meanwhile, Indomaret payment channel can only be opened by merchants with the legality of the company's business. Merchants who wish to open an Indomaret retail payment channel need to send a request via email to [email protected] to get an Indomaret MID (Merchant ID). Then, the approval process will be carried out entirely by the Indomaret team. Note that this application process might take up to 2 months. After the application has been sent to Indomaret, you can arrange a user acceptance testing (UAT) schedule with the Indomaret team.

The minimum payment amount for Pos Indonesia, Alfamart, and Pegadaian are 10,000 IDR and the maximum amount is 2.500.000 IDR. Retail outlet payment numbers will be generated randomly and the name listed when the customer pays the bill at Alfamart, Pos Indonesia and Pegadaian will be Duitku and the bill will be included in the Telkom Payment category. As for Indomaret, the minimum payment amount is 10,000 IDR and the maximum is 15,000,000 IDR. For all payments thru Indomaret outlets, the name listed on the bill will be the name of the Merchant. However, you can submit a request to change the name listed via email to [email protected]. The process might take up to 2 months.

After the customer completes the transaction, Duitku system will notify the Merchant. Notifications to customers will be carried out by the Merchant. If you wish to simulate the retail payments channel in sandbox testing mode, you can do so via this page.

There are 2 types of credit card payments, aggregator and facilitator. Please refer to the table below for the difference between aggregator and facilitator.

Not directly connected to a bankNeeds to have a holding account in the transaction acquiring bank
The fund will be collected in the dashboard along with other payment channelsThe fund will go directly to the merchant’s account at the acquiring bank
Settlement time will be D+4Settlement time will be D+1
Doesn’t require to re-register to third partyDuitku will submit a merchant application to the processing bank. The approval process will be carried out entirely by the bank
Only accept domestic cardsCan accept cards from overseas

For aggregators, Duitku can accept credit cards or debit cards with Visa, Mastercard, and JCB logos. Meanwhile, as for facilitator, Duitku can accept credit cards or debit cards with Visa, Mastercard, JCB, and American Express logos.

Note that CIMB facilitator credit cards cannot accept BCA debit cards.

As per Bank Indonesia regulations, Duitku will only accept payments in IDR / Rupiah. Thus, all payments in foreign currency must be converted to rupiah. In this case, the merchant can perform a price conversion before making the final bill. If any payment was made using a foreign card, the merchant will receive the payment in IDR / Rupiah and the customer’s merchant will be billed according to the conversion rate of the credit card bank they are using.

Duitku will not save any customer credit card information (e.g credit card number and CVV), therefore, customers will have to enter their credit card information for each transaction with OTP code to follow 3D Secure security standards. Click ‘here’ for more information about 3D security standard and ‘here’ to avoid chargeback

In facilitator credit card payment, for each processing bank, the cut-off time will be different from one another.
BCA: 9 pm
CIMB: 5 pm at 8 pm
BRI: 9 pm
Example: Transaction conducted with BCA as a processing bank on Monday at 10 pm will be processed on Wednesday. Settlement time for credit card payment channel will depend on the type of line opened (aggregator or facilitator).

Difference between void and refund

The transaction will be canceled within 24 hours after the transaction occursTransactions are canceled within more than 24 hours after the transaction occurs
The money will be immediately returned to the user's credit card limitThe money will be returned to the user's credit card within 14 business days
If the transaction fails, voids, or is refunded, Duitku will not charge any service fee to the merchant. We will only deduct service fees from successful transactions.

For facilitator credit card transactions, the refund process can be done thru Duitku dashboard, in the 'Facilitator Report' menu section. The refund button will appear 24 hours after the cut-off time of the transaction. Before 24 hours, the transaction will be considered void. As for aggregator credit card transactions, the refund process can only be done by submitting a refund request to [email protected].com or via live chat on the merchant dashboard. Note that for any credit card transaction made without using 3D secure, a refund request can only be made 3 days after the transaction occurs.

If you want to simulate a credit card payment in sandbox testing mode, you can enter the following card number

Visa: 4000 0000 0000 0044 / Valid through : 03/33 / CVV : 123
Mastercard: 5500 0000 0000 0004 / Valid through : 03/33 / CVV : 123
More can be found on the API Docs page

Was the information on this page helpful?