en

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.

Verifying Your Business

Follow the steps below to verify your business:

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

Upgrade

2. For Individual User: Upload ID Card for Identity Verification: Please take an identity card photo and a Selfie photo holding an identity card. The system will automatically read your Identity card photo to fill the form, make sure all information is correct based on your ID card.

2. For Corporate User: Upload the Legality Documents: We ask for different legality documents for different types of corporate entities. After choosing your corporate type we will show you what document you need to submit.

Upgrade

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.

3. Fill Business Information Form: Let us know more about your business by filling out the Business Information form. Please note that you will not be able to change this field in the need revision status.

Upgrade

4. Submit your Bank Account: Add Bank Account Information as the destination account for withdrawing money from OY! Business Platform.

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

Upgrade

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

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

Status: Need Revision

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: We will show you which part of the form and document that will need to be revised. When submitting another request to verify your business, 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.

Please note that after 3 or more revision processes, you will need longer waiting time to submit your next verification request. We will inform you via email or dashboard when you can do the next submission.

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. ID Card
  1. Company’s Nomor Pokok Wajib Pajak (NPWP)
  2. Surat Izin Usaha Perdagangan (SIUP)/ Tanda Daftar Perusahaan (TDP) / Nomor Induk Berusaha (NIB)
  3. SK Kemenhukam
  4. Legalized Akta Perubahan Terakhir
  5. Legalized Akta Pendirian Perseroan
  6. Director’s National ID Card (KTP)
  7. Shareholder Structure
  8. License from BI/OJK
  9. Pengesahan Kementerian Terkait
  1. Company’s Nomor Pokok Wajib Pajak (NPWP)
  2. Surat Izin Usaha Perdagangan (SIUP)/ Tanda Daftar Perusahaan (TDP) / Nomor Induk Berusaha (NIB)
  3. SK Kemenhukam
  4. Legalized Akta Perubahan Terakhir
  5. Legalized Akta Pendirian Perseroan
  6. Director’s National ID Card (KTP)
  7. Shareholder Structure
  8. Pengesahan Kementerian Terkait

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. Go to https://desktop-business.oyindonesia.com/login.
  2. Make sure the username and password that you input are correct.

Login page

  1. You will be redirected to the input the OTP page. The OTP will be sent to the email associated with your username. Then, input the OTP number.

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

Analytics feature allows you to get some insights about your earning and spending transaction that happened in OY!. With this feature, you can get information about how much money you have spent and how much money you have earned in a time interval. You can see your transaction growth on daily, weekly, or monthly basis. You also can select the time range. You will get some insights about the trend of your business transaction. Therefore, this feature can help you to generate new business decision to grow your business.

Dashboard Analytics Image

For VA, Payment Link, and E-wallet users. Now you can see the comparison of conversion between each payment method your end users are using. This data can be a great insight for you so you know which channel most of your users are using.

Dashboard Analytics Payment Method

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.
  3. Click the 'Create User' button

User Management 1

  1. 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 select between Admin, Approver, and Maker

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.

Here are the access control matrix in OY! Dashboard:

Dashboard features

Task Superadmin Admin Approver Maker
Upgrade Account Can upgrade Can upgrade - -
Analytics Can view Can view Can view Can view
Account Statement Can view and export Can view and export Can view and export Can view and export
Settlement Report Can view and export Can view and export Can view and export Can view and export
Top up Balance Can top up Can top up Can top up Can top up
Withdraw Balance Can withdraw Can withdraw Can withdraw Can withdraw
Add User Can add user Can add user - -
User Profile Can view and edit Can view and edit Can view and edit Can view and edit
Business Profile Can view and edit Can view and edit Can view and edit Can view and edit
Authenticator OTP Has permission Has permission Has permission Has permission
Add Payment Method Can add Can add - -
Set up auto report Can set up Can set up - -
Set up auto withdrawal Can set up Can set up - -
Set up multi approval Can set up Can set up - -
Set up notification settings Can set up Can set up - -
Set up developer options Can set up Can set up - -
Add transaction category Can add Can add - -
Config Transaction Receipt Can config Can config Can config Can config

Multi Entity Management

Task Superadmin Admin Approver Maker
Create Sub-entity Can create Can create - -
Top up Sub-entity via Dashboard Can top up Can top up - -
Disconenct Sub-entity Can disconnect Can disconnect - -

Bulk Disbursement Product

Task Superadmin Admin Approver Maker
Create Disbursement Campaign Can create Can create - Can create
Approve Disbursement Campaign Can approve Can approve Can approve -
View and Export Bulk Disbursement Report Can view and export Can view and export Can view and export Can view and export

Claim Fund Product

Task Superadmin Admin Approver Maker
Create Claim Fund Can create Can create - Can create
Approve Claim Fund Can approve Can approve Can approve -
View and Export Claim Fund Report Can view and export Can view and export Can view and export Can view and export

Account Payable Invoice

Task Superadmin Admin Approver Maker
Create AP Invoice Can create Can create - Can create
Approve AP Invoice Can approve Can approve Can approve -
View and Export AP Report Can view and export Can view and export Can view and export Can view and export

Payment Link One time and Reusable Product

Task Superadmin Admin Approver Maker
Create Payment Link Can create Can create Can Create Can create
View and Export Payment Link Report Can view and export Can view and export Can view and export Can view and export

Virtual Account

Task Superadmin Admin Approver Maker
Create VA via Dashboard Can create Can create Can Create Can create
View and Export VA Report Can view and export Can view and export Can view and export Can view and export

E-Wallet Aggregator

Task Superadmin Admin Approver Maker
View and Export E-Wallet Report Can view and export Can view and export Can view and export Can view and export

Account Receivable Invoice

Task Superadmin Admin Approver Maker
Create AR Invoice Can create Can create Can create Can create
View and Export AP Report Can view and export Can view and export Can view and export Can view and export

API Inquiry

Task Superadmin Admin Approver Maker
View and Export API Inquiry Report Can view and export Can view and export Can view and export Can view and export

API Transaction Data

Task Superadmin Admin Approver Maker
View and Export API Transaction Data Report Can view and export Can view and export Can view and export Can view and export

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

Manual Top Up via Bank Transfer

Aside from Virtual Account, you can also transfer the top up money to OY's giro account. If you choose to top up via this method, you need to perform a manual confirmation in order that your money can be credited into your account.

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

Top Up using BCA with Unique Code

Now, we provide you with a new method for BCA. Top-up using BCA with a unique code allows you to top up your balance in a real-time manner. You do not have to confirm manually as we will automatically detect your top-up and reflect it to your balance.

Steps:

  1. In the top up page, click on the “BCA Unique Code” tab.
  2. Input the amount you want to top up. Note : The minimum amount that we allow for this method is IDR10,000.

BCA Unique Code Input Amount

  1. OY! will display the amount you input PLUS three-dgits unique code generated by us. Transfer the exact nominal that appeared on the screen to the bank account stated on the page. Please make sure to use BCA bank account.

BCA Unique Code Transfer

  1. After the transaction is successful, the ORIGINAL AMOUNT will be reflected in your balance. Note : The operational hour for this method is every day, from 3.01 AM to 8.30 PM. Outside those hours, this method will be closed.

BCA Unique Code Transfer

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: Maxiitym 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;

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 Link 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 low balance, send money products and receive money 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
  3. If you want to notified by email if your balance is low, set in the "Low Balance" tab. Input the amount threshold and the email where the notification will be sent to.
  4. Choose whether or not you want notifications enabled or disabled for Bulk Disbursement or API Disbursement. 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.
  5. Choose whether or not you want notifications enabled or disabled for Payment Link, or VA. a. Enable Notification: Email notification will be sent for success transactions. b. Disable Success Notification: No email notification will be sent.
  6. 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.
  7. Click ‘Save Changes’

Multi Entity Management

Multi Entity Management is a feature that can help you handle complex relations between entities in your business in the OY! Dashboard. You can connect to other entities in the form of Main Entity - Sub Entities (1 to N relationship). The one who become the Main Entity will have a capability to oversee te sub-entities' transaction and execute transaction using its sub-entities' balance. Please contact our Business Development 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 sub-entity account.
  2. Distribute balance between the main entity account to sub-entity account.
  3. Use sub-entity account balance to disburse funds.
  4. Receive money using Payment Link on behalf of sub-entity's username.
  5. Free admin fee to disburse between related user.

Registration & Setup

Prerequisites

How To Use

To properly used Multi Entity Management, we required several accounts to be linked together. Each account can be used independently, and there will be some requirements that you should fulfil in order to use this feature. Please contact our representatives for more information.

A. Link to Sub-entity Account

  1. For Main Entity Account

To add a new sub-entity,please 1) Log in to Dashboard with main account credential 2) Go to Multi Entity → List of Sub-entity

Image: As a Main Entity - Add a New Sub-entity

  1. Click the “+ Add Sub-Entity
  2. Fill in the username for the sub-entity 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 Main Entity - Subs - 6. Add Child - Type Username After confirming, the request will be sent to the respective account to be accepted

  1. For Sub-entity Account

To receive a request from a main entity , please 1) Log in to dashboard with child 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 main entity account for your account, then you can choose which account is the correct account for the main entity 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 main entity request to connect, you will find your parent information near the top right corner of your page, and you are now connected with your main entity.

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

B. Topup money to a sub-entity account

After connected with your sub-entities, you can transfer money to the sub-entity account by accessing the menu Multi Entity → List of Sub-entity 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 a sub-entity's balance

In Multi Entity Management, you will be able to do disbursement using your sub-entity account on their behalf. To do this you could

  1. Access the Bulk Disbursement menu and clicking on “+ Create Disbursement” button
  2. Select your sub-entity balance as a source of fund to do disbursement by selecting “My Sub-entity 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

D. Create a payment link on behalf of a sub-entity account

With this feature, you will be able to accept payment from your users through Payment Link created on behalf of your sub-entity account. When your users make a successful transaction, the transaction will be recorded in the Sub-entity Account's balance. As a main entity, you are equipped with the ability to view the Sub-entity Account's balance and transaction list anytime through Multi Entity → Sub-entity Statement.

Follow the below steps to create a payment link on behalf of a sub-entity account:

Via API

Hit API Create Payment Link and fill in "child_balance" parameter with the username of a sub-entity account that you will set as the balance destination for the transaction. When your users make a successful transaction, the transaction will be recorded in the specified Sub-entity Account's balance.

Via Dashboard

  1. Click Payment Link -> One-time (if you want to create a one-time payment link) or Click Payment Link -> Reusable (if you want to create a reusable payment link)
  2. Click "Create One-Time Link" (for one-time payment link) or click "Create Reusable Link" (for reusable payment link)
  3. You will see a pop-up to proceed with the creation process
  4. Fill in "Balance Destination" with "My Balance" (if the balance destination of the transaction is your own) or "Sub-entity Balance" (if the balance destination of the transaction is your sub-entity's). If you select "Sub-entity Balance", you will see a dropdown to select a username of the sub-entity account. Only 1 sub-entity account is currently allowed to be a balance destination
  5. If you select "Sub-entity Balance", when your users make a successful transaction, the transaction will be recorded in the specified Sub-entity Account's balance.

MAM Payment Link

Xero Integration

Xero is an accounting platform that is mainly used by companies. We have integrated our system to Xero system in order to help you optimize your workflow. By connecting your OY! account to your Xero account, you do not have to login to your Xero account. Means that you do not have to manually record your transaction that happened in OY! to Xero. You will get seamless experience of recording your transaction.

How does it works?

Once you have connected your Xero account in OY!, any transaction that happened in OY! will be automatically recorded to your Xero tenant account. Upon successful connection, we will trigger creation of new Bank Account, which is OY! Balance Bank Account. Any transaction that happened in OY! will be recorded in that bank account, to SPEND or RECEIVE money transaction. Then, you will be required to map your Xero’s Chart of Account. Mapping your Chart of Accounts will help us to put your transaction into a correct Account.

Connect your Xero

Preview for Xero's login page Xero's Login Page Consent Page

Preview for Notification Notification

Map your Chart of Account

Note: Special for Bulk Disbursement product, you can define the Chart of Account later in the campaign creation process - Step 3 Input Detail page. In the Transaction Category field.

Bulk Disbursement CoA

Record Transaction to Xero

Disconnected your Xero

  1. To disconnect your Xero account from OY!, open the Integration menu on the sidebar. Then select “Disconnect”.
  2. Then, you will be disconnected from Xero. Any transaction that you execute via OY! will not be recorded into Xero.

Accurate Integration

Accurate is a local accounting platform that is mainly used by companies in Indonesia. We have integrated our system to Accurate system in order to help you optimize your workflow. By connecting your OY! account to your Accurate account, you do not have to log in to your Accurate account. This means that you do not have to manually record your transaction that happened in OY! to Accurate. You will get a seamless experience of recording your transaction.

How does it works?

Once you have connected your Accurate account in OY!, any transaction that happened in OY! will be automatically recorded to your Accurate account. Upon successful connection, we will trigger the creation of a new Bank Account, which is OY! Balance Bank Account. Transactions that happened in OY! will be recorded in that bank account, to PEMASUKAN or PENGELUARAN module. Then, you will be required to map your Accurate’s Chart of Account (in Accurate, it is Akun Perkiraan). Mapping your Chart of Accounts will help us to put your transaction into the correct Account.

Connect your Accurate

  1. Login to your OY! dashboard. In the sidebar, select the Integration menu.
  2. You will see Accurate menu. Click “Connect” to connect your Accurate account to OY!. You will be redirected to Accurate’s login page.

Connect Accurate

  1. After login to your Accurate account, click Allow to allow conection between OY! and Accurate. User Consent Accurate

  2. Next, please select an Accurate database that you want to connect with your OY! account. Accurate Select Database

  3. Once you have successfully connected to Accurate, a notification in your OY! dashboard will appear and you can see your status is now "Connected/Terhubung".

Accurate Connected

  1. Upon success connecting to Accurate, we will create a new Bank Account into your Accurate account, named “OY! balance” in which any transaction that happened in OY! will be recorded there. Your current OY! balance will also be mapped there.

  2. In your Accurate Dashboard, you can see that OY! Indonesia app will be listed in the Accurate Store >> Aplikasi Saya menu. Accurate Listing Accurate Aplikasi saya

  3. Note: A fee of IDR 20k/month will be added to your Accurate billing.

Map your Chart of Account (Akun Perkiraan)

  1. Click on "Configure" to map your Chart of Account (Akun Perkiraan).
  2. Then, map each product to the corresponding Account. Any transaction using each product will be put into the Chart of Accounts you defined on this page.

Accurate Config COA

Note: Special for Bulk Disbursement product, you can define the Chart of Account later in the campaign creation process - Step 3 Input Detail page. In the Transaction Category field.

Bulk Disbursement CoA

  1. You can change the CoA mapping anytime as needed, just go to Integration >> Accurate >> Configure.

Record Transaction to Accurate

  1. Now, your OY! account has been connected to your Accurate account and each product has been mapped to its corresponding Chart of Account.
  2. Any successful transaction that happened in OY! will be recorded to Accurate with the corresponding Account you defined in the Mapping Account menu.
  3. Transactions in OY! will be recorded in Pengeluaran or Pemasukan module, under OY! Balance bank account. It will also credited/debited your OY! Balance Bank Account.
  4. Note: For some reasons, we do not map Top up and Withdraw balance transactions to Jurnal. Therefore, you should adjust your bank’s Cash Bank account balance as well as OY! Indonesia Cash Bank account balance in your Accurate dashboard everytime you execute top up and withdraw transactions.

Disconnected your Accurate

  1. To disconnect your Accurate account from OY!, open the Integration menu on the sidebar. Then select “Disconnect”.

Accurate Connected

  1. Then, you will be disconnected from Accurate. Any transaction that you execute via OY! will not be recorded in Accurate.
  2. Note: To remove the bill, please make sure you also uninstall OY! app in your Accurate dashboard.

Jurnal Integration

Jurnal is a local accounting platform that is mainly used by companies in Indonesia. We have integrated our system to the Jurnal system in order to help you optimize your workflow. By connecting your OY! Account, you do not have to manually record your transaction that happened in OY! to Jurnal. You will get a seamless experience of recording your transaction.

How does it work?

Once you have connected your Jurnal account in OY!, any transaction that happened in OY! will be automatically recorded to your Jurnal account. Upon successful connection, we will trigger the creation of a new Bank Account, which is OY! Balance Bank Account. You will be required to map your Jurnal’s Chart of Account. Mapping your Chart of Accounts will help us to put your transaction into the correct Account. Transactions that happened in OY! will be recorded in that bank account, into the EXPENSES or SALES INVOICE modules.

Connect your Jurnal

  1. Before connecting your Jurnal account, you need to log in to your Jurnal account in your browser.

Jurnal Login

  1. Login to your OY! dashboard. In the sidebar, select the "Integration" menu.

  2. You will see the Jurnal menu. Click “Connect” to connect your Jurnal account to OY!.

Jurnal Connect

  1. There will be a page to ask for your consent regarding this connection process. Make sure to select OY! Indonesia. Click Allow to allow connection between OY! and Jurnal.

Jurnal Authorization

  1. Once you have successfully connected to Jurnal, a notification in your OY! dashboard will appear and you can see your status is now "Connected/ Terhubung".

Jurnal Connection Success

Jurnal Notification

Jurnal Connection Status

  1. Upon success connecting to Jurnal, we will create a new Bank Account into your Jurnal account, named “OY! Balance”. Any transaction that happened in OY! will be recorded under that bank account. Your current OY! balance will be mapped into your OY! Balance Cash Bank Account as a bank deposit transaction.

Jurnal OY! Balance

Map your Chart of Account

  1. Click on "Configure" button in the "Integrasi" menu to map your Chart of Account.

  2. Then, map each product to the corresponding Account. Any transaction using each product will be put into the Chart of Accounts you defined on this page.

Jurnal COA Mapping

  1. Note: Special for Bulk Disbursement product, you can define the Chart of Account later in the campaign creation process - Step 3 Input Detail page. In the Transaction Category field.

Jurnal Bulk Disburse COA

  1. You can change the CoA mapping anytime as needed, just go to Integration >> Jurnal >> Configure.

  2. Note: currently, we do not include mapping and recording the PPN tax. The applied tax will be recorded to Admin Fee Chart of Account. We will update this document as soon as possible once we have included mapping PPN function.

Record Transaction to Jurnal

  1. Now, your OY! account has been connected to your Jurnal account and each product has been mapped to its corresponding Chart of Account.
  2. Any successful transaction that happened in OY! will be recorded to Jurnal with the corresponding Account you defined in the Mapping Account menu. Transactions from OY! will be recorded in the Expenses or Sales Invoice module, under OY! Balance bank account and it will credited/debited your OY! balance bank account. Note: Admin Fee of Receive Money transactions will be recorded in the Expenses module.

  3. In this image, we show you a Disbursement Transaction with CoA "Iklan & Promosi" and admin fee with CoA "Komisi & Fee". It is recorded into the "Expenses" module in your Jurnal account with status LUNAS.

  4. Note: For some reasons, we do not map Top up and Withdraw balance transactions to Jurnal. Therefore, you should adjust your bank’s Cash Bank account balance as well as OY! Indonesia Cash Bank account balance in your Jurnal dashboard everytime you execute top up and withdraw transactions.

Disconnected your Jurnal

  1. To disconnect your Jurnal account from OY!, open the Integration menu on the sidebar. Then select “Disconnect”.
  2. Then, you will be disconnected from Jurnal. Any transaction that you execute via OY! will not be recorded in Jurnal.

OY!'s Authorization Callback

When you successfully complete a transaction using OY!'s API-based product, OY! will send a callback to your system. To keep your system secure, we have provided a feature that allows you to control and approve these callbacks from OY! before they are received by your system.

Currently, we only support configuration for the OAuth 2.0 protocol. If your system uses OAuth 2.0, you can set up OY! callbacks to be directed to an authorization process before they are received by your system. To do this, simply enter the Authorization URL, client ID, and client secret via your dashboard.

How to Setup Authorization Callback

You can follow the steps below to set up callback authorization via your dashboard:

  1. Log in to the OY! dashboard as a super admin or admin, then select the "Settings" menu, and choose "Developer Options."
  2. Click on the "Authorization Callback" tab. Then, you should input your authorization details (Authorization URL, client ID, and client secret). This step is necessary to allow OY! to complete the authorization process before sending a callback to you.

Callback Authorization Configuration

  1. Click the "Save changes" button.
  2. Once you have configured your OAuth 2.0 credentials, all callbacks from OY! will go through your authorization process before you can receive them. OY! will obtain an access token along with the expiry time from your system.
  3. If you no longer want callbacks from OY! to go through the authorization process, you can remove all the OAuth information or credentials you've entered on this page and then click "Save Changes."

OY! Business App

OY! Business App

Great news for you who always in mobility mode but you need to access our dashboard! Now you can access your OY! dashboard from the tip of your finger. OY! Business offers you with easy access to OY! Dashboard, so you can do your financial activities everywhere you are, without opening your laptop or PC. In this app, you can see your balance, account statement, transaction status, send money and also receive money. Yes, doing transaction is now easier than before!

Register and KYB

  1. Open your OY! Business app in your Android phone.
  2. If it is your first time opening this application, you have to input your phone number.
  3. Then, app will shows list of accounts that are tied to the phone number you entered before.
  4. If you want to create a new account, tap “Buat Sekarang”. Then follow the instruction.
  5. Once you success registering your new account, you can also submit your KYB.

Login

  1. Open your OY! Business app in your Android phone.
  2. If it is your first time opening this application, you will need to input your phone number to verify your account.

OY! Business App input phone number

  1. Next, select which method for sending OTP. Make sure to input the right phone number. Then, please input the OTP number we just sent you.

OY! Business App input OTP

  1. If the phone number is not yet registed in OY!, you will be required to create a new account.

OY! Business App register page

  1. However, if your phone number have been registered to OY! before, the app will displays list of accounts that are tied to the phone number you entered before.

OY! Business App select account page

  1. Select an account you want to log in to.
  2. First time logging in, you will be required to create a new PIN. This PIN will be used to log in to that account in the business app environment.
  3. Once you have successfully logged in, you will be directed to homepage. Here, you can see your balance and see your latest transaction.

OY! Business App Homepage

  1. In the homepage tap “Transaksi Sekarang” button.

OY! Business App Homepage

  1. Then, select “Tagih Uang”.

OY! Business App Select Transaction

  1. You will see your history of payment links and its transaction history. Then, tap “Buat Link Pembayaran” button in the bottom right.

OY! Business App Create a Payment link

  1. Configure the payment link you want to create and fill all the required details. In this page, you can set the amount method (closed or open amount), admin fee method, payment link expiry date, and payment method(s) you want to provide to your customer(s). Them klik "Simpan".

OY! Business App Payment link Configuration

  1. Define the amount (if you select closed amount in the configuration page), description, and the transaction ID. Then, tap “Buat Link Pembayaran” button.

OY! Business App Submit Payment link

  1. Payment Link has been created and now you can share the link to your customer to receive payment from them.

Send Money (Bulk Disbursement)

  1. In the homepage tap “Transaksi Sekarang” button.

OY! Business App Homepage

  1. Then, select “Kirim Uang”.

OY! Business App Select Transaction

  1. You will see your bulk disbursement campaign history. Then, tap “Buat Disbursement” button in the bottom right.

OY! Business App Create Disbursement

  1. Create your Bulk Disbursement campaign. First, fill out your campaign details.

OY! Business App Campaign Detail

  1. Next, fill the recipient data (bank, bank account number, amount, recipient email, phone number, note).

OY! Business App Recipient Detail

  1. Next, check on your recipient list. If you want to add more recipient, click on "Tambah Transaksi" button.

OY! Business App Recipient List

  1. Confirm your bulk disursement campaign. In this page you can ensure your campaign detail and your recipient data are correct before submitting the campaign.

OY! Business App Detail Campaign

  1. Your Bulk Disbursement campaign has been created and will be displayed on the Bulk Disbursement campaign history page. You may wait for your approver to approve the bulk disbursement so we can execute the transaction.

OY! Business App Disbursement Campaign History

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

Overbooking OY! can use the funds directly from your Mandiri or CIMB 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 Budianto Budiman",
    "timestamp":"16-10-2021 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,
    "pendingBalance":2000000.0000,
    "availableBalance":98500000.0000,
    "overbookingBalance":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

Overbooking OY! can use the funds directly from your Mandiri or CIMB 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. The failed transactions will be shown the failed reason and can be retried. 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.

API Biller

API biller product provides the capability for you to pay the bill products. With 130+ types of billing products, you can provide numerous bill payment options with ease and in real-time. The integration process to use the API biller product is straight forward and the details can be checked here.

Transaction Flow

Transacation Flow

Key Features

Overbooking OY! can use the funds directly from your Mandiri or CIMB bank accounts for your bill payment needs. Please contact our business representative for further details about this feature.

Check Transaction Status and Callback

For all bill inquiry & bill payment 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 bill payment.

Registration and Set Up

Prerequisites

Testing

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

  1. Create an account
  2. Login into the dashboard
  3. Change the environment to “demo”
  4. Once the environment changed to demo, there will be API key demo available on the bottom left corner of the page
  5. Before creating a bill payment transaction, check your available balance through API GET https://api-stg.oyindonesia.com/api/balance
  6. Request inquiry for the bill you want to pay by sending a ‘POST’ request to https://api-stg.oyindonesia.com/api/v2/bill using your staging API key. Enter the required and optional fields, as referenced in the API reference docs (https://api-docs.oyindonesia.com/#bill-inquiry-biller-api)
  7. Fill in the customer-id, product-id, and the partner transaction-id. You will get the detail information about the bill that you want to pay.
  8. After successful inquiry, you should do the payment process by sending a ‘POST’ request to https://api-stg.oyindonesia.com/api/v2/bill/payment. Enter the required and optional fields, as referenced in the API reference docs (https://api-docs.oyindonesia.com/#pay-bill-biller-api)
  9. To get the status of a bill payment request, you can call the API https://api-stg.oyindonesia.com/api/v2/bill/status
  10. 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.
  11. The API biller transactions can be monitored through OY! dashboard from the “Send money - API biller" menu.

How to Use

In order to create API biller transaction, a sufficient available OY! balance is required in the account. More details and instructions about topping up to your OY! account can you see here https://docs.oyindonesia.com/#top-up-oy-dashboard-tutorial.

Before you execute the bill payment, you have to verify the bill information from our bill inquiry endpoint.

Below is an example of the request body for inquiry:

curl -X POST https://partner.oyindonesia.com/api/v2/bill 
-H 'content-type: application/json, accept: application/json, x-oy-username:myuser, x-api-key:987654' 
-d '{
    "customer_id": "512233308943",
    "product_id": "plnpost",
    "partner_tx_id": "Tx15048563JKFJ"
    }'

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"
    },
    "data": {
        "tx_id": "a3d87877-e579-4378-844b-c06294fc9564",
        "partner_tx_id": "Tx15048563JKFJ",
        "product_id": "plnpost",
        "customer_id": "512233308943",
        "customer_name": "Plg.,De'mo 512233308943",
        "amount": 282380,
        "additional_data": "{\"customer_id\":\"512233308943\",\"customer_name\":\"Plg.,De'mo 512233308943\",\"admin_fee\":\"2.500\"}"
    }
}

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

Below is an example of the request body for the bill payment:

curl -X POST https://partner.oyindonesia.com/api/v2/bill/payment 
-H 'content-type: application/json, accept: application/json, x-oy-username:myuser, x-api-key:7654321' 
-d '{
    "partner_trx_id":"Tx15048563JKFJ", 
    "note" :"biller transaction test"
    }'

Below is the sample response parameters that will be returned:

{
    "status":{
        "code": "102",
        "message": "Request is In progress"
    },
    "data": {
        "tx_id": "a3d87877-e579-4378-844b-c06294fc9564",
        "partner_tx_id": "Tx15048563JKFJ",
        "product_id": "plnpost",
        "customer_id": "512233308943",
        "customer_name": "Plg.,De'mo 512233308943",
        "amount": 282380,
        "note": "biller transaction test"
    },
}

An endpoint 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/b2/bill/status 
-H 'content-type: application/json, accept: application/json, x-oy-username:myuser, x-api-key:7654321' 
-d '{
    "partner_trx_id": "Tx15048563JKFJ"
    }'

The above command returns a JSON structured similar like this:

{
    "status":{
        "code": "000",
        "message": "Success"
    },
    "data": {
        "tx_id": "a3d87877-e579-4378-844b-c06294fc9564",
        "partner_tx_id": "Tx15048563JKFJ",
        "product_id": "plnpost",
        "customer_id": "512233308943",
        "customer_name": "Plg.,De'mo 512233308943",
        "amount": 282380,
        "additional_data": "\"{\\\"bill_period\\\":\\\"FEB2022\\\",\\\"total_amount\\\":\\\"282.380\\\",\\\"customer_id\\\":\\\"512233308943\\\",\\\"customer_name\\\":\\\"Plg.,De'mo 512233308943\\\",\\\"admin_fee\\\":\\\"2.500\\\",\\\"settlement_date\\\":\\\"09/03/2022 16:49\\\"}\"",
        "status": "SUCCESS"
    },
}

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

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,
    "pendingBalance":2000000.0000,
    "availableBalance":98500000.0000,
    "overbookingBalance":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 Biller

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

Feature: Resend Callback

Key Features

Retry Callback allows you to resend a callback of your transaction to your system. Initially, OY! will send a callback to your system after your transaction status has been updated. If your system failed to receive the callback, this feature can help you to retry the callback process. The process can be done in two ways

  1. Automated retry callback If the callback is not successfully received on the first try, the system will automatically retry the callback delivery. If that callback is still not received by the client's system, the system will automatically retry until 5 occurrences. The interval of the sending process will be detailed in the Callback Interval section. If all automated Retry Callbacks have been sent but still returned failed, the system will send an email notification to the email address set in the configuration.

  2. Manual retry callback Besides the automated process, you can manually request a callback via the dashboard.

Registration and Set Up

Follow the instruction below to activate retry callback

  1. Login to your account in OY! Dashboard
  2. Open “Settings” and choose “Developer Option”. Choose “Callback Configuration”
  3. Fill your callback URL in the related product that you want to activate. Make sure the format is right. You can click URL String Validation button to validate the URL format.
  4. If you want to activate automated retry callback, check the Enable Automatic Retry Callback and fill in the email. The email will be used to receive a notification if all the automatic callback attempts have been made but still fail
  5. Click "Save Changes". The configuration will not able to be saved if the callback URL or/and email format are not valid.

Resend Callback

Don't forget to whitelist these IPs in order to be able to receive callback from OY: 54.151.191.85 and 54.179.86.72

If you want to manually resend a callback, you can follow the instruction below

  1. Login to your account in OY! Dashboard
  2. Open the API Disbursement menu
  3. Click the "Resend Callback" button in the related transaction

Resend Callback

Callback Interval

1st retry: realtime (after the first failed log received) 2nd retry: 1 min (after callback failed log for the 1st retry is received) 3rd retry: 2 mins (after callback failed log for the 2nd retry is received) 4th retry: 13 mins (after callback failed log for the 3rd retry is received) 5th retry: 47 mins (after callback failed log for the 4th retry is received)

If all automated Retry Callback (all the 5 attempts) has been sent but we still get a Failed response from your end, our system will send an automated email notification to the email address that has been set in the configuration earlier

Idempotency Key

To implement automated retry callback, you need to handle the idempotency logic in your system using the below key:

API Disburse: trx_id

Account Payable

OY! Account Payable product provides the capability to record, create approval levels, and scheduled payment for invoice payables without hassle. Account Payable is made through the OY! dashboard, so no technical integration is required to use this product.

How to Use Account Payable via Dashboard

You can create new invoice to be paid and set up payment by following this step:

  1. Log on to your OY! dashboard
  2. Choose "Production" environment
  3. Click "Pay Invoice" under Account Payable menu
  4. Click "Invoice List"
  5. Choose "Create New Invoice"
  6. Upload your invoice document to help you easier record the invoice by click "Browse to Upload" or Drag & drop to the invoice area
  7. Fill in the necessary details

    Parameter Description
    Purchase Type You can choose between purchase order, service fee, bill, subscription fee, and reimbursement
    Invoice Number The number of the invoice that you get from your vendor/supplier
    Invoice Date The date of the invoice
    Due Date Due date of a transaction as mentioned in the invoice. Your approver will be reminded to approve on D-7, D-3, and D-1 from the invoice due date
    PO/PR Number (optional) The reference PO/PR number from your company to track this invoice
    Note The note for this invoice
    Vendor The name of the vendor that this invoice belongs to. You can choose the name of the vendor from the dropdown menu. To create a new vendor, follow the instruction here
    Product Description The name and/or description of the product
    Quantity The quantity of the product
    Price Unit price of the product
    Total Total price of the product (Total = Quantity x Price)
    Subtotal The total price of all the products
    PPn PPn that should be paid to the vendor. PPn is calculated from subtotal amount. You can set up the tax during vendor addition or edit in 'Vendor Management' menu under Account Payable
    PPh PPh that should be deducted from the vendor. PPh is calculated from subtotal amount.You can set up the tax during vendor addition or edit in 'Vendor Management' menu under Account Payable
    Total Pay to Vendor Total amount that will be paid to vendor on scheduled date, post approval
    Reference Documents (Upload document) The supporting documents that you want to record related to this invoice. Accept PDF files only. Maximum 7 documents (maximum 2.5MB each)

    Note: Maximum 20 rows for line item detail

    Image Account Payable AP Invoice Creation One

  8. Continue to set up 'Invoice Payment Details'. You can set up the payment to one time payment by choosing 'Full Payment' or multiple times payment by choosing 'Partial Payment'.

    Parameter Description
    Payment Amount Amount that will be automatically paid to vendor on scheduled date
    Due Date The due date of the payment. The due date cannot do back date or more than due date that set in the first page (record invoice). Notification will be send to approval D-7, D-3, and D-1 if the status is waiting aproval
    Status Status of the invoice payment. You can choose 'Paid' for record intention and this amount will not be paid by system. Choose 'Unpaid' for incoming transaction that needs to be paid
    Scheduled Payment Time of the payment. You can prepare the balance prior to scheduled payment time and make sure the payment date is based on your preference and will only be executed post approval
    Remaining Amount Total pay to vendor - subtotal. This amount should be 0 to continue the process

    Image Payment Page AP Invoice Creation Two

    AP Invoice Scheduled Payment Detai

    AP Detail Transaction

  9. Status: Waiting Payment, Partially Paid, Complete and Cancelled Congratulations! You have finished your first invoice payable set up. Below are the list of statuses you will find on 'Invoice List'

    Parameter Description
    Partially Paid Multi times payment or partially paid that not finish yet. You can click invoice number to find the partial payment details in 'payment transaction' tab
    Waiting Payment Waiting for approval or balance not enough
    Cancelled Invoice has been cancelled
    Complete All payment of the invoice is complete

    List of the Invoice Payable AP Invoice List

How to Create, Edit and Inactivate Vendor Data

Add New Vendor for Account Payable

  1. Click 'Add' in the 'Vendor' field in the 'Create Payable Invoice' page.
  2. Fill in the necessary details
  3. Click 'Add Vendor' after complete registration of new vendor
Parameter Description
Vendor ID (Optional) Unique ID of the vendor from your company. This is not mandatory
Vendor Name The company/vendor name. Make sure the vendor name matches the vendor NPWP (if any) to help your company tax record
Vendor Address (Optional) Vendor address to be recorded. This is not mandatory
Bank Name Recipient bank name. You can choose using drop down
Account Number Recipient bank account number. You can check the inquiry by clicking 'Get Account Name' after filling the account number
PIC Name The PIC name of this vendor
PIC Email The PIC or recipient email. Payment/transfer receipt will be send automatically to this email after complete payment
PIC WhatsApp (optional) The PIC WhatsApp number for your record
PPh (optional) PPh type from this vendor. Default of the setting is Not Subject to PPh.
Vendor NPWP (optional) The vendor NPWP number record that can be use for company reference to generate 'Faktur Pajak'
NPWP Document (optional) Vendor NPWP document to be record. Accept PDF and JPG format. Maximum 10 MB
PPn (optional) PPn type of this vendor. Default of the setting is Not Subject to PPn.
SKB Document (optional) Vendor SKB Document to be record. Accept PDF and JPG format. Maximum 10 MB
Not subject of PPh Tax will not be added upon the subtotal
Not subject of PPn Tax will not be added upon the subtotal
PPN Exclusive PPN of the subtotal will be added upon the subtotal of the invoice. For example is subtotal is 10,000, then the PPN is 11% of the 10,000 = 1,100
PPN Inclusive Tax will not be added upon the subtotal because the subtotal is assumed to be tax inclusive

Each vendor only have 1 type of PPh setting and 1 type of PPn setting

There will be an PPh email sent on the 1st day of each month that contains all the PPh from your vendors in the previous month. This report can help company with tax payment & reporting, and 'Faktur Pajak' generation to your vendor.

Create New Vendor VM Vendor Creation

List Of Vendor VM Vendor List

Vendor Detail VM Vendor Detail

How to Set Up Invoice Payable Approval

You can set up multi level approval from OY's users. There will be 4 type of users: Super Admin, Admin, Approver, and Maker

Approval Layer Set Up

Approval Layer can be set up using 'User Management' under 'General' menu. 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 Account Payable. The Super Admin and Admin roles allows you to directly create and approve Account Payable and also Bulk Disbursement. 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.

Default approval: Super Admin, Admin, and Approval.

Corporate Card

OY! Corporate Card product provides the capability to create customized cards that can be used to manage online subscriptions without hassle. Corporate Card can be generated through the OY! dashboard, therefore no technical integration is required to use this product.

Key Features

Condition Description
Card creation OY! can use the funds directly from your OY! balance for corporate card needs. It is essential to top-up your OY! balance based on your card limit. Please contact our business representative (https://docs.oyindonesia.com/partner@oyindonesia.com) for further details about this feature.
Card control Create and control the card based on your requirements. You can set the limit amount (in Rupiah), validity period, card renewal frequency and even transaction limitations directly through OY dashboard. Moreover, you can block and deactivate corporate card real-time! Everything on your fingertips.
Real-time transaction Transactions can be tracked easily through dashboard real-time. There is no need to wait until the end of month for full transaction statement

How to Create Corporate Card

You can create new virtual card by following these steps:

  1. Log in to your OY! dashboard
  2. Choose “Production” environment
  3. Click “Corporate Card” under Expense Management menu
  4. Click “Add New Card”
  5. Choose “Card Type” for “Virtual” and usage frequency either single usage or multiple usage and click “Next”
  6. Fill in Cardholder details and Card details
  7. Once submitted, Corporate Card will be in “waiting for approval” state
  8. After the approval step, the card is ready to be used for transactions.

Notes: OY! balance would be put on pending once card is created.

Corporate Card Dashboard

Card Form

Card Form

Card Form

Card Form

How to Transact with Card

Steps to use card for online transaction:

  1. Access your card information (including remaining balance & transaction) via email and enter OTP sent to the phone number registered.
  2. Once accessed, input all of you card information into merchant side under “Credit / Debit Card” Option
  3. Input 16 digit number, expiry date (MM/YY) and CVV
  4. Submit the information and proceed with the transaction and the transaction is successful.
  5. For record purposes, you can upload the invoice for each transaction inside OY! dashboard.

VCC Detail

VCC Transaction Detail

VCC Transaction Email

Card Status

Status Description
Pending Approval Card has been requested but approval is not yet given. Request can only stay valid for 14 days.
Active Card is ready to be used for transaction.
Active with Warning Card is active with balance, but only <15% balance remaining.
Inactive Card has been deactivated, but still contain limit.
Need top-up New card has been created, but with 0 limit OR card limit is back to 0 and pass renewal time due to insufficient balance.
Expired Card is expired or intentionally archived permanently.
Rejected Card is rejected by Approver.

Transaction Status

Transaction Status Description
Successful Card has been used for transaction successfully
Failed Transction was declined
Reversal Temporary hold on card is returned to card prior settlement

How to Set Approver

  1. During first time product activation, prompt to fill in Approver data will be triggered
  2. Fill in the approver details
  3. Tick T&C and confirm your Approver details
  4. Approver will receive confirmation email

VCC Add Approver

VCC Approver Form

Notes: Approver data cannot be added or edited through dashboard for security purposes. Please contact our business representative for helps

Parameter Description
Name Approver Name
Position Approver Role
Phone Number Approver Phone Number
Email Approver email for card approval purposes

How to Manage Card

  1. Click “See All Cards”
  2. Click the card that needs to be managed

VCC Card List

Card actions

Card Actions Description
Resend Card Info To resend card info to cardholders, in case of missing email
Edit Information To edit the card limit. Editing card limits will lead to card temporary blockage and require reapproval flow again.
Block To temporarily lock the card, limit remains in the card
Archive To permanently lock the card, limit will be 0 and returned to OY! balance
Renew Limit To renew card limit with a desired amount using OY! balance
Resend Approval Notification To remind Approver to approve the card request in case of closet email
Delete Only applicable for "Waiting for Approval" card

How to Set Up Card Config

  1. Click “Corporate Card Configuration”
  2. Select Department / Category / Approver
  3. You can choose to whether add new, edit existing or delete
  4. Click "Save Changes"

Card Department

Card Category

Card Approver

Failed Transaction Possible Reasons

  1. Card utilized more than
    1. requested frequency (multiple use vs single use)
    2. available limit
  2. Card is inactive
  3. Card is expired
  4. Invalid card number
  5. Invalid expiry date
  6. Invalid CVV
  7. Issuer network not supported

Notes

International Transfer

International Transfer product provides the capability for users to transfer across countries from Indonesia at any time. You may create a transaction within OY! dashboard without the need for any technical integration.

Key Features

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 that is applicable for international transfers. Both Super Admin and Admin may edit or delete created sub-accounts.

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

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

Roles & Accessibility Only Super Admin and Admin roles are available to create transactions. All other roles are only allowed to view transaction list, transaction details, filter, export and edit custom column in dashboard.

Available destinations Current list of countries supported: Singapore Current list of currencies supported: Singapore Dollars (SGD), US Dollars (USD)

More countries such as Australia, China, Hongkong, Malaysia, South Korea and United States will be available soon.

Sender / Recipient Contacts Suppose that you want to create an international transfer on behalf of another entity, you may create an individual / business sender or recipient and input all required information about the sender or recipient. All sender and recipient information will be saved in contacts and may be reused in the future.

Additional Documents We provide a placeholder for you to upload invoice and other supporting documents for the purpose of transfer and source of funds.

Transaction Details Once a transaction is successfully created, all transaction details and updates will be recorded in OY! dashboard

Registration and Set Up

Prerequisites

Testing

  1. Log in to your OY! dashboard
  2. Choose "Staging" environment
  3. Click "Send Money" menu, and choose "International Transfer"
  4. Click "Create New Transaction"
  5. Fill in the necessary details by following the steps explained in the “How to Use” section
  6. Note: To reproduce a failed transaction in staging environment, you may fill the recipient account number as 1234567891. All other account numbers will result in a successful transaction.

How to Use

In order to create international transfers, you need to have sufficient available OY! balance is required in the account. If there is an insufficient available balance in the account, international transfers cannot be created 1. Create new transaction: On the OY! dashboard, navigate to Send Payments > International Transfer on your left menu bar. Click “Create New Transaction” on the far righthand side of that page to create a new transfer.

Create New Transaction

  1. Input transfer amount details: You may fill out the amount of transfer in two ways:
    1. Fill in the send amount (in Rupiah) you would like to transfer, along with the destination currency and country. Our system will automatically convert according to the foreign exchange rate at that time.
    2. Fill in the recipient amount (in SGD/USD) you would like to transfer, along with the destination currency and country. Our system will automatically convert according to the foreign exchange rate at that time.

Input Send Amount

Note: If the nominal amount greater than the available balance, then our system will restrict users from proceeding Balance Less Than Send Amount

  1. Input sender details: Decide whether sender is an individual or business entity, and you will see the corresponding details to fill out for each. Previously saved sender contacts will be displayed at the bottom of this page. List Of Existing Senders

Create a new individual sender by filling out this form

Input Individual Sender

Create a new business sender by filling out this form

Input Business Sender

  1. Input recipient details: Decide whether recipient is an individual or business entity, and you will see the corresponding details to fill out for each. Previously saved recipient contacts will be displayed at the bottom of this page.

List Of Existing Recipients

This will be the form you will need to fill out for individual recipient

Create a new individual recipient by filling out this form

Input Individual Recipient

Create a new business contact by filling out this form

Input Business Recipient

  1. Add supporting information: In this step, we need to record source of funds, purpose of transfer for the transaction. You may also attach supporting documents to aid the compliance requirements for your transaction.

Transfer Reason And Supporting Docs

  1. Summary: The summary of your transaction will be shown. If all the information is correct, you may click the Submit button at the bottom right hand corner of the screen.

Summary

Note: A fixed quotation rate is created since Input sender details and will be refreshed every 30 minutes. In the case when the quotation expires, a pop up will show to fetch the latest exchange rate and a new quotation is created.

Update Exchange Rate

If the available balance is insufficient for the new quotation amount, then you will be prompted to change the transfer amount or top up balance.

Balance Not Enough

  1. Input Password: For security reasons, OY! will prompt clients to input their password prior to every transaction.

Password Filled

Each client has 5 chances to input the correct password. If you failed to input the correct password 5 times, then the transaction will automatically be cancelled.

Incorrect Password

  1. Transaction Status: In Progress, Success, Failed.

In Progress

Once a transaction is successfully created, it will appear in your dashboard the status column will be set as In Progress.

In Progress Status

Success

Once your transaction is processed successfully, the status column will be updated as Success. Both sender and recipient should have received an email detailing a “Successful Transfer.”

Success Email

Failed

If your transaction has failed to process, the status column will be updated as Failed. Both sender and recipient should have received an email detailing a “Failed Transfer.”

Failed Email

  1. Check transaction details: You may check transaction details by clicking on the transaction id on the list of transaction details on dashboard

List Of Transactions Transaction Detail

Reimbursement

OY! Reimbursement product provides the capability to handle employee reimbursement requests and fund disbursement on one platform. Reimbursement can be done easily without any employee signing up for an OY! Account. No technical integration is required to utilize the product.

Key Features

Feature Description
Approval Capability To ensure no fraudulent requests are made, a double approval mechanism exists in the product and is mandatory for the reimbursement process. The first layer is for the reporting manager via email, and the second layer applies to the finance team via the dashboard.
Fund Disbursement Not only does the product process disbursement requests, but you can also immediately schedule the disbursement time after approval from the reporting manager. Currently, the scheduled disbursement options are 1 day, 3 days, 7 days, and 14 days, allowing flexibility in managing cash flows.
Reimbursement Details Every reimbursement request can be accessed through the OY! dashboard, including the uploaded file, to ensure it matches the requested amount.
Reimbursement Tracking For employees, no more hassle in checking reimbursement progress with the HR or finance team. Your employee will receive a tracking email to check progress in real-time.

How to Set Approver (Reporting Manager)

Setting up the approver will only occur once when the page is first opened.

  1. Log in to your OY! dashboard.
  2. Select the "Production" environment.
  3. Navigate to "Reimbursement" product under the Expense Management menu.
  4. Click on "Create Reimbursement Link."
  5. Choose "Register Approver."
  6. Fill in the approver's name, email address, and department.
  7. After registration, the approver will receive a notification via email.

Approver registration

Notes

After Approver registration, you can start sharing the reimbursement link with employees through two methods:

  1. Via Bulk Upload:

    1. Download the sample file and input a list of employee emails in CSV or XLSX format.
    2. Upload the file for email distribution.
  2. Via Copy Link:

    1. Copy the link and distribute it using any convenient method.
  3. Employees will find the form link in their email and can proceed to submit a request.

Distribution page

Form page

Form page

Mandatory Parameters in the Form

Parameter Description
Employee Name Employee identification purposes
Employee Email This will be used to trigger tracking to employee post-submission
Department Department will be mapped to approver's email directly
Bank Name Disbursement bank name
Account Number Disbursement bank account number. Bank account validity can be checked prior reimbursement submission
Item Item name or description
Amount Reimbursement total amount (in IDR). Minimum Rp 20.000
Upload File Placeholder to upload invoice document. Max 2 file with PDF, JPG, & PNG format (Each file max 5MB ).
Transaction Date Date of transaction printed on the invoice

Notes

How to Schedule Disbursement

Scheduled disbursement can only be done if the reporting manager has approved the request, and the dashboard admin agrees to schedule the disbursement.

  1. Open the OY! Dashboard and check the Reimbursement transaction list.
  2. Requests with "Need Approval" status will require action from the dashboard side.
  3. The admin can either reject with a reason or approve with a scheduled disbursement day.

Dashboard list

Request Detail

Request Detail

Note: If there is insufficient balance on the day of scheduled disbursement, you can retry manually when the balance is sufficient via the dashboard.

Dashboard Status

Status Description
Pending Approval Submitted by employee but no action yet from approver
Need Approval Approved by approver but no action yet from admin
Canceled Cancelation can only be performed by employee. No further action needed
Completed Money disbursed
Rejected Rejected by admin or approver
Scheduled Payment After admin has approved and set scheduled payment time
Failed Disbursement failed due to timeout or vendor issue
Insufficient Balance Fail to disburse due to insufficient balance (admin can retry payment manually from dashboard)

How to Approve Transaction (Reporting Manager)

  1. When a new request is submitted by an employee, the respective approver will receive a notification and an approver portal link via email.
  2. Inside the link, the approver can find all reimbursement requests with certain statuses (rejected, approved, and need approval).
  3. The approver can choose to either reject the request with a reason or simply approve.
  4. Approving the request will trigger an update inside the OY! Dashboard and employee tracker page.

Approver portal

Request details

How to Check Reimbursement Progress (Employee)

  1. Employees can fill in the reimbursement request form portal via email.
  2. Once submitted, the employee will receive a tracking email.
  3. Inside the link, employees can find real-time reimbursement progress, from the submission timestamp until disbursement timestamp.
  4. Employees can still cancel the request if the approver has not yet approved.

Employee tracker

Employee tracker

Tracker Status

Status Description
Pending Payment Request approved but money not yet received
Scheduled Payment After the admin has approved and set scheduled payment time
Rejected Rejected by admin or approver
Canceled Canceled by employee
Waiting Approval Submitted but no action yet from approver or admin
Completed Money has been disbursed successfully

Note: The tracking email is applicable to each employee per reimbursement request.

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 11 banks: BCA, BNI, Mandiri, BRI, Permata, CIMB Niaga, BTPN, KEB Hana, Danamon, Maybank and Bank Syariah Indonesia (BSI)

  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
VA Number Customized or predetermined You may personalize the VA suffix using the numbers you want (e.g. your end-users' phone number or billing number). To enable VA number customization, please contact your Business Representative. Currently, this customizable VA number feature is only available for BRI and CIMB.
  1. 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 Demo environment) by going to Settings, and choose "Bank Transfer Callback". Bank Transfer Callback

  5. Choose Virtual Account and fill in the bank name associated with the generated VA number, the generated VA number, amount, payment date & time

  6. If payment is successful, we will send a callback to the registered demo 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) Capability (Open Amount/Closed Amount)
BNI Closed Amount
Bank Mandiri Open Amount, Closed Amount
BRI Open Amount, Closed Amount
BCA Open Amount, Closed Amount
Bank Permata / Permata Syariah Open Amount, Closed Amount
CIMB Niaga / CIMB Niaga Syariah Open Amount, Closed Amount
BTPN Open Amount, Closed Amount
KEB Hana Open Amount, Closed Amount
Maybank Open Amount, Closed Amount
Bank Danamon Open Amount, Closed Amount
BSI (Bank Syariah Indonesia) Closed Amount

Available Payment Channels for VA

Your end-users may use the below payment channels to pay for their bills via VA

Bank (Virtual Account) SKN RTGS ATMs Intrabank Mobile Banking & Internet Banking Interbank Internet Banking Interbank Mobile Banking
Bank Mandiri Yes Yes Yes Yes Yes Yes
BRI Yes Yes Yes Yes No Yes
BNI Yes Yes Yes Yes No Yes
Permata Yes Yes Yes Yes No Yes
CIMB Niaga / CIMB Niaga Syariah Yes Yes Yes Yes (Mobile Banking), No (Internet Banking) No Yes
BCA No No Yes Yes No No
BTPN Yes No Yes Yes (Mobile Banking), No (Internet Banking) No Yes
Maybank Yes Yes Yes Yes No No
Danamon Yes Yes Yes Yes No No
KEB Hana No No Yes Yes No No
BSI No No Yes Yes Yes Yes

Overview Payment Link OY! Payment Link/Invoice is a pre-built payment page that allows your business to easily and securely accept payments online. Currently, our payment link/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 link/invoice pages through various methods: OY! Dashboard and API.

Creating a payment link/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 link/invoice page for your customers
  2. Your customers make a payment through the payment link/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 Link Preview

Payment Link

1. Creating payment link/invoice page through dashboard

No integration needed

Offer your customers a seamless way to pay and complete payment channels without the need of an integration.

Choose between one-time link and reusable link

One-time link is a link that can only be paid once. Reusable link is a link that can receive multiple payments.

Parameter customization

Parameter Type Parameter Name Definition
Transaction-related Amount The payment amount that will be displayed in the payment link page
Transaction-related Description The description of the payment link. Usually this is used to describe the purpose of the payment link page
Transaction-related Partner Transaction ID A unique transaction ID that you can assign to a transaction
Transaction-related Balance Destination. The balance destination of the fund received from the transaction. Options: 1) "My Balance" (When your users make a successful payment, the transaction will be recorded in your balance/account statement, 2) "My Child's Balance" (When your users make a successful payment, the transaction will be recorded in the selected child's balance/account statement. This field only appears when your account has at least one or more active Child.
Customer Detail Customer details that can be specified (optional): Customer Name, Phone Number, Email, and Notes. We will send the payment link page link to the specified email address (if email address is filled in) Customer Name, Phone Number, Email, and Notes
Payment Link 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 Link 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 Link 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 Link 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.

UI customization

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

Payment Link Delivery by Email and/or WhatsApp

You can choose to send the created link to your users through Email and/or WhatsApp for better payment conversion. If you want to share the payment link to your customer's email, you can define the email parameter in our API. No need for you to send a separate email. If you want to share the payment link through WhatsApp, follow the steps here

Payment Success Notification for your Users

When your users make a successful payment, you can choose to send them a success receipt through Email

2. Creating payment link/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)

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

  3. Payment method (choose the payment methods displayed to your customers among Bank Transfer (via Virtual Account and Unique Code), 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.)

  4. Payment link expiration date

You can choose to send the created link to your users through Email and/or WhatsApp for better payment conversion. If you want to share the payment link to your customer's email, you can define the email parameter in our API. No need for you to send a separate email. If you want to share the payment link through WhatsApp, follow the steps here

When your users make a successful payment, you can choose to send them a success receipt through Email

Whether you send your user dashboard-generated link, or an API-generated encapsulated link, each of your distributed payment link 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 link 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 Link

Support Multi Account Management

With this feature, you will be able to accept payment from your users through Payment Link created on behalf of a child account. When your users make a successful transaction, the transaction will be recorded in the Child Account's balance. As a parent, you are equipped with the ability to view the Child Account's balance and transaction list anytime through Children → Children Statement.

Click here for more information on this feature.

For dashboard-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 start creating Payment Link transactions

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 Link API (https://api-docs.oyindonesia.com/#api-create-payment-checkout)

Creating dashboard-generated test links

One-time Link

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

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

Parameter Type Parameter Name Definition
Transaction-related Amount The payment amount that will be displayed in the payment link page
Transaction-related Description The description of the payment link. Usually this is used to describe the purpose of the payment link page
Transaction-related Partner Transaction ID A unique transaction ID that you can assign to a transaction
Transaction-related Balance Destination. The balance destination of the fund received from the transaction. Options: 1) "My Balance" (When your users make a successful payment, the transaction will be recorded in your balance/account statement, 2) "My Child's Balance" (When your users make a successful payment, the transaction will be recorded in the selected child's balance/account statement. This field only appears when your account has at least one or more active Child.
Customer Detail Customer details that can be specified (optional): Customer Name, Phone Number, Email, and Notes. We will send the payment link to the specified email address (if email address is filled in) Customer Name, Phone Number, Email, and Notes
Payment Link 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 Link 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 Link 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 Link 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 Link 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 Link

Payment Link

Payment Link

Reusable Link

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

Reusable Payment Link consists of 2 parameter types: Transaction-related and General Payment Link Configuration.

Parameter Type Parameter Name Definition
Transaction-related Amount The payment amount that will be displayed in the payment link page
Transaction-related Description The description of the payment link. Usually this is used to describe the purpose of the payment link page
Transaction-related Partner Transaction ID A unique transaction ID that you can assign to a transaction
Transaction-related Balance Destination. The balance destination of the fund received from the transaction. Options: 1) "My Balance" (When your users make a successful payment, the transaction will be recorded in your balance/account statement, 2) "My Child's Balance" (When your users make a successful payment, the transaction will be recorded in the selected child's balance/account statement. This field only appears when your account has at least one or more active Child.
Payment Link 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 Link 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 and Unique Code), Cards (Credit Card/Debit Card), E-Wallet (ShopeePay, DANA, LinkAja, OVO), and QRIS
Payment Link 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 Link 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. You can choose between "Custom" (where you can specify the expiration time as you wish) and "Lifetime" (where a link will last for a lifetime and have no expiration time). 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 Link 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.

Creating API-generated test links

  1. Create an account
  2. Send a request to activate API Payment Link product and obtain staging API Key to your business representative
  3. Create a payment link 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

Note: The link generated via API will always be a one-time link.

Accessing and monitoring the created test payment links

Whether you create the link through 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

Mock Credentials for Testing

Specifically for payment via Credit Card or Debit Card, you may use the below credentials to simulate an end-to-end payment joruney for a successful transaction in staging environment

Card Details Values
Card Number 2223000000000007
Card Expired Month/Year 01/39
Card CVN 100
Card Holder Name Testing

Simulate Credit Card / Debit Card Transaction Callback for Testing As an alternative to the above, if you would like to simulate the callback for Credit Card or Debit Card transaction, but not necessarily the end-to-end payment journey, you may manually send callback by following these steps:

  1. Log in to your OY! Dashboard
  2. Select Environment: Demo in the top left corner
  3. Make sure to have inputted your staging callback URL on Settings: 'Developer Options' (tab: Callback Configuration - Payment Link)
  4. Create a payment link in Demo environment
  5. Click on the link and proceed with Credit Card or Debit Card as your payment method
  6. Copy the Reference Number of the transaction - it should be available under "Transaction Details"
  7. Return to OY! Dashboard and click on the Settings: 'CC-DC Callback"
  8. Paste the Reference Number of the transaction and choose whether you would like to simulate a callback for successful transaction or a failed transaction
  9. Click "Send Callback". OY! will only send callback for a successful transaction whether in staging environment or production environment

One-time Link

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

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

Parameter Type Parameter Name Definition
Transaction-related Amount The payment amount that will be displayed in the payment link page
Transaction-related Description The description of the payment link. Usually this is used to describe the purpose of the payment link page
Transaction-related Partner Transaction ID A unique transaction ID that you can assign to a transaction
Transaction-related Balance Destination. The balance destination of the fund received from the transaction. Options: 1) "My Balance" (When your users make a successful payment, the transaction will be recorded in your balance/account statement, 2) "My Child's Balance" (When your users make a successful payment, the transaction will be recorded in the selected child's balance/account statement. This field only appears when your account has at least one or more active Child.
Customer Detail Customer details that can be specified (optional): Customer Name, Phone Number, Email, and Notes. We will send the payment link to the specified email address (if email address is filled in) Customer Name, Phone Number, Email, and Notes
Payment Link 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 Link 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 and Unique Code), Cards (Credit Card/Debit Card), E-Wallet (ShopeePay, DANA, LinkAja, OVO), and QRIS
Payment Link 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 Link 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. You can choose between "Custom" (where you can specify the expiration time as you wish) and "Lifetime" (where a link will last for a lifetime and have no expiration time). 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 Link 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 Link

Payment Link

Payment Link

Reusable Link

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

Reusable Payment Link consists of 2 parameter types: Transaction-related and General Payment Link Configuration.

Parameter Type Parameter Name Definition
Transaction-related Amount The payment amount that will be displayed in the payment link page
Transaction-related Description The description of the payment link. Usually this is used to describe the purpose of the payment link page
Transaction-related Partner Transaction ID A unique transaction ID that you can assign to a transaction
Transaction-related Balance Destination. The balance destination of the fund received from the transaction. Options: 1) "My Balance" (When your users make a successful payment, the transaction will be recorded in your balance/account statement, 2) "My Child's Balance" (When your users make a successful payment, the transaction will be recorded in the selected child's balance/account statement. This field only appears when your account has at least one or more active Child.
Payment Link 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 Link 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 and Unique Code), Cards (Credit Card/Debit Card), E-Wallet (ShopeePay, DANA, LinkAja, OVO), and QRIS
Payment Linkfiguration 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 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 Link 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 Link

Payment Link

Payment Link

One-time Link

All of the created links can be monitored through your dashboard (Payment Link List).

The transaction details that you can see are;

Column Name Definition
Date & Time Created The creation timestamp of a child transaction. The timestamp of a user selecting a payment method
Last Update The last update timestamp of a child reusable link. This usually denotes the timestamp of a status change for a child link.
Partner Tx ID The partner tx ID of a reusable link you just created
Balance Destination The destination of the fund received from a transaction. Options: 1) "My Balance" (When your users make a successful payment, the transaction will be recorded in your balance/account statement, 2) "My Child's Balance" (When your users make a successful payment, the transaction will be recorded in the selected child's balance/account statement. This field only appears when your account has at least one or more active Child.
Child Username The username of the child (this will only be filled in when Balance Destination = "Child's Balance"
Amount Billed The amount billed for that particular transaction
Admin Fee The admin fee charged for that particular transaction
Amount Received The amount received / the amount of payment made by the user. This will only be filled in if the user has completed the payment.
Payment method used The payment method that your user uses to pay the transaction. This will only be filled in if the user has completed the payment
Transaction Due Date The due date of a transaction.
Days Past Due How many days a link has gone past the transaction due date. For example, if today’s date is 1 Dec and transaction due date is 30 Nov, the days past due will be 1
Customer Name The name of your user/customer
Customer Phone Number The phone number of your user/customer
Customer Notes The transaction notes written by your user/customer
Status The transaction status. Possible values are WAITING PAYMENT, FAILED, CHARGE IN PROGRESS, EXPIRED, AND COMPLETE

Payment Link

Reusable Link

After you successfully create a reusable link, it will become a "Parent" link. The Parent link will appear in the "Created Reusable Link" tab. There, you will see the details of a reusable link you just created.

Column Name Definition
Last Update The last update timestamp of a parent reusable link. This usually denotes the timestamp of a status change for a parent link.
Partner Tx ID The partner tx ID of a reusable link you just created
Balance Destination The destination of the fund received from a transaction. Options: 1) "My Balance" (When your users make a successful payment, the transaction will be recorded in your balance/account statement, 2) "My Child's Balance" (When your users make a successful payment, the transaction will be recorded in the selected child's balance/account statement. This field only appears when your account has at least one or more active Child.
Child Username The username of the child (this will only be filled in when Balance Destination = "Child's Balance"
Amount Billed The billed amount per individual transaction (not a cumulative amount). For example, if the amount is set at Rp 10,000 for a reusable parent link, the amount billed will be filled in with Rp 10,000
Admin Fee The cumulative admin fee received for a particular parent reusable link. If a parent reusable link has peen paid twice, with admin fee Rp 500 each, the admin fee will be filled in with Rp 500 x 2 = Rp 1,000
Amount Received The cumulative admin fee received for a particular parent reusable link. If a parent reusable link has peen paid twice, with admin fee Rp 500 each, the admin fee will be filled in with Rp 500 x 2 = Rp 1,000
Count of Complete Tx The count of completed transactions under a parent reusable link
Payment link expiration date The date after which a parent reusable link can no longer receive a transaction.
Status The status of a parent reusable link. Possible status: OPEN FOR PAYMENT (means the link can still receive payments) and EXPIRED (status will be changed to EXPIRED when the payment link has exceeded the expiration date). When status is set as EXPIRED, the payment link can no longer receive a transaction
Action The possible actions that you can take on a link: Copy URL, Visit URL, Delete, and Resend Callback

Payment Link

When you click the hyperlink in the Partner Tx ID, you will be redirected to a page where you can see the transaction details corresponding to that Parent Reusable Link.

Payment Link

The transaction list displayed is the transaction that is linked to a Parent Reusable Link

The transaction details that you can see are;

Column Name Definition
Date & Time Created The creation timestamp of a child transaction. The timestamp of a user selecting a payment method
Last Update The last update timestamp of a child reusable link. This usually denotes the timestamp of a status change for a child link.
Partner Tx ID The partner tx ID of a reusable link you just created
Balance Destination The destination of the fund received from a transaction. Options: 1) "My Balance" (When your users make a successful payment, the transaction will be recorded in your balance/account statement, 2) "My Child's Balance" (When your users make a successful payment, the transaction will be recorded in the selected child's balance/account statement. This field only appears when your account has at least one or more active Child.
Child Username The username of the child (this will only be filled in when Balance Destination = "Child's Balance"
Amount Billed The amount billed for that particular transaction
Admin Fee The admin fee charged for that particular transaction
Amount Received The amount received / the amount of payment made by the user. This will only be filled in if the user has completed the payment.
Payment method used The payment method that your user uses to pay the transaction. This will only be filled in if the user has completed the payment
Transaction Due Date The due date of a transaction.
Days Past Due How many days a link has gone past the transaction due date. For example, if today’s date is 1 Dec and transaction due date is 30 Nov, the days past due will be 1
Customer Name The name of your user/customer
Customer Phone Number The phone number of your user/customer
Customer Notes The transaction notes written by your user/customer
Status The transaction status. Possible values are WAITING PAYMENT, FAILED, CHARGE IN PROGRESS, EXPIRED, AND COMPLETE
Action The possible actions that you can take on a link: Copy URL, Visit URL, Delete, and Resend Callback

When your user has opened the parent reusable link and selected a payment method, it will become a "child reusable link" and generate a child transaction ID. The child transaction ID will appear in the "List of All Transactions" tab

The details that you can see are;

Column Name Definition
Date & Time Created The creation timestamp of a child transaction. The timestamp of a user selecting a payment method
Last Update The last update timestamp of a child reusable link. This usually denotes the timestamp of a status change for a child link.
Partner Tx ID The partner tx ID of a reusable link you just created
Balance Destination The destination of the fund received from a transaction. Options: 1) "My Balance" (When your users make a successful payment, the transaction will be recorded in your balance/account statement, 2) "My Child's Balance" (When your users make a successful payment, the transaction will be recorded in the selected child's balance/account statement. This field only appears when your account has at least one or more active Child.
Child Username The username of the child (this will only be filled in when Balance Destination = "Child's Balance"
Amount Billed The amount billed for that particular transaction
Admin Fee The admin fee charged for that particular transaction
Amount Received The amount received / the amount of payment made by the user. This will only be filled in if the user has completed the payment.
Payment method used The payment method that your user uses to pay the transaction. This will only be filled in if the user has completed the payment
Customer Name The name of your user/customer
Customer Phone Number The phone number of your user/customer
Customer Notes The transaction notes written by your user/customer
Status The transaction status. Possible values are WAITING PAYMENT, FAILED, CHARGE IN PROGRESS, EXPIRED, AND COMPLETE
Action The possible actions that you can take on a link: Copy URL, Visit URL, Delete, and Resend Callback

Payment Link

  1. Log on your OY! dashboard
  2. Choose "Production" environment
  3. Click "Create Invoice" under Account Receivable menu
  4. Click "Create New Invoice"
  5. Fill in the necessary details
Parameter Description
Invoice Number The number of the invoice to be created
Invoice Date The date of the invoice
Due Date Due date of a transaction. You can choose between 7, 14, 30, 45, or 60 days after created date of the invoice OR you can also input a specific/custom date. Your customer will get reminders to pay on D-1, D-Day, and D+7 from the transaction due date.
Link Expiry Datetime You can now set your link expiry date and time for your conveniences. The expiry time selected will also appear on PDF documents.
Customer The name of the customer that the invoice is addressed to. You can choose the name of the customer from the dropdown. To create a new customer, follow the instruction here.
Product Description The name and/or description of the product
Quantity The quantity of the product
Unit price Unit price of the product
Amount Total amount for the product
Notes The note to be displayed in the automatically generated invoice file
Additional Documents The supporting documents that will be attached in the email along with the invoice. Accept PDF & Excel files. Maximum of 4 documents (maximum 5MB each).
Invoice Payment You can choose between "Payment Link" (the invoice will be embedded with a payment link that the customer can use to make a payment on) or "Invoice Only" (the invoice will not be embedded with a payment link). For "Invoice Only", invoice status can be adjusted at any time for record purposes.
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 and Unique Code), 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)

All of the created invoices (via API or Dashboard) can be monitored through your dashboard (Invoice List).

Invoice

The transaction details that you can see are:

Column Name Definition
Invoice Number The number of the invoice created
Customer Name The name of the customer whom the invoice belongs to
Amount Billed The amount billed for that particular transaction
Admin Fee The admin fee charged for that particular transaction
Amount Received The amount received / the amount of payment made by the user. This will only be filled in after the user has completed the payment.
Invoice Date The date of the invoice.
Payment Date The date of payment (if the invoice has been successfully paid by the customer)
Due Date The invoice due date
Days Past Due How many days an invoice has gone unpaid past the due date. For example, if due date is 1 July and the invoice is not paid by 4 July, then Days Past Due will be filled in with 3
Payment Link Expiry Maximum date and time that a payment link can stay valid for before expiring permanently
Status The transaction status. Possible values are CREATED, PAID, CANCELLED, and OVERDUE

In terms of status, below are the status mapping between API Invoice and status in dashboard

API Invoice Status Dashboard status
CREATED, WAITING PAYMENT, FAILED UNPAID
COMPLETE PAID
EXPIRED CANCELLED
OVERDUE Late Payment Tab

There are several actions that you can take for the created invoice:

Action Definition
Send invoice To send the invoice to the customer's defined email
Download invoice To download the PDF file of the invoice
Delete To delete the invoice. Only invoice with status CREATED can be deleted

There are 2 ways to create a Customer:

Option 1: Through "Create Invoice" menu

Invoice

  1. Click dropdown of the "Customer"
  2. Click "Add new customer"
  3. Fill in Customer ID, Customer Name (mandatory), PIC Name, Customer Phone Number, Tax Type (mandatory), Customer Email, Address.
  4. Click save

For Tax Type, the explanation is as follows:

Tax Type Definition
No tax Tax will not be added to the subtotal
PPN 10% Inclusive Tax will not be added upon the subtotal because the subtotal is assumed to be tax inclusive. 10% is applicable for older than April 2022 transaction
PPN 10% Exclusive Tax will be added separately to the subtotal. 10% is applicable for older than April 2022 transaction
PPN 11% Inclusive Tax will not be added upon the subtotal because the subtotal is assumed to be tax inclusive
PPN 11% Exclusive Tax will be added separately to the subtotal.
PPh23 Non NPWP 4% Tax will be substracted from the subtotal
PPh 23 NPWP 2% Tax will be substracted from the subtotal

Option 2: Through "Customer Management" menu

Invoice

Invoice

  1. Click "Customer Management" sidebar under the "Receive Money" menu
  2. Click "Add new customer"
  3. Fill in Customer ID, Customer Name (mandatory), PIC Name, Customer Phone Number, Tax Type (mandatory), Customer Email, Address.
  4. Click "Save"

Invoice

All of the created customer can be monitored through your dashboard (Customer List). There are several actions that you take for the customer data:

  1. Edit --> To edit the data of the customer

  2. Activate/Deactivate --> To deactivate / reactivate the customer

If you click on the row you selected, you will be able to see the detailed data of the customer, including the list of invoices belonging to that customer.

Invoice

OY! has a feature that allows you to add the price of the subtotal (addition) and/or deduct the price from subtotal. The step is as follows:

Invoice

  1. Click "add column" below the subtotal
  2. Choose "addition" or "substraction" from the dropdown
  3. Fill in the description
  4. Fill in the amount

Invoice

OY! provides 3 different payment link endpoints depending on your requirements and needs. We provide payment link, invoicing, and recurring invoice.

Send us instructions to generate a payment 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 link 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 link 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 Link via Link, you can access all your payment links and its details from the OY! dashboard. This report will include all payment links generated both via Link and API.

Payment Link

With Pop!, displaying our payment link page on your front-end web environment is now made easier than ever. Our payment link 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 link 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 Link & Account Receivable in the Dashboard, where you can do the following things;

The updated logo will be reflected in both products.

How to customize the UI via Payment Link or Account Receivable

Payment Link

Account Receivable

Payment Link

Payment Link

Note:

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 Link

For more personalized touch on the invoice, you can now customize your template look in the Dashboard, where you can do the following things;

How to customize the Account Receivable Invoice UI:

  1. Log onto business.oyindonesia.com
  2. Go to Account Receivable section in the dashboard
  3. Click the 'Settings" icon located at the top right next to “Create New Invoice” button
  4. Click Open Configuration for “Invoice Template”
  5. Input the URL of your logo. Changing the logo here will automatically update the logo in Payment Link, Invoice and Email Notifications.
  6. Select your color theme (you can select from our available color picker tools or you can input the 6 digit #HEX code). This color will be the main theme color in your invoice.
  7. Select your template from our template selections. Changes will be reflected immediately in the preview area
  8. Click “Save”

Account Receivable

Account Receivable

For your convenience, you have the option to auto-generate invoice numbers. No more worrying about the sequence of invoice numbers. The invoice number template has been pre-defined by OY!.

  1. Log onto business.oyindonesia.com
  2. Go to Payment Link or Account Receivable section in the dashboard
  3. Click the 'Settings" icon located at the top right next to “Create New Invoice” button
  4. Turn the toggle on. You can now adjust the automatic invoice number format
  5. Click “Save” to continue

This update will not impact your existing invoices

Account Receivable

For better payment conversion, you can send the created link to your users through WhatsApp. The message template is pre-defined by OY. Contact our Business Representative if you'd like to activate this feature.

The flow will be as follows:

WhatsApp Flow

Click here for more information on API Send WhatsApp

For your convenience, you can now distribute invoice to your users through WhatsApp using default message template. Please kindly contact OY! team if you are interested in using this feature

There will be 3 different ways to distribute the invoice via Whatsapp and there is a maximum of one Whatsapp message per unpaid invoice. When the status is paid, users will get a payment confirmation from Whatsapp too.

Bank (Virtual Account) Capability (Open Amount/Closed Amount)
BNI Closed Amount
Bank Mandiri Open Amount, Closed Amount
BRI Open Amount, Closed Amount
BCA Open Amount, Closed Amount
Bank Permata / Permata Syariah Open Amount, Closed Amount
CIMB Niaga / CIMB Niaga Syariah Open Amount, Closed Amount
BTPN Open Amount, Closed Amount
KEB Hana Open Amount, Closed Amount
Maybank Open Amount, Closed Amount
Bank Danamon Open Amount, Closed Amount
Bank Syariah Indonesia (BSI) Closed Amount

API E-Wallet Aggregator

E-Wallet API allows clients 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 - We support ShopeePay, LinkAja, DANA, and OVO
  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

When you hit Create E-Wallet Transaction endpoint (https://api-docs.oyindonesia.com/#https-request-create-e-wallet-transaction), it will always return the same ewallet_url & success_redirect URL in the response: https://pay-dev.shareitpay.in/aggregate-pay-gate. You cannot simulate payment by clicking this URL.

In order to be able to simulate payment (change the transaction status into Complete), follow the steps below: (Note: the process of simulating payment in Staging environment doesn't involve any forward / redirection to the E-Wallet apps, the scope is just changing the transaction status into Complete.)

  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/#api-e-wallet-aggregator)
  4. After an E-Wallet transaction is generated, you 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 Refund Feature
OVO ovo_ewallet Parameter is ignored, always set to 55 seconds Parameter is ignored, always set to 55 seconds Not supported Not supported
ShopeePay shopeepay_ewallet 1 minute 60 minutes Support Full
Linkaja linkaja_ewallet Parameter is ignored, always set to 5 minutes Parameter is ignored, always set to 5 minutes Support Full
DANA dana_ewallet 1 minute 60 minutes Support Full, Partial

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. It allows end-to-end process from accepting fund to disburse fund in one flow.

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.

Through API Payment Routing you may create Payment Link transactions and/or receive money via Bank Transfer (via Virtual Account & Unique Code), E-Wallet (One Time & Direct), QRIS, and Cards.

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 Payment Link, Bank Transfer, E-Wallet, and QRIS to receive money - You can choose Bank Transfer (via Virtual Account & Unique Code), E-Wallet (One Time & Direct), Cards, or QRIS as a payment method to receive the money. We provide all banks offered in VA Aggregator for Virtual Accounts, BCA for Unique Code, ShopeePay, DANA, LinkAja as payment method for E-Wallet, and Visa/Mastercard for Cards. However, you don't need to worry if you don't have your own UI. You can use our Payment Link to help your customers to complete the payments.
  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, once we have succesfully receive money and once we have successfully disburse money.

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 Bank Transfer (Virtual Account and Unique Code), Ewallet, CC/DC 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 Bank Transfer (via Virtual Account or Unique Code) as the payment method, you can simulate the payment through your dashboard (in Staging environment) by going to Settings, and choose "Bank Transfer Callback". Bank Transfer Callback
  5. If you use Ewallet as the payment method, you can simulate the payment through your dashboard (in Demo environment) by going to Settings, and choose "Ewallet Callback".
  6. If you use CC/DC as the payment method, you can simulate the payment through your dashboard (in Demo environment) by going to Settings, and choose "CC/DC Callback".
  7. If you use Payment Link as the payment method, you can open the link and simulate payment from there as an alternative.
  8. If payment is successful, we will send a callback to the registered staging callback URL destination.
  9. You can monitor Payment Routing transaction through OY! Dashboard or call the endpoint API. Go to “Payment Routing” menu to monitor your transactions.

Understanding Cards Transaction

How to Activate

If you need to accept payments from your end-users via debit and/or credit cards, you may contact your Business Representative for more information and assistance on the activation process.

Products Available

You may receive credit and/or debit card payments via Payment Link or Payment Routing.

Supported Networks

We currently support Mastercard, Visa, and JCB transactions. To protect you and your end-users from fraudulent payment attempts, all transactions will be processed with 3D Secure (i.e. 3DS).

Payments via Cards

To increase the chance of successful transaction, please ensure that your end-users:

  1. Have sufficient balance or credit limit for the transaction

  2. Have enabled 3D Secure (3DS) as a way to authenticate the transaction

Understanding Overseas Transactions

Your end-users may use credit and/or debit cards issued locally or internationally. If you plan to conduct overseas transactions, it is important to note that OY! can only create the transactions in IDR. This means that your end-users can still use their overseas cards for payment, however the card will still be charged in IDR and settlement will also be done in IDR. The cardholder's billing statement, however, will show the transaction amount in their local currency with foreign exchange rate & extra fees (if any) as applied by their issuer (i.e. the bank or entity that issues the card).

Some cards issuer might not allow overseas transactions. Therefore, it is recommended for your end-users to check with their issuing bank regarding country restrictions to reduce the chance of the transaction being declined by the issuer.

Transactions Declined By Issuer

When a transaction attempt is submitted to your end-user’s issuer (i.e. the bank or entity that issues the card), they usually have an automated system and parameters that help them in deciding whether or not to authorize the transaction. The parameters may include, but not limited to, behavior from past transactions, card details such as expiration date and CVV, and availability of funds.

If all of the card details seem correct, the funds are available and 3DS has been enabled for the card, it is possible that the transaction is declined by the issuer. Unfortunately, sometimes the decline reason provided by the issuer is too “generic”. If that’s the case, you may ask your end-users to either use alternative cards or payment methods or to contact their issuer directly for more information on the decline reason. Due to privacy & security concerns, issuers can only discuss the specific reason why a transaction is declined to the respective cardholder. This means that issuer will most likely not entertain decline explanation requests via OY!.

Feature: Resend Callback

Key Features

Retry Callback allows you to resend a callback for your successful transaction to your system. Initially, OY! will send a callback to your system after your transaction status has been converted to success. If your system failed to receive the callback, this feature can help you to retry the callback process. The process can be done in two ways

  1. Automated retry callback If on the first try the callback is not successfully received, the system will automatically retry the callback delivery. If that callback still not received by the clients' system, the system will automatically retry until 5 occurence. The interval of the sending process will be detailed in Callback Interval section. If all automated Retry Callback have been sent but still returned failed, system will send email notification to email address that has been set in the configuration.

  2. Manual retry callback Beside the automated process, you can manually request a callback.

Registration and Set Up

Follow the instruction below to activate retry callback

  1. Login to your account in OY! Dashboard
  2. Open “Settings” and choose “Developer Option”. Choose “Callback Configuration”
  3. Fill your callback URL in the related product that you want to activate. Make sure the format is right. You can click URL String Validation button to validate the URL format.
  4. If you want to activate automated retry callback, check the Enable Automatic Retry Callback and fill in the email. The email will be used to receive a notification if all the automatic callback attempts have been made but still fail
  5. Click "Save Changes". The configuration will not able to be saved if the callback URL or/and email format are not valid.

Resend Callback

Don't forget to whitelist these IPs in order to be able to receive callback from OY: 54.151.191.85 and 54.179.86.72

If you want to manually resend a callback, you can follow the instruction below

  1. Login to your account in OY! Dashboard
  2. Open the desired product menu

Payment Link: open "Payment Link" and choose "One Time"/"Reusable" VA Aggregator: open "Virtual Account" menu and choose "Incoming Payment" Ewallet Aggregator: open "E-Wallet" menu

  1. If the product is VA Aggregator or Ewallet Aggregator, click "Resend Callback" button in the related transaction
  2. If the product product is Payment Link, click 3 dots in the related transaction and click "Resend Callback"

Resend Callback

Resend Callback

Resend Callback

Resend Callback

Callback Interval

1st retry: realtime (after the first failed log received) 2nd retry: 1 min (after callback failed log for the 1st retry is received) 3rd retry: 2 mins (after callback failed log for the 2nd retry is received) 4th retry: 13 mins (after callback failed log for the 3rd retry is received) 5th retry: 47 mins (after callback failed log for the 4th retry is received)

If all automated Retry Callback (all the 5 attempts) has been sent but we still get a Failed response from your end, our system will send an automated email notification to the email address that has been set in the configuration earlier

Idempotency Key

To implement automated retry callback, you need to handle the idempotency logic in your system using the below key:

Payment Link - Invoice: tx_ref_number VA: trx_id Ewallet: trx_id OR ref_number

Feature: Refund E-wallet

Key Features

Refund features allow you to refund a successful e-wallet transaction to your end-users. A refund can either be full or partial. A full refund will give your end-users or payers their entire payment amount back (100%). A partial refund will return up to the total amount paid to your end-users or payers. These requirements must be met in order for a refund transaction to be issued:

  1. Refunds can only be issued up to 7 days after transaction is success/complete.
  2. You have enough balance that allows us to deduct the amount of the transaction that should be refunded.
  3. A refund can only be issued once, whether it is a full or partial refund.
E-Wallet Issuer Refund Feature
OVO Not supported
ShopeePay Full
Linkaja Full
DANA Full, Partial

How to Use

  1. Log in to your OY! Business dashboard with your username and password that you registered with.
  2. Click on the product page you desired.
    • Payment Link : Click “Payment Link” and choose “One Time”/“Reusable”
    • VA Aggregator : Click “Virtual Account” and choose “Incoming Payment”
    • Payment Routing ; Click “Payment Routing”
  3. You can see a transaction that should be refunded
  4. On “Action” column, you can click the the three-dots button and click “Refund E-Wallet”. Refund E-wallet
  5. If you try to trigger refund after the time limit or outside operational hours, an error modal will show up and you can not continue the refund process. Refund E-wallet
  6. You can fill the amount of refund, only for partial refund. Refund E-wallet
  7. Make sure that you have enough balance to issue a refund. If you do not have enough balance, an error message will show up. You can top up your balance via “Top Up” feature. Refund E-wallet
  8. The transaction will change to “Refunded” if the refund is successful. You can not trigger another refund after the refund is successful. The refund button will be disabled.
  9. You can see the refunded transaction in “Account Statement” page by clicking “Transaction Report” and “Account Statement”. Refund E-wallet

Feature: Account Linking

Overview Account Linking is a feature that allows your customer's bank/e-wallet account to be linked to your system using tokenization. By setting up account linking up front, your customer can later complete payments without being prompted for any card details or e-wallet phone number. Currently, our account linking feature is supported in E-Wallet (DANA & ShopeePay).

Account linking feature is free of charge.

Key Features

1. Account Linking

Link your customer's bank/e-wallet account to your system using tokenization.

2. Account Unlinking

Unlink your customer's bank/e-wallet account from your system.

3. Get E-wallet Balance

By using account linking, your users can now see their e-wallet balance on before checking out a payment.

Account Linking Flow

  1. You hit OY! API Account Linking for a particular payment method (e.g., DANA).

  2. OY! returns redirect URL for authentication.

  3. Your customer authorizes the account linking by signing the agreement page and inserting a PIN.

  4. OY! returns account linking result. If success, OY! will save the authorization as a token and redirect your customer to your success page URL.

Account Unlinking Flow

Account Unlinking can be done in several ways:

You can hit OY! API Unlinking to unlink your customer's bank/e-wallet account

  1. You hit OY! API Account Unlinking for a particular payment method (e.g., DANA).

  2. OY! returns account unlinking result. If success, OY! will invalidate the token.

Your customer can unlink their account via their m-Banking/E-Wallet application.

If your customer's account is deleted/blocked, then their account is automatically unlinked.

Payment Method Supported

Currently, Account Linking is only supported on e-wallet payment method. Each payment method have different expiry time and process to renew token.

E-Wallet Issuer Token Expiry Time Token Renewal
DANA 10 Years After Expiry Time
ShopeePay 5 Years After Expiry Time
Linkaja Not supported -
OVO Not supported -

For DANA: If your customer's DANA account is frozen, then their account is temporarily unlinked. Once the account is unfrozen and the token has not expired, their account is automatically linked again.

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 Link and Invoice products be readily available for disbursement uses?

Yes. The funds accepted from the API VA Aggregator and Payment Link 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 11 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.

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 Links?

A closed amount is a configuration so that the payment link 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 link 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 link will remain active. The payment link will only reflect a completed status when the full amount is paid in total.

What is the difference between Bank Transfer via Virtual Account and Bank Transfer via Unique Code? Bank Transfer via Virtual Account (VA) will generate specific account number destination for each transaction. You can create an open amount or closed amount transaction using VA. Detail explanation of VA can be seen here. You can create VA Transactions via API Payment Routing or VA Aggregator

Bank Transfer via Unique Code generates unique code for each transaction but the account number destination will always be the same. The total amount paid is subtracted by the unique code. For example, your end user wants to paid a transaction of Rp 100.000 and get Rp 100 as the unique code. The payment uses subtraction approach, so your end user will pay a total of Rp 99.900 to complete the payments. Unique Code also have limitations compared to VA, where you can only create unique code transaction during the operational hours (3 AM - 8.30 PM GMT+7).

Payment Routing

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

What is the difference between Bank Transfer via Virtual Account and Bank Transfer via Unique Code? Bank Transfer via Virtual Account (VA) will generate specific account number destination for each transaction. You can create an open amount or closed amount transaction using VA. Detail explanation of VA can be seen here. You can create VA Transactions via API Payment Routing or VA Aggregator

Bank Transfer via Unique Code generates unique code for each transaction but the account number destination will always be the same. The total amount paid is subtracted by the unique code. For example, your end user wants to paid a transaction of Rp 100.000 and get Rp 100 as the unique code. The payment uses subtraction approach, so your end user will pay a total of Rp 99.900 to complete the payments. Unique Code also have limitations compared to VA, where you can only create unique code transaction during the operational hours (3 AM - 8.30 PM GMT+7). You can create Unique Code Transaction via API Payment Routing or Payment Link

What are the differences between E-Wallet One Time Payment and E-Wallet Direct Payment? E-Wallet One Time creates a payment URL that can be paid by any guest users. Once payment URL is opened, your end user's is redirected to the E-Wallet app and completes the payment inside the E-Wallet's app.

E-Wallet Direct creates a payment URL dedicated to a particular user. The end user needs to link their E-Wallet account first by doing Account Linking. Once the end user has linked their account to your app, you can initiate a Direct payment. OY will return an authorization URL for the end users to input the E-Wallet PIN and complete the payment. Using Direct payment, your end users will complete the transaction inside your app. Therefore, it will bring a better experinence for your end users.

One Time Direct
Supported E-Wallets ShopeePay, LinkAja, DANA, OVO ShopeePay
Need to do Account Linking first? No Yes
Can be created via.. API Payment Routing
Payment Link
API E-Wallet Aggregator
API Payment Routing
Send phone number in API Create Request Optional Mandatory
Who can complete the transaction? Any Users/Guest Dedicated User.
Only the user whose phone number listed in the API request
Payment Completion Journey Inside E-Wallet App Your app