instamoney docs

Transfer Funds


Disbursement is used to move or transfer funds to bank accounts in Indonesia. You may be a fintech lending platform transferring loans to borrowers, a major company paying out payroll for thousands of employees across various bank accounts, a platform giving cashback to customers, or an eCommerce business paying out your suppliers - Disbursement is the easiest, the fastest, and the most reliable way to send out your money to your users. We systematically build this so you can do it automatically, and at scale..

Disbursements are done instantly for any banks and any amount inside a payment schedule available. Due to restriction of Indonesian banks however, Instant payouts can only be executed during 08:00-22:00. If you execute payouts outside this schedule, we will execute as soon as the banks are available again (outside maintenance hours of 23:00-04:00).

Try it now

You can easily test out the API below. Test your first disbursement below and see how blazingly fast it is!


Create Disbursement

In this example, together we will create a Disbursement request. You can then see how the flow fits your use case.

Start the test by running the request in CURL via your desktop terminal. You can also edit the parameters to test out different results.

 curl -X POST \
         -u NIiHfL5xh+amlMdrKLZOTDSWYNGgodl6mXCy+Rxn/2TQ8LWnDgV1gQ==: \
         -d external_id=demo_1531960340700 \
         -d bank_code=BCA \
         -d account_holder_name='Bob Jones' \
         -d account_number=1231241234 \
         -d description='Reimbursement for shoes' \
         -d amount=76000 

Disbursement process

How does the recipient identify disbursements sent through Instamoney?

We disburse funds on your behalf from our bank accounts. To help your recipient identify funds from you,

  • Include your company name in the description of the disbursement - if the recipient's bank supports this field, the recipient will see this in their bank statement.
  • Ask the recipient to look out for "PT SYAFTRACO" in their bank statement.

Implementing disbursement

Follow the steps below to implement our disbursements API

Please follow the CURL request below using the POST command. This will create a Disbursement request in which will be executed as soon as the request hits our server.

  • Curl
  • PHP
curl -X POST \
         -u NIiHfL5xh+amlMdrKLZOTDSWYNGgodl6mXCy+Rxn/2TQ8LWnDgV1gQ==: \
         -d external_id=demo_1475459775872 \
         -d bank_code=BCA \
         -d account_holder_name='Bob Jones' \
         -d account_number='1231241231' \
         -d description='Reimbursement for shoes' \
         -d amount=17000

As you can see, we have went ahead and pre-filled the request with a valid sample API Key for security. Upon signing up for an account later, you will see your specific API key. Only you can open this API Key, so keep it safe!

Once your request hits our server, our server will then return a response. Below is the response example of a successful request. You can refer the errors section to learn more about how we notify you about errors in requests.

Response: 200

        "account_holder_name":"Bob Jones",
        "disbursement_description":"Reimbursement for shoes",

Your instamoney ID as we see you - for internal purposes :P


An ID of your choice we append to all transactions. Often your unique ID like a phone number, email or transaction ID


Amount we should send to the recipient


Code for the relevant bank. Find more bank codes


Bank account name as per the bank's records. Used for verification and error/customer support scenarios


Bank account number. This has to be exact. We will send to this account and we don't take liability for you sending us an incorrect account number. Find out more about error scenarios


This is the description you give us :) The default can be set in dashboard


PENDING - means we have initiated the transfer but the bank has not returned a successful response yet

COMPLETED - the bank has told us they have sent the funds (Note: sometimes the banks are still a bit slow at execution)

FAILED - means our payment has failed. Find out more errors scenario

Once the Disbursement request is executed, we will send callbacks for that transaction, notifying you of the payment status. This is where you need to set up the callback URL to receive our callbacks. Please find the example of the callback content below.

  • PHP
        if ($_SERVER["REQUEST_METHOD"] === "POST") {
            $data = file_get_contents("php://input");
            print_r("\n\$data contains the updated disbursement data \n\n");
            print_r("\n\nUpdate your database with the disbursement status \n\n");
        } else {
            print_r("Cannot ".$_SERVER["REQUEST_METHOD"]." ".$_SERVER["SCRIPT_NAME"]);

Congrats! That's it - you're now set to disburse funds with instamoney.

Learn more

  • Read more about testing and troubleshooting via our testing pages
  • Read more about handling multiple error scenarios here


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