Payment Flow

Types of Payment

One-Time Payment

Each time you create a payment, you will receive a payment instruction. One-Time payment instructions can only be used once, have a time limit (i.e. expire time), and the payment amount is fixed. Once the payment is made, the payment instruction cannot be used anymore.

1211

It's typically used to pay a specific transaction. In real world scenario, we usually see one-time payments when we visit a store with QRIS payment. Usually, the QRIS is generated after we finalize our purchase. When we scan the QR code, we see the amount to pay, and enter our PIN to complete the payment. Once we completed the payment, the QR becomes invalid.

After a payment is made from the payment instructions, a callback notification will be fired to your platform.

Open Payment

When creating an open payment, you will receive a payment instruction. This payment instructions can be used multiple times and does not expire (i.e. persistent). It accepts an open amount which means the payment amount can be different each time your customer wants to pay.

1223

It's typically used as a top-up channel to your platform's e-wallet, or fund-holding account. In real world scenario, we usually see open payments when we want to do top-up to a e-wallet via Virtual Account (VA). Usually, the VA number is available before we even know how much we want to top up. At the bank transfer, we need to enter the VA number, the amount to pay, and enter our PIN to complete the payment. Once we completed the payment, the VA can still be used for another payment/top-up.

Since it can be used multiple times, the system will continuously poll for incoming payments. Each time we detect a payment made with the payment instructions, a callback notification will be fired to your platform.

A Typical Payment Flow

1. Create a Payment

To start accepting payments on your website, app or platform, create a Payment via our API (details available at each payment method).

When creating an Open Payment, make sure you bind it to one of your customers. This will ensure that you know who has made a payment when we notify you of a successful payment.

{
    "bank": "bri",
    "va_name": "Kris",
    "transaction_amount": 21000,
    "expired_time": "2022-04-12T15:49:40.726000+07:00",
    "va_number": "777001",
    "description": "hello dev"
}

2. Show payment instructions to your customers

When creating a payment method that will capture payments made by your customers, it is likely that you will need to show your customers instructions on how to make the payments or redirect them to the payment website.

The response of Payment created will include instructions that you should show to your end-customers. Do remind them that they will need to perform additional actions in order to complete the payment, for example making a bank transfer through ATM or online bank transfer.

The status of the Payment will be pending until the payment is either successful or failed. It’s common for businesses to hold an order in a “pending” state during this time, not fulfilling the order until the payment is successful.

You will not be able to "pull" payments from your customers for now. Your customers will have to perform actions to make the payments.

{
    "data": {
        "transaction_id": "f262ccd6-6db5-495f-8389-b98d72e91136",
        "transaction_created": "2022-04-12T14:49:41+07:00",
        "bank": "bri",
        "va_name": "Kris",
        "va_number": "1269700000000409",
        "transaction_amount": 21000,
        "transaction_fee": "3663.0",
        "expired_time": "2022-04-12T15:49:40.726000+07:00",
        "status": "pending",
        "description": "hello dev"
    }
}
{
    "data": {
        "transaction_id": "8d2abb1fee3a450d9b",
        "transaction_amount": 10000,
        "transaction_created": "2022-01-26T10:14:58.687089+07:00",
        "bank": "bni_ipay",
        "status": "pending",
        "description": "test_request_bayarind_create_payment",
        "redirect_url": "https://paytest.bayarind.id/simulator/bniipay/public/index?CATEGORY_ID=SPRINTCITI&RU=https%3A%2F%2Fpaytest.bayarind.id%2Fbnipay%2Flanding%3Fsbm%3D985caf29-ec6d-454a-82c9-7b0fb486521e%26cid%3DVERIHIPAY01%26VAL%3D&QS=FDXOItzkIKOUkQzsTNFsH0hMjHfNWnG50lvn%2FYwjGYkUNc4i3OQgo5SRDOxM0WwfPCRiCuSpvUtD%0D%0AXH6%2FOsDyw0CTJt2t%2BdO0%2BvrVVLP1WO1u9VXW%2BGEO5CsMpizyjG48FDXOItzkIKOUkQzsTNFsHzfE0%2BEV%0D%0AoQvwFkODqvulZrdhnEh0NCYiQFt%2FXPrsbHmIc7YMaFEWPT72cGPIpMrWxTnJ24FQp0Wv380OiCd7BRlK%0D%0AlPW2abotWGKzdrc41bKl",
        "redirect_data": null
    }
}

3. Verihubs will notify you when payment has been made successfully.

Once a payment has been made successfully, we will notify you with a callback. The payment's status will now be paid.

{
    "transaction_id": "cd752ce8d93d48888d",
    "transaction_updated": "2022-04-12T14:40:17.032030+07:00",
    "status": "paid",
    "transaction_amount": 21000,
    "transaction_fee": null,
    "payment_attempt": "11"
}

At this point of time, you should be able to safely present the payment results to your customer, and you may now fulfill their order. However, the funds may not yet be available for withdrawal, or transfer. Settlement time may vary depending on the payment method and channel.

Refunds

Please note that refunds are not available for any payment methods at this moment.