Xendit logo

xendit docs



Welcome! Xendit’s mission is to deliver automated payment infrastructure solutions for your business. We help with both money in (collecting payments) and money out (disbursing payments). Our users range from platforms businesses, fintech, e-Commerce, and everything else in between.

Benefits of Xendit

Some of the benefits of using Xendit:

  • Fast integration
  • Instant transfers
  • Daily reconciliation
  • Simple & competitive pricing – no hidden fees
  • Scale automatically

Accept payments

Xendit enables you to accept payments from your customers easily and securely, on web or mobile. We support credit cards and bank transfers via virtual accounts (see the “bank transfers with virtual accounts” sections below to understand how these payment detection methods work). We also support notification systems via SMS or e-mail to remind your customers about their payment.


Before accepting payment, an invoice with all the details about the payment will be needed. You can create this invoice or if you do not have the capability to generate your own invoice, we can also make this for you!

We use the word ‘invoice’ to describe a request for money to be paid to you, i.e. "money in". This could be a traditional invoice or someone checking out on your eCommerce page. Xendit provides a great way to invoice your customers. Whether it’s a one off bill, a subscription service, or something in between, we have a solution for you. We have an invoice UI that automatically shows all the payment options you've chosen to allow. Invoices can be paid based on the payment options you configure, e.g. BCA virtual account and/or credit card.

When an invoice has been made, your customers can send their money to you via the payment channels available. If you have your own UI simply connect us purely through API.

Bank transfers with virtual accounts

Bank transfers with virtual accounts means your users pay into a virtual account set up for that user/transaction. Virtual accounts can be assigned to either a transaction or a user. If you choose to have virtual accounts assigned to a transaction, then once the payment is successfully cleared, that virtual account will re-enter your pool of available virtual accounts for reuse for another transaction, e.g. in 1000 transactions time the same virtual account number may pop up again for another user/transaction. At Xendit, we call this a "pool" virtual account. Platforms typically choose this method when you have a lot of one-off transactions, e.g. single fashion brand's websites.

Virtual accounts allow you to detect payments automatically without the nominal payment amount changing. This is what GoPay uses, e.g. if you owe them 100.000, you will pay 100.000 to a specific virtual bank account specific to that user or transaction - 70001 123456789123.

The table below shows which channels can be used to pay virtual accounts, across the banks.

Bank branchATM BersamaATM AltoATM Primae-Bankingm-banking

Disburse funds

Xendit has an easy way for you to send funds to 150+ banks in Indonesia. We have automated the process of disbursing funds, empowering you to serve thousands of customers every day. This new process gets rid of 3 main problems in traditional funds disbursement: unreliable tokens, human error and slow manual processing time. Use cases range from platforms needing to pay merchants at scale to fintech businesses that need to disburse loans to borrowers. You have the choice to send funds via instant transfer, or if your transaction is less urgent, at T+1 (what is sometimes called SKN/LLG/Kliring, depending on your bank's UI). We support all the major banks and can send money as long as the banks' servers are up.

Built by developers, for developers

Our aim is to make our products as flexible as possible. Everything is programmable. Our RESTful APIs and client libraries let you focus on building your business. Leave the pain of payments to us.


Still have more questions? We're always happy to help however we can. Shoot us an email or chat to us in live chat.