Home

Welcome to OY! We aim to be among the world class financial services and always put our customers first in everything that we do. Armed with receive money (accepting payments) and send money (fund disbursement) products and services, we are ready to help your business achieve higher growth through swift and secure payment infrastructure solutions.

How OY! Can Help

How OY Can Help

Our Product Suites

Money-Out (Disbursement)

Money-In (Accepting Payments)

Registration Process

Registration process begins with creating an account. Creating an account is 100% free and enables you to try our product suites in staging/test environment, where you can execute money-in and money-out dummy transactions (without real money movement).

After successfully creating an account, if you are interested to go live (execute real money-in and/or money-out transactions) or integrate with OY!, you are required to upgrade your account by submitting supporting legal documentations.

Creating Account

Follow the steps below to create an account:

1. Register on the OY! dashboard: To create your account, please register here, and complete the form with all the required information.

Please note that your username cannot be changed once the registration form is submitted.

Creating Account

2. Activate your account: Once the registration is submitted, an activation link will be sent to the email registered. Once you are successfully logged in, you will be able to try our product suites in staging/test environment, where you can execute money-in and money-out dummy transactions (without real money movement). If you are ready to proceed to go live or integrate with OY!, refer to the below sections for more information on the steps to upgrade your account.

Creating Account

Once you are successfully logged in, you will be able to try our product suites in staging/test environment, where you can execute money-in and money-out dummy transactions (without real money movement).

If you are ready to proceed to go live or integrate with OY!, refer to the below sections for more information on the steps to upgrade your account.

Upgrading your Account

Follow the steps below to upgrade your account:

1. Request to Upgrade your Account: to access the full version of our products and services, please select “Upgrade Your Account” on the menu at the left side of the OY! dashboard (Production environment) and complete all the required information.

Please note that the receiving bank account information cannot be changed via the OY! dashboard once your upgrade account request is approved for security reasons. Please contact us at partner@oyindonesia.com to change the receiving bank account information.

Upgrade

2. Upload the Required Supporting Documents: Please upload the required supporting documents according to your business type. Documents are only accepted in PDF format and must be less than 10 MB in size each.

After you upload the required supporting documents, you need to choose which products that you want to use.

3. Submit your Request: Click “Submit”, and a new status of “Waiting for Approval” should appear on Home page, indicating that your request has been submitted along with your supporting documents.

Upgrade

This process should take about 1-2 working days. In the event that the status of your request is Resubmit or Rejected, please keep reading below. Otherwise, you are good to go!

Status: Resubmit

Upon reviewing the upgrade request, we might ask for additional documentations. Please follow the steps below:

1. Read our report: A report will be sent to your email regarding the information and documents that will need to be revised or added.

2. Refill out the form: When submitting another request to upgrade your account, please resubmit all your supporting documents. Documents are only accepted in PDF format and must be less than 10 MB in size.

3. Submit your request: Click “Submit & Request to Upgrade”, and a new status of “Upgrade Account Requested” should appear on this page, indicating that your request has been submitted along with your supporting documents.

For further inquiries, please contact us at partner@oyindonesia.com and our representative will get in touch.

Status: Rejected

For further inquiries regarding this review, please contact us at partner@oyindonesia.com and our representative will get in touch.

Required Supporting Documents

Below is the list of documentation to be submitted for an upgrade request:

  1. SIUP/Izin Usaha lainnya
  2. NPWP Perusahaan
  1. Company’s Nomor Pokok Wajib Pajak (NPWP)
  2. Surat Izin Usaha Perdagangan (SIUP)
  3. Tanda Daftar Perusahaan (TDP) / Nomor Induk Berusaha (NIB)
  4. SK Kemenhukam
  5. Legalized Akta Perubahan Terakhir
  6. Director’s National ID Card (KTP)
  7. Shareholder Structure
  8. License from BI/OJK
  9. IT Audit Result
  1. Company’s Nomor Pokok Wajib Pajak (NPWP)
  2. Surat Izin Usaha Perdagangan (SIUP)
  3. Tanda Daftar Perusahaan (TDP) / Nomor Induk Berusaha (NIB)
  4. SK Kemenhukam
  5. Legalized Akta Perubahan Terakhir
  6. Director’s National ID Card (KTP)
  7. Shareholder Structure

Completion/Go-Live Checklist

Once you're ready to execute real money-in and money-out transactions or integrate with OY!, follow the below check-list to ensure you're all set up:

  1. Create an account

  2. Upgrade your account by submitting the required documentations

  3. Have your upgrade request approved

  4. (Required if you want to use our API) Submit your IPs and callback URLs (both for staging and production environment) to your business representative or to partner@oyindonesia.com

  5. (Required if you want to use our API) Request your staging and production API Key to our business representative (note: you are not required to upgrade your account to request staging API Key. Upgrade is only required if you want to request Production API Key).

  6. (Optional) Perform testing. We recommend that you thoroughly test before going live. We’ve provided a Staging Mode in our dashboard, where you can test transactions to understand how our products work, without using real money. If you are a developer, you can also test your integrations.

  7. (Optional) If your company wants to have multiple users: Create additional sub-account users under User Management

OY! Dashboard Tutorial

Login

To be able to login to Dashboard; 1. Make sure the username and password that you input are correct 2. Click 'Request OTP' button and input the OTP in the PIN Authentication field. The OTP will be sent to the email associated with your username.

Login OTP

Email OTP

If you tick the 'Remember this device' option, you are not required to input an OTP when you log back in next time. Hence, point 2 is required only when you login for the first time after you create your account.

Dashboard Analytics

Analytic feature allows you get some insights about your cash in and cash out activities in OY!. In this feature, you can get information about how much money you have spent and how much money you have earned in a month in a time interval. You can compare your cash in and cash out activity month-over-month. Therefore, you will also get insights about the trend of your transaction. It can be one healthiness indicator of your business. Also, this feature can help you to generate new business decision to grow your business.

Dashboard Analytics Image

User Management

If you have a Super Admin role, you are able to add account for your team members and define the role for them.

These are the following steps to add new users; 1. Login to Dashboard 2. Go to Accounts -> User Management

User Management 1

  1. Click the 'Create User' button
  2. Fill in the full name, username, email, phone number (optional), and password

User Management 2

  1. Choose the role that you want to assign your team member(s) to. You can choose one from the following available role:

Aside from adding new users, a Super Admin is also able to edit and delete their existing users through clicking edit/delete button on the User List table.

2-Factor Authentication

To increase the security of your account, you can set up 2-factor Authentication. Currently, the security method that OY provides is through an authenticator app

These are the following steps to set up the 2-factor authentication; 1. Login to Dashboard 2. Go to Accounts -> Authenticator OTP 3. Download Authenticator App in your smartphone (from Play Store/App Store) or PC (you can download an extension for your browser). Examples of the app: Google Authenticator, Microsoft Authenticator, Authy, etc 4. Scan the barcode displayed on your OY Dashboard with your Authenticator App OR enter the setup key displayed next to it on your Authenticator App 5. Please type in the 6-numerical code displayed on your Authenticator App in the 'Authenticator OTP' on OY Dashboard

Top Up

Top up is used to add balance to your OY account.

Here's how you can access the top-up menu on your dashboard;
1. Login to Dashboard. 2. Go to Transaction Report -> Account Statement. 3. Click the 'How To Top Up' button.

There are 2 ways in which you can top up your OY account: - Top Up via Virtual Account The Virtual Account number information can be found on 'How to Top Up Balance via VA' tab once you click the 'How To Top Up' button. If you choose to top up via VA, the topped up amount will be credited into your account real-time and you do not need to send any manual confirmation to OY

VA Topup

After you have completed the fund transfer to OY! Indonesia, you need to perform the following steps;

  1. Click the 'Manual Top Up Confirmation' tab on the top-up menu

Manual Topup

  1. Fill in the fields with the following information;
Field Name Description
Amount The amount that you have topped up (as per written in the Bukti Transfer)
Beneficiary Bank A dropdown where you can choose to which bank you have transferred the top up amount to
Transfer Receipt Click the upload button to upload the Bukti Transfer obtained after you have successfully performed the transfer. Can be in PDF, PNG, or JPEG format, with max. file size 10 MB
Transfer Receipt Type Transfer Receipt with Reference Number --> If your uploaded transfer receipt displays the reference number, you need to choose this option. Transfer Receipt without Reference Number --> If your uploaded transfer receipt doesn't display the reference number, you need to choose this option and fill in the date & timestamp according to your Bukti Transfer.
  1. Click 'Submit Now'
  2. You will receive a receipt of your transaction in your email, stating that your transaction is currently being processed

Topup Confirmation Dashboard

Topup Confirmation Email

  1. You will receive an email confirming whether your top up is success or failed

Success Failed Confirmation

Withdrawal

When you want to withdraw, do the following steps:

  1. Go to Transaction Report -> Account Statement
  2. Click Withdraw
  3. Fill in the amount that you want to withdraw

Withdrawal Top Up

  1. Choose your withdrawal type. You can pick one from the following options:

- Instant with admin fee -> This means that your withdrawal will be processed and arrive into your receiving bank real-time. If the amount to be withdrawn is <= IDR 50 million and the receiving banks are BCA, BRI, BNI, Mandiri, Permata, DBS and CIMB Niaga, you can choose this option. You will be charged an admin fee if you choose this option

- Manual -> This means that your withdrawal will be processed up to 2 business days. If the amount to be withdrawn is > IDR 50 million OR the receiving banks are not BCA, BRI, BNI, Mandiri, Permata, DBS or CIMB Niaga, you have to choose this option. You will NOT be charged an admin fee if you choose this option.

Setting Up Auto Withdrawal Process

If you want to set up an Auto Withdrawal periodically, go to Settings -> Auto Withdrawal.

Auto Withdrawal

Here's how you can configure the auto withdrawal settings;

Field Name Description
Auto Withdrawal Schedule The schedule of your auto withdrawal. Options available: Daily, Weekly, Bi-Weekly, Monthly
Start Date Start date of your auto withdrawal schedule
Ends Options available: Never -> if the auto withdrawal will go on for an indefinite time, By Date -> if the auto withdrawal will end on a specific date. If you choose this option, you need to fill in the date on which you plan to end the auto withdrawal process
Amount Amount to be automatically withdrawn. Options available: Maximum amount -> Withdraw the maximum available balance, Specified Amount -> custom specified amount. Note: Maximum Amount is recommended for Auto Withdrawal transactions as withdrawals will not be processed if the specified amount is greater than the OY balance when the withdraw scheduler runs
Withdrawal Type Options available: 1) Instant, or 2) Manual.
Email An email we will send the notification to. Use (;) between email to differentiate them (Max. 5 emails can be inputted)

Transaction Report - Settlement Report

Settlement Report stores the list of transactions corresponding to payment methods that are not settled on a real-time basis (delayed settlement). For example, if for VA BCA the settlement time is H+2, each new VA BCA transaction performed by your customers will appear on the Settlement Report.

To access the Settlement report; - Login to Dashboard - Go to Transaction Report -> Settlement Report

Settlement Report

The Settlement Report consists of the following information;

Field Name Description Example
Transaction Date The date on which your customer performs the transaction 11 May 2021
Transaction Time The time at which your customer performs the transaction 17:44:09
Transaction ID A unique transaction ID given by OY d4b26687-34b9-43d3-9d08-af440bcbaca7
Partner Transaction ID A unique transaction ID that is assigned by you for a given transaction TXID_001
Product The product associated with a given transaction. This will be filled with VIRTUAL_ACCOUNT if the transaction comes from Virtual Account Aggregator product, or PAYMENT_CHECKOUT if the transaction comes from Payment Checkout product VIRTUAL_ACCOUNT
Payment Method The payment method associated with a given transaction. Possible values: VA [Bank Name], CARDS, QRIS, EWALLET SHOPEEPAY VA BCA
Transfer Amount The transaction amount (before getting deducted with admin fee +Rp 10.000
Admin Fee The admin fee associated with a given transaction -Rp 1.000
Total Amount The transaction amount that has been deducted with admin fee +9,000
Settlement Date The scheduled settlement date for a given transaction 12 May 2021
Settlement Time The scheduled settlement timestamp for a given transaction 15:00:00
Settlement Status The settlement status for a given transaction. Possible values: WAITING (if the amount is not yet settled to your account statement balance), SUCCESS (if the amount has been settled to your account statement balance). SUCCESS

If the Settlement Status of a transaction is still WAITING, it will not yet appear as a row in your Account Statement report and the amount will not yet be added in your Account Statement balance.

If the Settlement Status of a transaction is already SUCCESS, it will appear as a row in your Account Statement report and the amount will be added in your Account Statement balance.

Callback for Delayed Settlement (Non-Real Time Settlement)

If your settlement is non-real time, for every transaction whose payment method is settled H+>0, you will receive two callbacks with details as follows:

  1. 1st Callback -> To be sent after your customer successfully executes the transaction. For example, if your customer executes the transaction on 11 May 2021 at 14:00:00, that is also when we send the 1st Callback to you. In the 1st callback, the settlement status is set to WAITING (because it is not yet settled to your Account Statement balance)
  2. 2nd Callback -> To be sent after the settlement status is changed from WAITING into SUCCESS. For example, if the settlement status is changed into SUCCESS on 12 May 2021 at 15:00:00, that is also when we send the 2nd Callback to you. In the 2nd callback, the settlement status is SUCCESS

Capability to Export and Filter the Settlement Report

Export: You are able to export/download the settlement report in CSV, PDF, and XLSX.

Filter: You are able to filter the settlement report by transaction date (range), product, payment method, settlement date (range), and settlement status

Notification

You can enable or disable notification settings for disbursement products if you have a super admin or admin role: 1. Login to dashboard https://business.oyindonesia.com/ 2. Go to Settings -> Notification Notif Disbursement - 1  Initial

  1. Choose whether or not you want notifications enabled or disabled for Bulk, API, or scheduled disbursements.
    a. Enable Notification: Email notification will be sent for pending, failed and success transactions. b. Disable Success Notification: email notification will only be sent for pending and failed transactions.
  2. The email field: allows the user to add, remove, and edit email notification receivers in this column, which can hold up to three email addresses.
  3. Click ‘Save Changes’

Multi Account Management

Multi Account Management (Subsidiaries) is a feature that can help you handle complex relations between entities in your business in the Oy! Dashboard. Please contact our Sales or Account Management if you’re interested to use this feature.
With this feature you will be able to :

  1. Have a detailed report on transactions performed by all of subsidiary account
  2. Distribute balance between the parent account to subsidiaries account
  3. Use subsidiary balance to disburse funds
  4. Free admin fee to disburse between related user ### Registration & Setup

Prerequisites

How To Use

To properly used Multi Account Management, we required several accounts to be linked together. Each account can be used independently, and each account needs to pass the KYB to be used fully.

A. Link to Subsidiary Account

  1. For Parent Account

To add a new subsidiary as a parent account please 1) Log in to Dashboard with parent credential 2) Go to Subsidiaries → List of Subsidiaries

As Parent - Subs - 1. Initial.png

  1. Click the “+ Add Subsidiary”
  2. Fill in the username for the subsidiary you wished to connect. You can find your username from the menu Accounts → User Profile in the Username section
  3. Click Add and then if the account is found in the system you can confirm by clicking Connect in the confirmation window

Image: As Parent - Subs - 6. Add Subsidiary - Type Username Image: As Parent - Subs - 7a. Existing Username - Not Connected with any parent After confirming, the request will be sent to the respective account to be accepted

  1. For Subsidiary Account

To receive a request from a parent company, please 1) Log in to dashboard with subsidiary credential 2) Go to Transaction Report → Account Statement Image: As Child - AccState - 2b. Waiting approval

  1. Click the “Check All request” button that can be found near the top right corner of the page
  2. You will see the incoming request to be the parent account for your account, then you can choose which account is the correct account for the parent by click Accept in the respective account and confirmation window

Image: As Child - AccState - 4b. 2 Requests to connect.pngImage: As Child - AccState - 4e. Confirmation to connect 1. After successfully received the parent request to connect, you will find your parent information near the top right corner of your page, and you are now connected as a parent-subsidiary account

Image: As Child - AccState - 4h. Success add new head company

B. Topup money to a subsidiary account

After having a working parent-subsidiary account, you can transfer money to the subsidiary account by accessing the menu Subsidiaries → List of Subsidiaries

  1. Find the account that you wished to top-up
  2. Click the “+ Top Up” button
  3. Fill in the amount you wish to top-up
  4. Click the “Top Up Now” button to proceed
  5. You can also do Top Up by transfer to one of the VA provided (see “How to Top Up Balance via VA”

Image: As Parent - Subs - 5a. Top Up.png

C. Disburse Money using subsidiary balance

In Multi Account Management, you will be able to do disbursement using your subsidiary account on their behalf. To do this you could

  1. Access the Bulk Disbursement menu and clicking on “+ Create Disbursement” button
  2. Select your subsidiary balance as a source of fund to do disbursement by selecting “My Subsdiary Balance” and choose the appropriate account.
  3. After choosing the balance you could proceed to do disbursement just like regular disbursement

Image: Choose SoF - 2. Choose SoF subsidiary.png Image: Choose SoF - 4. Type or search sub.png

Sending Payments

API Disbursement

API disbursement product provides the capability for you to disburse to 100+ banks in Indonesia via OY! at any time. The integration process to use the API disbursement product is straight forward and the details can be checked here.

Key Features

Overdraft

OY! has established partnerships with third party lenders to credit a specific amount of funds that can be used for your disbursement needs. With this feature, you don’t need to top up the OY! balance to execute disbursements. Please contact our business representative for further details about this feature.

Overbooking

OY! can use the funds directly from your Mandiri, CIMB, or BNI bank accounts for your disbursement needs. You will only need to top up the admin fee needed to execute the disbursements instead of the full amount of your disbursement. Please contact our business representative for further details about this feature.

Check Transaction Status and Callback

For all disbursements executed, you will receive notifications regarding your transaction whether it is successful, failed or pending. We also provide an API for you to check the transaction status manually. IP proxy is also available upon request to enhance the security and integrity of the callback you will receive.

Check Balance

You can check your available balance at anytime to ensure that you have sufficient balance to execute a disbursement.

Registration and Set Up

Prerequisites

Testing

Once you successfully create an OY! account, you can immediately simulate disbursement via API. Follow the below steps to test the flow:

  1. Create an account
  2. Login into the dashboard
  3. Change the environment to “staging”
  4. Once the environment changed to staging, there will be API key staging available on the bottom left corner of the page
  5. Before creating a disbursement transaction, check your available balance through API GET https://api-stg.oyindonesia.com/api/balance
  6. Create a disbursement by sending a ‘POST’ request to https://api-stg.oyindonesia.com/api/remit (https://api-stg.oyindonesia.com/api/remit) using your staging API key. Enter the required and optional fields, as referenced in the API reference docs (https://api-docs.oyindonesia.com/#disbursement-fund-disbursement)
  7. Fill in the amount, recipient bank, recipient account, and the partner transaction-id
  8. To get the status of a disbursement request, you can call the API https://api-stg.oyindonesia.com/api/remit-status, This API also offers the option for callback status under field send_callback
  9. If payment is successful or failed, we will send a callback to the registered staging callback URL destination. Callback URL can be registered via our business representative.
  10. The API disbursement transactions can be monitored through OY! dashboard from the “Send money - API disbursement” menu.

How to Use

In order to create disbursements, a sufficient available OY! balance is required in the account. More details and instructions about topping up to your OY! account coming soon.

Before you execute a disbursement, you can verify the beneficiary account information from our inquiry endpoint.

Below is an example of the request body for inquiry:

curl -X POST https://partner.oyindonesia.com/api/inquiry 
-H 'content-type: application/json, accept: application/json, x-oy-username:myuser, x-api-key:987654' 
-d '{
    "recipient_bank": "022", 
    "recipient_account": "7823023345"
    }'

It will return an error message if the request is not valid. Otherwise, below is the sample response parameters that will be returned:

{
    "status":{
        "code":"000",
        "message":"Success"
    },
    "recipient_bank":"022",
    "recipient_account":"7823023345",
    "recipient_name":"Budi Soemitra Nasution",
    "timestamp":"16-10-2019 09:55:31"
}

Next, send a request body to execute a disbursement request to be sent to our disbursement endpoint.

Below is an example of the request body for the remit:

curl -X POST https://partner.oyindonesia.com/api/remit 
-H 'content-type: application/json, accept: application/json, x-oy-username:myuser, x-api-key:7654321' 
-d '{
    "recipient_bank": "022", 
    "recipient_account": "7823023345", 
    "amount":100000, "note":"Pembayaran Nov IV", 
    "partner_trx_id":"Tx15048563JKFJ", 
    "email" :"budi.s@gmail.com"
    }'

Below is the sample response parameters that will be returned:

{
    "status":{
        "code":"101",
        "message":"Request is Processed"
    },
    "amount":100000,
    "recipient_bank":"022",
    "recipient_account":"7823023345",
    "trx_id":"89718ca8-4db6-40a0-a138-a9e30d82c67d",
    "partner_trx_id":"Tx15048563JKFJ",
    "timestamp":"16-10-2019 10:23:42"
}

An enpoint to check the transaction is also available and can be accessed at anytime.

Below is an example of the request body:

curl -X POST https://partner.oyindonesia.com/api/remit-status 
-H 'content-type: application/json, accept: application/json, x-oy-username:myuser, x-api-key:7654321' 
-d '{
    "partner_trx_id": "1234-asde", 
    "send_callback": "true"
    }'

The above command returns a JSON structured similar like this:

{
  "status":{
    "code":"000",
    "message":"Success"
  },
  "amount":125000,
  "recipient_name":"John Doe",
  "recipient_bank":"008",
  "recipient_account":"1234567890",
  "trx_id":"ABC-456",
  "partner_trx_id":"1234-asde",
  "timestamp":"16-10-2020 10:34:23",
  "created_date": "24-01-2020 06:48:08",
  "last_updated_date": "24-01-2020 06:48:39"
}

A callback with the following information will be sent to the callback endpoint that you can register with us.

Below is an example of the request body:

curl -X POST https://partner.oyindonesia.com/api/remit-status 
-H 'content-type: application/json, accept: application/json, x-oy-username:myuser, x-api-key:7654321' 
-d '{
    "partner_trx_id": "Tx15048563JKFJ"
    }'

Below is the sample response parameters that will be returned:

{
    "status":{
        "code":"000",
        "message":"Success"
    },
    "amount":100000,
    "recipient_name":"Budi Soemitra Nasution",
    "recipient_bank":"022",
    "recipient_account":"7823023345",
    "trx_id":"89718ca8-4db6-40a0-a138-a9e30d82c67d",
    "partner_trx_id":"Tx15048563JKFJ",
    "timestamp":"16-10-2019 10:40:23",
    "created_date": "16-10-2019 10:23:42",
    "last_updated_date": "16-10-2019 10:34:23"
}

You can also check your balance anytime to ensure you have sufficient balance from our endpoint.

Below is an example of a request body to check the balance:

curl -X GET 'https://partner.oyindonesia.com/api/balance' 
-H 'Content-Type: application/json' 
-H 'Accept: application/json' 
-H 'X-OY-Username: janedoe' 
-H 'X-Api-Key: 7654321'

Below is the sample response parameters that will be returned:

{
    "status":{
        "code":"000",
        "message":"Success"
    },
    "balance":100000000.0000,
    "overdraftBalance":500000.0000,
    "overbookingBalance":200000.0000,
    "pendingBalance":2000000.0000,
    "availableBalance":98500000.0000,
    "timestamp":"10-12-2019 12:15:37"
}

Lastly, all transactions can be monitored from the OY! dashboard which includes all the transaction details.

API Disbursement

API Disbursement

For further details on the parameters definition and proper usage, please refer to our API Documentation.

Bulk Disbursement

Our Bulk disbursement product provides the capability to execute disbursements to multiple beneficiaries with a single xlsx or csv file upload ("Campaign") up to 25,000 transactions. Bulk disbursement is made through the OY! dashboard, where details regarding the disbursement campaign can be found. No technical integration is required to use this product.

Key Features

Overdraft

OY! has established partnerships with third party lenders to credit a specific amount of funds that can be used for your disbursement needs. With this feature, you don’t need to top up the OY! balance to execute disbursements. Please contact our business representative for further details about this feature.

Overbooking

OY! can use the funds directly from your Mandiri, CIMB, or BNI bank accounts for your disbursement needs. You will only need to top up the admin fee needed to execute the disbursements instead of the full amount of your disbursement. Please contact our business representative for further details about this feature.

Account Management

When you first create an account, your account will be assigned as a Super Admin role. As a Super Admin, you have the ability to create new sub-accounts and assign different roles to your team such as Admin, Maker and Approver that are applicable for bulk disbursement. The Super Admin and Admin can also edit or delete created sub-accounts.

Note: it is not necessary to create new sub-accounts in order to use bulk disbursement. The Super Admin and Admin roles allows you to directly create and approve bulk disbursements.

Detailed step-by-step instructions on setting up user management and the different role types coming soon.

Multi-Layer Approval

Multi-layer Approval will improve your control over your bulk disburse transaction especially for big amount of money. You can setup up to 3 layers of approver before the transaction instruction is executed. By assigning proper approver and amount limitation, you can avoid a huge trouble on your business operational caused by incorrect transfer amount.

Overall Campaign Summary

Keep track of all the details of the entire campaign such as the total amount of disbursement, total number of transactions, and the maker and approver related information of a campaign.

Transaction Details

Itemized details of each individual transaction, including their respective statuses: success, pending, or failed.

Registration and Set Up

Prerequisites

Testing

  1. Log on your OY! dashboard
  2. Choose "Staging" environment
  3. Click "Send Money" menu, and choose "Bulk disbursement"
  4. Click "Create Disbursement"
  5. Fill in the necessary details by following the steps explained in the “How to Use” section

How to Use

In order to create disbursement campaigns, a sufficient available OY! balance is required in the account. If there is an insufficient available balance in the account, campaigns can still be created but not approved.

1. Create Disbursement: On the OY! dashboard, navigate to Send Payments > Bulk Disburse on your left menu bar. Click “Create Disbursement” on the far righthand side of that page to create a new bulk disbursement campaign.

2. Create Campaign Details: Fill in the campaign details with 2 options:

Create Bulk - 1  Initial

a. upload an xlsx or csv file

Please upload an xlsx or csv file with each individual transaction’s details of your bulk disbursement campaign. An example template for both file types are available for download on the OY! dashboard. The following list of items are required in your CSV file.

Column Description Example
Name Recipient Name Budy
Email Recipient Email (can contain up to 5 emails with a total maximum of 255 characters, incoming transaction notifications will be sent to these emails) Budi@email.com
Amount Amount in IDR (only numbers) 100000
Bank Code Destination Bank 014
Bank Account Number Recipient Bank Account Number 12341234
Phone Number Recipient Phone Number 62812341234
Notes (Optional) Transaction Notes

b. add disbursement detail manually. : choose ‘add disbursement detail manually’ and fill out a campaign name and campaign description in the provided spaces. These details are strictly used as your tracking information only and will not be shared to the transaction recipients.

c. [Staging only] You can replicate failed status on individual transaction within the campaign by fill in Bank Account Number value with 3000000. Another value will be processed normally.

3. Re-verify all the Information and Submit: Once your xlsx or csv file is uploaded or filled out manually, you can verify all of the information uploaded from the file from the table displayed. If there is any incorrect submission such as invalid entry due to special characters, a red box will appear to highlight the entry that should be corrected. Issues must be resolved before a campaign can be submitted

Create Bulk - 2  File Uploaded

4. Validate Name Matching After all the issue has been resolved, user able to click submit and there will be popup shown to validate each recipient name *with their *Bank Account Name as shown below:

Create Bulk - 3  Ask Name Validation

if you choose YES: if there is a name difference, a popup name validation with details of mismatched transactions will be displayed. if the information inputted is invalid, you could edit the information and choose the ‘ validate’ button to revalidate the data, or you could click the ‘ignore mismatch’ button to ignore the name matching validation and to process the disbursement.

Create Bulk - 5e  Mismatch Names

If there is no issue with the details uploaded, a validate and submit button will be available at the bottom of the list of transactions, indicating that all information is valid. Click “Submit” to complete creating the bulk disbursement campaign.

Create Bulk - 6a  All data inquired without Name Matching

5. Approve/Cancel Campaign*: Once the bulk disbursement campaign is created, a new status of waiting approval will appear. Approve the campaign by clicking the “Approve” button. If you want to cancel a campaign, click the “...” button and select “Cancel”.

Bulk Disburse

Once the bulk disbursement campaign is approved, details regarding the campaign can no long er be changed. This includes changes made to individual transactions and their respective recipient information.

The balances will also immediately reflect changes. For more information about the different types of balances, click here. You will also receive an email with the campaign information summary (“Outgoing Transfer Alert”) when transactions are executed.

Note: - Depend on the approval layer that you configured, this transaction should be approved by all layer before it can be executed by the system. Bulk Disburse

6. Keep Track of Campaign Details*: To check the details of the bulk disbursement campaign, click on the campaign name to find the campaign summary and its recipient list. Keep track of the both the overall campaign status and the status of individual transactions through the page.

Bulk Disburse

7. Status: In-Progress, Finish, and Cancel*: Congratulations! You just made your first bulk disbursement with OY! Below are a list of statuses you will find on the OY! dashboard.

In-Progress

As your individual disbursements are executed, the status of your bulk disbursement campaign will indicate an in-progress status.

Bulk Disburse

Incomplete

The status of your bulk disbursement will change to incomplete once all of the listed transactions have been executed and the relevant final statuses of Failed or partially Failed have been assigned. Notif Pending - 1  Initial

Finish

Once all of the listed transactions have been completed and the final status of success for all transactions has been achieved, the status of your bulk disbursement campaign will change to Finish. The recipients should have all received an email detailing an “Incoming Transfer Alert.” You can also download a report of the campaign details directly through the OY! dashboard. Bulk Disburse

Cancel

If you choose not to approve your disbursement campaign, the status of your bulk disbursement campaign will indicate a cancelled status.

Bulk Disburse

You can also double check each of your transactions by navigating to the account statement page on the OY! dashboard.

Claim Fund

Claim Fund product enable you to do disbursement without knowing your recipient bank account at first. You will simply create a link for them to fill-out bank account information and the payment will be processed by our system. This feature will remove you from the hassle of collecting your customer information manually then doing multiple bank transfer. Best use of this feature is : refunds, reimbursement claim, any disburse transaction in which the destination is not your regular partner.

At the moment, Claim Fund product is available only on OY! Business Dashboard.

Transaction Flow

Transacation Flow

Use Case

  1. Refund for purchase transaction
  2. Any money transfer transaction where you don't have recipient bank information

Registration and Set Up

Prerequisites

Testing

  1. Log on your OY! dashboard
  2. Choose "Staging" environment
  3. Click "Send Money" menu, and choose "Claim Fund"
  4. Click "Create Claim Fund"
  5. Fill in the necessary details by following the steps explained in the “How to Use” section

How to Use

In order to execute claim fund transaction successfully, a sufficient available OY! balance is required in the account. However, if there is an insufficient available balance, claim fund transaction can still be created but the approval will failed.

1. Business Dashboard - Create Claim Fund

Column Description Example
Amount to Claim Amount of money to be sent 1000000
Expiration Duration How long does this claim link be active. After expiration time, customer will not be able to submit their information then new claim fund link has to be created. 12 Hours
Set as default expiration duration Select this option to make it default expiration time for the next claim fund transaction. -
Partner Transaction ID Unique identifier for the recipient. CF00001
Note additional remarks for recipient Refund transaction
Recipient Name Recipient Name Dwiki Dermawan
Email Recipient Email dwiki@gmail.com

2. Fund Recipient - Input Account Information

3. Business Dashboard - Approve Transaction

Transaction need to go through approval process to ensure that the money will be delivered to correct recipient and sufficient amount is available.

Accepting Payments

VA Aggregator

Businesses are struggling to manage hundreds or even thousands of physical bank accounts that are used for different purposes. It causes significant overhead cost in terms of the amount of account maintenance and man hours needed for reporting and reconciliation purposes, combining different information from different accounts.

Virtual Account (VA) is essentially a dummy account that is linked to a physical account and has all the physical account characteristics that enables a much easier reporting and reconciliation process by centralizing the money flow into the physical account. By issuing VAs, you can assign each VA for specific person and/or purposes.

API VA Aggregator

From the example above, it shows how payments made through the VAs are merely pass-throughs for the physical accounts to receive money. Without VAs, the above example might require up to 8 physical accounts from 2 different banks rather than 2 physical accounts from 2 different banks.

OY! API VA Aggregator

Our API VA Aggregator product provides you with the capabilities to create unique Virtual Account (VA) numbers as a bank transfer payment method for your customers while the fund movements take place through OY!'s physical account. It provides you with the capabilities to receive payments from your customers via bank transfer without having each respective bank account across multiple banks.

Our virtual accounts are adjustable according to your needs. We offer options of static or dynamic accounts, single or mutli use accounts, opened or closed amounts, and determinable expiration dates. You can also track all created virtual accounts, incoming payments, and their respective details either through our API callback or the OY! dashboard.

API VA Aggregator

Key Features

  1. Create VA number via API - Create VA automatically by integrating your applications with our API VA. For more information, visit our API Docs.

  2. Create VA number via Dashboard - Do not have enough resources to integrate with API VA? Do not worry, you can create a VA number easily via OY! Dashboard. No need to write some codes!

  3. Support multiple banks - Currently, we support virtual accounts (VA) at 7 banks: BCA, BNI, Mandiri, BRI, Permata, CIMB Niaga, and BTPN

  4. Real-time settlement for majority of the banks - Payment into a VA will settle in your OY! dashboard on a real-time basis for the majority of the banks (note: for BCA, the settlement will take place H+2 after payment is made into the VA)

  5. Transaction tracking and monitoring capability - You can track all created VA, incoming payments, and their respective details through our API callback or the OY! dashboard. You will receive a callback all incoming transactions.

  6. Customizable VA types - You can customize the VA numbers you want to create. Each VA would consist of three categories you can define in the creation process. Refer to the table below for more information on various types of VA:

    Category Type/Feature Description
    Validity Period Static Virtual Account VA that has a lifetime validity. It will always be active until it is manually deactivated
    Validity Period Dynamic Virtual Account VA that has a specific validity period. It will always be active until it is expired or manually deactivated
    Amount Type Closed Amount Virtual Account VA that only accepts payment of a specific amount/declared amount
    Amount Type Opened Amount Virtual Account VA that accepts payment of any amount
    Usage Frequency Single Use Virtual Account VA that expires after a single payment. A single use configuration can only be set up for a dynamic VA
    Usage Frequency Multiple Use Virtual Account VA that only expires when expiration date is reached or when it is manually deactivated
  7. Capability to update VA Attribute that can be updated:

    • amount
    • is_single_use
    • email
    • trx_counter
    • expired_time
    • trx_expired_time
    • username_display

Example:

All of the VA information, even after they are updated, is available on the OY! dashboard or via API. Once a VA is updated, the new set of configuration will apply for that VA and the previous configure is overridden and no longer applicable

Use Cases

API VA Aggregator

Registration and Set Up

Follow the below check-list to ensure you're all set up to use our VA Aggregator API service:

  1. Create an account
  2. Upgrade your account by submitting the required documentations
  3. Have your upgrade request approved
  4. Set up your receiving bank account information (note: ensure that the receiving bank account information is accurate as it cannot be changed via OY! dashboard for security reasons)
  5. Submit your IPs and callback URLs to your business representative or to partner@oyindonesia.com
  6. Receive an API Key from us (note: it is required for API authorization purpose)
  7. Integrate with our Virtual Account Aggregator API

Testing

Create VA number via API

Once you successfully create an OY! account, you can immediately simulate VA payments via API.

Follow the below steps to test the VA flow:

  1. Create an account

  2. Send a request to activate API VA Aggregator product and obtain staging API Key to your business representative

  3. Create a VA number by sending a ‘POST’ request to https://api-stg.oyindonesia.com/api/generate-static-va using your staging API key. Enter the required and optional fields, as referenced in the API reference docs

  4. After VA number is generated, partner can simulate VA payment through your dashboard (in Staging environment) by going to Settings, and choose "VA Callback"

  5. Fill in the bank name associated with the generated VA number, the generated VA number, amount, and payment date & time

  6. If payment is successful, we will send a callback to the registered staging callback URL destination

  7. The payment made to the VA can be monitored through OY! dashboard. Go to "Virtual Account" menu, and choose "Incoming Payment"

Create VA via Dashboard

Once you successfully create an OY! account, you can immediately create VA number and simulate VA payments via Dashboard.

Follow the instruction below:

  1. Create an Account.

  2. Select ‘Staging’ environment.

  3. Click menu Virtual Account, then click ‘Create VA’.

  4. In the top right, click ‘Create Virtual Account’ button.

  5. You can choose between creating VA by uploading a CSV file (template available) or creating manually one by one.

  6. Fill out the requirements: Partner User ID, Partner Transaction ID, Bank Name, VA Name, VA Type, Amount, usage, Usage Limit, VA Expiration Type, VA Expiration Date & Time, Transaction Expiration Date & Time, and Email.

  7. Validate and Submit your request.

  8. VA number(s) that you created will appear in the Create VA menu.

  9. To simulate VA payment and see status changing, tap ‘Send Callback’ button in the right section of the table

How to Use

Send us instructions to generate a new VA number, or create a VA number via dashboard.

Below is an example of a request body to execute your request:

curl --location --request POST https://partner.oyindonesia.com/api/generate-static-va
--header 'content-type: application/json' \
--header 'accept: application/json' \
--header 'x-oy-username: username' \
--header 'x-api-key: apikey' \
-d '{
    "partner_user_id":"51200021",
    "bank_code": "014",
    "amount": 150000,
    "is_open" : false,
    "is_single_use" : false,
    "is_lifetime": false,
    "expiration_time": 5,
    "username_display" : "va name",
    "email": "email@mail.com"
    }'

It will return an error message if the request is not valid. Otherwise, below is the sample response parameters that will be returned:

{
    "id": "12345b1-23be-45670-a123-5ca678f12b3e",
    "status": {
        "code": "000",
        "message": "Success"
    },
    "amount": 15000,
    "va_number": "700707760000000003",
    "bank_code": "014",
    "is_open": false,
    "is_single_use": false,
    "expiration_time": 1582783668175,
    "va_status": "WAITING_PAYMENT",
    "username_display": "va name",
    "trx_expiration_time" : 1582783668175,
    "partner_trx_id" : "TRX0001"
}

Once a VA is created, its details can be seen and monitored through the OY! dashboard.

API VA Aggregator

Below is an example of the request body:

curl --location --request GET https://partner.oyindonesia.com/api/static-virtual-account/12345b1-23be-45670-a123-5ca678f12b3e
--header 'content-type: application/json' \
--header 'accept: application/json' \
--header 'x-oy-username: username' \
--header 'x-api-key: apikey'

Below is the sample response parameters that will be returned:

{
    "id": "12345b1-23be-45670-a123-5ca678f12b3e",
    "status": {
        "code": "000",
        "message": "Success"
    },
    "amount": 150000.0000,
    "va_number": "700707760000000003",
    "bank_code": "014",
    "is_open": false,
    "is_single_use": false,
    "expiration_time": 1582783668175,
    "va_status": "WAITING_PAYMENT",
    "username_display": "va name",
    "amount_detected": 0,
    "partner_user_id": "123456",
    "trx_expiration_time": 1582783668175,
    "partner_trx_id": "TRX0001"
}

Below is an example of the request body:

curl --location --request PUT https://partner.oyindonesia.com/api/static-virtual-account/12345b1-23be-45670-a123-5ca678f12b3e
--header 'content-type: application/json' \
--header 'accept: application/json' \
--header 'x-oy-username: username' \
--header 'x-api-key: apikey' \
-d '{"is_open" : true,"amount": 50000,"is_single_use" : false,"expiration_time": 30,"username_display" : "va name","bank_code": "014","trx_expiration_time":5,"partner_trx_id":"TRX0001"}'

Below is the sample of response parameters that will be returned:

{
    "id": "12345b1-23be-45670-a123-5ca678f12b3e",
    "status": {
        "code": "000",
        "message": "Success"
    },
    "amount": 50000,
    "va_number": "700707760000000003",
    "bank_code": "014",
    "is_open": true,
    "is_single_use": false,
    "expiration_time": 1582802205412,
    "va_status": "WAITING_PAYMENT",
    "username_display": "va name",
    "partner_user_id": "123456",
    "trx_expiration_time": 1582802205412,
    "partner_trx_id": "TRX0001"
}

All details regarding your created VA and its payments can be monitored directly from the OY! dashboard.

API VA Aggregator

Similarly, all the details regarding incoming transactions can be monitored directly from the OY! dashboard.

API VA Aggregator

For further details regarding OY!'s extensive API VA Aggregator capabilities and endpoints, please refer to the OY! API Documentation.

VA Bank Details

Bank (Virtual Account) SKN Supported RTGS Supported Payment from ATM Payment from m-banking / i-banking (intra bank) Payment from business account (m-banking/i-banking) Payment from m-banking/i-banking (inter bank)
Bank Mandiri Yes Yes Yes Yes Yes Yes
BRI Yes Yes Yes Yes No Yes
BNI Yes Yes Yes Yes No Yes
BCA No No Yes Yes No Yes
Bank Permata Yes Yes Yes Yes No Yes
CIMB Niaga Yes Yes Yes Yes No Yes
Bank (Virtual Account) Payment from Teller (Inter and Intra Banks) SWIFT Payment Intra bank transfer fees
Bank Mandiri Yes No Rp 0
BRI Yes No Rp 1000
BNI Yes No Rp 0
BCA Yes (Teller BCA); No (Teller from other banks) No Rp 0
Bank Permata Yes No Rp 5000
CIMB Niaga Yes Yes Rp 0

Payment Checkouts/Invoice

Overview

OY! Payment Checkout/Invoice is a pre-built payment page that allows your business to easily and securely accept payments online. Currently, our payment checkout/invoice page supports Credit Card, Debit Card, Bank Transfer, E-Wallet (ShopeePay, DANA, LinkAja, OVO), and QR Code (QRIS) payment methods. You can create payment checkout/invoice pages through various methods: OY! Dashboard, pre-generated URL, and API.

Creating a payment checkout/invoice page is free! You will only be charged when you successfully receive a payment made through that checkout/invoice page.

Payment Flow

  1. You create payment checkout/invoice page for your customers
  2. Your customers make a payment through the payment checkout/invoice page
  3. OY! detects the payments and notifies you about the payments through sending a callback and/or updating the payment status on your dashboard
  4. The payments received will settle in your OY! dashboard

Payment Checkout Preview

Step 1 - Input Amount

Payment Checkout

Step 2 - Input Personal Info of the Customer

Payment Checkout

Step 3 - Select Payment Method

Payment Checkout

Key Features

Various options of creating payment checkout/invoice page

1. Creating payment checkout/invoice page through pre-generated URL

2. Creating payment checkout/invoice page through API

Below are the things that you can customize: 1. Amount (specify the amount and choose between open amount vs closed amount)

  1. Admin fee (choose whether the admin fee will be borne by your customers or borne by you)

  2. Payment method (choose the payment methods displayed to your customers among Bank Transfer (via Virtual Account), Cards (Credit Card/Debit Card), E-Wallet (ShopeePay, DANA, LinkAja, OVO), and QR Code options. Additionally, you can choose which banks are enabled for Bank Transfer method.)

  3. Payment checkout page (choose which payment checkout pages are accessible for your users. We offer options to hide pages 1 (Input Amount), 2 (Customer Information), and 3 (Select Payment Method) of our payment checkout.

  4. Payment link expiration date

3. Creating payment checkout/invoice page through dashboard

If you want to use our payment checkout/invoice page without undergoing technical integration process/without API and with higher level of customization, you can choose to create it through your dashboard.

This capability enables you to enjoy most of the features and benefits of creating payment checkout/invoice page through API - without any integration needed!

Capability to monitor payment checkout/invoice details on dashboard

Whether you send your user a pre-generated link, dashboard-generated link, or an API-generated encapsulated link, each of your distributed payment checkout links can be monitored through the OY! Dashboard. We will also send a callback for all incoming payments.

You will be able to see the details of the payment checkout including, but not limited to, the payment status, creation and expiration dates and times, amount, description, payment details, and payer details. For further convenience, you can also find and filter through your payment link list by creation date, partner transaction ID, or status.

We also provide an API for you to check the transaction status manually.

Payment Checkout

Registration and Set Up

For dashboard and URL-generated links

Follow the below check-list to ensure you're all set up to use the above service:

  1. Create an account
  2. Upgrade your account by submitting the required documentations
  3. Have your upgrade request approved
  4. Set up your receiving bank account information (note: ensure that the receiving bank account information is accurate as it cannot be changed via OY! dashboard for security reasons)
  5. Once your account is approved, you can access the URL via https://pay.oyindonesia.com/v2?username=yourusername. Step by step instructions can be found here

    You can also start creating the payment checkout/invoice page link through the dashboard. Step by step instructions can be found here.

For API-generated links

  1. Create an account

  2. Upgrade your account by submitting the required documentations

  3. Have your upgrade request approved

  4. Set up your receiving bank account information (note: ensure that the receiving bank account information is accurate as it cannot be changed via OY! dashboard for security reasons)

  5. Submit your IPs and callback URLs to your business representative or to partner@oyindonesia.com

  6. Receive an API Key from us (note: it is required for API authorization purpose)

  7. Integrate with our Payment Checkout API

Testing

Creating dashboard-generated test links

  1. Log on your OY! dashboard
  2. Choose "Staging" environment
  3. Click "Request Money" menu, and choose "Payment Checkout"
  4. Click "Create Payment Link"
  5. Fill in the necessary details

Payment Checkout consists of 3 parameter types: Transaction-related, Customer Detail, and General Payment Checkout Configuration.

Parameter Type Parameter Name Definition
Transaction-related Amount The payment amount that will be displayed in the payment checkout page
Transaction-related Description The description of the payment link. Usually this is used to describe the purpose of the payment checkout page
Transaction-related Partner Transaction ID A unique transaction ID that you can assign to a transaction
Customer Detail Customer details that can be specified (optional): Customer Name, Phone Number, Email, and Notes. We will send the payment checkout page link to the specified email address (if email address is filled in) Customer Name, Phone Number, Email, and Notes
Payment Checkout Configuration Amount Type You can choose between Open Amount and Closed Amount. Open Amount = can accept payments of any amount, OR up to the specified amount (if amount is filled in). Closed Amount = only accept payments of the specified amount
Payment Checkout Configuration Payment Method The payment method that you can choose to enable/disable for your customers. The payment methods available are Bank Transfer (via Virtual Account), Cards (Credit Card/Debit Card), E-Wallet (ShopeePay, DANA, LinkAja, OVO), and QRIS
Payment Checkout Configuration Admin Fee Method You can choose between "Included in total amount" or "Excluded from total amount". "Included in total amount" means the admin fee will be deducted from the payment amount made by the customer. "Excluded from total amount" means the admin fee will be added to the customer's total payment (Total Amount = Specified Amount + Admin Fee)
Payment Checkout Configuration Payment Link Expiration Date You can choose (specify the day(s) and/or hour(s)) of when the payment link will expire after it is created. For example, if you want the link to expire 1 day after it is created, fill 1 day 0 hour in the Payment Link Expiration Date field.

Note: For Payment Checkout Configuration-related fields (Amount Type, Payment Method, Admin Fee Method, Payment Link Expiration Date), you can choose to save your selected configuration for the future transactions by ticking the "Use this configuration for future transaction(s) option. By saving it, you will no longer need to fill in the fields again the next time you create a payment link.

Payment Checkout

Payment Checkout

Payment Checkout

Creating API-generated test links

  1. Create an account
  2. Send a request to activate API Payment Checkout product and obtain staging API Key to your business representative
  3. Create a payment checkout by sending a ‘POST’ request to https://api-stg.oyindonesia.com/api/payment-checkout/create-v2. Enter the required and optional fields, as referenced in the API reference docs

Accessing and monitoring the created test payment checkout links

Whether you create the link through URL, dashboard, or API, you can see the details of your link on the OY! Dashboard. The details that can be checked are the created date of the link, amount billed, amount received, expiration date, and status.

Mock Amount Values for Testing

During testing, you can set the transaction amount to a certain mock value to simulate a specific scenario.

Payment Method Scenario Criteria Expected Result
E-Wallet - ShopeePay Payment already successful on E-Wallet issuer side but failed on OY side (can be due to callback timeout reasons). The transaction is refunded to the end-user's balance Amount is between 55,000 and 66,000 Refund Successful
QRIS Payment already successful on E-Wallet issuer side but failed on OY side (can be due to callback timeout reasons). The transaction is refunded to the end-user's balance Amount is between 55,000 and 66,000 Refund Successful
E-Wallet - LinkAja Payment already successful on E-Wallet issuer side but failed on OY side (can be due to callback timeout reasons). The transaction is refunded to the end-user's balance Amount is between 55,000 and 66,000 Refund Successful
E-Wallet - ShopeePay Failure during refund process Amount is less than 55,000 or greater than 66,000 Refund Failed
QRIS Failure during refund process Amount is less than 55,000 or greater than 66,000 Refund Failed
E-Wallet - LinkAja Failure during refund process Amount is less than 55,000 or greater than 66,000 Refund Failed

Note: Our payment link includes parameters that are easily adjustable according to your needs. You can send the link to multiple customers using the same link (please refer to the steps below) and we will take care the rest.

  1. Access the base URL of your payment checkout page: Access our pre-generated test link unique to your account by simply replacing your username with your username approved with OY! at https://pay.oyindonesia.com/v2?username=yourusername.

  2. Customize the URL parameter(s) as needed: There are various parameters that you can customize within the URL, simply refer to the below table to do the customization;

Parameter Definition Customization Step Sample Link
Amount The payment amount that will be displayed in the payment checkout page Add "amount=[the specified amount]", separated by &. Example: amount=100000 https://pay.oyindonesia.com/v2?username=yourusername&amount=100000
Step The section of the payment checkout page you want to redirect your users to. Add "step=[the specified step]", separated by &. The specified step can be filled in with one of the following: "input_amount", "input_personal_info", or "select_payment_method". https://pay.oyindonesia.com/v2?username=yourusername&step=input_personal_info
Partner transaction ID The identifier corresponding to the payment checkout transaction. Example: partner_tx_id=OY2021ABCD123. Add “partner_tx_id=[the specified partner transaction ID]”, separated by &. https://pay.oyindonesia.com/v2?username=yourusername&partner_tx_id=OY2020ABCD123
Sender Name The name of your user that will be displayed in the payment checkout page. Example: sender_name=John Doe Add "sender_name=[the specified sender name]", separated by &. https://pay.oyindonesia.com/v2?username=yourusername&sender_name=John
Is Open Identifier of whether the amount is open or closed for this payment check out page. If set to TRUE, your user will be able to edit the amount. If set to FALSE: 1) your user will not be able to edit the amount, 2) it is mandatory for you to define the partner_tx_id and amount parameter in the link. When is_open is set to FALSE, deleting is_open=false from the link or changing it back to is_open=true will not revert the amount back to an unlocked value. Once is_open=false is declared, the amount is permanently frozen for this particular partner_tx_id. Add "is_open=[TRUE or FALSE]", separated by &. https://pay.oyindonesia.com/v2?username=yourusername&is_open=false&amount=100000&partner_tx_id=OY2020ABCD123
Payment Method The payment method to be enabled for the users. Payment methods available are bank transfer through VA (Virtual Account), Credit Card, Debit Card, and QR (e-wallet). You can choose specific payment methods to be enabled/disabled via parameter declaration by specifying enable_payment_va, enable_payment_cc or enable_payment_debit as true or false Add "is_open=[TRUE or FALSE]", separated by &. If not specified, it will be enabled by default https://pay.oyindonesia.com/v2?username=yourusername&enable_payment_va=FALSE

It is optional to specify each of the parameter listed above.

Whether you create the link through URL, dashboard, or API, you can see the details of your link on the OY! Dashboard. The details that can be checked are the created date of the link, amount billed, amount received, expiration date, and status.

How to Use Payment Checkout via Dashboard

  1. Log on your OY! dashboard
  2. Choose "Production" environment
  3. Click "Request Money" menu, and choose "Payment Checkout"
  4. Click "Create Payment Checkout Link"
  5. Fill in the necessary details

Payment Checkout consists of 3 parameter types: Transaction-related, Customer Detail, and General Payment Checkout Configuration.

Parameter Type Parameter Name Definition
Transaction-related Amount The payment amount that will be displayed in the payment checkout page
Transaction-related Description The description of the payment link. Usually this is used to describe the purpose of the payment checkout page
Transaction-related Partner Transaction ID A unique transaction ID that you can assign to a transaction
Customer Detail Customer details that can be specified (optional): Customer Name, Phone Number, Email, and Notes. We will send the payment checkout page link to the specified email address (if email address is filled in) Customer Name, Phone Number, Email, and Notes
Payment Checkout Configuration Amount Type You can choose between Open Amount and Closed Amount. Open Amount = can accept payments of any amount, OR up to the specified amount (if amount is filled in). Closed Amount = only accept payments of the specified amount
Payment Checkout Configuration Payment Method The payment method that you can choose to enable/disable for your customers. The payment methods available are Bank Transfer (via Virtual Account), Cards (Credit Card/Debit Card), E-Wallet (ShopeePay, DANA, LinkAja, OVO), and QRIS
Payment Checkout Configuration Admin Fee Method You can choose between "Included in total amount" or "Excluded from total amount". "Included in total amount" means the admin fee will be deducted from the payment amount made by the customer. "Excluded from total amount" means the admin fee will be added to the customer's total payment (Total Amount = Specified Amount + Admin Fee)
Payment Checkout Configuration Payment Link Expiration Date You can choose (specify the day(s) and/or hour(s)) of when the payment link will expire after it is created. For example, if you want the link to expire 1 day after it is created, fill 1 day 0 hour in the Payment Link Expiration Date field

Note: For Payment Checkout Configuration-related fields (Amount Type, Payment Method, Admin Fee Method, Payment Link Expiration Date), you can choose to save your selected configuration for the future transactions by ticking the "Use this configuration for future transaction(s) option. By saving it, you will no longer need to fill in the fields again the next time you create a payment link.

Payment Checkout

Payment Checkout

Payment Checkout

How to Use Invoice via Dashboard

  1. Log on your OY! dashboard
  2. Choose "Production" environment
  3. Click "Request Money" menu, and choose "Invoice"
  4. Click "Create Invoice"
  5. Fill in the necessary details
Parameter Description
Amount Type You can choose between Open Amount and Closed Amount. Open Amount = can accept payments of any amount, OR up to the specified amount (if amount is filled in). Closed Amount = only accept payments of the specified amount
Partner Transaction ID A unique transaction ID that you can assign for a transaction
Payment Method The payment method that you can choose to enable/disable for your customers. The payment methods available are Bank Transfer (via Virtual Account), Cards (Credit Card/Debit Card), E-Wallet (ShopeePay, DANA, LinkAja, OVO), and QR Code
Admin Fee Method You can choose between "Included in total amount" or "Excluded from total amount". "Included in total amount" means the admin fee will be deducted from the payment amount made by the customer. "Excluded from total amount" means the admin fee will be added to the customer's total payment (Total Amount = Specified Amount + Admin Fee)
Payment Link Expiration Date You can choose between "Default" and "Custom". "Default" means the payment link will expire 24 hours after it is created. "Custom" means you can specify the expired date. The payment link will expire when this specified expired date is reached
Transaction Due Date Due date of a transaction. You can choose between "Same with Payment Link Expiration Date" and "Custom". Your customer will get reminders to pay on D-1, D-Day, and D+7 from the transaction due date. A transaction can exceed the due date, but the link can still be opened (because transaction due date and link expiration time are 2 separate things).
Partner User ID ID assigned for a specific user/customer
VA Static You can choose between "Disable" and "Enable". 'Disable" means a new VA number will be assigned for the respective Partner User ID (if the user chooses to pay via VA). "Enable" means we will assign a static VA for the respective Partner User ID (if the user chooses to pay via VA). The VA number assigned will be the same for the respective partner user ID
Customer Full Name Full name of your customer that will be displayed in the invoice link.
Invoice Detail You can choose between attaching the PDF file of your invoice and input the item list (such as Item Name, Price, and Quantity). Note that the subtotal of price and quantity inputted here must be the same with the total amount inputted in he field above.
Description The description of the payment link. Usually this is used to describe the purpose of the payment checkout page
Customer Detail Details that can be specified: Customer Phone Number, Email, and Notes. We will send the payment checkout page link as well as the payment success receipt to the specified email address (if email address is filled in).

Whether you create the link through URL, dashboard, or API, you can see the details of your link on the OY! Dashboard. The details that can be checked are the created date of the link, amount billed, amount received, expiration date, and status.

How to Use Payment Checkout/Invoice via API

We provide 3 different payment checkout endpoints depending on your requirements and needs. We provide payment checkout, invoicing, and recurring invoice.

Send us instructions to generate a payment checkout link.

Below is an example of a request body to execute your request:

curl -X POST \
  https://partner.oyindonesia.com/api/payment-checkout/create-v2 \-H 'cache-control: no-cache' -H 'content-type: application/json' \-H 'X-Api-Key: apikeymu' -H 'X-Oy-Username: yourusername' \-d '{
        "partner_tx_id":"partnerTxId",
        "description":"description",
        "notes":"notes",
        "sender_name":"Sender name",
        "amount":50000,
        "email":"",
        "phone_number":"",
        "is_open":false,
        "step":"input-amount",
        "include_admin_fee":false,
        "list_disabled_payment_methods":"",
        "list_enabled_banks":"",
        "expiration":"2020-08-08 08:09:12"
    }'

Below is the sample response parameters that will be returned:

{
    "success": true,
    "url": "https://pay.oyindonesia.com/id",
    "message": "success",
    "email_status": "PROCESSED",
    "payment_link_id": "id"
}

Send us instructions to generate a payment checkout invoice link.

Below is an example of a request body to execute your request:

url -X POST \
  https://partner.oyindonesia.com/api/payment-checkout/create-invoice\-H 'cache-control: no-cache' -H 'content-type: application/json' \-H 'X-Api-key: apikeymu' -H 'X-Oy-Username: yourusername' \-d '{
        "partner_tx_id":"partner tx id",
        "description":"desc invoice",
        "notes":"notes satu",
        "sender_name":"Sender Name API",
        "amount":"30000",
        "email":"",
        "phone_number":"",
        "is_open":"true",
        "step":"input-amount",
        "include_admin_fee":false,
        "list_disabled_payment_methods":"",
        "list_enabled_banks":"013",
        "expiration":"2020-07-28 19:15:13",
        "partner_user_id":"partner user id", 
          "full_name" : "Raymond",
          "is_va_lifetime": false,
        "attachment": "JVBERi0xLjQKJeLjz9MKMyAwIG9iago8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDQ5Nj4+c3RyZWFtCnicrZVdb9MwFIbv/SsOd51EwrHjz0tKhxQk2IciJMS4CG46lbVNyYcE/HqcbNloh5xO8U3OUXJ8Hr/2aweBQkQBQRjhnnZLfpJ5RhIJQhjIluQ8I1eEwYfubVeHMFRnW/LmPQWKkK3I7Cz70dU+lfTN/hnE3ChJY9SPA0U3EPvP1S2ZXXx5Bemnzxfpu/OuGcLtfxp+/ebisp+QH8VkrNjhHJ9QaV23xRKyciKIGuCGjYPmv6cq0idKWuRNEYDlV7VoixAgwcdEXeZVsysqyH5BughA88t6uy3bXQNO3XRbCEq9pKr8sw5gPuXT8zGv7/JNCOeh9mAYMoxQRcyEMJ5KRlEmokkI63lVrSgqi8JEWlsV8ZURkRFMR1pILkVuZcJYCEd69V7vY3eZxYj4GvEkGsaMK5SAMTcauYsKje6aObskUsGWaKr7bPOYHUd7/8XIocZlx9H2DfuSh+Qw2AG4GZLDYMlqmLfHEQIS/XyBaOf++5uoqG213jfrcjfVfAYdi/tY0288noxBrpqpvwoh1AjjslrbqUo6j/kpWdnkG7iZpYvrm7MQmyOe045vBhkhDbFFI6gTz6Jvj9zqCd+frz/5MRMvOvyeBUxGRM3bvIHvRZXvmryGu7Jq901ZhTDJqEweC+xlvkTqX6+ILeYKZW5kc3RyZWFtCmVuZG9iagoxIDAgb2JqCjw8L1RhYnMvUy9Hcm91cDw8L1MvVHJhbnNwYXJlbmN5L1R5cGUvR3JvdXAvQ1MvRGV2aWNlUkdCPj4vQ29udGVudHMgMyAwIFIvVHlwZS9QYWdlL1Jlc291cmNlczw8L0NvbG9yU3BhY2U8PC9DUy9EZXZpY2VSR0I+Pi9Qcm9jU2V0IFsvUERGIC9UZXh0IC9JbWFnZUIgL0ltYWdlQyAvSW1hZ2VJXS9Gb250PDwvRjEgMiAwIFI+Pj4+L1BhcmVudCA0IDAgUi9Sb3RhdGUgOTAvTWVkaWFCb3hbMCAwIDU5NSA4NDJdPj4KZW5kb2JqCjUgMCBvYmoKWzEgMCBSL1hZWiAwIDYwNSAwXQplbmRvYmoKMiAwIG9iago8PC9TdWJ0eXBlL1R5cGUxL1R5cGUvRm9udC9CYXNlRm9udC9IZWx2ZXRpY2EvRW5jb2RpbmcvV2luQW5zaUVuY29kaW5nPj4KZW5kb2JqCjQgMCBvYmoKPDwvS2lkc1sxIDAgUl0vVHlwZS9QYWdlcy9Db3VudCAxL0lUWFQoMi4xLjcpPj4KZW5kb2JqCjYgMCBvYmoKPDwvTmFtZXNbKEpSX1BBR0VfQU5DSE9SXzBfMSkgNSAwIFJdPj4KZW5kb2JqCjcgMCBvYmoKPDwvRGVzdHMgNiAwIFI+PgplbmRvYmoKOCAwIG9iago8PC9OYW1lcyA3IDAgUi9UeXBlL0NhdGFsb2cvUGFnZXMgNCAwIFIvVmlld2VyUHJlZmVyZW5jZXM8PC9QcmludFNjYWxpbmcvQXBwRGVmYXVsdD4+Pj4KZW5kb2JqCjkgMCBvYmoKPDwvTW9kRGF0ZShEOjIwMjAwNzI5MTE1MzE1WikvQ3JlYXRvcihKYXNwZXJSZXBvcnRzIExpYnJhcnkgdmVyc2lvbiBudWxsKS9DcmVhdGlvbkRhdGUoRDoyMDIwMDcyOTExNTMxNVopL1Byb2R1Y2VyKGlUZXh0IDIuMS43IGJ5IDFUM1hUKT4+CmVuZG9iagp4cmVmCjAgMTAKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwNTc4IDAwMDAwIG4gCjAwMDAwMDA4NjQgMDAwMDAgbiAKMDAwMDAwMDAxNSAwMDAwMCBuIAowMDAwMDAwOTUyIDAwMDAwIG4gCjAwMDAwMDA4MjkgMDAwMDAgbiAKMDAwMDAwMTAxNSAwMDAwMCBuIAowMDAwMDAxMDY5IDAwMDAwIG4gCjAwMDAwMDExMDEgMDAwMDAgbiAKMDAwMDAwMTIwNCAwMDAwMCBuIAp0cmFpbGVyCjw8L0luZm8gOSAwIFIvSUQgWzwzZWMyMWUyNjkwNjcxYzViYTliNjUxODNhY2IxOTM3ND48NzZhNzM1MWE1YmY4ZmMxNDNmY2NlZmUwYjRjMzA4MWI+XS9Sb290IDggMCBSL1NpemUgMTA+PgpzdGFydHhyZWYKMTM1OAolJUVPRgo=",
          "invoice_items": [
          {
            "item":"item name", 
            "description":"description", 
            "quantity": 10, 
            "date_of_purchase":"2020-09-20", 
            "price_per_item": 33000  
          }
        ],
          "attachment": "string base 64 pdf"
    }'

Below is the sample of response parameters that will be returned:

{
    "success": true,
    "url": "https://pay.oyindonesia.com/invoice/id",
    "message": "success",
    "email_status": "PROCESSED",
    "payment_link_id": "id"
}

Send us instructions to generate a recurring payment checkout invoice link.

Below is an example of a request body to execute your request: coming soon

An endpoint to retrieve and/or re-send the latest callback status of a transaction is also available and can be accessed at anytime.

Below is an example of a request body to execute your request:

curl -X GET 'https://partner.oyindonesia.com/api/payment-checkout/status?partner_tx_id=OY123456&send_callback=false' -H 'x-oy-username:yourusername' -H ' x-api-key:yourapikey'

Below is the sample response parameters that will be returned:

{
    "partner_tx_id": "partner000001",
    "tx_ref_number": "1234567",
    "amount": 15000,
    "sender_name": "Joko Widodo",
    "sender_phone": "+6281111111",
    "sender_note": "Mohon dikirim segera",
    "status": "success",
    "settlement_type": "realtime",
    "sender_bank": "008",
    "payment_method": "DC",
    "va_number" : ""
}

An endpoint to check your payment or invoice data is also available and can be accessed at anytime.

Below is an example of a request body to execute your request:

curl -X GET \
  https://partner.oyindonesia.com/api/payment-checkout/{payment_link_id_or_partner_tx_id}\
  -H 'cache-control: no-cache' -H 'content-type: application/json' \
  -H 'X-Api-key: apikeymu' -H 'X-Oy-Username: yourusername'

Below is the sample response parameters that will be returned:

{
    "data": {
        "partnerTxId": "abc10",
        "paymentLinkId": "703e05c0-48e3-47bd-9c22-670941d4d5fe",
        "amount": 15000,
        "username": "justkhals",
        "senderName": "John Doe",
        "senderPhoneNumber": null,
        "senderNotes": null,
        "status": "CREATED",
        "txRefNumber": null,
        "description": "testdesc",
        "isOpen": true,
        "step": "input-amount",
        "notes": "testnote",
        "phoneNumber": "085248395555",
        "email": "maskalgrr@gmail.com",
        "includeAdminFee": false,
        "listDisabledPaymentMethods": "",
        "listEnabledBanks": "008",
        "expirationTime": "2020-08-12 00:00:00",
        "invoiceData": {
            "fullName": "John Dooe",
            "isVaLifetime": false,
            "isScheduled": false,
            "recurringStartDate": null,
            "recurringEndDate": null,
            "recurringFrequency": null,
            "invoiceItems": "[{\"item\": \"AK 47\", \"quantity\": 2000, \"description\": \"Untuk Kemanan Negara\", \"price_per_item\": 2250000, \"date_of_purchase\": 1590969600000}]"
        }
    },
   "message": "return payment checkout data",
   "status": true
}

Lastly, we provide an endpoint to delete your payment or invoice link based on payment_link_id or partner_tx_id. The payment or invoice link must still be active and a payment method must not have been selected.

Below is an example of a request body to execute your request:

curl -X DELETE \
  https://partner.oyindonesia.com/api/payment-checkout/{payment_link_id_or_partner_tx_id}\
  -H 'cache-control: no-cache' -H 'content-type: application/json' \
  -H 'X-Api-key: apikeymu' -H 'X-Oy-Username: yourusername' 

Below is the sample of response parameters that will be returned:

{
    "status" : true,
    "message" : "success delete payment checkout data"
}

Just like the Payment Checkout via Link, you can access all your payment checkout links and its details from the OY! dashboard. This report will include all payment checkout links generated both via Link and API.

Payment Checkout

Pop!: Seamless Payment Experience

With Pop!, displaying our payment checkout page on your front-end web environment is now made easier than ever. Our payment checkout offers a seamless user experience in a way that can be catered to your UI needs.

Click the button below to see a demonstration and a snippet code on how to display a payment checkout page in 4 styles/locations: Center, Right, Left, and Slide Right.

In order to maintain a consistent brand experience for your users, you can customize the look and feel of your payment checkout link in the Dashboard, where you can do the following things;

How to customize the UI:

Payment Checkout

Payment Checkout

Payment Checkout

Note: - By saving the change, the colours will be applied to the payment links previously created (before saving) as well as the payment links created after saving. - Please create new payment link after you successfully save changes to check the difference

Illustration;

If we pick green (#HEX code #067610) as the primary color and black (#HEX code #000000) as the secondary color, the look and feel will be as follows;

Payment Checkout

Payment Checkout

Payment Checkout

VA Bank Details

Bank (Virtual Account) SKN Supported RTGS Supported Payment from ATM Payment from m-banking / i-banking (intra bank) Payment from business account (m-banking/i-banking) Payment from m-banking/i-banking (inter bank)
Bank Mandiri Yes Yes Yes Yes Yes Yes
BRI Yes Yes Yes Yes No Yes
BNI Yes Yes Yes Yes No Yes
BCA No No Yes Yes No Yes
Bank Permata Yes Yes Yes Yes No Yes
CIMB Niaga Yes Yes Yes Yes No Yes
Bank (Virtual Account) Payment from Teller (Inter and Intra Banks) SWIFT Payment Intra bank transfer fees
Bank Mandiri Yes No Rp 0
BRI Yes No Rp 1000
BNI Yes No Rp 0
BCA Yes (Teller BCA); No (Teller from other banks) No Rp 0
Bank Permata Yes No Rp 5000
CIMB Niaga Yes Yes Rp 0

API E-Wallet Aggregator

E-Wallet API allows partners to charge and receive payments directly from top e-wallet issuers. With one integration, they are able to get access to all of OY’s available e-wallets and the upcoming e-wallet integrations.

E-Wallet Product Flow

E-Wallet API

Key Features

  1. Support multiple e-wallets - Currently, we support ShopeePay and LinkAja e-wallets. OVO and DANA are coming soon
  2. Transaction tracking and monitoring capability - You can track all created e-wallet transactions, incoming payments, and their respective details through our API callback or OY! dashboard. You will receive a callback for all incoming transactions.
  3. Check Status capability - We have a Check Status endpoint available for you to regularly check the status of an e-wallet transaction

Registration and Setup

Follow the below check-list to ensure you're all set up to use our E-Wallet API service:

  1. Create an account
  2. Upgrade your account by submitting the required documentations
  3. Have your upgrade request approved
  4. Set up your receiving bank account information (note: ensure that the receiving bank account information is accurate as it cannot be changed via OY! dashboard for security reasons)
  5. Submit your IPs and callback URLs to your business representative or to partner@oyindonesia.com
  6. Receive an API Key from us (note: it is required for API authorization purpose)
  7. Integrate with our E-Wallet API

Testing

Once you successfully create an OY! account, you can immediately simulate E-Wallet payments via API.

Follow the below steps to test the E-Wallet flow:

  1. Create an account

  2. Send a request to activate API E-Wallet product and obtain staging API Key to your business representative

  3. Create a transaction by sending a ‘POST’ request to https://api-stg.oyindonesia.com/api/e-wallet-aggregator/create-transaction using your staging API key. Enter the required and optional fields, as referenced in the API reference docs (https://api-docs.oyindonesia.com/#create-e-wallet-transaction-api-e-wallet-aggregator-coming-soon)

  4. After an E-Wallet transaction is generated, partner can simulate an E-Wallet payment through their dashboard (in Staging environment) by going to the "E-Wallet" sidebar, look for the newly created transaction row on the table (should be at the top), then click on the "Pay" button on the very right of that row. E-Wallet Table

  5. Fill in the e-wallet name, the ref number and amount should be prefilled from the transaction in the previous step, then click on "Send Callback" E-Wallet API

  6. If a payment is successful, we will send a callback to the registered staging callback URL destination

  7. The payment made to the e-wallet transaction can be monitored through OY! dashboard, in the "E-Wallet" sidebar

How to Use

We provide 2 endpoints for you to use:

All details regarding your created e-wallet and its payments can be retrieved via our API endpoint (Check E-Wallet Transaction Status) or can be monitored directly from the OY! dashboard (through the E-Wallet sidebar)

E-Wallet API

E-Wallet Details

E-Wallet Issuer E-Wallet Code Minimum Expiration Time Maximum Expiration Time Redirection Feature
OVO (coming soon) ovo_ewallet Parameter is ignored, always set to 55 seconds Parameter is ignored, always set to 55 seconds Not supported
ShopeePay shopeepay_ewallet 1 minute 60 minutes Support
Linkaja linkaja_ewallet Parameter is ignored, always set to 5 minutes Parameter is ignored, always set to 5 minutes Support
DANA (coming soon) dana_ewallet 1 minute 60 minutes Support

API Payment Routing

Some business have some use cases that require them to receive and disburse the fund. Often times, the operation team is struggling to manage this use case. Limited resource makes it harder to disburse the fund received. Therefore, API Payment Routing is the best solutions to cater this needs.

Description about Payment Routing

Payment Routing is an API that combines receive money and disburse money features. It allows you to immediately disburse the money once you receive from your customers. By integrating to this API, you will get the end-to-end solutions for your business needs.

For now, you can use API Payment Checkout or API Virtual Account for the receive money part.

Flow

Payment Routing Flow

Key Features

  1. Accept and disburse money in a real time manner - By integrating to this API, you will get end-to-end solutions from receive to disburse money. All in real time manner. Note : Some payment methods have H+1 or H+2 settlement period. You have to keep some balance to cater the settlement from the payment methods.
  2. You can select API Payment Checkout or API VA to receive money - See Payment Checkout or Virtual Account for more information. More channels are coming soon. Note : Payment Routing only allows closed amount type.
  3. Transaction tracking and monitoring capability - You can track all payment routing transactions details through our callback or the OY! dashboard. You will receive callbacks two times, for the receive money part and for the disburse money part.

Use Cases

Below are few examples of Payment Routing usage.

  1. Mutual Fund Investment - Accept investment money from users and directly disburse to each custodian banks.
  2. Borrower and Lender - Accept money from Lender/Borrower and disburse them directly to Rekening Penampungan Lender/Rekening Penampungan Borrower.
  3. Put money directly to Your Business Account- Receive money from your customers/buyers and directly put them to your business bank account in order to secure the money and prevent fraud.

Registration and Setup

Follow the below check-list to ensure you're all set up to use our Payment Routing API service:

  1. Create an account
  2. Upgrade your account by submitting the required documentations
  3. Have your upgrade request approved
  4. Set up your receiving bank account information (note: ensure that the receiving bank account information is accurate as it cannot be changed via OY! dashboard for security reasons)
  5. Submit your IPs and callback URLs to your business representative or to partner@oyindonesia.com
  6. Receive an API Key from us (note: it is required for API authorization purpose)
  7. Integrate with our Payment Routing API

Testing

Once you successfully create an OY! account, you can immediately simulate VA payments via API. Follow the below steps to test the Payment Routing flow:

  1. Create an account
  2. Send a request to activate API Payment Routing product and obtain staging API Key to your business representative
  3. Send a ‘POST’ request https://partner.oyindonesia.com/api/payment-routing/create-transaction (https://partner.oyindonesia.com/api/payment-routing/create-transaction) using your staging API key. Enter the required and optional fields, as referenced in the API reference docs (https://api-docs.oyindonesia.com/#create-payment-routing).
  4. If you use VA as the payment method, after VA number is generated, you can simulate the payment through your dashboard (in Staging environment) by going to Settings, and choose "VA Callback".
  5. If you use Payment Checkout as the payment method, you can open the link and simulate payment from there.
  6. If payment is successful, we will send a callback to the registered staging callback URL destination.
  7. You can monitor Payment Routing transaction through OY! Dashboard or call the endpoint API. Go to “Payment Routing” menu to monitor your transactions.

FAQs

API and Bulk Disbursement

What are bank maintenance schedules? Will partners be informed?

Banks often have regular maintenance schedules which differ from one bank to another. These regular maintenance schedules prevent the execution of transactions to the respective recipient bank during the set period of time. To ensure your convenience, we will queue any transaction requests submitted during the maintenance hours and automatically disburse them once the maintenance is over.

What are the amount limits for disbursements?

e-wallet: Since each e-wallet provide limits to the amount each user can hold at a time, disbursements made to e-wallet accounts have their respective limits.

Wallet Account Type Maximum Amount
OVO OVO Club Rp 2.000.000
OVO OVO Premier Rp 10.000.000
DANA DANA Verified Rp 2.000.000
DANA DANA Premium Rp 10.000.000
GoPay Unverified Rp 2.000.000
GoPay Verified Rp 10.000.000

What are the minimum Amount for disbursements?

e-wallet: Since each e-wallet provide limits to the amount each user can hold at a time, disbursements made to e-wallet accounts have their respective limits.

Wallet Minimum Amount
OVO Rp 10.000
DANA Rp 10.000
GoPay Rp 10.000
Linkaja Rp 10.000

Is there a cut-off time?

No, we are available 24/7 including holidays.

Is there a maximum transaction volume and transaction amount in a day?

There are no daily limits of how many bulk campaigns can be created and executed. There is also no limit to the number of total transactions per disbursement campaign.

How many recipient emails can I send the transaction notification to?

You can send up to 5 emails per transactions with a limit of 255 characters total. For each transaction, simply list out the email recipients.

What are the supported banks for the disbursement products?

We support transactions to 100+ banks in Indonesia. Please refer to the bank codes here when using our disbursement products. (Please note that we currently do not support disbursements to Virtual Accounts.)

Can I specify the "notes" to be reflected in the beneficiary bank account statement?

Yes. However, we only support notes for these 7 banks: BCA, BNI, BRI, CIMB, DBS, Mandiri, and Permata. However, please note that should there arise unexpected difficulties with the connection to these aforementioned banks, our failover system will not be able to support these notes to be reflected in the beneficiary bank account statement.

Will the funds accepted from the API VA Aggregator and Payment Checkout and Invoice products be readily available for disbursement uses?

Yes. The funds accepted from the API VA Aggregator and Payment Checkout and Invoice products will be automatically reflected in your OY! balance in real-time, allowing you to use these funds directly for disbursement purposes.

[Bulk Disbursement Specific] What if the recipient name on the xlsx or CSV file is different from the bank account name? What is the phone number used for?

As long as the bank account number is valid and not dormant, the transaction will still be executed.

The name and phone number are visible only to the partner and is used for the partner’s own documentation. The name and phone number listed are not used by OY or sent to the recipient.

[API Disbursement Specific] Are the disbursements performed in real-time?

Yes. Disbursements executed through our API Disbursement are all performed in real-time.

API VA Aggregator

What are the supported banks?

We currently have 6 available banks for our API VA Aggregator. Please refer to the bank codes here.

Is the amount received in realtime?

Yes, all the amount received are in realtime and will be immediately available in your OY! balance.

Payment Checkout/Invoice

What are the possible payment methods for users? We support payments via bank transfers, credit card, debit card, and QR code from the following:

What are closed and open amounts? What happens when the amount paid by the user is different from the declared amount in the created Payment Checkouts?

A closed amount is a configuration so that the payment checkout or invoice can only be paid if the actual declared amount is paid. The user will not be able to pay any amount other than the declared amount.

An opened amount is a configuration so that the payment checkout or invoice can be paid up to the declared amount (or any, if amount is not declared). If the user pays an amount that is different from the declared amount, the payment checkout will remain active. The payment checkout will only reflect a completed status when the full amount is paid in total.