NAV Navbar
Logo
PHP Shell

Introduction

Welcome to Flip for Business API Documentation. Flip will help you in doing and managing your business transaction, so you can focus on creating a better product.

Currently, we have API endpoints from two different versions (V2 and V3). There are endpoints that exclusively exist in V2 or V3. On the body of the endpoints we have incorporated information about which version does the API endpoint belong to. This is done to help you avoid using incompatible URL base, because each version has their own product environment.

Request Introduction

In V3, we add new features that enhance transaction security by using Idempotency Key and allow you to notify the beneficiaries of your transactions via email. We also add new endpoints to get transactions by Idempotency Key and ID so it is easier for you to navigate your transactions.

This documentation will be updated every time there is a change or if there is a new endpoint introduced. Every change will be documented in the changelog section.

We try to make this API and documentation to be as easy as possible and pleasing for the developer trying to implement this API. So if you have a suggestion or correction, feel free to send us an email at [email protected].

General Explanation

To know if the request is success or failed, you can see the HTTP Status Code on each response.

Every request should be sent as application/x-www-form-urlencoded unless told differently. The body of the request must be sent as post data (e.g attribute=value&attribute2=value2&attribute3=value3).

422 status code is used to indicate the mistake from your side. The common response for this status code is like on the right side:

{
  "code": [outer_code],
  "errors": [
    {
      "attribute": "[attribute]",
      "code": [inner_code],
      "message": "[message]"
    }
  ]
}

Possible value for outer_code is:

Possible value for inner_code is all the code listed in respective products’ Error List section:

Destination Bank

Find the list of bank codes below for the supported destination banks and e-Wallets. Currently, we support transfer to 100+ banks in Indonesia including Virtual Account/VA (BNI, BRI, CIMB, Mandiri, Danamon, Muamalat, and Permata) and e-Wallets.

Bank

Bank Code Bank Name
harda Allo Bank/Bank Harda Internasional
anz ANZ Indonesia
aceh Bank Aceh Syariah
aladin Bank Aladin Syariah
amar Bank Amar Indonesia
antardaerah Bank Antardaerah
artha Bank Artha Graha Internasional
bengkulu Bank Bengkulu
daerah_istimewa Bank BPD DIY
daerah_istimewa_syr Bank BPD DIY Syariah
btpn_syr Bank BTPN Syariah
bukopin_syr Bank Bukopin Syariah
bumi_arta Bank Bumi Arta
capital Bank Capital Indonesia
bca Bank Central Asia
ccb Bank China Construction Bank Indonesia
cnb Bank CNB (Centratama Nasional Bank)
danamon Bank Danamon & Danamon Syariah
dinar Bank Dinar Indonesia
dki Bank DKI
dki_syr Bank DKI Syariah
ganesha Bank Ganesha
agris Bank IBK Indonesia
ina_perdana Bank Ina Perdana
index_selindo Bank Index Selindo
artos_syr Bank Jago Syariah
jambi Bank Jambi
jambi_syr Bank Jambi Syariah
jasa_jakarta Bank Jasa Jakarta
jawa_tengah Bank Jateng
jawa_tengah_syr Bank Jateng Syariah
jawa_timur Bank Jatim
jawa_timur_syr Bank Jatim Syariah
kalimantan_barat Bank Kalbar
kalimantan_barat_syr Bank Kalbar Syariah
kalimantan_selatan Bank Kalsel
kalimantan_selatan_syr Bank Kalsel Syariah
kalimantan_tengah Bank Kalteng
kalimantan_timur_syr Bank Kaltim Syariah
kalimantan_timur Bank Kaltimtara
lampung Bank Lampung
maluku Bank Maluku
mandiri Bank Mandiri
mantap Bank MANTAP (Mandiri Taspen)
maspion Bank Maspion Indonesia
mayapada Bank Mayapada
mayora Bank Mayora Indonesia
mega Bank Mega
mega_syr Bank Mega Syariah
mestika_dharma Bank Mestika Dharma
mizuho Bank Mizuho Indonesia
mas Bank Multi Arta Sentosa (Bank MAS)
mutiara Bank Mutiara
sumatera_barat Bank Nagari
sumatera_barat_syr Bank Nagari Syariah
nusa_tenggara_barat Bank NTB Syariah
nusa_tenggara_timur Bank NTT
nusantara_parahyangan Bank Nusantara Parahyangan
ocbc Bank OCBC NISP
ocbc_syr Bank OCBC NISP Syariah
america_na Bank of America NA
boc Bank of China (Hong Kong) Limited
india Bank of India Indonesia
tokyo Bank of Tokyo Mitsubishi UFJ
papua Bank Papua
prima Bank Prima Master
bri Bank Rakyat Indonesia
riau_dan_kepri Bank Riau Kepri
sahabat_sampoerna Bank Sahabat Sampoerna
shinhan Bank Shinhan Indonesia
sinarmas Bank Sinarmas
sinarmas_syr Bank Sinarmas Syariah
sulselbar Bank Sulselbar
sulselbar_syr Bank Sulselbar Syariah
sulawesi Bank Sulteng
sulawesi_tenggara Bank Sultra
sulut Bank SulutGo
sumsel_dan_babel Bank Sumsel Babel
sumsel_dan_babel_syr Bank Sumsel Babel Syariah
sumut Bank Sumut
sumut_syr Bank Sumut Syariah
resona_perdania Bank Resona Perdania
victoria_internasional Bank Victoria International
victoria_syr Bank Victoria Syariah
woori Bank Woori Saudara
bca_syr BCA (Bank Central Asia) Syariah
bjb BJB
bjb_syr BJB Syariah
royal Blu/BCA Digital
bni BNI (Bank Negara Indonesia)
bnp_paribas BNP Paribas Indonesia
bali BPD Bali
banten BPD Banten
eka BPR EKA (Bank Eka)
agroniaga BRI Agroniaga
bsm BSI (Bank Syariah Indonesia)
btn BTN
btn_syr BTN Syariah
tabungan_pensiunan_nasional BTPN
cimb CIMB Niaga & CIMB Niaga Syariah
citibank Citibank
commonwealth Commonwealth Bank
chinatrust CTBC (Chinatrust) Indonesia
dbs DBS Indonesia
hsbc HSBC Indonesia
icbc ICBC Indonesia
artos Jago/Artos
hana LINE Bank/KEB Hana
bii Maybank Indonesia
bii_syr Maybank Syariah
mnc_internasional Motion/MNC Bank
muamalat Muamalat
yudha_bakti Neo Commerce/Yudha Bhakti
nationalnobu Nobu (Nationalnobu) Bank
panin Panin Bank
panin_syr Panin Dubai Syariah
permata Permata
permata_syr Permata Syariah
qnb_kesawan QNB Indonesia
rabobank Rabobank International Indonesia
sbi_indonesia SBI Indonesia
kesejahteraan_ekonomi Seabank/Bank BKE
standard_chartered Standard Chartered Bank
super_bank Superbank
uob TMRW/UOB
bukopin Wokee/Bukopin

e-Wallet

e-Wallet Code e-Wallet Name
dana Dana
gopay GoPay
linkaja LinkAja
ovo OVO
shopeepay ShopeePay

Authentication

<?php
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

$curl = curl_init();
curl_setopt($curl, CURLOPT_USERPWD, $secret_key.":");
<?php
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";
$encoded_auth = base64_encode($secret_key.":");

$curl = curl_init();
curl_setopt($curl, CURLOPT_HTTPHEADER, ["Authorization: Basic ".$encoded_auth]);
curl --user <wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd>: https://bigflip.id/api/v2/disbursement

We are using Basic Authentication by including Authorization header in each of your request. Value of the header is the provided Secret Key from your Flip for Business dashboard. You should include your secret key like a usual basic auth request, and use the secret key as the username:

Authorization: Basic [base64encode(<secret_key>+":")]

You can also see another example of how to include the secret key on the right column.

Signature

Signature is used to secure your request API, to avoid attackers change your payload. Signature is optional, by default it is disabled. Signature only for API that related to Disbursement.


<?php
// Generate public key and private key pair.
$key_pair = openssl_pkey_new(array(
            'private_key_bits' => 2048,
            'private_key_type' => OPENSSL_KEYTYPE_RSA,
        ));
$details = openssl_pkey_get_details($key_pair);
$public_key = $details['key'];

$private_key = '';
openssl_pkey_export($key_pair, $private_key);

// check/print your public key and private key pair.
echo $public_key;
echo $private_key;
openssl genrsa -out private.pem 2048
openssl rsa -in private.pem -out public.pem -outform PEM -pubout

cat private.pem
cat public.pem

If you want to enable a signature, please do the following steps:

  1. Generate public key and private key pair. Use algorithm OPENSSL_KEYTYPE_RSA 2048 bits.
  2. Send the public key to flip.id and inform when you ready to request with signature.
  3. Every request for API Disbursement, add header X-Signature. Generate signature with your private key, the input data is your parameter POST & GET request encoded in string, all data type should be a string. Signature use algorithm sha256WithRSAEncryption and encode with base64.

Big Flip Signature

<?php
$payloads = [
    "account_number" => "0437051936",
    "bank_code" => "bni",
    "amount" => "10000",
    "remark" => "testing",
    "recipient_city" => "391"
];
$private_key = "YOUR_PRIVATE_KEY";
$payload_str = json_encode($payloads);
openssl_sign($payload_str, $signature, $private_key, "sha256WithRSAEncryption");
$signature = base64_encode($signature);

// Add header in your disbursement request
$headers = [
    "Content-Type: application/x-www-form-urlencoded",
    "X-Signature: ".$signature
]
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
# Assume data is file that contain your string payload
# Example: '{"account_number":"0437051936","bank_code":"bni","amount":"10000","remark":"testing","recipient_city":"391"}'

openssl dgst -sha256 -sign private.pem -out data.signed data
openssl base64 -in data.signed -out data.signed.b64

# Generated signature in file data.signed.b64

curl https://bigflip.id/api/v2/disbursement \
    --header 'X-Signature: YOUR_GENERATED_SIGNATURE' \
    -X POST \
    -u <secret_key>: \
    -d account_number="0437051936" \
    -d bank_code="bni" \
    -d amount="10000" \
    -d remark="testing" \
    -d recipient_city="391"

General Response

Unauthorized

Status 401
Content-Type: application/json

{
    "name": "Unauthorized",
    "message": "You are requesting with an invalid credential.",
    "status": 401,
}

This response will be sent if the value of Authorization heder or the secret key is invalid.

Not Found

Status 404
Content-Type: application/json

{
    "name": "Not Found",
    "message": "Page not found.",
    "status": 404,
}

You will get this response if the url you’re trying to access is wrong, or if the resource you’re trying to access is not exist.

Environment

Sandbox

Flip provides a sandbox environment: (business.flip.id/sandbox/overview - base URL: https://bigflip.id/big_sandbox_api). To help your integration, we recommend you to utilize our Postman collection for the Sandbox. You can download it in the Postman Collecton section.

The secret key, validation token and base URL in sandbox will be different with the production environment, so any actions performed in sandbox will not affect your Flip for Business account. Each sandbox account will be given Rp950.000.000.000 (IDR 950 billion) balance for you to test the API.

We won’t process any transaction & account inquiries you’ve made in the sandbox environment. Any transaction created will be left at PENDING status. However, you can manually trigger the transaction to simulate statuses directly from the dashboard.

Production

The production environment base URL for API v2 is https://bigflip.id/api/v2/ and base URL for API v3 https://bigflip.id/api/v3/. Every transaction made through these URLs will be processed (except if something goes wrong).

Postman Collection

Flip provides a Postman collection which consists of Flip for Business APIs. To help your integration, we recommend you to utilize our Postman collection. You can download it below.

Run in Postman

General

Get Balance

GET /general/balance HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: basic [your encoded flip for business secret key]

This endpoint will return your current account balance in Rupiah (IDR).

Request

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://bigflip.id/api/v2/general/balance");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  "Content-Type: application/x-www-form-urlencoded"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
curl https://bigflip.id/api/v2/general/balance \
    -u <secret_key>:

GET https://bigflip.id/api/v2/general/balance

Response

Status 200
Content-Type: application/json

{
    "balance": 49656053
}
Attribute Description
balance Current balance in Rupiah (IDR)

Get Bank Info

GET /general/banks HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: basic [your encoded flip for business secret key]

This endpoint will return list of bank codes, along with several other information. We recommend you to hit this endpoint before creating a disbursement so that you can give information like queue or status to your user or customer.

Request

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://bigflip.id/api/v2/general/banks");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  "Content-Type: application/x-www-form-urlencoded"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
curl https://bigflip.id/api/v2/general/banks \
    -u <secret_key>:

GET https://bigflip.id/api/v2/general/banks?code=bank_code

You can also provide an optional bank code to filter the result to a specific bank only.

Response

Status 200
Content-Type: application/json

[
    {
        "bank_code": "mandiri",
        "name": "Mandiri",
        "fee": 5000,
        "queue": 8,
        "status": "DISTURBED"
    },
    {
        "bank_code": "bri",
        "name": "BRI",
        "fee": 5000,
        "queue": 39,
        "status": "OPERATIONAL"
    },
    {
        "bank_code": "bni",
        "name": "BNI",
        "fee": 5000,
        "queue": 57,
        "status": "OPERATIONAL"
    },
    {
        "bank_code": "bca",
        "name": "BCA",
        "fee": 5000,
        "queue": 8,
        "status": "OPERATIONAL"
    },
    {
        "bank_code": "bsm",
        "name": "Bank Syariah Mandiri",
        "fee": 5000,
        "queue": 2,
        "status": "HEAVILY_DISTURBED"
    },
    {
        "bank_code": "cimb",
        "name": "CIMB Niaga",
        "fee": 5000,
        "queue": 3,
        "status": "OPERATIONAL"
    },
    {
        "bank_code": "muamalat",
        "name": "Muamalat",
        "fee": 5000,
        "queue": 1,
        "status": "OPERATIONAL"
    },
    .
    .
    .
]

Filtered result:

Status 200
Content-Type: application/json

[
    {
        "bank_code": "bca",
        "name": "BCA",
        "fee": 5000,
        "queue": 8,
        "status": "OPERATIONAL"
    }
]
Attribute Description
bank_code Flip’s bank code. cimb is the code for both CIMB Niaga and CIMB Niaga Syariah
name The name of the bank as we usually say it in Indonesian
fee The fee that you’ll be charged if you send money to this bank
queue Current queue for related bank. The longer/higher the queue number, the longer the transaction will be finished.
status The status of the disbursement process in related bank. Possible values are:
  • OPERATIONAL
    Banks are operational, disbursement will be processed as soon as possible
  • DISTURBED
    Banks are slow or have another problem. Disbursement will still be processed, but in slower pace and might be delayed
  • HEAVILY_DISTURBED
    Banks are having an error, offline, or another problem that result in a nearly unusable system. Disbursement to this bank can not be processed in a short time, and maybe won’t be processed in the same day. You can ask for a refund if this happen.

Is Maintenance

GET /general/maintenance HTTP/1.1
Content-Type: application/x-www-form-urlencoded

This endpoint will return information whether Flip currently is on maintenance or not. Any request to all endpoint will return 503 status code.

Request

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://bigflip.id/api/v2/general/maintenance");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  "Content-Type: application/x-www-form-urlencoded"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
curl https://bigflip.id/api/v2/general/maintenance \
    -u <secret_key>:

GET https://bigflip.id/api/v2/general/maintenance

Response

Status 200
Content-Type: application/json

{
    "maintenance": false
}
Attribute Description
maintenance Flip maintenance status

Bank Account Inquiry

POST /disbursement/bank-account-inquiry HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: Basic [your encoded flip for business secret key]

You can use this endpoint to get the bank account holder name. For now, it still take us a few seconds to do the inquiry. The result will be returned as a callback if we haven’t cached it yet. If it have been cached, you will get the result instantly. Be sure to set up your callback inquiry entry in your Flip for Business Dashboard.

Request

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://bigflip.id/api/v2/disbursement/bank-account-inquiry");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_POST, TRUE);

curl_setopt($ch, CURLOPT_POSTFIELDS, "account_number=5465327020&bank_code=bca&inquiry_key=aVncCDdKW9dciRvH9qSH");

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  "Content-Type: application/x-www-form-urlencoded"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
curl https://bigflip.id/api/v2/disbursement/bank-account-inquiry \
    -X POST \
    -u <secret_key>: \
    -d account_number="5465327020" \
    -d bank_code="bca" \
    -d inquiry_key="aVncCDdKW9dciRvH9qSH"

POST https://bigflip.id/api/v2/disbursement/bank-account-inquiry

Attribute Description
account_number string (required)
The account number of the bank account
bank_code string (required)
Bank code of the account. Accepted value are listed above
inquiry_key string (optional)
Inquiry key for handling multiple request with multiple callback

Response

Example of cached response

Status 200
Content-Type: application/json

{
    "bank_code": "bca",
    "account_number": "5465327020",
    "account_holder": "PT Fliptech Lentera IP",
    "status": "SUCCESS",
    "inquiry_key": "aVncCDdKW9dciRvH9qSH",
}

Example of uncached response

Status 200
Content-Type: application/json

{
    "bank_code": "bca",
    "account_number": "5465327020",
    "account_holder": "",
    "status": "PENDING",
    "inquiry_key": "aVncCDdKW9dciRvH9qSH",
}

Example of invalid account

Status 200
Content-Type: application/json

{
    "bank_code": "bca",
    "account_number": "1232123123212",
    "account_holder": "",
    "status": "INVALID_ACCOUNT_NUMBER",
    "inquiry_key": "aVncCDdKW9dciRvH9qSH",

}
Attribute Description
bank_code Bank code of the account
inquiry_key Inquiry key for handling multiple request with multiple callback
account_number Account number of the bank account
account_holder Name of the bank account holder
status Possible values are
  • PENDING
    Inquiry still in process
  • SUCCESS
    Inquiry process is complete and bank account number is valid
  • INVALID_ACCOUNT_NUMBER
    Inquiry process is complete but the account number is invalid or maybe a virtual account number
  • SUSPECTED_ACCOUNT
    Bank account have been suspected on doing fraud. You still can do a disbursement to this account.
  • BLACK_LISTED
    Bank account have been confirmed on doing a fraud and therefore is blacklisted. You can’t do a disbursment to this account.
  • FAILED
    The inquiry process is failed before we get the final status of the inquiry, e.g due to timeout or any other errors from the bank. If you get this response, please retry the inquiry to trigger reverification of the account.
  • CLOSED
    The inquiry process is complete and the account is valid, but it is closed/inactive so that it cannot receive money. You cannot do a disbursement to this account.

Idempotent Request

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://bigflip.id/api/v2/disbursement");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_POST, TRUE);

$payloads = [
    "account_number" => "0437051936",
    "bank_code" => "bni",
    "amount" => "10000",
    "remark" => "testing",
    "recipient_city" => "391"
];

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($payloads));

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  "Content-Type: application/x-www-form-urlencoded",
  "idempotency-key: 8anU9saqIU798wOo"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
curl https://bigflip.id/api/v2/disbursement \
    -X POST \
    -u <secret_key>: \
    -H "idempotency-key: 8anU9saqIU798wOo" \
    -d account_number="0437051936" \
    -d bank_code="bni" \
    -d amount="10000" \
    -d remark="testing" \
    -d recipient_city="391"

This version of API supports idempotency, so you can safely retrying request without accidentally performing the same operation twice. If you send a create a disbursement and the request fails due to network error or other factor, you can safely retry the request with the same idempotency key and be sure that only a single disbursement is created.

To perform an idempotent request, you can just provide an additonal idempotency-key header to your request.

You can provide any unique string to be the idempotency key, such as the transaction id on your side, or another random and unique identifier from your side. The string however, will be limited to 255 char in length.

If there are two or more requests with the same beneficiary account, bank, and amount within 10 minutes interval and the idempotency key is not used in those particular transactions, we will process the first one and hold the latter transaction temporarily to prevent accidental double transfer. Our team will inform you and ask for your confirmation on whether the transaction being held is eligible to be released or not.

Please read the implementation guide here.

Money Transfer

Money Transfer is one of the products within Flip for Business which was created with the aim to facilitate users complete high volume transactions in an easier, faster, and more cost-efficient manner. With Money Transfer, users can transfer money up to 20,000 accounts in one go across different beneficiaries.

As of now, Flip is providing Money Transfer service across three different beneficiary types: Bank, VA, and E-wallet which all bank codes are listed in the destination bank section. You can also get this list of bank codes along with other information in get bank info.

Below is a flow overview on how Money Transfer disbursement works via API.

Money Transfer Flow

Create Disbursement

POST /disbursement HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: Basic [your encoded flip for business secret key]

Use this endpoint to create a common disbursement transaction. For company operating as a Money Transfer Company (Perusahaan Transfer Dana), or anything related to that, please use Create Special Money Transfer V3 endpoint instead.

Request

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://bigflip.id/api/v3/disbursement");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_POST, TRUE);

$payloads = [
    "account_number" => "1122333300",
    "bank_code" => "bni",
    "amount" => "10000",
    "remark" => "some remark",
    "recipient_city" => "391",
    "beneficiary_email" => "[email protected],[email protected]"
];

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($payloads));

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  "Content-Type: application/x-www-form-urlencoded",
  "idempotency-key: idem-key-1",
  "X-TIMESTAMP: 2022-01-01T15:02:15+0700"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
curl https://bigflip.id/api/v3/disbursement \
    -X POST \
    -u <secret_key>: \
    -d account_number="1122333300" \
    -d bank_code="bni" \
    -d amount="10000" \
    -d remark="some remark" \
    -d recipient_city="391",
    -d beneficiary_email="[email protected],[email protected]"

POST https://bigflip.id/api/v3/disbursement

Attribute Description
Content-Type string (required)
Request content type: application/x-www-form-urlencoded.
idempotency-key string (required)
Idempotency key. Please see more detail on Idempotent Request section.
X-TIMESTAMP string (optional)
Request timestamp. The format will follow the ISO8601 format.

Body

Attribute Description
account_number string (required)
The account number of the recipient.

Validation:
  • Numeric
bank_code string (required)
Bank code of the recipient bank.

Validation:
  • Accepted values are listed here.
amount integer (required)
The amount of money to be disbursed

Validation:
  • Numeric
remark string (optional)
Remark to be included in the transfer made to the recipient. Usually will appear as berita transfer or remark in the transfer receipt.

Only for disbursement with the bank code being bri, the remark will be prepended with the beneficiary name. Example: tes remark will be john doe test remark.

Validation:
  • 1-18 character
  • Alphanumeric
  • Spaces, ., -, /, (, and )
recipient_city integer (optional)
City code of the recipient city.

Validation:
  • Accepted values are listed here.
beneficiary_email string (optional)
List of the recipient emails.

Validation:
  • Alphanumeric with email format ([email protected])
  • Separate each email with a comma (if any)

Response

Status 200
Content-Type: application/json

{
  "id": 10,
  "user_id": 20,
  "amount": 10000,
  "status": "PENDING",
  "reason": "",
  "timestamp": "2017-08-28 14:32:47",
  "bank_code": "bni",
  "account_number": "1122333300",
  "recipient_name": "John Doe",
  "sender_bank": "bri",
  "remark": "some remark",
  "receipt": "",
  "time_served": "0000-00-00 00:00:00",
  "bundle_id": 0,
  "company_id": 7,
  "recipient_city": 391,
  "created_from": "API",
  "direction": "DOMESTIC_TRANSFER",
  "sender": null,
  "fee": 1500,
  "beneficiary_email": "[email protected],[email protected]",
  "idempotency_key": "idem-key-1"
}

See detailed explanation at Get All Money Transfer V3 response.

Get All Disbursements

GET /disbursement HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: Basic [your encoded flip for business secret key]

Use this endpoint to get the list of transaction you’ve made. By default, the result will be paginated by 20. You can change the pagination, filter, and sort the result by changing the url parameter.

Request

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://bigflip.id/api/v3/disbursement?pagination=pagination&page=page&sort=sort&atribut=value");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  "Content-Type: application/x-www-form-urlencoded"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
curl https://bigflip.id/api/v3/disbursement?pagination=pagination&page=page&sort=sort&atribut=value \
    -u <secret_key>:

Format of the url parameter:

GET https://bigflip.id/api/v3/disbursement?pagination=pagination&page=page&sort=sort&attribute=value

param value
pagination integer (optional)
The pagination of the result. Default value is 20.

Validation:
  • Numeric
page integer (optional)
The page number of the result to be viewed.

Validation:
  • Numeric
sort string (optional)
Sort the result by the attribute. Use the attribute name (e.g sort=id) to sort in ascending order or dash+attribute name (e.g sort=-id) to sort in descending order.

Validation:
  • Accepted values are as listed below.

You can also filter the result by changing attribute with the attribute to be filtered and value with the filter value. You can filter more than one attribute by appending another attribute filter to the url. Attribute that can be filtered are:

Example:

https://bigflip.id/api/v3/disbursement?pagination=10&page=1&sort=id&status=DONE

Response

Status 200
Content-Type: application/json

{
  "total_data": 85,
  "data_per_page": 20,
  "total_page": 5,
  "page": 1,
  "data": [
    {
      "id": 10,
      "user_id": 20,
      "amount": 10000,
      "status": "PENDING",
      "reason": "",
      "timestamp": "2017-08-28 14:32:47",
      "bank_code": "bni",
      "account_number": "1122333300",
      "recipient_name": "John Doe",
      "sender_bank": "bri",
      "remark": "some remark",
      "receipt": "",
      "time_served": "0000-00-00 00:00:00",
      "bundle_id": 0,
      "company_id": 7,
      "recipient_city": 391,
      "created_from": "API",
      "direction": "DOMESTIC_TRANSFER",
      "sender": null,
      "fee": 1500,
      "beneficiary_email": "[email protected],[email protected]",
      "idempotency_key": "idem-key-1"
    },
    {
      "id": 11,
      "user_id": 20,
      "amount": 10000,
      "status": "DONE",
      "reason": "",
      "timestamp": "2017-08-24 21:21:23",
      "bank_code": "bni",
      "account_number": "1122333301",
      "recipient_name": "John Smith",
      "sender_bank": "bri",
      "remark": "some remark",
      "receipt": "someurl.jpg",
      "time_served": "2017-08-25 09:11:35",
      "bundle_id": 0,
      "company_id": 7,
      "recipient_city": 391,
      "created_from": "API",
      "direction": "FOREIGN_INBOUND_SPECIAL_TRANSFER",
      "sender": {
        "sender_name": "John Doe",
        "place_of_birth": 391,
        "date_of_birth": "1992-01-01",
        "address": "Some Address Street 123",
        "sender_identity_type": "nat_id",
        "sender_identity_number": "asdas213123",
        "sender_country": 100252,
        "job": "entrepreneur"
      },
      "fee": 1000,
      "beneficiary_email": "[email protected],[email protected]",
      "idempotency_key": "idem-key-2"
    },
    ...
  ]
}
Attribute Description
total_data Total data returned in all page
data_per_page Total data returned in current page
total_page Total/max page available
page Current page
data Array of disbursement object.

Disbursement Object

Attribute Description
id Flip’s transaction id
user_id Your account user id in our system
amount The amount of money to be disbursed in IDR
status Transaction status. Possible values are:
  • PENDING
    Disbursement is still in process
  • CANCELLED
    The transaction is cancelled and the amount of the transaction plus the transaction fee will be credited to your balance. This will happen if the transfer process are failed for reason such as inactive recipient account, wrong account number, etc
  • DONE
    Disbursement process is finished and the money have been sent to the recipient
reason The reason value will be given if the transaction status is CANCELLED. Possible values are:
  • INACTIVE_ACCOUNT
    Inactive account / Nomor rekening tidak aktif
  • NOT_REGISTERED_ACCOUNT
    Not registered account / Nomor rekening tidak terdaftar
  • CANT_RECEIVE_TRANSFER
    Can’t receive transfer / Rekening tujuan tidak dapat menerima transfer
  • INTERMITTENT_DISTURBANCE_ON_BENEFICIARY_BANK
    Intermittent disturbance on destination bank / Bank tujuan sementara mengalami gangguan
  • BENEFICIARY_ACCOUNT_NOT_VERIFIED
    Account is not verified / Rekening tujuan belum terverifikasi
  • INSUFFICIENT_BALANCE
    Insufficient deposit balance / Deposit tidak cukup
  • EXCEEDED_TRANSACTION_AMOUNT_LIMIT
    Exceeded amount transaction limit / Batas transaksi melebihi jumlah
  • INTERNAL_ERROR
    An internal error has occurred during the transaction / Terjadi kesalahan internal selama transaksi
  • EXCEED_AMOUNT_LIMIT
    The transaction exceeds the allowed amount limit / Transaksi melebihi batas jumlah yang diizinkan
  • DORMANT_ACCOUNT
    The account is dormant and cannot process transactions / Rekening tidak aktif dan tidak dapat memproses transaksi
  • INVALID_ACCOUNT
    The account number provided is invalid / Nomor rekening yang diberikan tidak valid
  • INVALID_BILL
    The bill submitted for payment is invalid / Tagihan yang diajukan untuk pembayaran tidak valid
  • INVALID_AMOUNT
    The amount specified for the transaction is invalid / Jumlah yang ditentukan untuk transaksi tidak valid
  • PAID_BILL
    The bill has already been paid / Tagihan sudah dibayar
  • EXPIRED_BILL
    The bill has expired and cannot be processed / Tagihan sudah kedaluwarsa dan tidak dapat diproses
timestamp The time when the disbursement request created. Time will be in GMT+7 with yyyy-mm-dd hh:mm:ss format
bank_code Bank code of the recipient bank
account_number The account number of the recipient
recipient_name The name of the recipient account holder. If the account number haven’t cached by Flip yet, this attribute will show - (dash) instead
sender_bank The default sender bank in your account
remark Remark to be included in the transfer made to the recipient
receipt Url of the transfer receipt. The receipt will be a screenshot taken from the internet banking interface of each bank. This attribute will only show the url when the status is DONE
time_served The time when the transaction is finished. Will only show valid value when the status is DONE
bundle_id The bundle id of the transaction made from Flip for Business Dashboard (csv upload or manual input). For the transaction created from API, the value will always be 0
company_id Your Flip for Business account user id in our system
recipient_city City code of the recipient city
created_from The channel of which the transaction was created. Possible values are:
  • API
  • DASHBOARD
direction The direction of the transaction. Possible values are:
  • DOMESTIC_TRANSFER
    Common Disbursement from Indonesia to Indonesian recipient
  • DOMESTIC_SPECIAL_TRANSFER
    Special disbursement from the user of a Money Transfer Company residing in Indonesia to Indonesian recipient
  • FOREIGN_INBOUND_SPECIAL_TRANSFER
    Special disbursement from the user of a Money Transfer Company residing in a foreign country to Indonesian recipient
sender Possible values are null if the transaction is a common disbursement, and sender object if the transaction is a special disbursment.
fee The fee of the transaction
beneficiary_email List of the recipient emails
idempotency_key The idempotency key used to create the disbursement

Sender Object

Attribute Description
sender_name The name of the user of the Money Transfer Company that act as a sender
place_of_birth City/country code of the Sender’s place of birth
date_of_birth Sender’s date of birth
address Sender’s address
sender_identity_type Sender’s identity type. Possible value are:
  • nat_id
  • drv_lic
  • passport
  • bank_acc
sender_identity_number Sender’s identity number
sender_country Country code of the Sender’s country
job Sender’s job. Possible values are:
  • housewife
  • entrepreneur
  • private_employee
  • government_employee
  • foundation_board
  • indonesian_migrant_worker
  • others

Get Disbursement by Idempotency Key

GET /get-disbursement HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: Basic [your encoded flip for business secret key]

Use this endpoint to get one specific transaction specified by idempotency-key in the request url.

Request

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://bigflip.id/api/v3/get-disbursement?idempotency-key=idem-key-1");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  "Content-Type: application/x-www-form-urlencoded"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
curl https://bigflip.id/api/v3/get-disbursement?idempotency-key=idem-key-1 \
    -u <secret_key>:

GET https://bigflip.id/api/v3/get-disbursement?idempotency-key=idempotency_key

Response

Status 200
Content-Type: application/json

{
  "id": 10,
  "user_id": 20,
  "amount": 10000,
  "status": "PENDING",
  "reason": "",
  "timestamp": "2017-08-28 14:32:47",
  "bank_code": "bni",
  "account_number": "1122333300",
  "recipient_name": "John Doe",
  "sender_bank": "bri",
  "remark": "some remark",
  "receipt": "",
  "time_served": "0000-00-00 00:00:00",
  "bundle_id": 0,
  "company_id": 7,
  "recipient_city": 391,
  "created_from": "API",
  "direction": "DOMESTIC_TRANSFER",
  "sender": null,
  "fee": 1500,
  "beneficiary_email": "[email protected],[email protected]",
  "idempotency_key": "idem-key-1"
}

See detailed explanation at Get All Money Transfer V3 response.

Get Disbursement by ID

GET /get-disbursement HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: Basic [your encoded flip for business secret key]

Use this endpoint to get one specific transaction specified by id in the request URL.

Request

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://bigflip.id/api/v3/get-disbursement?id=10");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  "Content-Type: application/x-www-form-urlencoded"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
curl https://bigflip.id/api/v3/get-disbursement?id=10 \
    -u <secret_key>:

GET https://bigflip.id/api/v3/get-disbursement?id=id

Response

Status 200
Content-Type: application/json

{
  "id": 10,
  "user_id": 20,
  "amount": 10000,
  "status": "PENDING",
  "reason": "",
  "timestamp": "2017-08-28 14:32:47",
  "bank_code": "bni",
  "account_number": "1122333300",
  "recipient_name": "John Doe",
  "sender_bank": "bri",
  "remark": "some remark",
  "receipt": "",
  "time_served": "0000-00-00 00:00:00",
  "bundle_id": 0,
  "company_id": 7,
  "recipient_city": 391,
  "created_from": "API",
  "direction": "DOMESTIC_TRANSFER",
  "sender": null,
  "fee": 1500,
  "beneficiary_email": "[email protected],[email protected]",
  "idempotency_key": "idem-key-1"
}

See detailed explanation at Get All Money Transfer V3 response.

Error List

As mentioned here, validation error or response with status code 422 will contain inner code. Here is the list of the code for Money Transfer:

Error Code Meaning
999 Undefined error
1001 The related attribute should not be empty
1002 Value for the related attribute is considered not clean. Things that considered as not clean is html tag and ?, #, $, ' (single quote), " (double quote), and ; character
1020 The related attribute can only contain number
1021 Transfer amount are less than the minimum amount (Rp10.000)
1022 Transfer amount are more than the maximum amount
1024 Max char for the related attribute exceeded
1025 Invalid bank account number or possibly a virtual account number
1026 The recipient bank account is suspected with fraud. You can’t send money to this account
1027 The account number is closed
1032 Pagination should be a number more than 0
1033 Invalid bank code
1034 Country is invalid. Please see available country code
1035 Your balance is insufficient for doing this transaction
1038 Country/city code is not valid. The difference with 1037 code is: 1037 will occur if the attribute only allows country code while this code will occur if the attribute allows country or city code.
1039 Date format is invalid
1040 Date is invalid
1041 Attribute is invalid
1042 Missing required idempotency key. Please put an idempotency key in your request.
1043 Bill title param is required when creating bill
1070 Max Beneficiary Email 20
1071 Invalid Beneficiary Email value
1072 Disbursement ID not found
1073 Disbursement Idempotency Key not found
1074 Daily limit transaction exceeded
1080 You have reached the maximum limit of active transactions. Please complete your previous transactions.
1088 The beneficiary bank is in severe disturbance
1089 The account number is Flip’s. You can’t send money to Flip account
1090 Agent KYC status is not approved
1091 Agent status is not active
1092 Agent is not allowed to update
1093 Cannot process transaction because bank is in cut off time. Try again later
1094 The sent request/transaction is marked as stale request (more than 1 minute than the server time)
1095 X-TIMESTAMP format is invalid. It should follow the ISO8601 format
2001 The related attribute should contain [at least or at most][number] of characters
2002 The related attribute is duplicated
2003 The related attribute is considered not clean. Only letters (a-z), numbers (0-9), spaces ( ), periods (.), commas (,), apostrophes (‘), and dashes (-) are allowed
2004 The related attribute contains non-alphanumeric characters
2005 Transfer amount are less than the minimum amount set by the respective Bank

Deprecated Error Code

Error Code Meaning
1042 Minimum transfer OVO amount is Rp10.000 - Replaced with 2005
1086 Minimum transfer dana amount is Rp20.500 - Replaced with 2005

Special Money Transfer

Special Money Transfer is a type of disbursement for a company with PJP (Penyedia Jasa Pembayaran) license, operating as a Money Transfer Company (Perusahaan Transfer Dana). While in Money Transfer disbursement the original sender is the company, in Special Money Transfer the original sender is the company’s user.

The main difference regarding the API flow with Money Transfer is in this disbursement type, you are required to provide some of your senders personal information as part of the Know Your Customer (KYC) process mandated by Bank Indonesia.

Below is a flow overview on how Special Money Transfer disbursement works via API.

Special Money Transfer Flow

Create Special Disbursement

POST /special-disbursement HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: Basic [your encoded flip for business secret key]

Request

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://bigflip.id/api/v3/special-disbursement");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_POST, TRUE);

$payloads = [
    "account_number" => "1122333301",
    "bank_code" => "bni",
    "amount" => "10000",
    "remark" => "some remark",
    "recipient_city" => "391",
    "sender_country" => 100252,
    "sender_place_of_birth" => 391,
    "sender_date_of_birth" => "1992-01-01",
    "sender_identity_type" => "nat_id",
    "sender_name" => "John Doe",
    "sender_address" => "Some Address Street 123",
    "sender_identity_number" => "123456789",
    "sender_job" => "entrepreneur",
    "direction" => "DOMESTIC_SPECIAL_TRANSFER",
    "beneficiary_email" => "[email protected],[email protected]"
];

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($payloads));

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  "Content-Type: application/x-www-form-urlencoded",
  "idempotency-key: idem-key-1",
  "X-TIMESTAMP: 2022-01-01T15:02:15+0700"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
curl https://bigflip.id/api/v3/special-disbursement \
    -X POST \
    -u <secret_key>: \
    -d account_number="1122333301" \
    -d bank_code="bni" \
    -d amount="10000" \
    -d remark="some remark" \
    -d recipient_city="391" \
    -d sender_country="100252" \
    -d sender_place_of_birth="391",
    -d sender_date_of_birth="1992-01-01" \
    -d sender_identity_type="nat_id" \
    -d sender_name="John Doe" \
    -d sender_address="Some Address Street 123" \
    -d sender_identity_number="123456789" \
    -d sender_job="entrepreneur" \
    -d direction="DOMESTIC_SPECIAL_TRANSFER",
    -d beneficiary_email="[email protected],[email protected]"

POST https://bigflip.id/api/v3/special-disbursement

Attribute Description
Content-Type string (required)
Request content type: application/x-www-form-urlencoded.
idempotency-key string (required)
Idempotency key. Please see more detail on Idempotent Request section.
X-TIMESTAMP string (optional)
Request timestamp. The format will follow the ISO8601 format.

Body

Attribute Description
account_number string (required)
The account number of the recipient.

Validation:
  • Numeric
bank_code string (required)
Bank code of the recipient bank.

Validation:
  • Accepted value are listed here
amount integer (required)
The amount of money to be disbursed.

Validation:
  • Numeric
remark string (optional)
Remark to be included in the transfer made to the recipient. Usually will appear as berita transfer or remark in the transfer receipt.

Only for disbursement with the bank code being bri, the remark will be prepended with the beneficiary name. Example: tes remark will be john doe test remark.

Validation:
  • 1-18 character
  • Alphanumeric
  • Spaces, ., -, /, (, and )
recipient_city integer (optional)
City code of the recipient city. Default value is 394.

Validation:
  • Accepted values are listed here.
sender_country integer (required)
Country code of the sender’s residence.

Validation:
  • Accepted values are listed here.
sender_place_of_birth integer (optional)
City/country code of the sender’s place of birth. Use city code if the sender’s place of birth is in Indonesia, and country code if outside Indonesia.

Validation:
  • Accepted values are listed here.
sender_date_of_birth string/date (optional)
Sender’s birth date.

Validation:
  • YYYY-MM-DD format
sender_identity_type string (optional)
Sender’s ID type.

Validation:
Accepted value are as follows:
  • nat_id
    National Id Card or KTP in Indonesia
  • drv_lic
    Driving license
  • passport
  • bank_acc
    Bank Account (DEFAULT)
sender_name string (required)
The name of the user of the Money Transfer Company that act as a sender.

Validation:
  • Alphanumeric
  • 1-50 characters
sender_address string (required)
Sender’s address.

Validation:
  • Alphanumeric
  • 255 characters
sender_identity_number string (optional)
Sender’s ID number. Default value is from attribute account_number.

Validation:
  • 16 characters for KTP
  • 20 characters for Passport
sender_job string (required) Sender’s job.

Validation:
Accepted value are as follows:
  • housewife
  • entrepreneur
  • private_employee
  • government_employee
  • foundation_board
    People who work at foundation as an employee
  • indonesian_migrant_worker
    Also known as TKI
  • company
    If sender is a company, not individual
  • others
direction string (required) The direction of the transaction.

Validation:
Accepted values are as follows:
  • DOMESTIC_SPECIAL_TRANSFER
    When the sender and the recipient are both residing in Indonesia
  • FOREIGN_INBOUND_SPECIAL_TRANSFER
    When the sender are in a foreign country, but the recipient are in Indonesia
beneficiary_email string (optional)
List of the recipient emails.

Validation:
  • Alphanumeric with email format ([email protected])
  • Separate each email with a comma (if any)

Response

Status 200
Content-Type: application/json

{
  "id": 11,
  "user_id": 20,
  "amount": 10000,
  "status": "DONE",
  "reason": "",
  "timestamp": "2017-08-24 21:21:23",
  "bank_code": "bni",
  "account_number": "1122333301",
  "recipient_name": "John Smith",
  "sender_bank": "bri",
  "remark": "some remark",
  "receipt": "someurl.jpg",
  "time_served": "2017-08-25 09:11:35",
  "bundle_id": 0,
  "company_id": 7,
  "recipient_city": 391,
  "created_from": "API",
  "direction": "FOREIGN_INBOUND_SPECIAL_TRANSFER",
  "sender": {
    "sender_name": "John Doe",
    "place_of_birth": 391,
    "date_of_birth": "1992-01-01",
    "address": "Some Address Street 123",
    "sender_identity_type": "nat_id",
    "sender_identity_number": "123456789",
    "sender_country": 100252,
    "job": "entrepreneur"
  },
  "fee": 1000,
  "beneficiary_email": "[email protected],[email protected]",
  "idempotency_key": "idem-key-2"
}

See detailed explanation at Get All Money Transfer V3 response.

City List

GET /disbursement/city-list HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: Basic [your encoded flip for business secret key]

This endpoint will return the list of available city code along with it’s name. The city name will be in Indonesian.

Request

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://bigflip.id/api/v2/disbursement/city-list");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  "Content-Type: application/x-www-form-urlencoded"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
curl https://bigflip.id/api/v2/disbursement/city-list \
    -u <secret_key>:

GET https://bigflip.id/api/v2/disbursement/city-list

Response

Status 200
Content-Type: application/json

{
  "102": "Kab. Bekasi",
  "103": "Kab. Purwakarta",
  "106": "Kab. Karawang",
  "108": "Kab. Bogor",
  "109": "Kab. Sukabumi",
  "110": "Kab. Cianjur",
  "111": "Kab. Bandung",
  "112": "Kab. Sumedang",
  "113": "Kab. Tasikmalaya",
  "114": "Kab. Garut",
  "115": "Kab. Ciamis",
  "116": "Kab. Cirebon",
  "117": "Kab. Kuningan",
  "118": "Kab. Indramayu",
  "119": "Kab. Majalengka",
  ...
}

Return an object of all cities with format [city code]: [city name].

Country List

GET /disbursement/country-list HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: Basic [your encoded flip for business secret key]

This endpoint will return the list of available country code along with it’s name. The country name will be in English.

Request

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://bigflip.id/api/v2/disbursement/country-list");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  "Content-Type: application/x-www-form-urlencoded"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
curl https://bigflip.id/api/v2/disbursement/country-list \
    -u <secret_key>:

GET https://bigflip.id/api/v2/disbursement/country-list

Response

Status 200
Content-Type: application/json

{
  "100000": "Afghanistan",
  "100002": "Albania",
  "100003": "Algeria/Aljazair",
  "100004": "America Samoa",
  "100005": "Andorra",
  "100006": "Angola",
  "100007": "Anguilla",
  "100008": "Antarctica",
  "100009": "Antigua And Barbuda",
  "100010": "Argentina",
  "100011": "Armenia",
  ...
}

Return an object of all countries with format [country code]: [country name].

City and Country List

GET /disbursement/city-country-list HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: Basic [your encoded flip for business secret key]

This is just a combination from city and country list.

Request

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://bigflip.id/api/v2/disbursement/city-country-list");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  "Content-Type: application/x-www-form-urlencoded"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
curl https://bigflip.id/api/v2/disbursement/city-country-list \
    -u <secret_key>:

GET https://bigflip.id/api/v2/disbursement/city-country-list

Response

Status 200
Content-Type: application/json

{
  "102": "Kab. Bekasi",
  "103": "Kab. Purwakarta",
  "106": "Kab. Karawang",
  "108": "Kab. Bogor",
  "109": "Kab. Sukabumi",
  "110": "Kab. Cianjur",
  "111": "Kab. Bandung",
  "112": "Kab. Sumedang",
  "113": "Kab. Tasikmalaya",
  "114": "Kab. Garut",
  "115": "Kab. Ciamis",
  "116": "Kab. Cirebon",
  "117": "Kab. Kuningan",
  "118": "Kab. Indramayu",
  "119": "Kab. Majalengka",
  ...
}

Return an object of all cities and countries with format [city/country code]: [city/country name].

Error List

As mentioned here, validation error or response with status code 422 will contain inner code. For Special Money Transfer, you can refer to the Money Transfer Error List.

Agent Money Transfer

While there is a significant distinction between Money Transfer and Special Money Transfer, there is only one little difference between Special Money Transfer and Agent Transfer. The difference lies in the availability of the PJP (Penyedia Jasa Pembayaran) license. To put it simply, Agent Money Transfer is a disbursement type of Special Money Transfer for companies who don’t hold a PJP license but want to provide disbursement service for its users.

In this model, Flip as PTD license holder is responsible for the entire flow from the user KYC to money transfer processing. The difference between Agent Money Transfer with other disbursements is that Flip will verify the user KYC and will only process transactions from approved users. Please refer to this section to understand the flow of Agent Verification.

Below is a flow overview on how Agent Money Transfer disbursement works via API.

Agent Money Transfer Flow

Note: Flip will validate the Agent’s KYC status for every disbursement request. Only approved Agents can request to transfer money via Flip.

Create Disbursement for Agent

This is the endpoint for creating disbursement for Agent that has been verified.

POST /agent-disbursements HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: Basic [your encoded flip for business secret key]

Request

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://bigflip.id/api/v2/agent-disbursements");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_POST, TRUE);

$payloads = [
  "agent_id" => 1,
  "account_number" => "1122333301",
  "amount" => 10000,
  "bank_code" => "bni",
  "direction" => "DOMESTIC_SPECIAL_TRANSFER",
  "remark" => "some remark",
  "beneficiary_email" => "[email protected]"
];

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($payloads));

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  "Content-Type: application/x-www-form-urlencoded",
  "idempotency-key: idem-key-1",
  "X-TIMESTAMP: 2022-01-01T15:02:15+0700"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
curl https://bigflip.id/api/v2/agents \
    -X POST \
    -u <secret_key>: \
    -d "agent_id=1" \
    -d "account_number=1122333301" \
    -d "amount=10000" \
    -d "bank_code=bni" \
    -d "direction=DOMESTIC_SPECIAL_TRANSFER" \
    -d "remark=some remark" \
    -d "[email protected]"

POST https://bigflip.id/api/v2/agent-disbursements

Attribute Description
Content-Type string (required)
Request content type: application/x-www-form-urlencoded.
idempotency-key string (required)
Idempotency key. Please see more detail on Idempotent Request section.
X-TIMESTAMP string (optional)
Request timestamp. The format will follow the ISO8601 format.

Body

Attribute Description
agent_id integer (required)
Agent’s ID

Validation:
  • Numeric
account_number string (required)
The account number of the recipient.

Validation:
  • Numeric
amount integer (required)
The amount of money to be disbursed.

Validation:
  • Numeric
bank_code string (required)
Bank code of the recipient bank.

Validation:
  • Accepted values are listed here.
direction string (required) The direction of the transaction.

Validation:
Accepted values are as follows:
  • DOMESTIC_SPECIAL_TRANSFER
    When the sender and the recipient are both residing in Indonesia
  • FOREIGN_INBOUND_SPECIAL_TRANSFER
    When the sender are in a foreign country, but the recipient are in Indonesia
remark string (optional)
Remark to be included in the transfer made to the recipient. Usually will appear as berita transfer or remark in the transfer receipt.

Only for disbursement with the bank code being bri, the remark will be prepended with the beneficiary name. Example: tes remark will be john doe test remark.

Validation:
  • 1-18 character
  • Alphanumeric
  • Spaces, ., -, /, (, and )
beneficiary_email string (optional)
List of the recipient emails.

Validation:
  • Alphanumeric with email format ([email protected])
  • Separate each email with a comma (if any)

Response

{
  "id": 1,
  "user_id": 1,
  "amount": 10000,
  "status": "DONE",
  "timestamp": "2022-01-02 13:00:00",
  "bank_code": "bni",
  "account_number": "1122333301",
  "recipient_name": "John Smith",
  "sender_bank": "bri",
  "remark": "some remark",
  "receipt": "someurl.jpg",
  "time_served": "2022-01-02 13:01:00",
  "bundle_id": 0,
  "company_id": 1,
  "recipient_city": 391,
  "created_from": "API",
  "direction": "DOMESTIC_SPECIAL_TRANSFER",
  "sender": {
    "sender_name": "John Doe",
    "place_of_birth": null,
    "date_of_birth": "31-10-1990",
    "address": "Jalan Margonda Raya",
    "sender_identity_type": "nat_id",
    "sender_identity_number": "1234567890123456",
    "sender_country": 1,
    "job": "entrepreneur"
  },
  "fee": 1000,
  "beneficiary_email": "[email protected]",
  "idempotency_key": "idem-key-1"
}

Response for the Create Disbursement for Agent API is the same with Money Transfer V3 response. See detailed explanation on the Get All Money Transfer V3 response. The sender attribute in the response will be filled with the Agent data.

Get Agent Disbursement by ID

An endpoint for obtaining the Agent’s disbursement data by it’s ID.

GET /agent-disbursements HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: Basic [your encoded flip for business secret key]

Request

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://bigflip.id/api/v2/agent-disbursements/1");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
   "Content-Type: application/x-www-form-urlencoded"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
curl https://bigflip.id/api/v2/agent-disbursements/1 \
    -u <secret_key>:

GET https://bigflip.id/api/v2/agent-disbursements/[transaction_id]

Response

{
  "id": 1,
  "user_id": 1,
  "amount": 10000,
  "status": "DONE",
  "timestamp": "2022-01-02 13:00:00",
  "bank_code": "bni",
  "account_number": "1122333301",
  "recipient_name": "John Smith",
  "sender_bank": "bri",
  "remark": "some remark",
  "receipt": "someurl.jpg",
  "time_served": "2022-01-02 13:01:00",
  "bundle_id": 0,
  "company_id": 1,
  "recipient_city": 391,
  "created_from": "API",
  "direction": "DOMESTIC_SPECIAL_TRANSFER",
  "sender": {
    "sender_name": "John Doe",
    "place_of_birth": null,
    "date_of_birth": "31-10-1990",
    "address": "Jalan Margonda Raya",
    "sender_identity_type": "nat_id",
    "sender_identity_number": "1234567890123456",
    "sender_country": 1,
    "job": "entrepreneur"
  },
  "fee": 1000,
  "beneficiary_email": "[email protected]",
  "idempotency_key": "idem-key-1"
}

Response for the Get Agent Disbursement API is the same with Money Transfer V3 response. See detailed explanation on the Get All Money Transfer V3 response. The sender attribute in the response will be filled with the Agent data.

Get Agent Disbursement List

An endpoint for obtaining all Agent’s disbursement data.

GET /agent-disbursements HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: Basic [your encoded flip for business secret key]

Request

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://bigflip.id/api/v2/agent-disbursements?agent_id=1");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
   "Content-Type: application/x-www-form-urlencoded"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
curl https://bigflip.id/api/v2/agent-disbursements?agent_id=1 \
    -u <secret_key>:

GET https://bigflip.id/api/v2/agent-disbursements?agent_id=agent_id&pagination=pagination&page=page&sort=sort

Param Value
agent_id integer (optional)
The agent ID that wants to be retrieved. If not provided, will return all agent disbursement for the company instead.

Validation:
  • Numeric
pagination integer (optional)
The pagination of the result. Default value is 20.

Validation:
  • Numeric
page integer (optional)
The page number of the result to be viewed.

Validation:
  • Numeric
sort string (optional)
Sort the result by the attribute. Use the attribute name (e.g sort=id) to sort in ascending order or dash+attribute name (e.g sort=-id) to sort in descending order.

Validation:
Possible values are:
  • id
  • amount
  • status

Response

{
  "total_data": 85,
  "data_per_page": 20,
  "total_page": 5,
  "page": 1,
  "data": [
    {
      "id": 1,
      "user_id": 1,
      "amount": 10000,
      "status": "DONE",
      "timestamp": "2022-01-02 13:00:00",
      "bank_code": "bni",
      "account_number": "1122333301",
      "recipient_name": "John Smith",
      "sender_bank": "bri",
      "remark": "some remark",
      "receipt": "someurl.jpg",
      "time_served": "2022-01-02 13:01:00",
      "bundle_id": 0,
      "company_id": 1,
      "recipient_city": 391,
      "created_from": "API",
      "direction": "DOMESTIC_SPECIAL_TRANSFER",
      "sender": {
        "sender_name": "John Doe",
        "place_of_birth": null,
        "date_of_birth": "31-10-1990",
        "address": "Jalan Margonda Raya",
        "sender_identity_type": "nat_id",
        "sender_identity_number": "1234567890123456",
        "sender_country": 1,
        "job": "entrepreneur"
      },
      "fee": 1000,
      "beneficiary_email": "[email protected]",
      "idempotency_key": "idem-key-1"
    },
    {
      "id": 2,
      "user_id": 1,
      "amount": 20000,
      "status": "DONE",
      "timestamp": "2022-01-02 13:00:00",
      "bank_code": "bni",
      "account_number": "1122333301",
      "recipient_name": "John Smith",
      "sender_bank": "bri",
      "remark": "some remark",
      "receipt": "someurl.jpg",
      "time_served": "2022-01-02 13:01:00",
      "bundle_id": 0,
      "company_id": 1,
      "recipient_city": 391,
      "created_from": "API",
      "direction": "DOMESTIC_SPECIAL_TRANSFER",
      "sender": {
        "sender_name": "John Doe",
        "place_of_birth": null,
        "date_of_birth": "31-10-1990",
        "address": "Jalan Margonda Raya",
        "sender_identity_type": "nat_id",
        "sender_identity_number": "1234567890123456",
        "sender_country": 1,
        "job": "entrepreneur"
      },
      "fee": 1000,
      "beneficiary_email": "[email protected]",
      "idempotency_key": "idem-key-2"
    },
    ...
  ]
}

Response for the Get All Agent Disbursement List API is the same with Money Transfer V3 response. See detailed explanation on the Get All Money Transfer V3 response. The sender attribute in the response will be filled with the Agent data.

Error List

As mentioned here, validation error or response with status code 422 will contain inner code. For Agent Money Transfer, you can refer to the Money Transfer Error List.

Agent Verification

Within this section you will find a set of APIs to have your Agent KYC-ed by Flip prior to creating disbursement with Agent Money Transfer disbursement type. Unlike Special Money Transfer, the KYC done by Flip for Agent Money Transfer is required as non-PJP licensed companies usually don’t conduct KYC on their end as mandated by Bank Indonesia.

Below is a flow overview on how Agent Verification takes place via API.

Agent Verification Flow

Create Agent Identity

An endpoint to create company’s user (Agent) in Flip.

POST /agents HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: Basic [your encoded flip for business secret key]

Request

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://bigflip.id/api/v2/agents");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_POST, TRUE);

$payloads = [
   "name" => "John Doe",
   "identity_type" => "ktp",
   "identity_number" => "1234567890123456",
   "birth_date" => "31-10-1990",
   "birth_place" => "Kota Depok",
   "country_id" => 1,
   "province_id" => 12,
   "city_id" => 184,
   "district_id" => 1234,
   "address" => "Jalan Margonda Raya",
   "gender" => "male",
   "occupation" => "entrepreneur",
   "phone_number" => "+628123456789",
   "use_identity_address" => 1,
   "email" => "[email protected]",
];

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($payloads));

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
   "Content-Type: application/x-www-form-urlencoded"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
curl https://bigflip.id/api/v2/agents \
    -X POST \
    -u <secret_key>: \
    -d "name=John Doe" \
    -d "identity_type=ktp" \
    -d "identity_number=1234567890123456" \
    -d "birth_date=31-10-1990" \
    -d "birth_place=Kota Depok" \
    -d "country_id=1" \
    -d "province_id=12" \
    -d "city_id=184" \
    -d "district_id=1234" \
    -d "address=Jalan Margonda Raya" \
    -d "gender=male" \
    -d "occupation=entrepreneur" \
    -d "phone_number=+628123456789" \
    -d "use_identity_address=1" \
    -d "[email protected]"

POST https://bigflip.id/api/v2/agents

Attribute Description
name string (required)
Agent’s full name.

Validation:
  • Alphanumeric
  • 1-50 characters
identity_type string (required)
Type of identity.

Validation:
Accepted values are as follows:
  • ktp (National Id Card or KTP in Indonesia)
  • passport (Passport)
identity_number string (required)
Identity number based on the type chosen.

Validation:
  • 16 characters for KTP
  • 20 characters for Passport
birth_date string (required)
Agent’s birth date.

Validation:
  • DD-MM-YYYY format
birth_place string (required)
Agent’s birth place.

Validation:
  • Alphanumeric
  • 255 characters
country_id integer (required)
Agent’s country code based on the identity chosen.

Validation:
Available values can be retrieved from the country list API here.
province_id integer (required)
Agent’s province code based on the identity chosen.

Validation:
Available values can be retrieved from the province list API here.
city_id integer (required)
Agent’s city code based on the identity chosen.

Validation:
Available values can be retrieved from the city list API here.
district_id integer (required)
Agent’s district code based on the identity chosen.

Validation:
Available values can be retrieved from the district list API here.
address string (required)
Agent’s address based on the identity chosen.

Validation:
  • Alphanumeric
  • 10-300 characters
  • Spaces, ., -, /, (, and )
gender string (required)
Agent’s gender.

Validation:
Accepted value are as follows:
  • male
  • female
occupation string (required)
Agent’s job.

Validation:
Accepted value are as follows:
  • housewife
  • entrepreneur
  • private_employee
  • government_employee
  • foundation_board
    People who work at foundation as an employee
  • indonesian_migrant_worker
    Also known as TKI
  • company
    If sender is a company, not individual
  • others
phone_number string (required)
Agent’s phone number. It must be the one that has been verified by the company.

Validation:
  • If it starts with “0”, length is 8-24 characters
  • If it starts with “+”, length is 10-26 characters
use_identity_address integer (optional)
A flag to set if the current residential address of the Agent is the same as the identity address.

Validation:
Accepted value are as follows:
  • 0: false
  • 1: true
residence_country_id integer (optional)
Agent’s current residential address country code.

Validation:
Available values can be retrieved from the country list API here.
residence_province_id integer (optional)
Agent’s current residential address province code.

Validation:
Available values can be retrieved from the province list API here.
residence_city_id integer (optional)
Agent’s current residential address city code.

Validation:
Available values can be retrieved from the city list API here.
residence_district_id integer (optional)
Agent’s current residential address district code.

Validation:
Available values can be retrieved from the district list API here.
residence_address string (optional)
Agent’s current residential address.

Validation:
  • Alphanumeric
  • 10-300 characters
  • Spaces, ., -, /, (, and )
email string (optional)
Agent’s email.

Validation:

Response

Status 200
Content-Type: application/json

{
   "id": 1,
   "company_id": 1,
   "name": "John Doe",
   "identity_type": "ktp",
   "identity_number": "1234567890123456",
   "birth_place": "Kota Depok",
   "birth_date": "31-10-1990",
   "gender": "male",
   "country_id": 1,
   "country_name": "Indonesia",
   "province_id": 12,
   "province_name": "Jawa Barat",
   "city_id": 184,
   "city_name": "Kota Depok",
   "district_id": 1234,
   "district_name": "Sukmajaya",
   "address": "Jalan Margonda Raya",
   "residence_country_id": 1,
   "residence_country_name": "Indonesia",
   "residence_province_id": 12,
   "residence_province_name": "Jawa Barat",
   "residence_city_id": 128,
   "residence_city_name": "Kota Depok",
   "residence_district_id": 1234,
   "residence_district_name": "Sukmajaya",
   "residence_address": "Jalan Margonda Raya",
   "occupation": "entrepreneur",
   "phone_number": "+628123456789",
   "email": "[email protected]",
   "kyc_status": "BASIC_DATA"
}
Attribute Description
id Id of the created Agent
company_id Id of the company which the Agent belongs to
name Agent’s full name
identity_type Type of identity. Possible values are:
  • ktp
    National Id Card or KTP in Indonesia
  • passport
identity_number Identity number based on the type chosen
birth_place Agent’s birth place
birth_date Agent’s birth date on DD-MM-YYYY format
gender Agent’s gender. Possible values are:
  • male
  • female
country_id Agent’s country code
country_name Agent’s country name based on the country code
province_id Agent’s province code
provice_name Agent’s province name based on the province code
city_id Agent’s city ID in the identity type chosen
city_name Agent’s city name based on the city code
district_id Agent’s district ID in the identity type chosen
district_name Agent’s district name based on the district code
address Agent’s address
residence_country_id Agent’s current residential address country code
residence_country_name Agent’s current residential address country name
residence_province_id Agent’s current residential address province code
residence_provice_name Agent’s current residential address province name
residence_city_id Agent’s current residential address city code
residence_city_name Agent’s current residential address city name
residence_district_id Agent’s current residential address district code
residence_district_name Agent’s current residential address district name
residence_address Agent’s current residential address
occupation Agent’s job. Possible values are:
  • housewife
  • entrepreneur
  • private_employee
  • government_employee
  • foundation_board
    People who work at foundation as an employee
  • indonesian_migrant_worker
    Also known as TKI
  • company
    If sender is a company, not individual
  • others
phone_number Agent’s phone number
email Agent’s email
kyc_status Agent’s KYC status. Values can be seen on the KYC status enum.

Update Agent Identity

Use this endpoint to update data of the Agent.

PUT /agents HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: Basic [your encoded flip for business secret key]

Request

See Create Agent Identity request params for detailed explanation. All required parameters need to be sent through this API whether the value of the parameter wants to be changed or not.

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://bigflip.id/api/v2/agents/1");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_PUT, TRUE);

$payloads = [
   "name" => "John Smith",
   "identity_type" => "ktp",
   "identity_number" => "1234567890123456",
   "birth_date" => "31-10-1990",
   "birth_place" => "Kota Depok",
   "country_id" => 1,
   "province_id" => 12,
   "city_id" => 184,
   "district_id" => 1234,
   "address" => "Jalan Margonda Raya",
   "gender" => "male",
   "occupation" => "entrepreneur",
   "phone_number" => "+628123456789",
   "use_identity_address" => 1,
   "email" => "[email protected]",
];

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($payloads));

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
   "Content-Type: application/x-www-form-urlencoded"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
curl https://bigflip.id/api/v2/agents/1 \
    -X PUT \
    -u <secret_key>: \
    -d "name=John Smith" \
    -d "identity_type=ktp" \
    -d "identity_number=1234567890123456" \
    -d "birth_date=31-10-1990" \
    -d "birth_place=Kota Depok" \
    -d "country_id=1" \
    -d "province_id=12" \
    -d "city_id=184" \
    -d "district_id=1234" \
    -d "address=Jalan Margonda Raya" \
    -d "gender=male" \
    -d "occupation=entrepreneur" \
    -d "phone_number=+628123456789" \
    -d "use_identity_address=1" \
    -d "[email protected]"

PUT https://bigflip.id/api/v2/agents/[agent_id]

See Create Agent Identity request for detailed request parameters.

Response

{
  "id": 1,
  "company_id": 1,
  "name": "John Smith",
  "identity_type": "ktp",
  "identity_number": "1234567890123456",
  "birth_date": "31-10-1990",
  "birth_place": "Kota Depok ",
  "gender": "male",
  "country_id": 1,
  "country_name": "Indonesia",
  "province_id": 12,
  "provice_name": "Jawa Barat",
  "city_id": 184,
  "city_name": "Kota Depok",
  "district_id": 1234,
  "district_name": "Sukmajaya",
  "address": "Jalan Margonda Raya",
  "residence_country_id": 1,
  "residence_country_name": "Indonesia",
  "residence_province_id": 12,
  "residence_provice_name": "Jawa Barat",
  "residence_city_id": 128,
  "residence_city_name": "Kota Depok",
  "residence_district_id": 1234,
  "residence_district_name": "Sukmajaya",
  "residence_address": "Jalan Margonda Raya",
  "occupation": "ENTREPRENEUR",
  "phone_number": "+628123456789",
  "email": "[email protected]",
  "kyc_status": "BASIC_DATA"
}

See Create Agent Identity response for detailed explanation.

Get Agent Identity

An endpoint for obtaining the Agent identity data.

GET /agents HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: Basic [your encoded flip for business secret key]

Request

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://bigflip.id/api/v2/agents/1");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
   "Content-Type: application/x-www-form-urlencoded"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
curl https://bigflip.id/api/v2/agents/1 \
    -u <secret_key>:

GET https://bigflip.id/api/v2/agents/[agent_id]

Response

{
  "id": 1,
  "company_id": 1,
  "name": "John Doe",
  "identity_type": "ktp",
  "identity_number": "1234567890123456",
  "phone_number": "+628123456789",
  "email": "[email protected]",
  "kyc_status": "APPROVED",
  "rejected_reason_code": null,
  "rejected_reason": "",
  "status": "ACTIVE",
  "created_at": "2022-01-01 13:00:00"
}
Attribute Description
id Id of the created Agent
company_id Id of the company which the Agent belongs to
name Agent’s full name
identity_type Type of identity. Possible values are:
  • ktp
    National Id Card or KTP in Indonesia
  • passport
identity_number Identity number based on the type chosen
phone_number Agent’s phone number
email Agent’s email
kyc_status Agent’s KYC status. Values can be seen on the KYC status enum.
rejected_reason_code Rejected reason code for Agent’s KYC. This value will be:
rejected_reason Rejected reason for Agent’s KYC. Full list of rejected reasons can be seen in the Agent’s KYC Rejection Reasons list.
status Enum of agent status:
  • 0 - Deleted
  • 10 - Active
  • 20 - Blacklisted
  • 30 - Blocked
created_at Created timestamp

Upload Agent Identity Image

This is an endpoint for uploading the created Agent’s identity image. The identity image will be used by Flip for verifiying the agent data.

PUT /users/[id]/identities HTTP/1.1
Content-Type: multipart/form-data
Authorization: Basic [your encoded flip for business secret key]
Request-ID: bigflip-[generated uuid]

Request

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://api.flip.id/kyc/api/v1/users/1/identities");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_PUT, TRUE);

$payloads = [
   "user_type" => "1",
   "image" => (binary),
   "identity_type" => "1",
   "selfie" => "1"
];

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($payloads));

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
   "Content-Type: multipart/form-data",
   "Request-ID: bigflip-47EB7F57-5565-4BF0-B9DD-46C6268CEE71"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);

curl https://api.flip.id/kyc/api/v1/users/1/identities \
    -X PUT \
    -u <secret_key>: \
    -d "user_type=1" \
    -d "image=(binary)" \
    -d "identity_type=1" \
    -d "selfie=1"

PUT https://api.flip.id/kyc/api/v1/users/[agent_id]/identities

Attribute Description
user_type string (required)
Type of user.

Validation:
  • User type Agent: 1
image file (required)
Image file that wants to be uploaded.

Validation:
  • Size less than 2MB
  • Dimension between 256 (W) x 256 (H) and 4096 (W) x 4096 (H)
  • File type should be png, jpg, or jpeg
  • Image should be uploaded right from Camera app (not Gallery or File or Document app)
identity_type string (required)
Type of identity.

Validation:
Accepted value are as follows:
  • 1: National Id Card or KTP in Indonesia
  • 2: Passport
selfie string (optional)
Flag denotes the uploaded file is the identity image or selfie with identity image.

Validation:
Accepted value are as follows:
  • 0: False (default). Denotes that the uploaded file is identity image.
  • 1: True. Denotes that the uploaded file is selfie with identity image.

Response

{
  "image_url": "someurl.png"
}
Attribute Description
image_url URL of the uploaded image

Upload Supporting Documents

This is an endpoint for uploading supporting documents other than the identity image. Supporting documents could be passport, student card, employee card, driving license, etc.

POST /documents HTTP/1.1
Content-Type: multipart/form-data
Authorization: Basic [your encoded flip for business secret key]
Request-ID: bigflip-[generated uuid]

Request

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://api.flip.id/kyc/api/v1/documents");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_POST, TRUE);

$payloads = [
   "user_id" => "1",
   "user_type" => "1",
   "passport" => (binary)
];

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($payloads));

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
   "Content-Type: multipart/form-data",
   "Request-ID: bigflip-47EB7F57-5565-4BF0-B9DD-46C6268CEE71"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);

curl https://api.flip.id/kyc/api/v1/documents \
    -X POST \
    -u <secret_key>: \
    -d "user_id=1" \
    -d "user_type=1" \
    -d "passport=(binary)"

POST https://api.flip.id/kyc/api/v1/documents

At least 1 image should be sent via this API. Image validations are as follows:

Attribute Description
user_id string (required)
Agent’s ID.

Validation:
  • Numeric
user_type string (required)
Type of user.

Validation:
  • User type Agent: 1
student_card file (optional)
Student card image file.
student_card_selfie file (optional)
Selfie with student card image file.
employee_card file (optional)
Employee card image file.
employee_card_selfie file (optional)
Selfie with employee card image file.
last_certificate file (optional)
Certificate image file.
last_certificate_selfie file (optional)
Selfie with certificate image file.
passport file (optional)
Passport image file.
passport_selfie file (optional)
Selfie with passport image file.
family_card file (optional)
Family card image file.
family_card_selfie file (optional)
Selfie with family card image file.
driving_license file (optional)
Driving license image file.
driving_license_selfie file (optional)
Selfie with driving license image file.
married_card file (optional)
Married card image file.
married_card_selfie file (optional)
Selfie with married card image file.
npwp file (optional)
NPWP image file.
npwp_selfie file (optional)
Selfie with NPWP image file.
bpjs_kesehatan file (optional)
BPJS Kesehatan image file.
bpjs_kesehatan_selfie file (optional)
Selfie with BPJS Kesehatan image file.

Response

[
  {
    "id": 1,
    "type": 1,
    "selfie": false,
    "path": "someurl.png",
    "created_at": "2022-01-02T15:38:49.317601182+07:00",
    "updated_at": "2022-01-02T15:38:49.317601182+07:00"
  }
]
Attribute Description
id ID of the uploaded image
type User type: 1 (Agent)
selfie Flag if the uploaded file is the selfie image
path Uploaded file path URL
created_at Timestamp of creation of the uploaded file
updated_at Timestamp of update of the uploaded file

KYC Submission

This endpoint is used when you have finish creating and uploading the required data for your Agent.

PUT /users/[id]/submit HTTP/1.1
Content-Type: multipart/form-data
Authorization: Basic [your encoded flip for business secret key]
Request-ID: bigflip-[generated uuid]

Request

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://api.flip.id/kyc/api/v1/users/1/submit");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_PUT, TRUE);

$payloads = [
   "user_type" => "1"
];

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($payloads));

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
   "Content-Type: multipart/form-data",
   "Request-ID: bigflip-47EB7F57-5565-4BF0-B9DD-46C6268CEE71"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);

curl https://api.flip.id/kyc/api/v1/users/1/submit \
    -X PUT \
    -u <secret_key>: \
    -d "user_type=1"

PUT https://api.flip.id/kyc/api/v1/users/[agent_id]/submit

Attribute Description
user_type string (required)
Type of user.

Validation:
  • User type Agent: 1

Response

{
  "message": "KYC submission success"
}
Attribute Description
message KYC submission status message

Repair Data

An endpoint for resubmit the Agent’s identity data.

PUT /users/[id]/repairData HTTP/1.1
Content-Type: multipart/form-data
Authorization: Basic [your encoded flip for business secret key]
Request-ID: bigflip-[generated uuid]

Request

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://api.flip.id/kyc/api/v1/users/1/repair");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_PUT, TRUE);

$payloads = [
  "user_type" => "1",
  "name" => "John Smith",
  "identity_type" => "1",
  "identity_number" => "1234567890123456",
  "birth_date" => "31-10-1990",
  "birth_place" => "Kota Depok",
  "gender" => "1",
  "occupation" => "entrepreneur",
  "country_id" => "1",
  "province_id" => "12",
  "city_id" => "184",
  "district_id" => "1234",
  "address" => "Jalan Margonda Raya",
  "residence_country_id" => "1",
  "residence_province_id" => "12",
  "residence_city_id" => "184",
  "residence_district_id" => "1234",
  "residence_address" => "Jalan Margonda Raya"
];

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($payloads));

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
   "Content-Type: multipart/form-data",
   "Request-ID: bigflip-47EB7F57-5565-4BF0-B9DD-46C6268CEE71"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);

curl https://api.flip.id/kyc/api/v1/users/1/repair \
    -X PUT \
    -u <secret_key>: \
    -d "user_type=1" \
    -d "name=John Smith" \
    -d "identity_type=1" \
    -d "identity_number=1234567890123456" \
    -d "birth_date=31-10-1990" \
    -d "birth_place=Kota Depok" \
    -d "gender=1" \
    -d "occupation=entrepreneur" \
    -d "country_id=1" \
    -d "province_id=12" \
    -d "city_id=184" \
    -d "district_id=1234" \
    -d "address=Jalan Margonda Raya" \
    -d "residence_country_id=1" \
    -d "residence_province_id=12" \
    -d "residence_city_id=184" \
    -d "residence_district_id=1234" \
    -d "residence_address=Jalan Margonda Raya"

PUT https://api.flip.id/kyc/api/v1/users/[agent_id]/repair

Attribute Description
user_type string (required)
Type of user.

Validation:
  • User type Agent: 1
name string (optional)
Agent’s full name.

Validation:
  • Alphanumeric
  • 1-50 characters
identity_type string (optional)
Type of identity.

Validation:
Accepted value are as follows:
  • 1: National Id Card or KTP in Indonesia
  • 2: Passport
identity_number string (optional)
Identity number based on the type chosen.

Validation:
  • 16 characters for KTP
  • 20 characters for Passport
birth_date string (optional)
Agent’s birth date.

Validation:
  • DD-MM-YYYY format
birth_place string (optional)
Agent’s birth place.

Validation:
  • Alphanumeric
  • 255 characters
gender string (optional)
Agent’s gender.

Validation:
Accepted value are as follows:
  • 1 for male
  • 2 for female
occupation string (optional)
Agent’s job.

Validation:
Accepted value are as follows:
  • housewife
  • entrepreneur
  • private_employee
  • government_employee
  • foundation_board
    People who work at foundation as an employee
  • indonesian_migrant_worker
    Also known as TKI
  • company
    If sender is a company, not individual
  • others
country_id string (optional)
Agent’s country code based on the identity chosen.

Validation:
Available values can be retrieved from the country list API here.
province_id string (optional)
Agent’s province code based on the identity chosen.

Validation:
Available values can be retrieved from the province list API here.
city_id string (optional)
Agent’s city code based on the identity chosen.

Validation:
Available values can be retrieved from the city list API here.
district_id string (optional)
Agent’s district code based on the identity chosen.

Validation:
Available values can be retrieved from the district list API here.
address string (optional)
Agent’s address based on the identity chosen.

Validation:
  • Alphanumeric
  • 10-300 characters
  • Spaces, ., -, /, (, and )
residence_country_id string (optional)
Agent’s current residential address country code.

Validation:
Available values can be retrieved from the country list API here.
residence_province_id string (optional)
Agent’s current residential address province code.

Validation:
Available values can be retrieved from the province list API here.
residence_city_id string (optional)
Agent’s current residential address city code.

Validation:
Available values can be retrieved from the city list API here.
residence_district_id string (optional)
Agent’s current residential address district code.

Validation:
Available values can be retrieved from the district list API here.
residence_address string (optional)
Agent’s current residential address.

Validation:
  • Alphanumeric
  • 10-300 characters
  • Spaces, ., -, /, (, and )

Response

{
  "user_id": 1,
  "user_type": 1,
  "name": "John Smith",
  "birth_place": "Kota Depok ",
  "birth_date": "31-10-1990T00:00:00Z",
  "gender": 1,
  "status": 20,
  "basic_data_filled": true,
  "identity_type": 1,
  "nik": "1234567890123456",
  "passport_number": null,
  "occupation": "entrepreneur",
  "country_id": 1,
  "province_id": 12,
  "city_id": 184,
  "district_id": 1234,
  "address": "Jalan Margonda Raya",
  "residence_country_id": 1,
  "residence_province_id": 12,
  "residence_city_id": 128,
  "residence_district_id": 1234,
  "residence_address": "Jalan Margonda Raya",
  "created_at": "2022-04-20T14:37:07+07:00",
  "updated_at": "2022-04-21T13:48:05+07:00"
}
Attribute Description
user_id Id of the Agent
user_type User type Agent: 1
name Agent’s full name
birth_date Agent’s birth date
birth_place Agent’s birth place
gender Agent’s gender. Possible values are:
  • 1 for male
  • 2 for female
status For this endpoint, the returned status will always be 20. It means PENDING (See KYC status enum)
basic_data_filled Flag if the Agent’s basic data has been filled
identity_type Type of identity. Possible values:
  • 1: National Id Card or KTP in Indonesia
  • 2: Passport
nik Identity number value if the identity_type is KTP (1)
passport_number Identity number value if the identity_type is Passport (2)
occupation Agent’s job. Possible values are:
  • housewife
  • entrepreneur
  • private_employee
  • government_employee
  • foundation_board
    People who work at foundation as an employee
  • indonesian_migrant_worker
    Also known as TKI
  • company
    If sender is a company, not individual
  • others
country_id Agent’s country code
province_id Agent’s province code
city_id Agent’s city ID in the identity type chosen
district_id Agent’s district ID in the identity type chosen
address Agent’s address
residence_country_id Agent’s current residential address country code
residence_province_id Agent’s current residential address province code
residence_city_id Agent’s current residential address city code
residence_district_id Agent’s current residential address district code
residence_address Agent’s current residential address
created_at Agent’s identity data created at timestamp
updated_at Agent’s identity data updated at timestamp

Repair Identity Image

An endpoint for reuploading the Agent’s identity image.

PUT /users/[id]/repairPhoto HTTP/1.1
Content-Type: multipart/form-data
Authorization: Basic [your encoded flip for business secret key]
Request-ID: bigflip-[generated uuid]

Request

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://api.flip.id/kyc/api/v1/users/1/repairPhoto");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_PUT, TRUE);

$payloads = [
   "user_type" => "1",
   "image" => (binary)
];

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($payloads));

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
   "Content-Type: multipart/form-data",
   "Request-ID: bigflip-47EB7F57-5565-4BF0-B9DD-46C6268CEE71"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);

curl https://api.flip.id/kyc/api/v1/users/1/repairPhoto \
    -X PUT \
    -u <secret_key>: \
    -d "user_type=1" \
    -d "image=(binary)"

PUT https://api.flip.id/kyc/api/v1/users/[agent_id]/repairPhoto

Attribute Description
user_type string (required)
Type of user.

Validation:
  • User type Agent: 1
image file (required)
Agent’s identity image file.

Validation:
  • Size less than 2MB
  • Dimension between 256 (W) x 256 (H) and 4096 (W) x 4096 (H)
  • File type should be png, jpg, or jpeg
  • Image should be uploaded right from Camera app (not Gallery or File or Document app)

Response

{
  "image_url": "someurl.png"
}
Attribute Description
image_url URL of the uploaded image

Repair Identity-Selfie Image

An endpoint for reuploading the Agent’s selfie with identity image.

PUT /users/[id]/repairSelfie HTTP/1.1
Content-Type: multipart/form-data
Authorization: Basic [your encoded flip for business secret key]
Request-ID: bigflip-[generated uuid]

Request

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://api.flip.id/kyc/api/v1/users/1/repairSelfie");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_PUT, TRUE);

$payloads = [
   "user_type" => "1",
   "image" => (binary)
];

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($payloads));

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
   "Content-Type: multipart/form-data",
   "Request-ID: bigflip-47EB7F57-5565-4BF0-B9DD-46C6268CEE71"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);

curl https://api.flip.id/kyc/api/v1/users/1/repairSelfie \
    -X PUT \
    -u <secret_key>: \
    -d "user_type=1" \
    -d "image=(binary)"

PUT https://api.flip.id/kyc/api/v1/users/[agent_id]/repairSelfie

Attribute Description
user_type string (required)
Type of user.

Validation:
  • User type Agent: 1
image file (required)
Image of Agent’s selfie with ID.

Validation:
  • Size less than 2MB
  • Dimension between 256 (W) x 256 (H) and 4096 (W) x 4096 (H)
  • File type should be png, jpg, or jpeg
  • Image should be uploaded right from Camera app (not Gallery or File or Document app)

Response

{
  "image_url": "someurl.png"
}
Attribute Description
image_url URL of the uploaded image

Get Country List

An endpoint for obtaining the Country List.

GET /countries HTTP/1.1
Content-Type: multipart/form-data
Authorization: Basic [your encoded flip for business secret key]
Request-ID: bigflip-[generated uuid]

Request

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://bigflip.id/api/v2/countries?user_type=1");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
   "Content-Type: application/x-www-form-urlencoded",
   "Request-ID: bigflip-47EB7F57-5565-4BF0-B9DD-46C6268CEE71"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
curl https://api.flip.id/kyc/api/v1/countries?user_type=1 \
    -u <secret_key>:

GET https://api.flip.id/kyc/api/v1/countries?user_type=user_type

Param Value
user_type string (required)
Type of user.

Validation:
  • User type Agent: 1

Response

{
  "countries": [
    {
      "id": 1,
      "name": "Indonesia"
    },
    ...
  ]
}
Attribute Description
countries Array of country objects

Country Object

Attribute Description
id Country ID
name Country name

Get Province List

An endpoint for obtaining the Province List.

GET /provinces HTTP/1.1
Content-Type: multipart/form-data
Authorization: Basic [your encoded flip for business secret key]
Request-ID: bigflip-[generated uuid]

Request

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://bigflip.id/api/v2/provinces?user_type=1&country_id=1");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
   "Content-Type: application/x-www-form-urlencoded",
   "Request-ID: bigflip-47EB7F57-5565-4BF0-B9DD-46C6268CEE71"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
curl https://api.flip.id/kyc/api/v1/provinces?user_type=1&country_id=1 \
    -u <secret_key>:

GET https://api.flip.id/kyc/api/v1/provinces?user_type=user_type&country_id=country_id

Param Value
user_type string (required)
Type of user.

Validation:
  • User type Agent: 1
country_id integer (optional)
Country ID for filtering the provinces

Response

{
  "provinces": [
    {
      "id": 1,
      "name": "West Java"
    },
    ...
  ]
}
Attribute Description
provinces Array of province objects

Province Object

Attribute Description
id Province ID
name Province name

Get City List

An endpoint for obtaining the City List.

GET /cities HTTP/1.1
Content-Type: multipart/form-data
Authorization: Basic [your encoded flip for business secret key]
Request-ID: bigflip-[generated uuid]

Request

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://bigflip.id/api/v2/cities?user_type=1&province_id=1");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
   "Content-Type: application/x-www-form-urlencoded",
   "Request-ID: bigflip-47EB7F57-5565-4BF0-B9DD-46C6268CEE71"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
curl https://api.flip.id/kyc/api/v1/cities?user_type=1&province_id=1 \
    -u <secret_key>:

GET https://api.flip.id/kyc/api/v1/cities?user_type=user_type&province_id=province_id

Param Value
user_type string (required)
Type of user.

Validation:
  • User type Agent: 1
province_id integer (optional)
Province ID for filtering the cities

Response

{
  "cities": [
    {
      "id": 1,
      "name": "Depok"
    },
    ...
  ]
}
Attribute Description
cities Array of city objects

City Object

Attribute Description
id City ID
name City name

Get District List

An endpoint for obtaining the District List.

GET /districts HTTP/1.1
Content-Type: multipart/form-data
Authorization: Basic [your encoded flip for business secret key]
Request-ID: bigflip-[generated uuid]

Request

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://bigflip.id/api/v2/districts?user_type=1&city_id=1");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
   "Content-Type: application/x-www-form-urlencoded",
   "Request-ID: bigflip-47EB7F57-5565-4BF0-B9DD-46C6268CEE71"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
curl https://api.flip.id/kyc/api/v1/districts?user_type=1&city_id=1 \
    -u <secret_key>:

GET https://api.flip.id/kyc/api/v1/districts?user_type=user_type&districts?city_id=city_id

Param Value
user_type string (required)
Type of user.

Validation:
  • User type Agent: 1
city_id integer (optional)
City ID for filtering the districts

Response

{
  "districts": [
    {
      "id": 1,
      "name": "Sukmajaya"
    },
    ...
  ]
}
Attribute Description
districts Array of district objects

District Object

Attribute Description
id District ID
name District name

Enumeration

Agent’s KYC Status

Name Description
BASIC_DATA Agent has been created successfully
UPLOAD_IDENTITY_FAILED Identity image is failed to be uploaded
UPLOAD_IDENTITY_SUCCESS Identity image is succeed to be uploaded
UPLOAD_IDENTITY_SELFIE_PROGRESS Selfie identity image has been uploaded
UPLOAD_IDENTITY_SELFIE_FAILED Selfie identity image is failed to be uploaded
UPLOAD_IDENTITY_SELFIE_SUCCESS Selfie identity image is succeed to be uploaded
PENDING Agent is waiting to be checked by Flip ops
SUSPICIOUS Agent is flagged by Flip’s admin, and needs to be checked.
NEED_TO_CHECK Agent is flagged by Flip’s admin, and needs to be checked.
HELP Need to upload supporting documents, usually after Agent is rejected
APPROVED KYC Approved
REJECTED KYC Rejected

Agent’s KYC Rejection Reasons

Code Meaning Expectation
10 The data that is filled in does not match with identity card Repair ID data
11 NIK does not match the format Upload supporting document (Kartu Keluarga/NPWP/BPJS Kesehatan)
12 NIK already registered in another account Chat with CX team
13 NIK data is bolded manually Upload supporting document (Kartu Keluarga/NPWP/BPJS Kesehatan)
14 Identity card blurry or got spotlight or cannot be read Upload ID again
15 The Identity card uploaded is not (KTP/Passport/KITAS) Upload ID again
16 Identity card is not fully captured Upload ID again
17 Part of the data on the photo ID card is missing so it can’t be read in its entirety Upload ID again OR Upload supporting documents (Kartu Keluarga/NPWP/BPJS Kesehatan)
18 If the identity card is broken up to the data section on the identity card Upload ID again
19 ID card has expired Upload ID again
20 Photo ID card is not original Upload ID again
21 The background of the user’s pass photo on the ID card is not blue/red Upload ID again OR Upload supporting documents (Kartu Keluarga/NPWP/BPJS Kesehatan)
22 Pass photo in identity card is not original but only patch photo Chat with CX team
23 Combination photos are not clearly visible or partially covered Upload selfie with ID again
24 Combination photos only contain face images Upload selfie with ID again
25 Combination photo of the user holding another identity card other than (KTP/Passport/KITAS) Upload selfie with ID again
26 Combination photos do not directly hold an identity card Upload selfie with ID again
27 Photos taken indirectly Upload selfie with ID again
28 User wearing veil Chat with CX team
29 Indicated in violation of the Terms and Conditions of the application Fraud user - Can’t do anything
30 We need confirm your KYC with some data Chat with CX team
31 Identity card of supporting document expired Upload supporting documents - (Kartu Keluarga, NPWP, BPJS Kesehatan)
32 Photo of supporting document is blurry or can’t be read Upload supporting documents - (Kartu Keluarga, NPWP, BPJS Kesehatan)
33 Photo of supporting document is a random object/image Upload supporting documents - (Kartu Keluarga, NPWP, BPJS Kesehatan)

Error List

This error list is related to the Agent’s Verification services.

Error format

{
  "errors": [
    {
      "code": [error code],
      "message": [error message]
    }
  ]
}
Error Code Meaning Expectation
400 Invalid user ID Recheck the userID in URL params
401 Invalid token
  1. Header Request-ID must be filled
  2. Missing user_type
  3. IP must be whitelisted
403 Forbidden Missing user_type
404 Endpoint not found Recheck API URL
500 Internal server error Reach out to FLIP KYC team
503 Internal server error Reach out to FLIP KYC team
1001 Attribute payload is empty Fill the attribute payload
1002 Param attribute is invalid Ensure attribute’s validation
2001 Param attribute characters is invalid Ensure attribute’s validation
2002 Param attribute is duplicate Use different identity number
2003 Param attribute contains non-sterile characters Ensure attribute’s validation
2004 Param attribute contains non-alphanumeric characters Ensure attribute’s validation
1011 Agent ID is not found Agent ID not registered yet
4001 Invalid input parameter Ensure attribute’s validation
4002 Invalid user type Ensure attribute’s validation
4003 Invalid user ID Recheck the userID in URL params
4004 Invalid identity type Ensure attribute’s validation
4006 Rejected reason is not match Reheck rejected_reason_code. It should match with the API Repair type.
4007 Image file size is too large Image size should be less than 2MB
4008 Image is not valid Please ensure image validations
4009 Failed reading image data Ensure uploaded image is not corrupted
4010 Invalid agent status Depends on which API this error displayed:
  1. KYC Submission: Ensure agent’s KYC status is 19 (UPLOAD_IDENTITY_SELFIE_SUCCESS)
  2. Upload Supporting Documents: Ensure agent’s KYC status is 50 (REJECTED) or 15 (UPLOAD_IDENTITY_SELFIE_FAILED)
4011 Maximum retry has been achieved Upload supporting documents
4012 Identity number has been used/registered Use different identity number
4013 Invalid document type Ensure attribute’s validation
4014 Image not similar Reach out to FLIP KYC team
4015 Cannot create/update agent data Reach out to FLIP KYC team

Accept Payment

Hi, Welcome to Flip for Business Accept Payment APIs !

Flip for Business - will help you to accept payment from your customers. You can accept payments from your customers using various payment methods like Bank Transfers, Virtual Accounts, E-Wallets, QRIS, Credit Cards and Retail methods. You can see the the end customer transaction flow in our live demo here https://business.flip.id/accept-payment-landing#demo.

All payment links, payment transactions, and/or the details can be monitored through the Flip for Business dashboard and various API endpoints.

You can integrate with Accept Payment APIs depending on the flow that you want for your customers-

Flow 1 - Link generation using API and using Flip for Business Front End for the complete payor journey

Flow 1 Example

Flow 2 - Link generation using API by passing name and email of the payor and using Flip for Business UI for only payment option selection payor journey

Flow 2 Example

Flow 3 - Generate a payment and having complete control of the payor’s front end journey

Flow 3 Example

Create Bill

An endpoint to create a payment/bill link.

POST /pwf/bill HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: Basic <secret_key>: (notes with ":" after secret key)

Request

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://bigflip.id/api/v2/pwf/bill");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_POST, TRUE);

$payloads = [
    "title" => "Coffee Table",
    "amount" => 900000,
    "type" => "SINGLE",
    "expired_date" => "2022-12-30 15:50",
    "redirect_url" => "https://someurl.com",
    "is_address_required" => 0,
    "is_phone_number_required" => 0
];

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($payloads));

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  "Content-Type: application/x-www-form-urlencoded"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
curl https://bigflip.id/api/v2/pwf/bill \
    -X POST \
    -u <secret_key>: \
    -d title="Coffee Table" \
    -d amount="900000" \
    -d type="SINGLE" \
    -d expired_date="2022-12-30 15:50:00" \
    -d redirect_url="https://someurl.com" \
    -d is_address_required="0" \
    -d is_phone_number_required="0"

POST https://bigflip.id/api/v2/pwf/bill

Attribute Description
title string (required)
The title of the bill.
type string (required)
Bill type:
  • SINGLE: single use
  • MULTIPLE: multiple use
For bill created with step 3 only SINGLE is permissible.
amount integer (optional)
Payment amount, minimum Rp10.000. Leave blank if want to set a flexible amount.
Optional for bill created with Step 1 and mandatory for bill created with Step 2/ Step 3.
expired_date string (optional)
Bill expiry date. The bill can’t be used any more beyond the expiry date. Format: YYYY-MM-DD HH:mm.
redirect_url string (optional)
Redirect URL after payment is success.
is_address_required integer (optional)
A flag if user needs to input their address when creating payment.
  • 0: false (default)
  • 1: true
is_phone_number_required integer (optional)
A flag if user needs to input their phone number when creating payment.
  • 0: false (default)
  • 1: true
step integer (required)
Which step the customers will be redirected to when opening the payment link. For more information on which step parameter to choose, check out which flow you plan to have for your customers here.
sender_name string (required for step 2-payment method or step 3-payment-confirmation)
Name of the Customer.
sender_email string (required for step 2-payment method or step 3-payment-confirmation)
Email of the Customer.
sender_phone_number string (applicable for step 2-payment method or step 3-payment-confirmation)
Phone number of the Customer.
sender_address string (applicable for step 2-payment method or step 3-payment-confirmation)
Address of the Customer.
sender_bank string (required for step 3-payment-confirmation)
Bank that is used for the payment.

Value will be bank_code of Flip.
Please instruct your users to follow these steps for making BSI VA payments
sender_bank_type string (required for step 3-payment-confirmation)
  • For bank transfer the value must be set as bank_account
  • For virtual account the value must be set as virtual_account
  • For e-wallet the value must be set as wallet_account.
  • For retail the value must be set as online_to_offline_account.
  • For credit card the value must be set as credit_card_account.
See Bank Account Constants.

Response

Status 200
Content-Type: application/json

Step 1
{
  "link_id": 1,
  "link_url": "flip.id/$companyname/#coffeetable",
  "title": "Coffee Table",
  "type": "SINGLE",
  "amount": 900000,
  "redirect_url": "https://someurl.com",
  "expired_date": "2022-12-30 15:50:00",
  "created_from": "API",
  "status": "ACTIVE",
  "step": 1,
  "is_address_required": 0,
  "is_phone_number_required": 0
}

Step 2
{
  "link_id": 1,
  "link_url": "flip.id/$companyname/#coffeetable",
  "title": "Coffee Table",
  "type": "SINGLE",
  "amount": 900000,
  "redirect_url": "https://someurl.com",
  "expired_date": "2022-12-30 15:50:00",
  "created_from": "API",
  "status": "ACTIVE",
  "is_address_required": 0,
  "is_phone_number_required": 0,
  "step": 2,
  "customer": {
      "name": "Customer a",
      "email": "[email protected]",
      "address": "Jl. Imam Bonjol No.39, Jakarta.",
      "phone": "+62888888888",
  }
}

Step 3 - VA Payment Method (`payment_url` for displaying payment confirmation is using Flip internal page)
{
    "link_id": 3276,
    "link_url": "flip.id/$autobisonmaster/#testpgpayment303-5",
    "title": "Test PG Payment 303",
    "type": "SINGLE",
    "amount": 50000,
    "redirect_url": "",
    "expired_date": null,
    "created_from": "API",
    "status": "ACTIVE",
    "is_address_required": 0,
    "is_phone_number_required": 0,
    "step": 3,
    "customer": {
        "name": "Customer A",
        "email": "[email protected]",
        "address": "Jl. Imam Bonjol No.39, Jakarta.",
        "phone": "+62888888888",
    },
    "bill_payment": {
        "id": "62d8ddde3e10b",
        "amount": 50000,
        "unique_code": 0,
        "status": "PENDING",
        "sender_bank": "mandiri",
        "sender_bank_type": "virtual_account",
        "receiver_bank_account": {
            "account_number": "3453280274531212",
            "account_type": "virtual_account",
            "bank_code": "mandiri",
            "account_holder": "Customer A"
        },
        "user_address": "Jl. Imam Bonjol No.39, Jakarta.",
        "user_phone": "+62888888888",
        "created_at": 1658379743
    },
    "payment_url": "https://flip.id/pwf/transaction/consolidated?redirected_from=internal&id=62d8ddde3e10b"
}

Step 3 - e-Wallet Payment Method(`payment_url` for displaying payment instruction is using Flip's partner/external's page) 
{
    "link_id": 55228,
    "link_url": "flip.id/$fliptechlenterainspirasipertiwi-1/#sfs3",
    "title": "SFS3",
    "type": "SINGLE",
    "amount": 10100,
    "redirect_url": "https://tokopedia.com",
    "expired_date": "2022-07-24 23:59",
    "created_from": "API",
    "status": "ACTIVE",
    "is_address_required": 0,
    "is_phone_number_required": 0,
    "step": 3,
    "customer": {
        "name": "Customer A",
        "email": "[email protected]",
        "address": "Jl. Imam Bonjol No.39, Jakarta.",
        "phone": "+62888888888",
    },
    "bill_payment": {
        "id": "62d8cfc3d145a",
        "amount": 10100,
        "unique_code": 0,
        "status": "PENDING",
        "sender_bank": "ovo",
        "sender_bank_type": "wallet_account",
        "receiver_bank_account": {
            "account_number": null,
            "account_type": "wallet_account",
            "bank_code": "ovo",
            "account_holder": "Customer A"
        },
        "user_address": "Jl. Imam Bonjol No.39, Jakarta.",
        "user_phone": "+62888888888",
        "created_at": 1658376132
    },
    "payment_url": "https://flip.id/pwf/transaction/consolidated?redirected_from=internal&id=64a67968e9898"
}

Step 3 - QRIS Payment Method (`payment_url` for displaying payment confirmation is using Flip internal page)
{
    "link_id": 3745,
    "link_url": "flip.id/$autobisonmaster/#tiketidnvsmaytest-1",
    "title": "Tiket IDN vs MAY Test",
    "type": "SINGLE",
    "amount": 50000,
    "redirect_url": "",
    "expired_date": null,
    "created_from": "API",
    "status": "ACTIVE",
    "is_address_required": 0,
    "is_phone_number_required": 0,
    "step": 3,
    "customer": {
        "name": "Customer A",
        "email": "[email protected]",
        "address": "Jl. Imam Bonjol No.39, Jakarta.",
        "phone": "+62888888888",
    },
    "bill_payment": {
        "id": "PGPWF1011688631657552",
        "amount": 50000,
        "unique_code": 0,
        "status": "PENDING",
        "sender_bank": "qris",
        "sender_bank_type": "wallet_account",
        "receiver_bank_account": {
            "account_number": null,
            "account_type": "wallet_account",
            "bank_code": "qris",
            "account_holder": "Customer A",
            "qr_code_data": "00020101021226530012COM.DOKU.WWW0118936008990000004627020446270303UBE51440014ID.CO.QRIS.WWW0215ID10200480846270303UBE520446275303360540850000.005802ID5904FLIP6007Jakarta61059999962470703A0150364627a38b4add91894976a8599207f662f1786304D953"
        },
        "user_address": "Jl. Imam Bonjol No.39, Jakarta.",
        "user_phone": "+62888888888",
        "created_at": 1688631657
    },
    "payment_url": "https://flip.id/pwf/transaction/consolidated?redirected_from=internal&id=64a67968e9898"
}

See Bill Object for the details.

Creating & Displaying QR Image

Using the Create Bill API with step 3, Merchant is able to generate the QR Image based on the qr_code_data value from the Create Bill API response. As reference merchant can check ZXing Library for generating the QR Image, here is the reference link https://github.com/zxing/zxing

Following the standard from ASPI, Merchant need to display QRIS Logo above the QR and NMID below the QR, like sample below. NMID will be shared by Flip (provided by PTEN) when the Merchant is ready to go to Production.

PWF QRIS Example

BSI VA Payment Steps

BSI Mobile

  1. Buka Aplikasi BSI Mobile
  2. Pilih Menu pembayaran
  3. Pilih menu E-commerce
  4. Pilih merchant “DOKU”
  5. Pilih Nomor Rekening
  6. Masukkan No Bayar : “000002489144” (No Bayar adalah Nomor VA TANPA 4 digit pertama)
  7. Masukkan PIN BSI Mobile
  8. Transaksi selesai

Banking Syariah Indonesia Net

  1. Buka Banking Syariah Indonesia Net
  2. Pilih Menu “pembayaran”
  3. Pilih Jenis Pembayaran “Institusi”
  4. Pilih merchant “DOKU”
  5. Masukkan Nomor Pembayaran : “000002489144”
  6. Klik tombol “Verifikasi Aplikasi Pembayaran”
  7. Masukkan PIN dan Token Banking Syariah Indonesia Net
  8. Klik tombol “Submit”
  9. Transaksi selesai

ATM BSI

  1. Pilih Bahasa
  2. Masukkan PIN ATM
  3. Pilih “MENU UTAMA”
  4. Pilih menu “PEMBAYARAN/PEMBELIAN”
  5. Pilih menu “AKADEMIK/INSTITUSI”
  6. Masukkan Kode Institusi (6059) dan Nomor Virtual Account (000002489144) = 6059000002489144 dan klik “BENAR”
  7. Klik “BENAR” pada slide konfirmasi
  8. Transaksi selesai

Payment using Internet Banking / Mobile Banking Other Banks

  1. Buka menu Transfer ke Rekening Bank lain
  2. Pilih bank tujuan “Bank Syariah Indonesia (BSI)” dengan kode bank “451”
  3. Masukkan Kode Transfer Bank Lain (900), Kode Institusi (6059), dan Kode Pembayaran (000002489144) = “9006059000002489144” sebagai rekening tujuan, kemudian tekan “Benar”
  4. Masukkan Jumlah Pembayaran. Pastikan Jumlah Pembayaran sesuai dengan invoice. Pembayaran akan gagal jika Jumlah Pembayaran berbeda dengan invoice.
  5. Muncul Layar Konfirmasi Transfer yang berisi Nomor rekening tujuan dan Nama beserta jumlah yang dibayar, jika sudah benar
  6. Selesai

Channel Payment using ATMs of Other Banks

  1. Buka menu Transfer ke Rekening Bank lain
  2. Masukkan Kode Bank BSI (451), Kode Transfer Bank Lain (900), Kode Institusi (6059), dan Kode Pembayaran (000002489144) = “4519006059000002489144” sebagai rekening tujuan, kemudian tekan “Benar”
  3. Masukkan Jumlah Pembayaran dan pilih “Benar”. Pastikan Jumlah Pembayaran sesuai dengan invoice. Pembayaran akan gagal jika Jumlah Pembayaran berbeda dengan invoice.
  4. Muncul Layar Konfirmasi Transfer yang berisi Nomor rekening tujuan dan Nama beserta jumlah yang dibayar, jika sudah benar, Tekan “Benar”
  5. Selesai

Mandiri VA Payment Steps

Livin’ by Mandiri

  1. Login ke Livin’
  2. Pilih menu “Bayar”
  3. Ketik “DOKU VA Aggregator” atau “88899” pada bagian search
  4. Masukkan No VA “8889940019213374” secara keseluruhan, lalu masukan nominal, kemudian tekan Lanjutkan
  5. Pastikan detail pembayaran sudah sesuai seperti no VA, Jumlah Pembayaran dan detail lainnya
  6. Pilih Rekening Sumber
  7. Pilih Lanjut Bayar kemudian masukkan PIN dan konfirmasi
  8. Transaksi selesai dan simpan resi sebagai bukti transaksi

ATM Mandiri

  1. Masukkan Kartu ATM Mandiri, lalu pilih Bahasa
  2. Masukkan PIN ATM
  3. Pilih menu “Bayar/Beli”
  4. Pilih menu “Lainnya”
  5. Kemudian tekan kembali “Lainnya”
  6. Pilih menu “Multipayment”
  7. Masukkan Kode Perusahaan / Institusi “88899”, kemudian tekan BENAR
  8. Masukkan No VA “8889940019213374” secara keseluruhan, lalu masukan nominal, kemudian tekan Lanjutkan
  9. Pastikan detail pembayaran sudah sesuai seperti no VA, Jumlah Pembayaran dan detail lainnya
  10. Konfirmasi pembayaran dengan pilih “YA”
  11. Transaksi selesai dan simpan resi sebagai bukti transaksi

ATM Bank Lain

  1. Masukkan PIN
  2. Pilih menu “Transfer”
  3. Pilih “Ke Rek Bank Lain”
  4. Masukkan Kode Bank Mandiri “008” dan kode bayar “8889940019213374” sebagai rekening tujuan, kemudian tekan “Benar”
  5. Masukkan Jumlah pembayaran dan pilih “Benar”
  6. Muncul Layar Konfirmasi Transfer yang berisi Nomor rekening tujuan dan Nama beserta jumlah yang dibayar, jika sudah benar, Tekan “Benar”
  7. Selesai

BRI VA Payment Steps

ATM BRI

  1. Masukkan Kartu Debit BRI dan PIN Anda
  2. Pilih menu Transaksi Lain > Pembayaran > Lainnya > BRIVA
  3. Masukkan kode pembayaran / virtual account number anda : “1236260010915996”
  4. Di halaman konfirmasi, pastikan detil pembayaran sudah sesuai seperti Nomor BRIVA, Nama Pelanggan dan Jumlah Pembayaran
  5. Ikuti instruksi untuk menyelesaikan transaksi
  6. Simpan struk transaksi sebagai bukti pembayaran

Mobile Banking BRI

  1. Login aplikasi BRI Mobile
  2. Pilih menu BRIVA
  3. Pilih pembayaran baru
  4. Masukkan kode pembayaran / virtual account number anda : “1236260010915996”
  5. Di halaman konfirmasi, pastikan detil pembayaran sudah sesuai seperti Nomor BRIVA, Nama Pelanggan dan Total Pembayaran
  6. Masukkan PIN
  7. Simpan notifikasi SMS sebagai bukti pembayaran

Internet Banking BRI

  1. Login pada alamat Internet Banking BRI (https://ib.bri.co.id/ib-bri/Login.html)
  2. Pilih menu Pembayaran Tagihan > Pembayaran > BRIVA
  3. Masukkan kode pembayaran / virtual account number anda : “1236260010915996”
  4. Di halaman konfirmasi, pastikan detil pembayaran sudah sesuai seperti Nomor BRIVA, Nama Pelanggan dan Jumlah Pembayaran
  5. Masukkan password dan mToken
  6. Cetak/simpan struk pembayaran BRIVA sebagai bukti pembayaran

Mini ATM/EDC BRI

  1. Pilih menu Mini ATM > Pembayaran > BRIVA
  2. Swipe Kartu Debit BRI Anda
  3. Masukkan kode pembayaran / virtual account number anda : “1236260010915996”
  4. Masukkan PIN
  5. Di halaman konfirmasi, pastikan detil pembayaran sudah sesuai seperti Nomor BRIVA, Nama Pelanggan dan Jumlah Pembayaran
  6. Simpan struk transaksi sebagai bukti pembayaran

ATM Bank Lain

  1. Masukkan Kartu Debit dan PIN Anda
  2. Pilih menu Transaksi Lainnya > Transfer > Ke Rek Bank Lain
  3. Masukkan kode bank BRI kemudian diikuti kode pembayaran / virtual account number anda : “0021236260010915996”
  4. Ikuti instruksi untuk menyelesaikan transaksi
  5. Simpan struk transaksi sebagai bukti pembayaran

BNI VA Payment Steps

Mobile banking payment

  1. Buka aplikasi BNI Mobile
  2. Login ke akun BNI Mobile Banking Anda.
  3. Pilih menu pembayaran
  4. Pilih “Transfer”
  5. Pilih E-Commerce
  6. Pilih “Virtual Account Billing”, lalu pilih rekening debit Anda
  7. Pilih merchant Foolmoon
  8. Masukkan Nomor Virtual Account Anda di “Input Baru”
  9. Masukkan nomor pembayaran 8291300001762993
  10. Konfirmasi bahwa jumlah pembayaran ditampilkan di layar
  11. Masukkan PIN
  12. Konfirmasi transaksi dan masukkan kata sandi transaksi Anda
  13. Konfirmasi transaksi
  14. Transaksi berhasil

ATM BNI

  1. Masukkan kartu ATM BNI, lalu masukkan PIN ATM.
  2. Pilih menu “Menu Lain”, lalu pilih menu “Transfer”
  3. Pilih Jenis Akun
  4. Pilih “Ke Rekening BNI”
  5. Masukkan nomor rekening dengan Kode Pembayaran (mis.: 7810202001539202) dan pilih “Benar”
  6. Saat Konfirmasi Pembayaran muncul, pilih “Ya”
  7. Transaksi sudah selesai, mohon simpan struknya.

BNI Internet Banking

  1. Login Internet Banking, lalu pilih menu “Transfer”.
  2. Pilih menu “In-House”.
  3. Masukkan nomor rekening dengan Kode Pembayaran Anda (mis.: 7810202001539202) lalu pilih “Kirim”.
  4. Masukkan “Kata Sandi” dan OTP Anda.
  5. Transaksi sudah selesai, mohon simpan struknya.

BNI Teller

  1. Kunjungi Teller Bank BNI di Kantor BNI.
  2. Isi Formulir Setoran Tunai
  3. Pilih “Tunai” atau tunai. Masukkan Kode Pembayaran (mis.: 781087101123456) dan jumlah. Tulis nama dan tanda tangan Anda.
  4. Kirim Formulir Setoran Tunai dan uang tunai ke Teller BNI.
  5. Transaksi selesai, mohon simpan salinan Formulir Setoran Tunai sebagai tanda terima pembayaran.

ATM Bank Lain

  1. Masukkan kartu ATM, lalu masukkan PIN ATM.
  2. Pilih menu “Transfer Antar Bank”.
  3. Masukkan “Kode Bank Tujuan” : BNI (Kode Bank : 009) + Kode Pembayaran (mis.:781078787101123456).
  4. Masukan “jumlah”.
  5. Saat Konfirmasi Transfer muncul, pilih “Ya” / “Lanjut”.“
  6. Transaksi sudah selesai, silahkan ambil struknya.

CIMB Niaga VA Payment Steps

Octo Mobile

  1. Login ke Octo Mobile
  2. Pilih menu : Transfer
  3. Pilih menu : Transfer to Other CIMB Niaga Account
  4. Pilih Source of fund
  5. Masukkan nomor virtual account 1899000000958158
  6. Masukkan jumlah pembayaran (Amount) sesuai tagihan
  7. Klik tombol Next
  8. Nomor virtual account, nama virtual account dan jumlah pembayaran (Amount) ditampilkan pada layar
  9. Klik tombol Confirm
  10. Masukkan Mobile Banking PIN

Internet Banking Bank Lain

  1. Login ke internet banking
  2. Pilih menu transfer ke Bank Lain Online
  3. Pilih bank tujuan Bank CIMB Niaga (kode bank: 022)
  4. Masukkan nomor virtual account 1899000000958158
  5. Masukkan jumlah pembayaran sesuai tagihan
  6. Nomor, nama virtual account dan jumlah billing ditampilkan pada layar
  7. Ikuti instruksi untuk menyelesaikan transaksi
  8. Konfirmasi pembayaran ditampilkan pada layar

OCTO Clicks

  1. Login ke OCTO Clicks (https://www.octoclicks.co.id)
  2. Pilih menu : Pembayaran Tagihan
  3. Pilih kategori transaksi : Virtual Account
  4. Pilih rekening sumber dana
  5. Masukkan nomor virtual account 1899000000958158 dan klik tombol : Lanjutkan untuk verifikasi detail
  6. Nomor virtual account, nama virtual account dan total tagihan ditampilkan pada layar
  7. Masukkan 6 digit OTP dan tekan tombol Submit
  8. Klik tombol Konfirmasi untuk memproses pembayaran

ATM CIMB

  1. Masukkan Kartu ATM dan PIN CIMB Anda
  2. Pilih menu Pembayaran > Lanjut > Virtual Account
  3. Masukkan nomor virtual account 1899000000958158
  4. Pilih rekening debit
  5. Nomor, nama virtual account dan jumlah billing ditampilkan pada layar
  6. Pilih OK untuk melakukan pembayaran
  7. Konfirmasi pembayaran ditampilkan pada layar

ATM Alto / Bersama / Prima

  1. Masukkan Kartu ATM dan PIN Anda pada mesin ATM bank tersebut
  2. Pilih menu TRANSFER > TRANSFER KE BANK LAIN
  3. Masukkan kode bank CIMB Niaga: 022
  4. Masukkan jumlah pembayaran sesuai tagihan
  5. Masukkan nomor virtual account 1899000000958158
  6. Ikuti instruksi untuk menyelesaikan transaksi
  7. Konfirmasi pembayaran ditampilkan pada layar

Permata VA Payment Steps

Internet Banking Permata (PermataNet)

  1. Login ke akun internet banking
  2. Pilih menu “pembayaran” dan pilih "Pembayaran Lainnya. Masukkan kode bank Permata (013) sebagai bank tujuan”
  3. Masukkan nominal transaksi
  4. Masukkan 16 digit nomor virtual account 8856600007388919
  5. Konfirmasi kode bank, nomor virtual account dan nominal pembayaran, jika sudah sesuai pilih “Benar”
  6. Selesai

Permata Mobile X

  1. Buka aplikasi PermataMobileX
  2. Masukkan User ID & Password
  3. Pilih “Pembayaran Tagihan”
  4. Pilih “Virtual Account”(Akun Virtual)
  5. Masukkan 16 digit Virtual Account yang tertera pada halaman konfirmasi(8856600007388919)
  6. Muncul halaman tujuan pembayaran
  7. Masukkan nominal pembayaran sesuai dengan yang ditagihkan
  8. Muncul konfirmasi pembayaran
  9. Masukkan Kode Otentikasi Transaksi
  10. Transaksi selesai

ATM Permata

  1. Masukkan PIN
  2. Pilih menu “Transaksi Lainnya”
  3. Pilih “Pembayaran”
  4. Pilih “Pembayaran Lainnya”
  5. Pilih “Virtual Account”
  6. Masukkan Nomor Virtual Account 8856600007388919
  7. Jumlah yang harus dibayar dan nomor rekening akan muncul pada halaman konfirmasi pembayaran. Jika informasi sudah benar pilih “Benar”

ATM PRIMA/ALTO

  1. Masukkan PIN
  2. Pilih “Transfer”. Jika menggunakan ATM bank lain, pilih “Pembayaran Lainnya”
  3. Pilih pembayaran lainnya
  4. Masukkan kode bank Permata (013) diikuti 16 digit nomor virtual account anda: 8856600007388919 kemudian pilih “Benar”
  5. Masukkan nominal yang akan dibayarkan. Pembayaran transaksi gagal akan muncul jika nominal yang dimasukkan salah
  6. Konfirmasi kode bank, nomor virtual account dan nominal pembayaran, jika sudah sesuai pilih “Benar”
  7. Transaksi anda selesai

Danamon VA Payment Steps

D-Mobile (M-Banking)

  1. Akses D-Mobile melalui smartphone Anda
  2. Masukkan User ID dan Password
  3. Pilih menu > “Pembayaran” > “Virtual Account”
  4. Tambahkan biller baru pembayaran
  5. Masukan 16 digit nomor virtual account (8922600000040841)
  6. Pastikan data pembayaran sudah benar
  7. Masukkan mPIN Anda untuk konfirmasi
  8. Transaksi selesai, Anda akan mendapatkan info transaksi

ATM Danamon

  1. Masukkan kartu ATM Danamon, lalu masukkan PIN ATM Anda
  2. Pilih menu > “Pembayaran” > “Lainnya” > “Virtual Account”
  3. Masukan 16 digit nomor virtual account (8922600000040841)
  4. Pastikan data pembayaran sudah benar dan pilih “YA”
  5. Transaksi selesai, harap simpan bukti transaksi Anda

ATM Bersama/ATM Alto/ATM Prima (Transfer)

  1. Masuk ke menu > “Transfer”
  2. Pilih > “Transfer ke bank lain”
  3. Masukkan kode Bank Danamon : 011 + 16 digit nomor virtual account di rekening tujuan (0118922600000040841)
  4. Masukkan jumlah pembayaran sesuai tagihan
  5. Pastikan data pembayaran sudah benar
  6. Pilih > “YA”, untuk melanjutkan transaksi
  7. Transaksi selesai, harap simpan bukti transaksi Anda

Other banks VA Payment Steps

ATM

  1. Masukkan PIN
  2. Pilih menu “Transfer”
  3. Pilih “Ke Rek Bank Lain”
  4. Masukkan Kode Bank “899” (DOKU) diikuti dengan 16 digit rekening tujuan “8000000000494638”, kemudian tekan “Benar”
  5. Masukkan Jumlah pembayaran dan pilih “Benar”
  6. Muncul Layar Konfirmasi Transfer yang berisi Nomor rekening tujuan dan Nama beserta jumlah yang dibayar, jika sudah benar, Tekan “Benar”
  7. Selesai

MOBILE BANKING - BCA MOBILE (M-BCA)

  1. Lakukan Log in pada aplikasi BCA Mobile
  2. Pilih m-BCA
  3. Masukkan kode akses m-BCA
  4. Masuk ke menu m-Transfer
  5. Masuklah ke menu Daftar Transfer dan pilih Antar Bank
  6. Masukkan nomor rekening tujuan “8000000000494638”, dan pilih DOKU pada kolom Bank
  7. Setelah itu, nama VA akan muncul, klik Kirim
  8. Setelah itu kamu diminta memasukkan Personal Identification Number (PIN) BCA, pastikan tidak salah dalam memasukkan PIN
  9. Masuk ke menu transfer antar bank. Lalu pilih ke Bank DOKU dan rekening yang baru saja didaftarkan, lalu masukkan jumlah uang yang akan kamu transfer sesuai yang tertera di invoice
  10. Kemudian kamu akan melihat menu konfirmasi nomor rekening penerima. Setelah itu kamu diminta memasukkan Personal Identification Number (PIN) BCA, pastikan tidak salah dalam memasukkan PIN

MOBILE BANKING - DANAMON (D-MOBILE)

  1. Akses D-mobile melalui handphone
  2. Login, Masukkan User ID dan password
  3. Pilih menu Transfer, lalu pilih non BDI Transfer
  4. Masukkan jumlah uang yang akan kamu transfer sesuai yang tertera di invoice
  5. Masukkan nomor rekening tujuan “8000000000494638”
  6. Masukkan nama DOKU di kolom nama Bank
  7. Klik transfer sekarang

MOBILE BANKING - PERMATA (PERMATA MOBILE X)

  1. Buka aplikasi PermataMobile X dan lakukan log in
  2. Pilih menu Transfer
  3. Pilih nomor rekening yang akan digunakan untuk mentransfer dana
  4. Input nomor rekening tujuan “8000000000494638” dan nominal sesuai dengan nominal invoice
  5. Pilih DOKU di kolom bank
  6. Pilih layanan transfer (online / LLG / RTGS), setelah itu akan muncul konfirmasi tranfer
  7. Masukan OTP / mobile PIN
  8. Selesai (akan muncul konfirmasi sukses)

MOBILE BANKING - DBS (DIGIBANK INDONESIA)

  1. Buka aplikasi Digibank Indonesia dan lakukan log in
  2. Pilih menu Transfer
  3. Pilih Tambah Penerima
  4. Pilih Jenis Transfer, Transfer Rupiah
  5. Pilih Bank Penerima, DOKU
  6. Input nomor rekening tujuan 8000000000494638, klik Lanjut
  7. Input nominal sesuai dengan nominal invoice
  8. Selanjutnya klik tombol konfirmasi, maka proses transfer pun akan berjalan

Edit Bill

An endpoint to update the attributes of an existing payment link.

PUT /pwf/{bill_id}/bill HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: Basic <secret_key>: (notes with ":" after secret key)

Request

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://bigflip.id/api/v2/pwf/1/bill");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_PUT, TRUE);

$payloads = [
    "title" => "Coffee Table",
    "amount" => 900000,
    "type" => "SINGLE",
    "expired_date" => "2022-12-30 15:50:00",
    "redirect_url" => "https://someurl.com",
    "status" => "INACTIVE",
    "is_address_required" => 0,
    "is_phone_number_required" => 0
];

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($payloads));

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  "Content-Type: application/x-www-form-urlencoded"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
curl https://bigflip.id/api/v2/pwf/1/bill \
    -X PUT \
    -u <secret_key>: \
    -d title="Coffee Table" \
    -d amount="900000" \
    -d type="SINGLE" \
    -d expired_date="2022-12-30 15:50:00" \
    -d redirect_url="https://someurl.com" \
    -d status="INACTIVE" \
    -d is_address_required="0" \
    -d is_phone_number_required="0"

PUT https://bigflip.id/api/v2/pwf/[bill_id]/bill

Attribute Description
title string (optional)
The title of the bill.
type string (optional)
Bill type:
  • SINGLE: single use
  • MULTIPLE: multiple use
for bill with step 3, type can only be “SINGLE”
amount integer (optional)
Payment amount, minimum Rp10.000. Leave blank if want to set a flexible amount.
expired_date string (optional)
Bill expiry date. The bill can’t be used any more beyond the expiry date. Format: YYYY-MM-DD HH:mm.
redirect_url string (optional)
Redirect URL after payment is success.
status string (optional)
Bill activation status:
  • ACTIVE
  • INACTIVE
is_address_required integer (optional)
A flag if user needs to input their address when creating payment.
  • 0: false (default)
  • 1: true
is_phone_number_required integer (optional)
A flag if user needs to input their phone number when creating payment.
  • 0: false (default)
  • 1: true

Response

Status 200
Content-Type: application/json

{
  "link_id": 1,
  "link_url": "flip.id/$companyname/#coffeetable",
  "title": "Coffee Table",
  "type": "SINGLE",
  "amount": 900000,
  "redirect_url": "https://someurl.com",
  "expired_date": "2022-12-30 15:50:00",
  "created_from": "API",
  "status": "ACTIVE",
  "is_address_required": 0,
  "is_phone_number_required": 0
}

See Bill Object for the details.

Get Bill

An endpoint to get a specific payment link.

GET /pwf/{bill_id}/bill HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: Basic <secret_key>: (notes with ":" after secret key)

Request

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://bigflip.id/api/v2/pwf/1/bill");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  "Content-Type: application/x-www-form-urlencoded"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
curl https://bigflip.id/api/v2/pwf/1/bill \
    -u <secret_key>:

GET https://bigflip.id/api/v2/pwf/[bill_id]/bill

Response

Status 200
Content-Type: application/json

Step 1
{
  "link_id": 1,
  "link_url": "flip.id/$companyname/#coffeetable",
  "title": "Coffee Table",
  "type": "SINGLE",
  "amount": 900000,
  "redirect_url": "https://someurl.com",
  "expired_date": "2022-12-30 15:50:00",
  "created_from": "API",
  "status": "ACTIVE",
  "step": 1,
  "is_address_required": 0,
  "is_phone_number_required": 0
}

Step 2
{
  "link_id": 1,
  "link_url": "flip.id/$companyname/#coffeetable",
  "title": "Coffee Table",
  "type": "SINGLE",
  "amount": 900000,
  "redirect_url": "https://someurl.com",
  "expired_date": "2022-12-30 15:50:00",
  "created_from": "API",
  "status": "ACTIVE",
  "is_address_required": 0,
  "is_phone_number_required": 0,
  "step": 2,
  "customer": {
    "name": "Customer a",
    "email": "[email protected]",
    "address": "Jl. Imam Bonjol No.39, Jakarta.",
    "phone": "+62888888888",
  }
}

Step 3
{
  "link_id": 1,
  "link_url": "flip.id/$companyname/#coffeetable",
  "title": "Coffee Table",
  "type": "SINGLE",
  "amount": 900000,
  "redirect_url": "https://someurl.com",
  "expired_date": "2022-12-30 15:50:00",
  "created_from": "API",
  "status": "ACTIVE",
  "is_address_required": 0,
  "is_phone_number_required": 0,
  "step": 3,
  "customer": {
    "name": "Customer a",
    "email": "[email protected]",
    "address": "Jl. Imam Bonjol No.39, Jakarta.",
    "phone": "+62888888888",
  },
  "payment_method": {
    "sender_bank": "bni",
    "sender_bank_type": "virtual_account",
  }
}

See Bill Object for the details.

Get All Bills

An endpoint to get all existing payment links.

GET /pwf/bill HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: Basic <secret_key>: (notes with ":" after secret key)

Request

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://bigflip.id/api/v2/pwf/bill");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  "Content-Type: application/x-www-form-urlencoded"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
curl https://bigflip.id/api/v2/pwf/bill \
    -u <secret_key>:

GET https://bigflip.id/api/v2/pwf/bill

Response

Status 200
Content-Type: application/json

[
 {
   "link_id": 1,
   "link_url": "flip.id/$companyname/#coffeetable",
   "title": "Coffee Table",
   "type": "SINGLE",
   "amount": 900000,
   "redirect_url": "https://someurl.com",
   "expired_date": "2022-12-30 15:50:00",
   "created_from": "API",
   "status": "ACTIVE",
   "step": 1,
   "is_address_required": 0,
   "is_phone_number_required": 0
 },
 {
   "link_id": 1,
   "link_url": "flip.id/$companyname/#coffeetable",
   "title": "Coffee Table",
   "type": "SINGLE",
   "amount": 900000,
   "redirect_url": "https://someurl.com",
   "expired_date": "2022-12-30 15:50:00",
   "created_from": "API",
   "status": "ACTIVE",
   "is_address_required": 0,
   "is_phone_number_required": 0,
   "step": 2,
   "customer": {
      "name": "Customer a",
      "email": "[email protected]",
      "address": "Jl. Imam Bonjol No.39, Jakarta.",
      "phone": "+62888888888",
   }
 },
 {
    "link_id": 1,
    "link_url": "flip.id/$companyname/#coffeetable",
    "title": "Coffee Table",
    "type": "SINGLE",
    "amount": 900000,
    "redirect_url": "https://someurl.com",
    "expired_date": "2022-12-30 15:50:00",
    "created_from": "API",
    "status": "ACTIVE",
    "is_address_required": 0,
    "is_phone_number_required": 0,
    "step": 3,
    "customer": {
      "name": "Customer a",
      "email": "[email protected]",
      "address": "Jl. Imam Bonjol No.39, Jakarta.",
      "phone": "+62888888888",
    },
    "payment_method": {
      "sender_bank": "bni",
      "sender_bank_type": "virtual_account",
    }
 }
]


Array of Bill Objects.

Get Payment

An endpoint to get all payment transaction(s) from a specific bill link.

GET /pwf/{bill_id}/payment HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: Basic <secret_key>: (notes with ":" after secret key)

Request

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://bigflip.id/api/v2/pwf/1/payment?start_date=2020-01-01&end_date=2020-12-12&pagination=50&page=1&sort_by=created_at&sort_type=sort_desc");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  "Content-Type: application/x-www-form-urlencoded"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
curl https://bigflip.id/api/v2/pwf/1/payment?start_date=2020-01-01&end_date=2020-12-12&pagination=50&page=1&sort_by=created_at&sort_type=sort_desc \
    -u <secret_key>:

GET https://bigflip.id/api/v2/pwf/[bill_id]/payment?start_date=start_date&end_date=end_date&pagination=pagination&page=page&sort_by=sort_by&sort_type=sort_type

Param Value
start_date integer (optional)
Starting date of the data. Example: "2020-01-01".
end_date integer (optional)
Ending date of the data. Example: "2020-12-12". End date must be greater than start_date.
pagination integer (optional)
Pagination of the data.
page integer (optional)
The desired page of the data pagination.
sort_by string (optional)
Sort the result by the attribute. You can sort by:
  • id
  • bill_link
  • bill_title
  • sender_bank
  • amount
  • created_at
sort_type string (optional)
You can sort in
  • sort_desc (descending)
  • sort_asc (ascending)

Response

Status 200
Content-Type: application/json

{
  "link_id": 1065,
  "total_data": 2,
  "data_per_page": 2,
  "total_page": 1,
  "page": 1,
  "data": [
    {
      "id": "PGPWF3453271107384587",
      "link_id": "12345",
      "bill_link": "flip.id/$companyname/#coffeetable",
      "bill_title": "Coffee Table",
      "sender_name": "John Smith",
      "sender_bank": "qris",
      "sender_bank_type": "wallet_account",
      "virtual_account_number": null,
      "amount": 900000,
      "status": "SUCCESSFUL",
      "settlement_status": "Pending",
      "reference_id": null,
      "payment_url": "https://flip.id/pwf/transaction/consolidated?redirected_from=internal&id=1235",
      "created_at": "2021-02-02 14:57:44",
      "completed_at": "2021-02-02 14:59:30",
      "settlement_date": "2021-02-03 17:59:30"
    },
    {
      "id": "PGPWF3453271669674219",
      "link_id": "12345",
      "bill_link": "flip.id/$companyname/#coffeetable",
      "bill_title": "Coffee Table",
      "sender_name": "Jon Doe",
      "sender_bank": "mandiri",
      "sender_bank_type": "virtual_account",
      "virtual_account_number": "8902290270097932",
      "amount": 900000,
      "status": "PENDING",
      "settlement_status": "Pending",
      "reference_id": null,
      "payment_url": "https://flip.id/pwf/transaction/consolidated?redirected_from=internal&id=1236",
      "created_at": "2021-02-03 14:57:44",
      "completed_at": null,
      "settlement_date": null
    }
  ]
}
Attribute Description
link_id Bill Link Id that being searched
total_data Total data returned in all page
data_per_page Total data returned in current page
total_page Total/max page available
page Current page
data Array of payment objects.

Get All Payment

An endpoint to get all existing payment transactions.

GET /pwf/payment HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: Basic <secret_key>: (notes with ":" after secret key)

Request

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://bigflip.id/api/v2/pwf/payment?start_date=2020-01-01&end_date=2020-12-12&pagination=50&page=1&sort_by=created_at&sort_type=sort_desc&reference_id=REF12345");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  "Content-Type: application/x-www-form-urlencoded"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
curl https://bigflip.id/api/v2/pwf/payment?start_date=2020-01-01&end_date=2020-12-12&pagination=50&page=1&sort_by=created_at&sort_type=sort_desc&reference_id=REF12345 \
    -u <secret_key>:

GET https://bigflip.id/api/v2/pwf/payment?start_date=start_date&end_date=end_date&pagination=pagination&page=page&sort_by=sort_by&sort_type=sort_type

Param Value
start_date integer (optional)
Starting date of the data. Example: "2020-01-01".
end_date integer (optional)
Ending date of the data. Example: "2020-12-12". End date must be greater than start_date.
pagination integer (optional)
Pagination of the data.
page integer (optional)
The desired page of the data pagination.
sort_by string (optional)
Sort the result by the attribute. You can sort by:
  • id
  • bill_link
  • bill_title
  • sender_bank
  • amount
  • created_at
sort_type string (optional)
You can sort in
  • sort_desc (descending)
  • sort_asc (ascending)
reference_id string (optional)
Reference that is provided by merchant (currently only available on static VA payment).

Response

Status 200
Content-Type: application/json

{
  "total_data": 4,
  "data_per_page": 4,
  "total_page": 1,
  "page": 1,
  "data": [
    {
      "id": "PGPWF3453271107384587",
      "link_id": "12345",
      "bill_link": "flip.id/$companyname/#coffeetable",
      "bill_title": "Coffee Table",
      "sender_name": "John Smith",
      "sender_bank": "mandiri",
      "sender_bank_type": "virtual_account",
      "virtual_account_number": "8902290277159017",
      "amount": 900000,
      "status": "SUCCESSFUL",
      "settlement_status": "Pending",
      "reference_id": null,
      "payment_url": "https://flip.id/pwf/transaction/consolidated?redirected_from=internal&id=1234",
      "created_at": "2021-02-01 14:57:44",
      "completed_at": "2021-02-02 14:59:30",
      "settlement_date": "2021-02-03 17:59:30"
    },
    {
      "id": "FT12345679",
      "link_id": "12345",
      "bill_link": "flip.id/$companyname/#coffeetable",
      "bill_title": "Coffee Table",
      "sender_name": "Jon Doe",
      "sender_bank": "bca",
      "sender_bank_type": "bank_account",
      "virtual_account_number": null,
      "amount": 900000,
      "status": "SUCCESSFUL",
      "settlement_status": "Pending",
      "reference_id": null,
      "payment_url": "https://flip.id/pwf/transaction/consolidated?redirected_from=internal&id=1235",
      "created_at": "2021-02-02 14:57:44",
      "completed_at": "2021-02-02 14:59:30",
      "settlement_date": "2021-02-03 17:59:30"
    },
    {
      "id": "PGPWF3453281233886287",
      "link_id": "12344",
      "bill_link": "flip.id/$companyname/#coffeechair",
      "bill_title": "Coffee Chair",
      "sender_name": "Jon Doe",
      "sender_bank": "ovo",
      "sender_bank_type": "wallet_account",
      "virtual_account_number": null,
      "amount": 100000,
      "status": "PENDING",
      "settlement_status": "Pending",
      "reference_id": null,
      "payment_url": "https://flip.id/pwf/transaction/consolidated?redirected_from=internal&id=1236",
      "created_at": "2021-02-03 14:57:44",
      "completed_at": null,
      "settlement_date": null
    }
    {
      "id": "PGPWF3453271669674219",
      "link_id": "12340",
      "bill_link": "flip.id/$companyname/#8902290270097932-1698032345577",
      "bill_title": "8902290270097932-1698032345577",
      "sender_name": "June Smith",
      "sender_bank": "mandiri",
      "sender_bank_type": "virtual_account",
      "virtual_account_number": "8902290270097932",
      "amount": 900000,
      "status": "SUCCESSFUL",
      "settlement_status": "Pending",
      "reference_id": "REF1122334455",
      "payment_url": "https://flip.id/pwf/transaction/consolidated?redirected_from=internal&id=1237",
      "created_at": "2021-02-04 14:57:44",
      "completed_at": "2021-02-02 14:59:30",
      "settlement_date": "2021-02-03 17:59:30"
    },
  ]
}

Attribute Description
total_data Total data returned in all page
data_per_page Total data returned in current page
total_page Total/max page available
page Current page
data Array of payment objects.

Confirm Bill Payment

An endpoint to confirm a specific payment transaction, except e-wallet payment method (for e-wallet transaction won’t be necessary for confirming it). This API only works for Live Environment

PUT /pwf/bill-payment/{transaction_id}/confirm HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: Basic <secret_key>: (notes with ":" after secret key)

Request

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://bigflip.id/api/v2/pwf/bill-payment/PWF12/confirm");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_PUT, TRUE);

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  "Content-Type: application/x-www-form-urlencoded"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
curl https://bigflip.id/api/v2/pwf/bill-payment/PWF12/confirm \
    -X PUT \
    -u <secret_key>:

PUT https://bigflip.id/api/v2/pwf/bill-payment/[transaction_id]/confirm

Response

Status 200
Content-Type: application/json

{
  "confirmed_at": "2022-12-30 15:50",
  "payment_url": "https://flip.id/transaksi/bill/PWF12/proses?email=customer%40gmail.com"
}

Constant

Bill Object

Bill detail data

Attribute Description
link_id Bill link ID.
link_url Bill link URL for the user.
title Title of the bill.
type Bill type:
  • SINGLE: single use
  • MULTIPLE: multiple use
amount Payment amount.
redirect_url Redirect URL after payment is success.
expired_date Bill expiry date. The bill can’t be used any more beyond the expiry date.
created_from Bill created from method.
status Bill activation status:
  • ACTIVE
  • INACTIVE
is_address_required A flag if user needs to input their address when creating payment.
  • 0: false
  • 1: true
is_phone_number_required A flag if user needs to input their phone number when creating payment.
  • 0: false
  • 1: true
step Which step the customers will be redirected to when opening the payment link.
  • 1: input-data (default)
  • 2: payment-method
  • 3: payment-confirmation
customer (Returned only if customer’s merchant chooses step 2 or 3)
Customer Data that is being saved.
See Customer Object.
bill_payment (Returned only if customer’s merchant chooses step 3)
Bill Payment data that has been created.
See Bill Payment Object.
payment_url (Returned only if customer’s merchant chooses step 3)
URL of the confirmation link or instruction to do the payment action.
  • URL confirmation link is for payment using bank transfer, VA payment method, and QRIS with internal url
  • URL instruction link is for payment using e-wallet payment method with external url

Bill Customer Object

Customer detail data

Attribute Description
name Name of the Customer.
email Email of the Customer.
phone Phone number of the Customer.
address Address of the Customer.

Bill Payment Object

Bill Payment detail data

Attribute Description
id ID of the transaction.
amount Amount of the transaction. Please note that in case of Bank Transfer payment option, the actual amount to be transferred by your customer must be equal to the amount + unique_code returned in the response.
unique_code Unique code of the transaction
status Status of the transaction
  • NOT_CONFIRMED: If the transaction was just created.
  • PENDING: If the transaction has been confirmed by the user
  • PROCESSED: If the transaction is being processed by the system.
  • CANCELLED: If the transaction is cancelled.
  • FAILED: If the transaction is failed.
  • DONE: If the transaction is successfully done.
sender_bank Bank that is used for the payment.
See Bank Code Constants.
sender_bank_type Type of the sender bank that is used for the payment.
  • bank_account: if the type of the sender bank uses bank transfer.
  • virtual_account: if the type of the sender bank uses a virtual account.
  • wallet_account: if the type of the sender bank uses e-wallet.
  • online_to_offline_account: if the type of the sender bank uses retail.
  • credit_card_account: if the type of the sender bank uses credit card.
receiver_bank_account Account of the receiver of the payment.
See Bank Account Object.
user_address Address of the User.
user_phone Phone number of the User.
created_at Unix timestamps of the transaction when it is created.

Payment Object

Payment detail data

Attribute Description
id Payment ID.
link_id Bill link ID.
bill_link Bill link URL of the payment.
bill_title Title of the bill.
sender_name Name of the user who did the payment.
sender_bank Bank code of the user’s bank.
sender_bank_type Type of the sender bank that is used for the payment.
  • bank_account: if the type of the sender bank uses bank transfer.
  • virtual_account: if the type of the sender bank uses a virtual account.
  • wallet_account: if the type of the sender bank uses e-wallet.
  • online_to_offline_account: if the type of the sender bank uses retail.
  • credit_card_account: if the type of the sender bank uses credit card.
virtual_account_number Number that is generated for the virtual_account payment.
amount Payment amount done by the user.
status Payment status.
  • FAILED
  • SUCCESSFUL
  • PENDING
settlement_status Merchant settlement status.
  • Cancelled
  • Settled
  • Pending
reference_id Reference that is provided by merchant (currently only available on static VA payment).
payment_url URL of the confirmation link or instruction to do the payment action.
  • URL confirmation link is for payment using bank transfer, VA payment method, and QRIS with internal url
  • URL instruction link is for payment using e-wallet payment method with external url
created_at The time when the payment is created. Time will be in GMT+7 with yyyy-mm-dd hh:mm:ss format
completed_at The time when the payment is completed. Time will be in GMT+7 with yyyy-mm-dd hh:mm:ss format
settlement_date The time when the payment is settled to Merchant. Time will be in GMT+7 with yyyy-mm-dd hh:mm:ss format

Bank Account Object

Bank account detail data

Attribute Description
account_number Account number of the receiver bank.
account_type Type of the account, the value could be:
  1. bank_account
  2. virtual_account
  3. wallet_account
  4. online_to_offline_account
  5. credit_card_account
bank_code Bank code of the account.
See Bank Code Constants.
account_holder Name of the holder of the account.
qr_code_data The raw QR code data. You can generate the image to show to your users. You can generate the image by using the QR code library here.

Bank Code

List of sender_bank available to use. Virtual account currently only available for Mandiri, Danamon, CIMB, Maybank, Sinarmas, BNI, BRI and Permata.

Bank Code Bank Name
bni BNI
bri BRI
bca BCA
mandiri Mandiri
cimb CIMB Niaga
tabungan_pensiunan_nasional BTPN/Jenius/BTPN Wow!
dbs DBS Indonesia
permata Permata
muamalat Muamalat
danamon Danamon
bsm BSI (Bank Syariah Indonesia)
ovo OVO
qris QRIS
shopeepay_app ShopeePay
linkaja LinkAja
linkaja_app LinkAja App
dana Dana

Error List

As mentioned here, validation error or response with status code 422 will contain inner code. Here is the list of the code for Accept Payment:

Error code Meaning
999 Undefined error
1044 Bill type param is required when creating bill
1045 Bill type param is invalid when creating bill
1046 Maximum amount for the bill is Rp10.000.000
1047 Bill expired date param is invalid when creating bill
1048 Bill link has already expired
1049 Bill link has already used
1050 Bill link ID is not Found
1051 Param product_code is required
1052 Param page should be a number and more than 0
1053 Param pagination should be a number and more than 0
1054 Product bill link ID is not found
1055 Param start_date is invalid
1056 Param end_date is invalid
1057 Invalid date range. Param end_date must be greater than start_date
1058 Minimum transfer amount is Rp10.000
1059 Param redirect_url is invalid
1060 Param status is invalid
1061 Param title is invalid
1062 Param sort_by is invalid
1063 Param sort_type is invalid
1064 Param amount must be a number
1067 Param amount is exceeding company’s PWF maximum limit amount
1082 Cannot create transaction with the chosen bank because it is in disturbance

International Transfer

Hi, welcome to Flip for Business International Transfer API!

This International Transfer API solution is intended for businesses, especially money transfer operators, who want to facilitate international transfer for their users in a cost-efficient, secured, and faster manner.

In this version of APIs, we provide all transaction types remittance: C2C, C2B, B2C, and B2B. We currently have several corridors and it will continue to grow.

Flow Overview

  1. Select the destination country and input amount to see the exchange rate, transfer fee, and other details. You can hit API Get Exchange Rate to get these details.
  2. Visit this Required Fields document, to see list of required data you need to send to us when creating an international transfer transaction, accordingly to the country and transaction type selected.
  3. Use the API Get Form Data to get the list of available values of the request attributes, such as beneficiary_relationships, source_of_funds, etc. The special_identifiers attribute consists of the required attributes for the given country.
  4. After completing the beneficiary/recipient’s details in the form data, hit API Create International Transfer to create and automatically confirm the transaction. Flip will respond with “PENDING” status and then process the transaction.
  5. After the transaction is completed, Flip will send the International Transfer Transaction Callback to notify you about the transaction status. If the transaction is successful, money is received by the beneficiary. If the transaction is failed, money will be refunded to the company’s deposit.
  6. You can also hit API Get International Transfer Transaction to get the transaction status and details.

All international transfer transactions and/or the details can be monitored through the Flip for Business dashboard https://business.flip.id and various API endpoints.

International Transfer Flow

Get Exchange Rates

An endpoint to get the exchange rate and other details of the destination country corridors such as minimum and maximum transfer amount, cut-off time, estimated arrival time, and the transfer fee.

GET /international-disbursement/exchange-rates HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: Basic [your encoded flip for business secret key]

Request

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://bigflip.id/api/v2/international-disbursement/exchange-rates?transaction_type=C2C");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  "Content-Type: application/x-www-form-urlencoded"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
curl https://bigflip.id/api/v2/international-disbursement/exchange-rates?transaction_type=C2C \
    -u <secret_key>:

GET https://bigflip.id/api/v2/international-disbursement/exchange-rates?country_iso_code=country_iso_code&transaction_type=transaction_type

Param Value
country_iso_code string (optional)
Country code using ISO 3166 (Alpha-3). You can choose multiple countries separate by comma. See supported Country ISO Codes.
transaction_type string (required)
Transaction type information. Possible values are:
  • C2C
  • C2B
  • B2C
  • B2B

Response

Status 200
Content-Type: application/json

[
  {
    "currency_code": "GBP",
    "country_code": "GBR",
    "country_name": "United Kingdom",
    "country_iso_code": "GBR",
    "flip_exchange_rate": 19000.55,
    "flip_transfer_fee": 80000,
    "minimum_amount": 1.50,
    "maximum_amount": 3000.50,
    "payment_speed": "Same Day",
    "arrival_message": null,
    "notes": null,
    "transaction_type": "C2C",
    "flip_cutoff_time": "2021-12-06 01:00:00+700",
    "flip_arrival_time": "2021-12-07 12:00:00+700",
    "is_active": true
  },
  {
    "currency_code": "AUD",
    "country_code": "AUS",
    "country_name": "Australia",
    "country_iso_code": "AUS",
    "flip_exchange_rate": 10588.78,
    "flip_transfer_fee": 80000,
    "minimum_amount": 1,
    "maximum_amount": 200000,
    "payment_speed": "+1 day",
    "arrival_message": {
      "id": "Jika dana sudah kami terima sebelum hari Senin pukul 08:00 WIB, dana akan sampai di penerima hari Selasa, 07 Desember 2021",
      "en": "If Flip receive your fund before Monday at 08:00 GMT+7, the fund will be arrived to the beneficiary on Tuesday, 07 December 2021"
    },
    "notes": null,
    "transaction_type": "C2C",
    "flip_cutoff_time": "2021-12-06 01:00:00+700",
    "flip_arrival_time": "2021-12-07 12:00:00+700",
    "is_active": false
  },
  ...
]

Array of Exchange Rate Object

Attribute Description
currency_code Currency code of the country
country_code Country code using ISO 3166 (Alpha-2)
country_name Name of the country
country_iso_code Country code using ISO 3166 (Alpha-3)
flip_exchange_rate The country exchange rates to IDR
flip_transfer_fee Transfer fee to the country
minimum_amount Minimum transfer amount
maximum_amount Maximum transfer amount
payment_speed Expected payment completion speed:
  • Real Time
  • Same Day
  • +1 day or “+N day”
arrival_message Message related to payment speed, available in Bahasa (ID) and English (EN)
notes Additional notes
transaction_type Transaction type information
flip_cutoff_time Transfer cutoff time. Time will be in GMT+7 with yyyy-mm-dd hh:mm:ss format
flip_arrival_time Estimation of arrival time. Time will be in GMT+7 with yyyy-mm-dd hh:mm:ss format
is_active Status of the beneficiary country:
  • true: Available for disbursement
  • false: Unavailable for disbursement

Get Form Data

An endpoint to get form with all required fields to be completed to create the transactions, such as remittance purpose, source of fund, relationship with beneficiary, and the beneficiary’s bank account details.

GET /international-disbursement/form-data HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: Basic [your encoded flip for business secret key]

Request

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://bigflip.id/api/v2/international-disbursement/form-data?country_iso_code=GBR&transaction_type=C2C");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  "Content-Type: application/x-www-form-urlencoded"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
curl https://bigflip.id/api/v2/international-disbursement/form-data?country_iso_code=GBR&transaction_type=C2C \
    -u <secret_key>:

GET https://bigflip.id/api/v2/international-disbursement/form-data?country_iso_code=country_iso_code&transaction_type=transaction_type

Param Value
country_iso_code string (required)
Country code using ISO 3166 (Alpha-3). You can choose multiple countries separate by comma. See supported Country ISO Codes.
transaction_type string (required)
Transaction type information. Possible values are:
  • C2C
  • C2B
  • B2C
  • B2B

Response

Status 200
Content-Type: application/json

{
  "country_iso_code": "GBR",
  "currency_code": "GBP",
  "beneficiary_relationships": {
    "SELF": "Diri sendiri",
    "BROTHER": "Saudara laki-laki",
    "SISTER": "Saudara perempuan",
    "SON": "Anak laki-laki",
    "DAUGHTER": "Anak perempuan",
    "NEPHEW": "Keponakan laki-laki",
    "NIECE": "Keponakan perempuan",
    "FATHER": "Ayah",
    "MOTHER": "Ibu",
    "UNCLE": "Paman",
    "AUNT": "Bibi",
    "COUSIN": "Sepupu",
    "FATHER_IN_LAW": "Bapak mertua",
    "MOTHER_IN_LAW": "Ibu mertua",
    "BROTHER_IN_LAW": "Ipar laki-laki",
    "SISTER_IN_LAW": "Ipar perempuan",
    "GRAND_FATHER": "Kakek",
    "GRAND_MOTHER": "Nenek",
    "HUSBAND": "Suami",
    "WIFE": "Istri",
    "FRIEND": "Teman"
  },
  "source_of_funds": {
    "BUSINESS": "Bisnis",
    "SALARY": "Gaji",
    "SAVINGS": "Tabungan",
    "GIFT": "Hadiah"
  },
  "remittance_purposes": {
    "FAMILY_SUPPORT": "Bantuan keluarga",
    "SALARY_PAYMENT": "Pembayaran gaji"
  },
  "banks": {
    "101": "Standard Chartered Bank",
    "102": "Bank Something",
    ...
  },
  "special_identifiers": [
    "sort_code"
  ],
  "regions": [],
  "nationality_countries": [
    {
      "iso_code": "AFG",
      "name": "Afghanistan",
      "country_code": "AF"
    },
    ...
  ]
}
Attribute Description
country_iso_code Country code using ISO 3166 (Alpha-3)
currency_code Currency code of the country
beneficiary_relationships Object of relationship of beneficiary
source_of_funds Object of source of funds
remittance_purposes Object of purpose of remittance
banks Object of bank in specific country
special_identifiers Required identifier for specific country
regions Array of region object
nationality_countries Array of country object

Create International Transfer C2C/C2B

An endpoint to create the international transfer C2C/C2B transaction.

POST /international-disbursement HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: Basic [your encoded flip for business secret key]

Request

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://bigflip.id/api/v2/international-disbursement");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_POST, TRUE);

$payloads = [
  "id_number" => "44943733088",
  "id_expiration_date" => "2022-11-29",
  "amount" => "52.63",
  "source_country" => "IDN",
  "destination_country" => "GBR",
  "transaction_type" => "C2C",
  "beneficiary_full_name" => "John Smith",
  "beneficiary_account_number" => "1122333300",
  "beneficiary_bank_id" => "1807",
  "beneficiary_bank_name" => "Allica Bank",
  "beneficiary_email" => "[email protected]",
  "beneficiary_msisdn" => "09584008222",
  "beneficiary_nationality" => "IDN",
  "beneficiary_province" => "United Kingdom",
  "beneficiary_city" => "Manchester",
  "beneficiary_address" => "Mosley St Manchester",
  "beneficiary_postal_code" => "M2",
  "beneficiary_relationship" => "SON",
  "beneficiary_source_of_funds" => "BUSINESS",
  "beneficiary_remittance_purposes" => "EDUCATION",
  "beneficiary_sort_code" => "506967",
  "sender_name" => "John Doe",
  "sender_country" => 100252,
  "sender_place_of_birth" => 100230,
  "sender_date_of_birth" => "1963-12-01",
  "sender_address" => "Some Address Street 123",
  "sender_identity_type" => "nat_id",
  "sender_identity_number" => "1234789012347890",
  "sender_job" => "entrepreneur",
  "sender_email" => "[email protected]",
  "sender_city" => "Sender City",
  "sender_phone_number" => "+628123456789",
  "beneficiary_region" => "10274"
];

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($payloads));

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  "Content-Type: application/x-www-form-urlencoded",
  "X-TIMESTAMP: 2022-01-01T15:02:15+0700"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
curl https://bigflip.id/api/v2/international-disbursement \
    -X POST \
    -u <secret_key>: \
    -d "id_number=44943733088" \
    -d "id_expiration_date=2022-11-29" \
    -d "amount=52.63" \
    -d "source_country=IDN" \
    -d "destination_country=GBR" \
    -d "transaction_type=C2C" \
    -d "beneficiary_full_name=John Smith" \
    -d "beneficiary_account_number=1122333300" \
    -d "beneficiary_bank_id=1807" \
    -d "beneficiary_bank_name=Allica Bank" \
    -d "[email protected]" \
    -d "beneficiary_msisdn=09584008222" \
    -d "beneficiary_nationality=IDN" \
    -d "beneficiary_province=United Kingdom" \
    -d "beneficiary_city=Manchester" \
    -d "beneficiary_address=Mosley St Manchester" \
    -d "beneficiary_postal_code=M2" \
    -d "beneficiary_relationship=SON" \
    -d "beneficiary_source_of_funds=BUSINESS" \
    -d "beneficiary_remittance_purposes=EDUCATION" \
    -d "beneficiary_sort_code=506967" \
    -d "sender_name=John Doe" \
    -d "sender_country=100252" \
    -d "sender_place_of_birth=100230" \
    -d "sender_date_of_birth=1963-12-01" \
    -d "sender_address=Some Address Street 123" \
    -d "sender_identity_type=nat_id" \
    -d "sender_identity_number=1234789012347890" \
    -d "sender_job=entrepreneur" \
    -d "[email protected]" \
    -d "sender_city=Sender City" \
    -d "sender_phone_number=+628123456789" \
    -d "beneficiary_region=10274"

POST https://bigflip.id/api/v2/international-disbursement

Attribute Description
Content-Type string (required)
Request content type: application/x-www-form-urlencoded.
idempotency-key string (required)
Idempotency key. Please see more detail on Idempotent Request section.
X-TIMESTAMP string (optional)
Request timestamp. The format will follow the ISO8601 format.

Body

Attribute Description
id_number string (required, if the destination country need it)
Id number.
id_expiration_date string (required, if the destination country need it)
ID expiration date using YYYY-MM-DD format.
amount string (required)
Amount of money that wants to be disbursed to the beneficiary (in beneficiary currency). Maximum 2 decimal places, for Japan there can be no decimal. Must be within the minimum and maximum amount based on transaction currency.
source_country string (required)
Source country code using ISO 3166 (Alpha-3). Currently possible value is IDN.
destination_country string (required)
Destination country code using ISO 3166 (Alpha-3). See supported Destination Countries.
transaction_type string (required)
Transaction type information. Possible values are:
  • C2C
  • C2B
beneficiary_full_name string (required)
Full name of the beneficiary
beneficiary_account_number string (required)
Account number of the beneficiary bank
beneficiary_bank_id string (required)
ID of beneficiary bank
beneficiary_bank_name string (optional)
Name of beneficiary bank. Can be used for destination countries AUS and GBR
beneficiary_email string (optional)
Email of beneficiary
beneficiary_msisdn string (required, if the destination country need it)
A number used to identify a phone number internationally
beneficiary_nationality string (required)
Country code using ISO 3166 (Alpha-3) of beneficiary nationality
beneficiary_province string (required)
Province or state of the beneficiary
beneficiary_city string (required)
City of the beneficiary
beneficiary_address string (required)
Address of the beneficiary
beneficiary_postal_code string (optional)
Postal code of the beneficiary
beneficiary_relationship string (required)
Relationship of beneficiary
beneficiary_source_of_funds string (required)
Source of funds
beneficiary_remittance_purposes string (required)
Purpose of remittance
beneficiary_iban string (required, if the destination country need it)
Identifier of individual account involved in the international transaction
beneficiary_swift_bic_code string (required, if the destination country need it)
Identifier of specific bank during an international transaction
beneficiary_sort_code string (required, if the destination country need it)
Digits of code which is used by British and Irish banks
beneficiary_ifs_code string (required, if the destination country need it)
Indian financial system code
beneficiary_bsb_number string (required, if the destination country need it)
Identifier of banks and branches across Australia
beneficiary_branch_number string (required, if the destination country need it)
Identifier of banks and branches across Japan
beneficiary_document_reference_number string (required, if the destination country need it)
Reference number of document related to the transaction
beneficiary_registration_number string (required, if the destination country need it)
Registration number
beneficiary_region string (required, if the destination country need it)
Required for destination country China code.
sender_name string (required)
The name of the user of the Money Transfer Company that act as a sender
sender_country integer (required)
Country code of the sender’s residence. Available value can be retrieved from country list.
sender_place_of_birth integer (required)
City/country code of the sender’s place of birth. Use city code if the sender’s place of birth is in Indonesia, and country code if outside Indonesia. Available value can be retrieved from city/country list.
sender_date_of_birth string (required)
Sender’s date of birth with YYYY-MM-DD format
sender_address string (required)
Sender’s address
sender_identity_type string (required)
Sender’s ID type. Accepted value are:
  • nat_id (National Id Card or KTP in Indonesia)
  • passport (Passport)
sender_identity_number string (required)
Sender’s ID number
sender_job string (required)
Sender’s job. Accepted values are:
  • housewife
  • entrepreneur
  • private_employee
  • government_employee
  • foundation_board (People who work at foundation as an employee)
  • indonesian_migrant_worker (Also known as TKI)
  • company (If sender is a company, not individual)
  • others
sender_email string (required)
Sender’s email. Only accept one email.
sender_city string (required)
Sender’s city.
sender_phone_number string (required)
Sender’s phone number. Start with country phone code.

Response

Status 200
Content-Type: application/json

{
  "id": 10,
  "user_id": 12345,
  "company_id": 123456,
  "exchange_rate": 19000.55,
  "fee": 88888,
  "amount": 1000000,
  "source_country": "IDN",
  "destination_country": "GBR",
  "beneficiary_amount": 52.63,
  "beneficiary_currency_code": "GBP",
  "status": "PENDING",
  "timestamp": "2021-12-02 15:27:24",
  "time_served": "(not set)",
  "created_from": "API",
  "receipt": "someurl.png",
  "transaction_type": "C2C",
  "idempotency_key": "idem-1",
  "beneficiary": {
    "id_number": "44943733088",
    "id_expiration_date": "2022-11-29",
    "full_name": "John Smith",
    "bank_account_number": "1122333300",
    "bank": "Allica Bank",
    "email": "[email protected]",
    "msisdn": "09584008222",
    "nationality": "IDN",
    "country": "GBR",
    "province": "United Kingdom",
    "city": "Manchester",
    "address": "Mosley St Manchester",
    "postal_code": "M2",
    "relationship": "SON",
    "source_of_funds": "BUSINESS",
    "remittance_purpose": "EDUCATION",
    "iban": null,
    "swift_bic_code": null,
    "sort_code": "506967",
    "ifs_code": null,
    "bsb_number": null,
    "branch_number": null,
    "document_reference_number": null,
    "registration_number": null
  },
  "sender": {
    "name": "John Doe",
    "place_of_birth": 100230,
    "date_of_birth": "1963-12-01",
    "address": "Some Address Street 123",
    "identity_type": "nat_id",
    "identity_number": "1234789012347890",
    "country": 100252,
    "job": "entrepreneur",
    "email": "[email protected]",
    "city": "Sender City",
    "phone_number": "+628123456789"
  },
  "reason": ""
}

See International Transfer Object for the details.

Create International Transfer B2C/B2B

An endpoint to create the international transfer B2C/B2B transaction.

POST /international-disbursement/create-with-attachment HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: Basic [your encoded flip for business secret key]

Request

<?php
$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://bigflip.id/api/v2/international-disbursement/create-with-attachment");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_POST, TRUE);

$payloads = [
    "destination_country"=>"MYS",
    "source_country"=>"IDN",
    "transaction_type"=>"B2B",
    "amount"=>300.6,
    "attachment_data"=> (binary),
    "attachment_type"=>"invoice",
    "beneficiary_account_number"=>"1187710200",
    "beneficiary_bank_id"=>2122,
    "beneficiary_document_reference_number"=>"doc_reference_123456",
    "beneficiary_full_name"=>"Jane Doe",
    "beneficiary_remittance_purposes"=>"TRAVEL",
]

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($payloads));

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
   "Content-Type: multipart/form-data",
   "X-TIMESTAMP: 2022-01-01T15:02:15+0700"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
curl https://bigflip.id/api/v2/international-disbursement/create-with-attachment \
    -X POST \
    -u <secret_key>: \
    -d "destination_country=MYS" \
    -d "source_country=IDN" \
    -d "transaction_type=B2B" \
    -d "amount=300.6" \
    -d "attachment_data=(binary)" \
    -d "attachment_type=invoice" \
    -d "beneficiary_account_number=1187710200" \
    -d "beneficiary_bank_id=2122" \
    -d "beneficiary_document_reference_number=doc_reference_123456" \
    -d "beneficiary_full_name=Jane Doe" \
    -d "beneficiary_remittance_purposes=TRAVEL"

POST https://bigflip.id/api/v2/international-disbursement/create-with-attachment

Attribute Description
Content-Type string (required)
Request content type: application/x-www-form-urlencoded.
idempotency-key string (required)
Idempotency key. Please see more detail on Idempotent Request section.
X-TIMESTAMP string (optional)
Request timestamp. The format will follow the ISO8601 format.

Body

Attribute Description
destination_country string (required)
Destination country code using ISO 3166 (Alpha-3). See supported Destination Countries.
source_country string (required)
Source country code using ISO 3166 (Alpha-3). Currently possible value is IDN.
transaction_type string (required)
Transaction type information. Possible values are:
  • B2C
  • B2B
amount string (required)
Amount of money that wants to be disbursed to the beneficiary (in beneficiary currency). Maximum 2 decimal places, for Japan there can be no decimal. Must be within the minimum and maximum amount based on transaction currency.
attachment_data file (required, if the destination country need it)
File of invoice for Malaysia B2B
Accepted extensions: txt, pdf, doc, docx, jpg, jpeg, png, bmp, rtf, xls, xlsx
attachment_type string (required, if the destination country need it)
Currently possible value is invoice for MYS
beneficiary_account_number string (required)
Account number of the beneficiary bank
beneficiary_ach_code string (required, if the destination country need it)
Ach code of the beneficiary
beneficiary_address string (required, if the destination country need it)
Address of the beneficiary
beneficiary_bank_id string (required, if the destination country need it)
ID of beneficiary bank
beneficiary_bank_name string (required, if the destination country need it)
Name of beneficiary bank. Can be used for destination countries AUS and GBR
beneficiary_branch_number string (required, if the destination country need it)
Identifier of banks and branches across Japan
beneficiary_bsb_number string (required, if the destination country need it)
Identifier of banks and branches across Australia
beneficiary_city string (required, if the destination country need it)
City of the beneficiary
beneficiary_document_reference_number string (required, if the destination country need it)
Reference number of document related to the transaction
beneficiary_email string (optional)
Email of beneficiary
beneficiary_full_name string (required, if the destination country need it)
Full name of the beneficiary
beneficiary_iban string (required, if the destination country need it)
Identifier of individual account involved in the international transaction
beneficiary_id_expiration_date string (required, if the destination country need it)
ID expiration date using YYYY-MM-DD format
beneficiary_ifs_code string (required, if the destination country need it)
Indian financial system code
beneficiary_id_number string (required, if the destination country need it)
ID Number
beneficiary_msisdn string (required, if the destination country need it)
A number used to identify a phone number internationally
beneficiary_nationality string (required, if the destination country need it)
Country code using ISO 3166 (Alpha-3) of beneficiary nationality
beneficiary_postal_code string (required, if the destination country need it)
Postal code of the beneficiary
beneficiary_province string (required, if the destination country need it)
Province or state of the beneficiary
beneficiary_relationship string (required, if the destination country need it)
Relationship of beneficiary
beneficiary_remittance_purposes string (required, if the destination country need it)
Purpose of remittance
beneficiary_sort_code string (required, if the destination country need it)
Digits of code which is used by British and Irish banks
beneficiary_source_of_funds string (required, if the destination country need it)
Source of funds

Response

Status 200
Content-Type: application/json

{
  "id": 10,
  "user_id": 12345,
  "company_id": 123456,
  "exchange_rate": 3341.96,
  "fee": 45000,
  "amount": 1004594,
  "source_country": "IDN",
  "destination_country": "MYS",
  "beneficiary_amount": 300.6,
  "beneficiary_currency_code": "MYR",
  "status": "PENDING",
  "timestamp": "(not set)",
  "time_served": "(not set)",
  "created_from": "API",
  "receipt": "",
  "transaction_type": "B2B",
  "idempotency_key": "idem-1",
  "beneficiary": {
    "full_name": "Jane Doe",
    "bank_account_number": "1187710200",
    "email": null,
    "bank": "AFFIN INVESTMENT BANK BERHAD",
    "msisdn": "",
    "nationality": "",
    "country": "MYS",
    "province": "",
    "city": "",
    "address": "",
    "postal_code": null,
    "relationship": "",
    "source_of_funds": "",
    "remittance_purpose": "TRAVEL",
    "iban": null,
    "swift_bic_code": null,
    "sort_code": null,
    "ifs_code": null,
    "bsb_number": null,
    "branch_number": null,
    "document_reference_number": "doc_reference_123456",
    "registration_number": null,
    "id_number": "",
    "id_expiration_date": "",
    "ach_code": ""
  },
  "sender": null,
  "reason": ""
}

See International Transfer Object for the details.

Get International Transfer

An endpoint to get a specific international transfer transaction.

GET /international-disbursement/{transaction id} HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: Basic [your encoded flip for business secret key]

Request

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://bigflip.id/api/v2/international-disbursement/10");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  "Content-Type: application/x-www-form-urlencoded"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
curl https://bigflip.id/api/v2/international-disbursement/10 \
    -u <secret_key>:

GET https://bigflip.id/api/v2/international-disbursement/[transaction id]

Response

Status 200
Content-Type: application/json

{
  "id": 10,
  "user_id": 12345,
  "company_id": 123456,
  "exchange_rate": 19000.55,
  "fee": 88888,
  "amount": 1000000,
  "source_country": "IDN",
  "destination_country": "GBR",
  "beneficiary_amount": 52.63,
  "beneficiary_currency_code": "GBP",
  "status": "PENDING",
  "timestamp": "2021-12-02 15:27:24",
  "time_served": "(not set)",
  "created_from": "API",
  "receipt": "someurl.png",
  "transaction_type": "C2C",
  "idempotency_key": "idem-1",
  "beneficiary": {
    "id_number": "44943733088",
    "id_expiration_date": "2022-11-29",
    "full_name": "John Smith",
    "bank_account_number": "1122333300",
    "bank": "Allica Bank",
    "email": "[email protected]",
    "msisdn": "09584008222",
    "nationality": "IDN",
    "country": "GBR",
    "province": "United Kingdom",
    "city": "Manchester",
    "address": "Mosley St Manchester",
    "postal_code": "M2",
    "relationship": "SON",
    "source_of_funds": "BUSINESS",
    "remittance_purpose": "EDUCATION",
    "iban": null,
    "swift_bic_code": null,
    "sort_code": "506967",
    "ifs_code": null,
    "bsb_number": null,
    "branch_number": null,
    "document_reference_number": null,
    "registration_number": null
  },
  "sender": {
    "name": "John Doe",
    "place_of_birth": 100230,
    "date_of_birth": "1963-12-01",
    "address": "Some Address Street 123",
    "identity_type": "nat_id",
    "identity_number": "1234789012347890",
    "country": 100252,
    "job": "entrepreneur",
    "email": "[email protected]",
    "city": "Sender City",
    "phone_number": "+628123456789"
  },
  "reason": ""
}

International Transfer Object

Attribute Description
id Id of international transfer
user_id Id creator of transaction
company_id Id of company
exchange_rate The country exchange rates to IDR
fee Transfer fee to the country
amount Transfer amount in IDR
source_country Source country code using ISO 3166 (Alpha-3)
destination_country Destination country code using ISO 3166 (Alpha-3)
beneficiary_amount Amount to be received by beneficiary
beneficiary_currency_code Currency code of the beneficiary
status Transaction status. Possible values are:
  • PENDING
  • CANCELLED
  • DONE
timestamp The time when the disbursement request was created. Time will be in GMT+7 with yyyy-mm-dd hh:mm:ss format
time_served The time when the disbursement is finished
created_from The channel of which the transaction was created. Possible values are:
  • API
  • Dashboard
receipt URL of the transfer receipt
transaction_type Transaction type information. Possible values are:
  • C2C
  • C2B
  • B2C
  • B2B
idempotency_key Idempotency key information
beneficiary Beneficiary object
sender Sender object
reason The reason value will be given if the transaction status is CANCELLED. Possible values can be seen in Cancelled Transaction Reasons table.

International Transfer Beneficiary Object

Attribute Description
id_number Id number
id_expiration_date ID expiration date using YYYY-MM-DD format
full_name Full name of the beneficiary
bank_account_number Account number of the beneficiary bank
bank Bank name of beneficiary bank
email Email of beneficiary
msisdn A number used to identify a phone number internationally
nationality Country code using ISO 3166 (Alpha-3) of beneficiary nationality
country Country code using ISO 3166 (Alpha-3) of the beneficiary’s country
province Province or state of the beneficiary
city City of the beneficiary
address Address of the beneficiary
postal_code Postal code of the beneficiary
relationship Relationship of sender and beneficiary
source_of_funds Source of funds
remittance_purpose Purpose of remittance
iban Identifier of individual account involved in the international transaction
swift_bic_code Identifier of specific bank during an international transaction
sort_code Digits of code which is used by British and Irish banks
ifs_code Indian financial system code
bsb_number Identifier of banks and branches across Australia
branch_number Identifier of bank for Japan
document_reference_number Reference number of document related to the transaction
registration_number Registration number

International Transfer Sender Object

Attribute Description
name The name of the user of the Money Transfer Company that act as a sender
place_of_birth City/country code of the Sender’s place of birth
date_of_birth Sender’s date of birth
address Sender’s address
identity_type Sender’s identity type. Possible values are:
  • nat_id
  • passport
identity_number Sender’s identity number
country Country code of the Sender’s country
job Sender’s job. Possible values are:
  • housewife
  • entrepreneur
  • private_employee
  • government_employee
  • foundation_board
  • indonesian_migrant_worker
  • others
email Sender’s email
city Sender’s city
phone_number Sender’s phone number

Get All International Transfer

An endpoint to get all existing international transfer transactions.

GET /international-disbursement HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: Basic [your encoded flip for business secret key]

Request

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://bigflip.id/api/v2/international-disbursement");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  "Content-Type: application/x-www-form-urlencoded"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
curl https://bigflip.id/api/v2/international-disbursement \
    -u <secret_key>:

GET https://bigflip.id/api/v2/international-disbursement?pagination=pagination&page=page&sort=sort

Param Value
pagination integer (optional)
The pagination of the result. Default value is 20.
page integer (optional)
The page number of the result to be viewed. Default value is 1.
sort_by string (optional)
Sort the result by the attribute. Use the attribute name (e.g sort=id) to sort in ascending order or dash+attribute name (e.g sort=-id) to sort in descending order. Possible values are:
  • id (default)
  • amount
  • source_country
  • destination_country
  • status

Response

Status 200
Content-Type: application/json

{
  "total_data": 5,
  "data_per_page": 5,
  "total_page": 1,
  "page": 1,
  "data": [
    {
      "id": 10,
      "user_id": 12345,
      "company_id": 123456,
      "exchange_rate": 19000.55,
      "fee": 88888,
      "amount": 1000000,
      "source_country": "IDN",
      "destination_country": "GBR",
      "beneficiary_amount": 52.63,
      "beneficiary_currency_code": "GBP",
      "status": "PENDING",
      "timestamp": "2021-12-02 15:27:24",
      "time_served": "(not set)",
      "created_from": "API",
      "receipt": "someurl.png",
      "transaction_type": "C2C",
      "idempotency_key": "idem-1",
      "beneficiary": {
        "full_name": "John Smith",
        "bank_account_number": "1122333300",
        "bank": "Allica Bank",
        "email": "[email protected]",
        "msisdn": "09584008222",
        "nationality": "IDN",
        "country": "GBR",
        "province": "United Kingdom",
        "city": "Manchester",
        "address": "Mosley St Manchester",
        "postal_code": "M2",
        "relationship": "SON",
        "source_of_funds": "BUSINESS",
        "remittance_purpose": "EDUCATION",
        "iban": null,
        "swift_bic_code": null,
        "sort_code": "506967",
        "ifs_code": null,
        "bsb_number": null,
        "branch_number": null,
        "document_reference_number": null,
        "registration_number": null
      },
      "sender": {
        "name": "John Doe",
        "place_of_birth": 100230,
        "date_of_birth": "1963-12-01",
        "address": "Some Address Street 123",
        "identity_type": "nat_id",
        "identity_number": "1234789012347890",
        "country": 100252,
        "job": "entrepreneur",
        "email": "[email protected]",
        "city": "Sender City",
        "phone_number": "+628123456789"
      },
      "reason": ""
    },
    ...
  ]
}
Attribute Description
total_data Total data returned in all page
data_per_page Total data returned in current page
total_page Total/max page available
page Current page
data Array of international transfer object

Supported Destination Countries

Currently, we support International Transfer to these countries:

No. Country ISO Code Country Name Currency ISO Code
1 AND Andorra EUR
2 AUS Australia AUD
3 AUT Austria EUR
4 BEL Belgium EUR
5 BGR Bulgaria EUR
6 CHN China (only C2C and B2B) CNY
7 HRV Croatia EUR
8 CYP Cyprus EUR
9 CZE Czech Republic EUR
10 DNK Denmark EUR
11 EST Estonia EUR
12 FIN Finland EUR
13 FRA France EUR
14 DEU Germany EUR
15 GRC Greece EUR
16 HKG Hongkong HKD
17 HUN Hungary EUR
18 ISL Iceland EUR
19 IND India INR
20 IRL Ireland EUR
21 ITA Italy EUR
22 JPN Japan JPY
23 LVA Latvia (only C2C/C2B) EUR
24 LIE Liechtenstein EUR
25 LTU Lithuania EUR
26 LUX Luxembourg EUR
27 MYS Malaysia MYR
28 MLT Malta EUR
29 MCO Monaco EUR
30 NLD Netherlands EUR
31 NOR Norway EUR
33 PHL Philippines (only B2C/B2B) PHP
34 POL Poland EUR
35 PRT Portugal EUR
36 ROU Romania EUR
37 SMR San Marino EUR
38 SAU Saudi Arabia SAR
39 SGP Singapore SGD
40 SVK Slovakia EUR
41 SVN Slovenia EUR
42 KOR South Korea KRW
43 ESP Spain EUR
44 SWE Sweden EUR
45 CHE Switzerland EUR
46 THA Thailand THB
47 TUR Turkey TRY
48 ARE United Arab Emirates AED
49 GBR United Kingdom GBP
50 USA United States USD
51 VAT Vatican City State EUR
52 VNM Vietnam (only B2C/B2B) VND

Cancelled Transaction Reasons

These are the possible values for reason of International Transfer transaction if the transaction’s status is CANCELLED.

No. Error Code Description
1 DECLINED Transaction cannot be processed.
2 CANCELLED Transaction was cancelled by system.
3 REFUSED Transaction was not complete because beneficiary declined the fund.
4 INVALID_BENEFICIARY Transaction was failed due to invalid beneficiary account, e.g. bank account number.
5 INVALID_BENEFICIARY_DETAILS Transaction was failed due to invalid beneficiary details, e.g. name, email, phone number.
6 LIMITATIONS_ON_TRANSACTION_VALUE Transaction was failed due to value of transaction exceeding the limit.
7 SLS_SENDER Transaction was rejected due to sender failing the sanction list screening.
8 SLS_BENEFICIARY Transaction was not complete due to beneficiary failing the sanction list screening.
9 BARRED_BENEFICIARY Transaction was not complete due to beneficiary being blacklisted.
10 BARRED_SENDER Transaction was rejected due to sender being blacklisted.
11 COMPLIANCE_REASON Transaction was rejected due to compliance reason.
12 UNSUPPORTED_BENEFICIARY Transaction was not complete due to beneficiary’s inability to receive the fund.
13 DUPLICATED_TRANSACTION Transaction failed due it was a duplicate.
14 LIMITATIONS_ON_SENDER_QUANTITY Transaction was rejected due to sender had exceeded the transaction count limit.
15 LIMITATIONS_ON_BENEFICIARY_QUANTITY Transaction was not complete due to beneficiary had exceeded the transaction count limit.
16 LIMITATIONS_ON_ACCOUNT_QUANTITY Transaction was not complete due to beneficiary had exceeded the account transaction count limit.
17 LIMITATIONS_ON_ACCOUNT_VALUE Transaction was not complete due to beneficiary had reached the account transaction value limit.

Error List

As mentioned here, validation error or response with status code 422 will contain inner code. Here is the list of the code for International Transfer Transfer:

Error code Meaning
999 Undefined error
1020 The related attribute can only contain number
1024 Max char for the related attribute exceeded
1034 Country is invalid. Please see available country code
1038 Country/city code is not valid. The difference with 1037 code is 1037 will occur if the attribute only allows country code while this code will occur if the attribute allows country or city code
1039 Date format is invalid
1040 Date is invalid
1041 Attribute is invalid
1068 Param country_iso_code is invalid
1069 Param transaction_type is invalid
1081 Maximum amount is exceeded
1082 Minimum amount has not been reached
1083 Cannot use decimal amount
1084 The related attribute can only contain alphanumeric character
1085 Minimum words required
1087 Attribute must consist of X character
1094 The sent request/transaction is marked as stale request (more than 1 minute than the server time)
1095 X-TIMESTAMP format is invalid. It should follow the ISO8601 format

Callback

<?php
$data = isset($_POST['data']) ? $_POST['data'] : null;
$token = isset($_POST['token']) ? $_POST['token'] : null;
if($token === 'the_token_you_get_from_big_flip_dashboard'){
    $decoded_data = json_decode($data);
    print_r($decoded_data);
    //example of what will be printed are listed below
}
# See php tab for sample code

When your transaction status changed or when our system has completed the bank account inquiry process, we will hit the URL you’ve provided in your Flip for Business dashboard.

The provided URL must return a 200 HTTP Status Code. If the URL returns another HTTP Status Code or if our system doesn’t receive any response within 30 seconds (timeout), our system will retry the request 5 times, with a 2-minute interval for the transaction callback (Money Transfer, Accept Payment, International Transfer).

We will hit your URL using POST request with content type application/x-www-form-urlencoded and payload as described below:

Attribute Description
data string
JSON array string with content exactly the same as the response of disbursement or bank account inquiry (see example on the right side)
token string
Validation token to ensure that the callback is coming from our server. You can get your token in your Flip for Business dashboard.

Example code of how to receive the callback are shown on the right side.

Bank Inquiry Callback

Example of bank account inquiry

{
  "bank_code": "bca",
  "account_number": "5465327020",
  "account_holder": "PT Fliptech Lentera IP",
  "status": "SUCCESS",
  "inquiry_key": "aVncCDdKW9dciRvH9qSH"
}

If our system has completed the bank account inquiry process, then we will hit the provided URL for the bank inquiry callback. Please make sure that you have set the Bank Account Inquiry callback URL on the Flip for Business dashboard.

Disbursement Callback

Example of disbursement

{
  "id": 790,
  "user_id": 23,
  "amount": 10000,
  "status": "DONE",
  "reason": "",
  "timestamp": "2017-08-28 14:32:47",
  "bank_code": "bni",
  "account_number": "0437051936",
  "recipient_name": "- FLIPTECH LENTERA INSPIRASI P",
  "sender_bank": "bri",
  "remark": "testing",
  "receipt": "https://storage.biznetgiocloud.com/v1/AUTH_GIOOST443831/bukti_transfer/123993_2017-08-04%202017:07:26.jpg",
  "time_served": "2017-08-28 14:42:47",
  "bundle_id": 0,
  "company_id": 7,
  "recipient_city": 391,
  "created_from": "API",
  "direction": "DOMESTIC_TRANSFER",
  "sender": null,
  "fee": 1500
}

Disbursement callback will be sent to you if you transaction status is changed to DONE or CANCELLED. This callback is used for the V2 and V3 Disbursement. Please make sure that you have set the Transaction callback URL on the Flip for Business dashboard.

Special Disbursement Callback

Example of special disbursement

{
  "id": 812,
  "user_id": 23,
  "amount": "10000",
  "status": "DONE",
  "reason": "",
  "timestamp": "2017-09-06 14:29:55",
  "bank_code": "bni",
  "account_number": "0437051936",
  "recipient_name": "- FLIPTECH LENTERA INSPIRASI P",
  "sender_bank": "bri",
  "remark": "testing",
  "receipt": "https://storage.biznetgiocloud.com/v1/AUTH_GIOOST443831/bukti_transfer/123993_2017-08-04%202017:07:26.jpg",
  "time_served": "2017-09-06 14:39:55",
  "bundle_id": 0,
  "company_id": 7,
  "recipient_city": 391,
  "created_from": "API",
  "direction": "DOMESTIC_SPECIAL_TRANSFER",
  "sender": {
    "sender_name": "John Doe",
    "place_of_birth": 391,
    "date_of_birth": "1992-01-31",
    "address": "taman bakokekok di jalan bakokekok 15 no.2 - 230",
    "sender_identity_type": "nat_id",
    "sender_identity_number": "asdas213123",
    "sender_country": 100252,
    "job": "private_employee"
  },
  "fee": 1500
}

Special Disbursement callback will be sent to you if you transaction status is changed to DONE or CANCELLED. This callback is used for the V2 and V3 Special Disbursement. Please make sure that you have set the Transaction callback URL on the Flip for Business dashboard.

Accept Payment Callback

Example of accept payment

{
  "id": "FT1",
  "bill_link": "flip.id/$<company_code>/#<product_code>",
  "bill_link_id": 4740,
  "bill_title": "Cimol Goreng",
  "sender_name": "Jon Doe",
  "sender_bank": "bni",
  "sender_email": "[email protected]",
  "amount": 10000,
  "status": "SUCCESSFUL",
  "sender_bank_type": "bank_account",
  "created_at": "2021-11-29 10:10:10"
}

Accept payment callback will be sent to you if there is a payment status that changed to SUCCESSFUL, CANCELLED, or FAILED. Please make sure that you have set the Accept Payment callback URL on the Flip for Business dashboard.

The provided URL must return a 200 HTTP Status Code. If the URL returns another HTTP Status Code or if our system doesn’t receive any response within 30 seconds (timeout), our system will retry the request 5 times, with a 2-minute interval for the Accept Payment callback.

International Transfer Callback

Example of international transfer

{
  "id": 10,
  "user_id": 12345,
  "company_id": 123456,
  "exchange_rate": 19000.55,
  "amount": 1000000,
  "beneficiary_amount": 52.63,
  "fee": 88888,
  "source_country": "IDN",
  "destination_country": "GBR",
  "beneficiary_currency_code": "GBP",
  "status": "DONE",
  "timestamp": "2021-12-02 15:27:24",
  "time_served": "(not set)",
  "created_from": "API",
  "receipt": "someurl.png",
  "transaction_type": "C2C",
  "idempotency_key": "idem-1",
  "beneficiary": {
    "full_name": "John Smith",
    "bank_account_number": "1122333300",
    "bank": "Allica Bank",
    "email": "[email protected]",
    "msisdn": "09584008222",
    "nationality": "IDN",
    "country": "GBR",
    "province": "United Kingdom",
    "city": "Manchester",
    "address": "Mosley St Manchester",
    "postal_code": "M2",
    "relationship": "SON",
    "source_of_funds": "BUSINESS",
    "remittance_purpose": "EDUCATION",
    "iban": null,
    "swift_bic_code": null,
    "sort_code": "506967",
    "ifs_code": null,
    "bsb_number": null,
    "branch_number": null,
    "document_reference_number": null,
    "registration_number": null
  },
  "sender": {
    "name": "John Doe",
    "place_of_birth": 100230,
    "date_of_birth": "1963-12-01",
    "address": "Some Address Street 123",
    "identity_type": "nat_id",
    "identity_number": "1234789012347890",
    "country": 100252,
    "job": "entrepreneur",
    "email": "[email protected]",
    "city": "Sender City",
    "phone_number": "+628123456789"
  }
}

International transfer callback will be sent to you if you transaction status is changed. Please make sure that you have set the International Transfer callback URL on the Flip for Business dashboard.

Agent’s KYC Status Callback

Example of Agent’s KYC

{
  "agent_id": 1,
  "agent_name": "John Doe",
  "kyc_status": "UPLOAD_IDENTITY_SELFIE_FAILED",
  "rejected_reason_code": 10,
  "rejected_reason": "The data that is filled in does not match with identity card",
  "created_at": "2022-02-18 05:03:32",
  "updated_at": "2022-03-17 09:48:58",
  "submitted_at": "2022-03-17 09:48:58",
  "verified_at": "2022-01-03 09:11:49"
}

A callback notification will be sent to your Agent KYC callback URL if there is a status update related to the agent’s KYC process. Flip will send callback notification for KYC status which has status as below:

Name Code Description
UPLOAD_IDENTITY_SELFIE_FAILED 15 Selfie identity image is failed to be uploaded
UPLOAD_IDENTITY_SELFIE_SUCCESS 19 Selfie identity image is succeed to be uploaded
APPROVED 40 KYC Approved
REJECTED 50 KYC Rejected

Please make sure that you have set the Agent KYC Verification callback URL on the Flip for Business dashboard.

Bank Status Callback

Example of bank is in down status

[
  {
    "bank_code": "bca",
    "status": "HEAVILY_DISTURBED",
    "message": "Bank is under severe disturbance. Please wait until the next callback saying bank is free from the disturbance, before attempting a transaction to the bank.",
    "updated_at": "2023-03-10 10:10:00"
  }
]

Example of bank is in delay status

[
  {
    "bank_code": "bca",
    "status": "DISTURBED",
    "message": "Bank is now free from severe disturbance. You can continue to transact with the beneficiary bank. However, at a slower pace and might be delayed.",
    "updated_at": "2023-03-10 10:10:00"
  }
]

Example of bank has been back to operational

[
  {
    "bank_code": "bca",
    "status": "OPERATIONAL",
    "message": "Bank is now free from severe disturbance. You can continue to transact to the beneficiary bank.",
    "updated_at": "2023-03-10 10:10:00"
  }
]

A bank status info will be sent to you via the provided URL for Bank Disturbance callback. Please make sure that you have set the Bank Status callback URL on the Flip for Business dashboard.

Attribute Description
bank_code Flip’s bank code.
status The status of the disbursement process in related bank. Possible values are:
  • OPERATIONAL
    Banks are operational, disbursement will be processed as soon as possible
  • DISTURBED
    Banks are slow or have another problem. Disbursement will still be processed, but in slower pace and might be delayed
  • HEAVILY_DISTURBED
    Banks are having an error, offline, or another problem that result in a nearly unusable system. Disbursement to this bank can not be processed in a short time, and maybe won’t be processed in the same day. You can ask for a refund if this happen.
message Description of the given status.
updated_at Timestamp of the status updation.

Legacy APIs

The legacy APIs documented in this section are provided for backwards-compatibility. These endpoints may be deprecated in the future. The newer version of APIs are already provided as replacement for these legacy APIs.

Money Transfer V2

Valid bank code are listed in destination bank section.

You can also get this list of bank code along with another information in get bank info.

Create Disbursement

POST /disbursement HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: Basic [your encoded flip for business secret key]

Use this endpoint to create a common disbursement transaction. For company operating as a Money Transfer Company (Perusahaan Transfer Dana), or anything related to that, please use Create Special Disbursement endpoint instead.

Request

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://bigflip.id/api/v2/disbursement");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_POST, TRUE);

$payloads = [
    "account_number" => "1122333300",
    "bank_code" => "bni",
    "amount" => "10000",
    "remark" => "some remark",
    "recipient_city" => "391"
];

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($payloads));

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  "Content-Type: application/x-www-form-urlencoded",
  "idempotency-key: idem-key-1",
  "X-TIMESTAMP: 2022-01-01T15:02:15+0700"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
curl https://bigflip.id/api/v2/disbursement \
    -X POST \
    -u <secret_key>: \
    -d account_number="1122333300" \
    -d bank_code="bni" \
    -d amount="10000" \
    -d remark="some remark" \
    -d recipient_city="391"

POST https://bigflip.id/api/v2/disbursement

Attribute Description
Content-Type string (required)
Request content type: application/x-www-form-urlencoded.
idempotency-key string (required)
Idempotency key. Please see more detail on Idempotent Request section.
X-TIMESTAMP string (optional)
Request timestamp. The format will follow the ISO8601 format.

Body

Attribute Description
account_number string (required)
The account number of the recipient
bank_code string (required)
Bank code of the recipient bank. Accepted value are listed above
amount integer (required)
The amount of money to be disbursed
remark string (optional)
Remark to be included in the transfer made to the recipient. Usually will appear as berita transfer or remark in the transfer receipt. Max length for this attribute is 18 character with only letters, numbers, spaces, ., -, /, (, and ) allowed.
Only for disbursement with the bank code being bri, the remark will be prepended with the beneficiary name. Example: tes remark will be john doe test remark
recipient_city integer (optional)
City code of the recipient city. Available value can be retrieved from city list

Response

Status 200
Content-Type: application/json

{
  "id": 10,
  "user_id": 20,
  "amount": 10000,
  "status": "PENDING",
  "reason": "",
  "timestamp": "2017-08-28 14:32:47",
  "bank_code": "bni",
  "account_number": "1122333300",
  "recipient_name": "John Doe",
  "sender_bank": "bri",
  "remark": "testing",
  "receipt": "",
  "time_served": "0000-00-00 00:00:00",
  "bundle_id": 0,
  "company_id": 7,
  "recipient_city": 391,
  "created_from": "API",
  "direction": "DOMESTIC_TRANSFER",
  "sender": null,
  "fee": 1500
}

See detailed explanation at the Disbursement object details.

Get All Disbursement

GET /disbursement HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: Basic [your encoded flip for business secret key]

Use this endpoint to get the list of transaction you’ve made. By default, the result will be paginated by 20. You can change the pagination, filter, and sort the result by changing the url parameter.

Request

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://bigflip.id/api/v2/disbursement?pagination=pagination&page=page&sort=sort&atribut=value");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  "Content-Type: application/x-www-form-urlencoded"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
curl https://bigflip.id/api/v2/disbursement?pagination=pagination&page=page&sort=sort&atribut=value \
    -u <secret_key>:

Format of the url parameter:

GET https://bigflip.id/api/v2/disbursement?pagination=pagination&page=page&sort=sort&attribute=value

param value
pagination integer (optional)
The pagination of the result. Default value is 20
page integer (optional)
The page number of the result to be viewed.
sort string (optional)
Sort the result by the attribute. Use the attribute name (e.g sort=id) to sort in ascending order or dash+attribute name (e.g sort=-id) to sort in descending order.

You can also filter the result by changing attribute with the attribute to be filtered and value with the filter value. You can filter more than one attribute by appending another attribute filter to the url. Attribute that can be filtered are:

Example:

https://bigflip.id/api/v2/disbursement?pagination=10&page=5&sort=-id

Response

Status 200
Content-Type: application/json

{
  "total_data": 85,
  "data_per_page": 20,
  "total_page": 5,
  "page": 1,
  "data": [
    {
      "id": 10,
      "user_id": 20,
      "amount": 10000,
      "status": "PENDING",
      "reason": "",
      "timestamp": "2017-08-28 14:32:47",
      "bank_code": "bni",
      "account_number": "1122333300",
      "recipient_name": "John Doe",
      "sender_bank": "bri",
      "remark": "some remark",
      "receipt": "",
      "time_served": "0000-00-00 00:00:00",
      "bundle_id": 0,
      "company_id": 7,
      "recipient_city": 391,
      "created_from": "API",
      "direction": "DOMESTIC_TRANSFER",
      "sender": null,
      "fee": 1500
    },
    {
      "id": 11,
      "user_id": 20,
      "amount": 10000,
      "status": "DONE",
      "reason": "",
      "timestamp": "2017-08-24 21:21:23",
      "bank_code": "bni",
      "account_number": "1122333300",
      "recipient_name": "John Doe",
      "sender_bank": "bri",
      "remark": "some remark",
      "receipt": "someurl.jpg",
      "time_served": "2017-08-25 09:11:35",
      "bundle_id": 0,
      "company_id": 7,
      "recipient_city": 391,
      "created_from": "API",
      "direction": "FOREIGN_INBOUND_SPECIAL_TRANSFER",
      "sender": {
        "sender_name": "John Doe",
        "place_of_birth": 391,
        "date_of_birth": "1992-01-01",
        "address": "Some Address Street 123",
        "sender_identity_type": "nat_id",
        "sender_identity_number": "123456789",
        "sender_country": 100252,
        "job": "entrepreneur"
      },
      "fee": 1000
    }
  ]
}
Attribute Description
total_data Total data returned in all page
data_per_page Total data returned in current page
total_page Total/max page available
page Current page
data Array of disbursement object.

Get Disbursement

GET /disbursement/{transaction_id} HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: Basic [your encoded flip for business secret key]

Use this endpoint to get one specific transaction specified by transaction_id in the request URL.

Request

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://bigflip.id/api/v2/disbursement/10");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  "Content-Type: application/x-www-form-urlencoded"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
curl https://bigflip.id/api/v2/disbursement/10 \
    -u <secret_key>:

GET https://bigflip.id/api/v2/disbursement/[transaction_id]

Response

Status 200
Content-Type: application/json

{
  "id": 10,
  "user_id": 20,
  "amount": 10000,
  "status": "PENDING",
  "reason": "",
  "timestamp": "2017-08-28 14:32:47",
  "bank_code": "bni",
  "account_number": "1122333300",
  "recipient_name": "John Doe",
  "sender_bank": "bri",
  "remark": "testing",
  "receipt": "",
  "time_served": "0000-00-00 00:00:00",
  "bundle_id": 0,
  "company_id": 7,
  "recipient_city": 391,
  "created_from": "API",
  "direction": "DOMESTIC_TRANSFER",
  "sender": null,
  "fee": 1500
}

Disbursement Object

Attribute Description
id Flip’s transaction id
user_id Your account user id in our system
amount The amount of money to be disbursed in IDR
status Transaction status. Possible values are:
  • PENDING
    Disbursement is still in process
  • CANCELLED
    The transaction is cancelled and the amount of the transaction plus the transaction fee will be credited to your balance. This will happen if the transfer process are failed for reason such as inactive recipient account, wrong account number, etc
  • DONE
    Disbursement process is finished and the money have been sent to the recipient
reason The reason value will be given if the transaction status is CANCELLED. Possible values are:
  • INACTIVE_ACCOUNT
    Inactive account / Nomor rekening tidak aktif
  • NOT_REGISTERED_ACCOUNT
    Not registered account / Nomor rekening tidak terdaftar
  • CANT_RECEIVE_TRANSFER
    Can’t receive transfer / Rekening tujuan tidak dapat menerima transfer
  • INTERMITTENT_DISTURBANCE_ON_BENEFICIARY_BANK
    Intermittent disturbance on destination bank / Bank tujuan sementara mengalami gangguan
  • BENEFICIARY_ACCOUNT_NOT_VERIFIED
    Account is not verified / Rekening tujuan belum terverifikasi
  • EXCEEDED_TRANSACTION_AMOUNT_LIMIT
    Exceeded amount transaction limit / Batas transaksi melebihi jumlah
timestamp The time when the disbursement request created. Time will be in GMT+7 with yyyy-mm-dd hh:mm:ss format
bank_code Bank code of the recipient bank
account_number The account number of the recipient
recipient_name The name of the recipient account holder. If the account number haven’t cached by Flip yet, this attribute will show - (dash) instead
sender_bank The default sender bank in your account
remark Remark to be included in the transfer made to the recipient
receipt Url of the transfer receipt. The receipt will be a screenshot taken from the internet banking interface of each bank. This attribute will only show the url when the status is DONE
time_served The time when the transaction is finished. Will only show valid value when the status is DONE
bundle_id The bundle id of the transaction made from Flip for Business Dashboard (csv upload or manual input). For the transaction created from API, the value will always be 0
company_id Your Flip for Business account user id in our system
recipient_city City code of the recipient city
created_from The channel of which the transaction was created. Possible values are:
  • API
  • DASHBOARD
direction The direction of the transaction. Possible values are:
  • DOMESTIC_TRANSFER
    Common Disbursement from Indonesia to Indonesian recipient
  • DOMESTIC_SPECIAL_TRANSFER
    Special disbursement from the user of a Money Transfer Company residing in Indonesia to Indonesian recipient
  • FOREIGN_INBOUND_SPECIAL_TRANSFER
    Special disbursement from the user of a Money Transfer Company residing in a foreign country to Indonesian recipient
sender Possible values are null if the transaction is a common disbursement, and sender object if the transaction is a special disbursment.
fee The fee of the transaction

Sender Object

Attribute Description
sender_name The name of the user of the Money Transfer Company that act as a sender
place_of_birth City/country code of the Sender’s place of birth
date_of_birth Sender’s date of birth
address Sender’s address
sender_identity_type Sender’s identity type. Possible value are:
  • nat_id
  • drv_lic
  • passport
  • bank_acc
sender_identity_number Sender’s identity number
sender_country Country code of the Sender’s country
job Sender’s job. Possible values are:
  • housewife
  • entrepreneur
  • private_employee
  • government_employee
  • foundation_board
  • indonesian_migrant_worker
  • others

Special Money Transfer V2

Special Money Transfer is a set of special disbursement APIs for a company operating as a Money Transfer Company (Perusahaan Transfer Dana). The difference with common disbursement, is in this transaction you must provide your senders personal information as part of the Know Your Customer (KYC) process mandated by Bank Indonesia.

Create Special Disbursement

POST /special-disbursement HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: Basic [your encoded flip for business secret key]

Request

<?php

$ch = curl_init();
$secret_key = "wwwwwwwxxxxxxxaaaaaaabbbbbbbbbcccccdddd";

curl_setopt($ch, CURLOPT_URL, "https://bigflip.id/api/v2/special-disbursement");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_POST, TRUE);

$payloads = [
    "account_number" => "1122333300",
    "bank_code" => "bni",
    "amount" => "10000",
    "remark" => "some remark",
    "recipient_city" => "391",
    "sender_country" => 100252,
    "sender_place_of_birth" => 391,
    "sender_date_of_birth" => "1992-01-01",
    "sender_identity_type" => "nat_id",
    "sender_name" => "John Doe",
    "sender_address" => "Some Address Street 123",
    "sender_identity_number" => "123456789",
    "sender_job" => "entrepreneur",
    "direction" => "DOMESTIC_SPECIAL_TRANSFER"
];

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($payloads));

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  "Content-Type: application/x-www-form-urlencoded",
  "idempotency-key: idem-key-1",
  "X-TIMESTAMP: 2022-01-01T15:02:15+0700"
));

curl_setopt($ch, CURLOPT_USERPWD, $secret_key.":");

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
curl https://bigflip.id/api/v2/special-disbursement \
    -X POST \
    -u <secret_key>: \
    -d account_number="1122333300" \
    -d bank_code="bni" \
    -d amount="10000" \
    -d remark="some remark" \
    -d recipient_city="391" \
    -d sender_country="100252" \
    -d sender_place_of_birth="391",
    -d sender_date_of_birth="1992-01-01" \
    -d sender_identity_type="nat_id" \
    -d sender_name="John Doe" \
    -d sender_address="Some Address Street 123" \
    -d sender_identity_number="123456789" \
    -d sender_job="entrepreneur" \
    -d direction="DOMESTIC_SPECIAL_TRANSFER"

POST https://bigflip.id/api/v2/special-disbursement

Attribute Description
Content-Type string (required)
Request content type: application/x-www-form-urlencoded.
idempotency-key string (required)
Idempotency key. Please see more detail on Idempotent Request section.
X-TIMESTAMP string (optional)
Request timestamp. The format will follow the ISO8601 format.

Body

Attribute Description
account_number string (required)
The account number of the recipient
bank_code string (required)
Bank code of the recipient bank. Accepted value are listed above
amount integer (required)
The amount of money to be disbursed
remark string (optional)
Remark to be included in the transfer made to the recipient. Usually will appear as berita transfer or remark in the transfer receipt. Max length for this attribute is 18 character with only letters, numbers, spaces, ., -, /, (, and ) allowed.
Only for disbursement with the bank code being bri, the remark will be prepended with the beneficiary name. Example: tes remark will be john doe test remark
recipient_city integer (optional)
City code of the recipient city. Available value can be retrieved from city list. Default value is 394.
sender_country integer (required)
Country code of the sender’s residence. Available value can be retrieved from country list
sender_place_of_birth integer (optional)
City/country code of the sender’s place of birth. Use city code if the sender’s place of birth is in Indonesia, and country code if outside Indonesia. Available value can be retrieved from city/country list
sender_date_of_birth string/date (optional)
Sender’s date of birth with YYYY-MM-DD format
sender_identity_type string (optional)
Sender’s ID type. Accepted value are:
  • nat_id
    National Id Card or KTP in Indonesia
  • drv_lic
    Driving license
  • passport
  • bank_acc
    Bank Account (DEFAULT)
sender_name string (required)
The name of the user of the Money Transfer Company that act as a sender
sender_address string (required)
Sender’s address
sender_identity_number string (optional)
Sender’s ID number. Default value is from attribute account_number
sender_job string (required) Sender’s job. Accepted values are:
  • housewife
  • entrepreneur
  • private_employee
  • government_employee
  • foundation_board
    People who work at foundation as an employee
  • indonesian_migrant_worker
    Also known as TKI
  • company
    If sender is a company, not individual
  • others
direction string (required) The direction of the transaction. Accepted values are:
  • DOMESTIC_SPECIAL_TRANSFER
    When the sender and the recipient are both residing in Indonesia
  • FOREIGN_INBOUND_SPECIAL_TRANSFER
    When the sender are in a foreign country, but the recipient are in Indonesia

Response

Status 200
Content-Type: application/json

{
  "id": 11,
  "user_id": 20,
  "amount": 10000,
  "status": "DONE",
  "reason": "",
  "timestamp": "2017-08-24 21:21:23",
  "bank_code": "bni",
  "account_number": "1122333300",
  "recipient_name": "John Doe",
  "sender_bank": "bri",
  "remark": "some remark",
  "receipt": "someurl.jpg",
  "time_served": "2017-08-25 09:11:35",
  "bundle_id": 0,
  "company_id": 7,
  "recipient_city": 391,
  "created_from": "API",
  "direction": "FOREIGN_INBOUND_SPECIAL_TRANSFER",
  "sender": {
    "sender_name": "John Doe",
    "place_of_birth": 391,
    "date_of_birth": "1992-01-01",
    "address": "Some Address Street 123",
    "sender_identity_type": "nat_id",
    "sender_identity_number": "123456789",
    "sender_country": 100252,
    "job": "entrepreneur"
  },
  "fee": 1000
}

See detailed explanation at the Disbursement object details.

Changelog

Monday, 19 September 2024

Add new failed reasons for Money Transfer: - INTERNAL_ERROR - EXCEED_AMOUNT_LIMIT - DORMANT_ACCOUNT - INVALID_ACCOUNT - INVALID_BILL - INVALID_AMOUNT - PAID_BILL - EXPIRED_BILL

Monday, 5 August 2024

Wednesday, 23 July 2024

Wednesday, 19 June 2024

Wednesday, 17 April 2024

Tuesday, 26 March 2024

Tuesday, 05 March 2024

Thursday, 15 February 2024

Tuesday, December 19 2023

Thursday, November 30 2023

Thursday, October 19 2023

Wednesday, October 4 2023

Wednesday, September 27 2023

Tuesday, August 21 2023

Tuesday, July 25 2023

Monday, July 24 2023

Thursday, June 8 2023

Thursday, May 4 2023

Tuesday, May 2 2023

Tuesday, March 28 2023

Friday, March 17 2023

Tuesday, March 7 2023

Wednesday, February 15 2023

Tuesday, January 24 2023

Tuesday, January 31 2023

Wednesday, January 25 2023

Tuesday, January 24 2023

Tuesday, December 22 2022

Tuesday, December 6 2022

Friday, December 2 2022

Monday, November 30 2022

Monday, November 28 2022

Monday, November 14 2022

Tuesday, November 8 2022

Thursday, November 3 2022

Wednesday, October 10 2022

Wednesday, August 31 2022

Thursday, August 23 2022

Thursday, July 21 2022

Friday, July 15 2022

Wednesday, July 6 2022

Thursday, June 21 2022

Monday, April 25 2022

Wednesday, April 13 2022

Friday, April 1 2022

Tuesday, March 8 2022

Thursday, February 17 2022

Thursday, December 23 2021

Monday, December 20 2021

Tuesday, December 7 2021

Tuesday, November 30 2021

Friday, October 01 2021

Wednesday, September 22 2021

Tuesday, August 16 2021

Tuesday, March 23 2021

Wednesday, March 17 2021

Thursday, March 04 2021

Tuesday, November 10 2020

Monday, October 12 2020

Friday, April 17 2020

Wednesday, Apr 01 2020

Tuesday, March 31 2020

Wednesday, March 18 2020

Friday, February 28 2020

Monday, January 27 2020

Wednesday, January 22 2020

Wednesday, May 5 2019

Wednesday, February 20 2019

Friday, February 8 2019

Sunday, January 13 2018

Wednesday, August 29 2018

Monday, May 28 2018

Wednesday, April 18 2018

Monday, January 15 2018

Wednesday, December 6 2017

Monday, November 20 2017

Thursday, November 9 2017

Wednesday, October 25 2017

Wednesday, October 18 2017

Wednesday, September 13 2017

Wednesday, August 9 2017

Monday, July 17 2017