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.
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:
BALANCE_INSUFFICIENT
, happens when your Flip account balance is insufficient for the current transaction (balance < (transfer amount + transfer fee)).VALIDATION_ERROR
, error related to the validation of your payload data.
Possible value for inner_code
is all the code listed in respective products’ Error List section:
- Money Transfer error list
- Special Money Transfer error list
- Agent Money Transfer error list
- Agent Verification error list
- Accept Payment error list
- International Transfer error list
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:
- Generate public key and private key pair. Use algorithm OPENSSL_KEYTYPE_RSA 2048 bits.
- Send the public key to flip.id and inform when you ready to request with signature.
- 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.
<?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.
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:
|
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
|
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.
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
Header
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:
|
bank_code |
string (required) Bank code of the recipient bank. Validation:
|
amount |
integer (required) The amount of money to be disbursed Validation:
|
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:
|
recipient_city |
integer (optional) City code of the recipient city. Validation:
|
beneficiary_email |
string (optional) List of the recipient emails. Validation:
|
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:
|
page |
integer (optional) The page number of the result to be viewed. Validation:
|
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:
|
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:
id
- exact comparisonamount
- exact comparisonstatus
- exact comparisontimestamp
- “like” comparisonbank_code
- “like” comparisonaccount_number
- “like” comparisonrecipient_name
- “like” comparisonremark
- “like” comparisontime_served
- “like” comparisoncreated_from
- “like” comparisondirection
- exact comparison
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:
|
reason |
The reason value will be given if the transaction status is CANCELLED . Possible values are:
|
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:
|
direction |
The direction of the transaction. Possible values are:
|
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:
|
sender_identity_number |
Sender’s identity number |
sender_country |
Country code of the Sender’s country |
job |
Sender’s job. Possible values are:
|
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.
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
Header
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:
|
bank_code |
string (required) Bank code of the recipient bank. Validation:
|
amount |
integer (required) The amount of money to be disbursed. Validation:
|
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:
|
recipient_city |
integer (optional) City code of the recipient city. Default value is 394 . Validation:
|
sender_country |
integer (required) Country code of the sender’s residence. Validation:
|
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:
|
sender_date_of_birth |
string/date (optional) Sender’s birth date. Validation:
|
sender_identity_type |
string (optional) Sender’s ID type. Validation: Accepted value are as follows:
|
sender_name |
string (required) The name of the user of the Money Transfer Company that act as a sender. Validation:
|
sender_address |
string (required) Sender’s address. Validation:
|
sender_identity_number |
string (optional) Sender’s ID number. Default value is from attribute account_number . Validation:
|
sender_job |
string (required) Sender’s job. Validation: Accepted value are as follows:
|
direction |
string (required) The direction of the transaction. Validation: Accepted values are as follows:
|
beneficiary_email |
string (optional) List of the recipient emails. Validation:
|
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.
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
Header
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:
|
account_number | string (required) The account number of the recipient. Validation:
|
amount | integer (required) The amount of money to be disbursed. Validation:
|
bank_code | string (required) Bank code of the recipient bank. Validation:
|
direction |
string (required) The direction of the transaction. Validation: Accepted values are as follows:
|
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:
|
beneficiary_email |
string (optional) List of the recipient emails. Validation:
|
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:
|
pagination |
integer (optional) The pagination of the result. Default value is 20 . Validation:
|
page |
integer (optional) The page number of the result to be viewed. Validation:
|
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:
|
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.
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:
|
identity_type |
string (required) Type of identity. Validation: Accepted values are as follows:
|
identity_number |
string (required) Identity number based on the type chosen. Validation:
|
birth_date |
string (required) Agent’s birth date. Validation:
|
birth_place |
string (required) Agent’s birth place. Validation:
|
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:
|
gender |
string (required) Agent’s gender. Validation: Accepted value are as follows:
|
occupation |
string (required) Agent’s job. Validation: Accepted value are as follows:
|
phone_number |
string (required) Agent’s phone number. It must be the one that has been verified by the company. Validation:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
image |
file (required) Image file that wants to be uploaded. Validation:
|
identity_type |
string (required) Type of identity. Validation: Accepted value are as follows:
|
selfie |
string (optional) Flag denotes the uploaded file is the identity image or selfie with identity image. Validation: Accepted value are as follows:
|
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:
- Size less than 2MB
- Dimension between 256 (W) x 256 (H) and 4096 (W) x 4096 (H)
- File type should be
png
,jpg
, orjpeg
- Image should be uploaded right from Camera app (not Gallery or File or Document app)
Attribute | Description |
---|---|
user_id |
string (required) Agent’s ID. Validation:
|
user_type |
string (required) Type of user. Validation:
|
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:
|
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:
|
name |
string (optional) Agent’s full name. Validation:
|
identity_type |
string (optional) Type of identity. Validation: Accepted value are as follows:
|
identity_number |
string (optional) Identity number based on the type chosen. Validation:
|
birth_date |
string (optional) Agent’s birth date. Validation:
|
birth_place |
string (optional) Agent’s birth place. Validation:
|
gender |
string (optional) Agent’s gender. Validation: Accepted value are as follows:
|
occupation |
string (optional) Agent’s job. Validation: Accepted value are as follows:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
image |
file (required) Agent’s identity image file. Validation:
|
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:
|
image |
file (required) Image of Agent’s selfie with ID. Validation:
|
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:
|
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:
|
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:
|
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:
|
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 |
|
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:
|
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 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 3 - Generate a payment and having complete control of the payor’s front end journey
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 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.
|
is_phone_number_required | integer (optional) A flag if user needs to input their phone number when creating payment.
|
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)
|
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.
BSI VA Payment Steps
BSI Mobile
- Buka Aplikasi BSI Mobile
- Pilih Menu pembayaran
- Pilih menu E-commerce
- Pilih merchant “DOKU”
- Pilih Nomor Rekening
- Masukkan No Bayar : “000002489144” (No Bayar adalah Nomor VA TANPA 4 digit pertama)
- Masukkan PIN BSI Mobile
- Transaksi selesai
Banking Syariah Indonesia Net
- Buka Banking Syariah Indonesia Net
- Pilih Menu “pembayaran”
- Pilih Jenis Pembayaran “Institusi”
- Pilih merchant “DOKU”
- Masukkan Nomor Pembayaran : “000002489144”
- Klik tombol “Verifikasi Aplikasi Pembayaran”
- Masukkan PIN dan Token Banking Syariah Indonesia Net
- Klik tombol “Submit”
- Transaksi selesai
ATM BSI
- Pilih Bahasa
- Masukkan PIN ATM
- Pilih “MENU UTAMA”
- Pilih menu “PEMBAYARAN/PEMBELIAN”
- Pilih menu “AKADEMIK/INSTITUSI”
- Masukkan Kode Institusi (6059) dan Nomor Virtual Account (000002489144) = 6059000002489144 dan klik “BENAR”
- Klik “BENAR” pada slide konfirmasi
- Transaksi selesai
Payment using Internet Banking / Mobile Banking Other Banks
- Buka menu Transfer ke Rekening Bank lain
- Pilih bank tujuan “Bank Syariah Indonesia (BSI)” dengan kode bank “451”
- Masukkan Kode Transfer Bank Lain (900), Kode Institusi (6059), dan Kode Pembayaran (000002489144) = “9006059000002489144” sebagai rekening tujuan, kemudian tekan “Benar”
- Masukkan Jumlah Pembayaran. Pastikan Jumlah Pembayaran sesuai dengan invoice. Pembayaran akan gagal jika Jumlah Pembayaran berbeda dengan invoice.
- Muncul Layar Konfirmasi Transfer yang berisi Nomor rekening tujuan dan Nama beserta jumlah yang dibayar, jika sudah benar
- Selesai
Channel Payment using ATMs of Other Banks
- Buka menu Transfer ke Rekening Bank lain
- Masukkan Kode Bank BSI (451), Kode Transfer Bank Lain (900), Kode Institusi (6059), dan Kode Pembayaran (000002489144) = “4519006059000002489144” sebagai rekening tujuan, kemudian tekan “Benar”
- Masukkan Jumlah Pembayaran dan pilih “Benar”. Pastikan Jumlah Pembayaran sesuai dengan invoice. Pembayaran akan gagal jika Jumlah Pembayaran berbeda dengan invoice.
- Muncul Layar Konfirmasi Transfer yang berisi Nomor rekening tujuan dan Nama beserta jumlah yang dibayar, jika sudah benar, Tekan “Benar”
- Selesai
Mandiri VA Payment Steps
Livin’ by Mandiri
- Login ke Livin’
- Pilih menu “Bayar”
- Ketik “DOKU VA Aggregator” atau “88899” pada bagian search
- Masukkan No VA “8889940019213374” secara keseluruhan, lalu masukan nominal, kemudian tekan Lanjutkan
- Pastikan detail pembayaran sudah sesuai seperti no VA, Jumlah Pembayaran dan detail lainnya
- Pilih Rekening Sumber
- Pilih Lanjut Bayar kemudian masukkan PIN dan konfirmasi
- Transaksi selesai dan simpan resi sebagai bukti transaksi
ATM Mandiri
- Masukkan Kartu ATM Mandiri, lalu pilih Bahasa
- Masukkan PIN ATM
- Pilih menu “Bayar/Beli”
- Pilih menu “Lainnya”
- Kemudian tekan kembali “Lainnya”
- Pilih menu “Multipayment”
- Masukkan Kode Perusahaan / Institusi “88899”, kemudian tekan BENAR
- Masukkan No VA “8889940019213374” secara keseluruhan, lalu masukan nominal, kemudian tekan Lanjutkan
- Pastikan detail pembayaran sudah sesuai seperti no VA, Jumlah Pembayaran dan detail lainnya
- Konfirmasi pembayaran dengan pilih “YA”
- Transaksi selesai dan simpan resi sebagai bukti transaksi
ATM Bank Lain
- Masukkan PIN
- Pilih menu “Transfer”
- Pilih “Ke Rek Bank Lain”
- Masukkan Kode Bank Mandiri “008” dan kode bayar “8889940019213374” sebagai rekening tujuan, kemudian tekan “Benar”
- Masukkan Jumlah pembayaran dan pilih “Benar”
- Muncul Layar Konfirmasi Transfer yang berisi Nomor rekening tujuan dan Nama beserta jumlah yang dibayar, jika sudah benar, Tekan “Benar”
- Selesai
BRI VA Payment Steps
ATM BRI
- Masukkan Kartu Debit BRI dan PIN Anda
- Pilih menu Transaksi Lain > Pembayaran > Lainnya > BRIVA
- Masukkan kode pembayaran / virtual account number anda : “1236260010915996”
- Di halaman konfirmasi, pastikan detil pembayaran sudah sesuai seperti Nomor BRIVA, Nama Pelanggan dan Jumlah Pembayaran
- Ikuti instruksi untuk menyelesaikan transaksi
- Simpan struk transaksi sebagai bukti pembayaran
Mobile Banking BRI
- Login aplikasi BRI Mobile
- Pilih menu BRIVA
- Pilih pembayaran baru
- Masukkan kode pembayaran / virtual account number anda : “1236260010915996”
- Di halaman konfirmasi, pastikan detil pembayaran sudah sesuai seperti Nomor BRIVA, Nama Pelanggan dan Total Pembayaran
- Masukkan PIN
- Simpan notifikasi SMS sebagai bukti pembayaran
Internet Banking BRI
- Login pada alamat Internet Banking BRI (https://ib.bri.co.id/ib-bri/Login.html)
- Pilih menu Pembayaran Tagihan > Pembayaran > BRIVA
- Masukkan kode pembayaran / virtual account number anda : “1236260010915996”
- Di halaman konfirmasi, pastikan detil pembayaran sudah sesuai seperti Nomor BRIVA, Nama Pelanggan dan Jumlah Pembayaran
- Masukkan password dan mToken
- Cetak/simpan struk pembayaran BRIVA sebagai bukti pembayaran
Mini ATM/EDC BRI
- Pilih menu Mini ATM > Pembayaran > BRIVA
- Swipe Kartu Debit BRI Anda
- Masukkan kode pembayaran / virtual account number anda : “1236260010915996”
- Masukkan PIN
- Di halaman konfirmasi, pastikan detil pembayaran sudah sesuai seperti Nomor BRIVA, Nama Pelanggan dan Jumlah Pembayaran
- Simpan struk transaksi sebagai bukti pembayaran
ATM Bank Lain
- Masukkan Kartu Debit dan PIN Anda
- Pilih menu Transaksi Lainnya > Transfer > Ke Rek Bank Lain
- Masukkan kode bank BRI kemudian diikuti kode pembayaran / virtual account number anda : “0021236260010915996”
- Ikuti instruksi untuk menyelesaikan transaksi
- Simpan struk transaksi sebagai bukti pembayaran
BNI VA Payment Steps
Mobile banking payment
- Buka aplikasi BNI Mobile
- Login ke akun BNI Mobile Banking Anda.
- Pilih menu pembayaran
- Pilih “Transfer”
- Pilih E-Commerce
- Pilih “Virtual Account Billing”, lalu pilih rekening debit Anda
- Pilih merchant Foolmoon
- Masukkan Nomor Virtual Account Anda di “Input Baru”
- Masukkan nomor pembayaran 8291300001762993
- Konfirmasi bahwa jumlah pembayaran ditampilkan di layar
- Masukkan PIN
- Konfirmasi transaksi dan masukkan kata sandi transaksi Anda
- Konfirmasi transaksi
- Transaksi berhasil
ATM BNI
- Masukkan kartu ATM BNI, lalu masukkan PIN ATM.
- Pilih menu “Menu Lain”, lalu pilih menu “Transfer”
- Pilih Jenis Akun
- Pilih “Ke Rekening BNI”
- Masukkan nomor rekening dengan Kode Pembayaran (mis.: 7810202001539202) dan pilih “Benar”
- Saat Konfirmasi Pembayaran muncul, pilih “Ya”
- Transaksi sudah selesai, mohon simpan struknya.
BNI Internet Banking
- Login Internet Banking, lalu pilih menu “Transfer”.
- Pilih menu “In-House”.
- Masukkan nomor rekening dengan Kode Pembayaran Anda (mis.: 7810202001539202) lalu pilih “Kirim”.
- Masukkan “Kata Sandi” dan OTP Anda.
- Transaksi sudah selesai, mohon simpan struknya.
BNI Teller
- Kunjungi Teller Bank BNI di Kantor BNI.
- Isi Formulir Setoran Tunai
- Pilih “Tunai” atau tunai. Masukkan Kode Pembayaran (mis.: 781087101123456) dan jumlah. Tulis nama dan tanda tangan Anda.
- Kirim Formulir Setoran Tunai dan uang tunai ke Teller BNI.
- Transaksi selesai, mohon simpan salinan Formulir Setoran Tunai sebagai tanda terima pembayaran.
ATM Bank Lain
- Masukkan kartu ATM, lalu masukkan PIN ATM.
- Pilih menu “Transfer Antar Bank”.
- Masukkan “Kode Bank Tujuan” : BNI (Kode Bank : 009) + Kode Pembayaran (mis.:781078787101123456).
- Masukan “jumlah”.
- Saat Konfirmasi Transfer muncul, pilih “Ya” / “Lanjut”.“
- Transaksi sudah selesai, silahkan ambil struknya.
CIMB Niaga VA Payment Steps
Octo Mobile
- Login ke Octo Mobile
- Pilih menu : Transfer
- Pilih menu : Transfer to Other CIMB Niaga Account
- Pilih Source of fund
- Masukkan nomor virtual account 1899000000958158
- Masukkan jumlah pembayaran (Amount) sesuai tagihan
- Klik tombol Next
- Nomor virtual account, nama virtual account dan jumlah pembayaran (Amount) ditampilkan pada layar
- Klik tombol Confirm
- Masukkan Mobile Banking PIN
Internet Banking Bank Lain
- Login ke internet banking
- Pilih menu transfer ke Bank Lain Online
- Pilih bank tujuan Bank CIMB Niaga (kode bank: 022)
- Masukkan nomor virtual account 1899000000958158
- Masukkan jumlah pembayaran sesuai tagihan
- Nomor, nama virtual account dan jumlah billing ditampilkan pada layar
- Ikuti instruksi untuk menyelesaikan transaksi
- Konfirmasi pembayaran ditampilkan pada layar
OCTO Clicks
- Login ke OCTO Clicks (https://www.octoclicks.co.id)
- Pilih menu : Pembayaran Tagihan
- Pilih kategori transaksi : Virtual Account
- Pilih rekening sumber dana
- Masukkan nomor virtual account 1899000000958158 dan klik tombol : Lanjutkan untuk verifikasi detail
- Nomor virtual account, nama virtual account dan total tagihan ditampilkan pada layar
- Masukkan 6 digit OTP dan tekan tombol Submit
- Klik tombol Konfirmasi untuk memproses pembayaran
ATM CIMB
- Masukkan Kartu ATM dan PIN CIMB Anda
- Pilih menu Pembayaran > Lanjut > Virtual Account
- Masukkan nomor virtual account 1899000000958158
- Pilih rekening debit
- Nomor, nama virtual account dan jumlah billing ditampilkan pada layar
- Pilih OK untuk melakukan pembayaran
- Konfirmasi pembayaran ditampilkan pada layar
ATM Alto / Bersama / Prima
- Masukkan Kartu ATM dan PIN Anda pada mesin ATM bank tersebut
- Pilih menu TRANSFER > TRANSFER KE BANK LAIN
- Masukkan kode bank CIMB Niaga: 022
- Masukkan jumlah pembayaran sesuai tagihan
- Masukkan nomor virtual account 1899000000958158
- Ikuti instruksi untuk menyelesaikan transaksi
- Konfirmasi pembayaran ditampilkan pada layar
Permata VA Payment Steps
Internet Banking Permata (PermataNet)
- Login ke akun internet banking
- Pilih menu “pembayaran” dan pilih "Pembayaran Lainnya. Masukkan kode bank Permata (013) sebagai bank tujuan”
- Masukkan nominal transaksi
- Masukkan 16 digit nomor virtual account 8856600007388919
- Konfirmasi kode bank, nomor virtual account dan nominal pembayaran, jika sudah sesuai pilih “Benar”
- Selesai
Permata Mobile X
- Buka aplikasi PermataMobileX
- Masukkan User ID & Password
- Pilih “Pembayaran Tagihan”
- Pilih “Virtual Account”(Akun Virtual)
- Masukkan 16 digit Virtual Account yang tertera pada halaman konfirmasi(8856600007388919)
- Muncul halaman tujuan pembayaran
- Masukkan nominal pembayaran sesuai dengan yang ditagihkan
- Muncul konfirmasi pembayaran
- Masukkan Kode Otentikasi Transaksi
- Transaksi selesai
ATM Permata
- Masukkan PIN
- Pilih menu “Transaksi Lainnya”
- Pilih “Pembayaran”
- Pilih “Pembayaran Lainnya”
- Pilih “Virtual Account”
- Masukkan Nomor Virtual Account 8856600007388919
- Jumlah yang harus dibayar dan nomor rekening akan muncul pada halaman konfirmasi pembayaran. Jika informasi sudah benar pilih “Benar”
ATM PRIMA/ALTO
- Masukkan PIN
- Pilih “Transfer”. Jika menggunakan ATM bank lain, pilih “Pembayaran Lainnya”
- Pilih pembayaran lainnya
- Masukkan kode bank Permata (013) diikuti 16 digit nomor virtual account anda: 8856600007388919 kemudian pilih “Benar”
- Masukkan nominal yang akan dibayarkan. Pembayaran transaksi gagal akan muncul jika nominal yang dimasukkan salah
- Konfirmasi kode bank, nomor virtual account dan nominal pembayaran, jika sudah sesuai pilih “Benar”
- Transaksi anda selesai
Danamon VA Payment Steps
D-Mobile (M-Banking)
- Akses D-Mobile melalui smartphone Anda
- Masukkan User ID dan Password
- Pilih menu > “Pembayaran” > “Virtual Account”
- Tambahkan biller baru pembayaran
- Masukan 16 digit nomor virtual account (8922600000040841)
- Pastikan data pembayaran sudah benar
- Masukkan mPIN Anda untuk konfirmasi
- Transaksi selesai, Anda akan mendapatkan info transaksi
ATM Danamon
- Masukkan kartu ATM Danamon, lalu masukkan PIN ATM Anda
- Pilih menu > “Pembayaran” > “Lainnya” > “Virtual Account”
- Masukan 16 digit nomor virtual account (8922600000040841)
- Pastikan data pembayaran sudah benar dan pilih “YA”
- Transaksi selesai, harap simpan bukti transaksi Anda
ATM Bersama/ATM Alto/ATM Prima (Transfer)
- Masuk ke menu > “Transfer”
- Pilih > “Transfer ke bank lain”
- Masukkan kode Bank Danamon : 011 + 16 digit nomor virtual account di rekening tujuan (0118922600000040841)
- Masukkan jumlah pembayaran sesuai tagihan
- Pastikan data pembayaran sudah benar
- Pilih > “YA”, untuk melanjutkan transaksi
- Transaksi selesai, harap simpan bukti transaksi Anda
Other banks VA Payment Steps
ATM
- Masukkan PIN
- Pilih menu “Transfer”
- Pilih “Ke Rek Bank Lain”
- Masukkan Kode Bank “899” (DOKU) diikuti dengan 16 digit rekening tujuan “8000000000494638”, kemudian tekan “Benar”
- Masukkan Jumlah pembayaran dan pilih “Benar”
- Muncul Layar Konfirmasi Transfer yang berisi Nomor rekening tujuan dan Nama beserta jumlah yang dibayar, jika sudah benar, Tekan “Benar”
- Selesai
MOBILE BANKING - BCA MOBILE (M-BCA)
- Lakukan Log in pada aplikasi BCA Mobile
- Pilih m-BCA
- Masukkan kode akses m-BCA
- Masuk ke menu m-Transfer
- Masuklah ke menu Daftar Transfer dan pilih Antar Bank
- Masukkan nomor rekening tujuan “8000000000494638”, dan pilih DOKU pada kolom Bank
- Setelah itu, nama VA akan muncul, klik Kirim
- Setelah itu kamu diminta memasukkan Personal Identification Number (PIN) BCA, pastikan tidak salah dalam memasukkan PIN
- 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
- 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)
- Akses D-mobile melalui handphone
- Login, Masukkan User ID dan password
- Pilih menu Transfer, lalu pilih non BDI Transfer
- Masukkan jumlah uang yang akan kamu transfer sesuai yang tertera di invoice
- Masukkan nomor rekening tujuan “8000000000494638”
- Masukkan nama DOKU di kolom nama Bank
- Klik transfer sekarang
MOBILE BANKING - PERMATA (PERMATA MOBILE X)
- Buka aplikasi PermataMobile X dan lakukan log in
- Pilih menu Transfer
- Pilih nomor rekening yang akan digunakan untuk mentransfer dana
- Input nomor rekening tujuan “8000000000494638” dan nominal sesuai dengan nominal invoice
- Pilih DOKU di kolom bank
- Pilih layanan transfer (online / LLG / RTGS), setelah itu akan muncul konfirmasi tranfer
- Masukan OTP / mobile PIN
- Selesai (akan muncul konfirmasi sukses)
MOBILE BANKING - DBS (DIGIBANK INDONESIA)
- Buka aplikasi Digibank Indonesia dan lakukan log in
- Pilih menu Transfer
- Pilih Tambah Penerima
- Pilih Jenis Transfer, Transfer Rupiah
- Pilih Bank Penerima, DOKU
- Input nomor rekening tujuan 8000000000494638, klik Lanjut
- Input nominal sesuai dengan nominal invoice
- 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:
|
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:
|
is_address_required | integer (optional) A flag if user needs to input their address when creating payment.
|
is_phone_number_required | integer (optional) A flag if user needs to input their phone number when creating payment.
|
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:
|
sort_type | string (optional) You can sort in
|
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:
|
sort_type | string (optional) You can sort in
|
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:
|
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:
|
is_address_required | A flag if user needs to input their address when creating payment.
|
is_phone_number_required | A flag if user needs to input their phone number when creating payment.
|
step | Which step the customers will be redirected to when opening the payment link.
|
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.
|
Bill Customer Object
Customer detail data
Attribute | Description |
---|---|
name | Name of the Customer. |
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
|
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.
|
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.
|
virtual_account_number | Number that is generated for the virtual_account payment. |
amount | Payment amount done by the user. |
status | Payment status.
|
settlement_status | Merchant settlement status.
|
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.
|
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:
|
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
- 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.
- 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.
- 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. Thespecial_identifiers
attribute consists of the required attributes for the given country. - 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.
- 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.
- 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.
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:
|
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:
|
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:
|
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:
|
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
Header
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:
|
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:
|
sender_identity_number |
string (required) Sender’s ID number |
sender_job |
string (required) Sender’s job. Accepted values are:
|
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
Header
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:
|
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:
|
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:
|
receipt |
URL of the transfer receipt |
transaction_type |
Transaction type information. Possible values are:
|
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:
|
identity_number |
Sender’s identity number |
country |
Country code of the Sender’s country |
job |
Sender’s job. Possible values are:
|
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:
|
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:
|
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
Header
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:
id
- exact comparisonamount
- exact comparisonstatus
- exact comparisontimestamp
- “like” comparisonbank_code
- “like” comparisonaccount_number
- “like” comparisonrecipient_name
- “like” comparisonremark
- “like” comparisontime_served
- “like” comparisoncreated_from
- “like” comparisondirection
- exact comparison
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:
|
reason |
The reason value will be given if the transaction status is CANCELLED . Possible values are:
|
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:
|
direction |
The direction of the transaction. Possible values are:
|
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:
|
sender_identity_number |
Sender’s identity number |
sender_country |
Country code of the Sender’s country |
job |
Sender’s job. Possible values are:
|
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
Header
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:
|
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:
|
direction |
string (required) The direction of the transaction. Accepted values are:
|
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
- Fixed display
EXCEEDED_TRANSACTION_AMOUNT_LIMIT
reason list
Wednesday, 23 July 2024
- Add Superbank (
super_bank
) into the Destination Banks - Add additional information on Callback section
- Update help center link for Idempotency Key
Wednesday, 19 June 2024
- Add settlement datetime to Get Payment and Get All Payment API responses
- Add settlement datetime to the Payment Object
Wednesday, 17 April 2024
- Add idempotency key error code related in Money Transfer error list
Tuesday, 26 March 2024
- Add
EXCEEDED_TRANSACTION_AMOUNT_LIMIT
to Disbursement API
Tuesday, 05 March 2024
- Add the flow chart in Accept Payment title page
- Add the VA payment steps for BSI, BNI, BRI, Mandiri, CIMB, Permata, Danamon, and Other Banks
- Add the qr_code_data in Bank Account Object
- Update the sender_bank_type in constant page
- Update the sample code in Create Bill API
Thursday, 15 February 2024
- Add Postman Collection section
Tuesday, December 19 2023
- Modify Is Maintenance general API
Thursday, November 30 2023
- Add
btn_syr
in bank list
Thursday, October 19 2023
- Add International Transfer flow chart
Wednesday, October 4 2023
- Update description for CHN in list country
Wednesday, September 27 2023
- Add description to country (CHN, LVA, PHL, VNM)
Tuesday, August 21 2023
- add new bank:
bukopin
: Wokee/Bukopin
Tuesday, July 25 2023
- Update Accept Payment Create Bill
- Remove maximum payment amount
- Add new QRIS Payment method example
- Add new Creating & Displaying QR Image section
- Update Accept Payment Edit Bill
- Remove maximum payment amount
- Update Accept Payment Get Payment
- Add
sender_bank_type
- Add
- Update Callback section
Monday, July 24 2023
- Add new banks code
resona_perdania
: Bank Resona Perdaniaamerica_na
: Bank of America NAmizuho
: Bank Mizuho Indonesiabnp_paribas
: BNP Paribas Indonesiaamar
: Bank Amar Indonesia
Thursday, June 8 2023
- Add new Disbursement cancelled reason
Thursday, May 4 2023
- Add new Agent’s KYC Rejection Reasons
Tuesday, May 2 2023
- Add new country India as supported Destination Countries
- Update Flow Overview International Transfer
Tuesday, March 28 2023
- Add new callback: Bank Status Callback
Friday, March 17 2023
- Add new error code: Error List
2005
: Transfer amount are less than the minimum amount set by the respective Bank
- Add deprecated error code section Deprecated Error Code
1042
: Minimum transfer OVO amount is Rp10.000 - Replaced with2005
1086
: Minimum transfer dana amount is Rp20.500 - Replaced with2005
Tuesday, March 7 2023
- Add new API: Create International Transfer B2C/B2B
- Update Create International Transfer to be Create International Transfer C2C/C2B
- New
transaction_type
for Get Exchange Rates API, Get Form Data API and Get International Transfer
Wednesday, February 15 2023
- Add new error code for Money Transfer
- Add info SLA in Bank Account Inquiry
Tuesday, January 24 2023
- Add payment steps for BSI VA in create-bill section
Tuesday, January 31 2023
- change limit DANA from Rp20.000 to Rp20.500
- add error code for COT
1088
: The beneficiary bank is in severe disturbance1093
: - Cannot process transaction because bank is in cut off time
- add validation for additional remark in create disbursement
Wednesday, January 25 2023
- Update Destination Banks
- Add more Syariah banks to the list
- Sort the table by bank name
- Add validation details for APIs:
- Create Disbursement
- Get All Disbursement
- Create Special Disbursement
- Create Disbursement for Agent
- Get Agent Disbursement List
- Create Agent Identity
- Upload Agent Identity Image
- Upload Supporting Document
- Repair Data
- Repair Identity Image
- Repair Identity-Selfie Image
- Get Country, Province, City, District APIs
- Changes on API requests:
- Remove
nationality
from Repair Data API request and response - New attributes for Upload Supporting Document API:
married_card
,married_card_selfie
,npwp
,npwp_selfie
,bpjs_kesehatan
,bpjs_kesehatan
- Remove
- Update Error List for Agent Verification
Tuesday, January 24 2023
- Add payment steps for BSI VA in Create Bill section
Tuesday, December 22 2022
- Add error code list
1089
for forbidden to transfer to flip account - Add param
rejected_reason_code
in Agent KYC
Tuesday, December 6 2022
- Add additional countries in International Transfers
- Saudi Arabia
- United Arab Emirates
Friday, December 2 2022
- Update Introduction explanation, along with some product overview:
- Move Error List section to respective products’ section:
- Update “Bank Kaltim” name to “Bank Kaltimtara”
Monday, November 30 2022
- Add Permata VA in Destination Bank
Monday, November 28 2022
- Update Agent’s KYC Rejection Reasons enumeration
Monday, November 14 2022
- Revise Virtual Account description in General Explanation
Tuesday, November 8 2022
- New Postman Collection for Flip for Business API
Thursday, November 3 2022
- Add Cancelled Transaction Reasons list for International Transaction
Wednesday, October 10 2022
- Change Supported Banks to Destination Bank
- Add
Virtual Accounts
to Destination Bank- BNI VA
- BRI VA
- CIMB VA
- Mandiri VA
- Danamon VA
- Muamalat VA
- Seperate Destination Bank table into 3 tables (Bank, VA, e-Wallets)
Wednesday, August 31 2022
- Add
X-TIMESTAMP
header- Create Disbursement
- Create Special Disbursement
- Create Agent Disbursement
- Create International Transfer
Thursday, August 23 2022
- Accept Payment Callback
- Added
bill_link_id
in attribute on accept payment callback
- Added
Thursday, July 21 2022
- Accept Payment documentation update:
- Added new bank code list in section “Constant >> Bank Code” for e-wallet and new VA.
- Added
wallet_account
in attributeaccount_type
on section “Constant >> Bank Account Object” - Added
wallet_account
in attributesender_bank_type
on section “Constant >> Bill Payment Object” - Update
payment_url
description on “Constant >> Bill Object”. - Update API Response Create Bill for step 3.
- Add
settlement_status
attribute in response : - Get Payment
- Get All Payment
- Update description in Confirm Bill Payment
Friday, July 15 2022
- Added new section “Supported Destination Countries” for international transfer
- Update International Transfer Sender Object (removing
drv_lic
andbank_acc
for Sender’s identity type)
Wednesday, July 6 2022
- Added new payload param
inquiry_key
in Bank Account Inquiry
Thursday, June 21 2022
- Added new country list in international transfer
- Added aladin to list of supported bank (domestic)
- Added error code 1085
Monday, April 25 2022
- Added Agent Money Transfer section, includes
- Create Disbursement for Agent
- Get Agent Disbursement by ID
- Get Agent Disbursement List
- Added Agent Verification section
- Create Agent Identity
- Update Agent Identity
- Get Agent Identity
- Upload Agent Identity Image
- Upload Supporting Documents
- KYC Submission
- Repair Identity Image
- Repair Identity-Selfie Image
- Get Country List
- Get Province List
- Get City List
- Get District List
- Enumeration
- Error List
- Added Agent Verification callback
- Updated error list
- Add Legacy section
Wednesday, April 13 2022
- Added
reason
attribute in the response for:- Disbursement V2
- Disbursement V3
- Special Disbursement V2
- Special Disbursement V3
- Disbursement Callback
- Special Disbursement Callback
Friday, April 1 2022
- Added new Bank Inquiry Status:
FAILED
andCLOSED
Tuesday, March 8 2022
- Update Accept Payment
- Create Payment request and response
- Get Bill request and response
- Get All Bills request and response
- Add Confirm Bill request and response
- Add Constant section
Thursday, February 17 2022
- Change Big Flip logo and all copywritings to Flip for Business
- Change Disbursement product name to Money Transfer
Thursday, December 23 2021
- Update create Disbursement V3
beneficiary_email
request and response - Update create Special Disbursement V3
beneficiary_email
request and response
Monday, December 20 2021
- Update example of Accept Payment callback response
Tuesday, December 7 2021
- Add International Transfer API section, it includes
- Get Exchange Rates
- Get Form Data
- Create International Transfer
- Get International Transfer
- Get All International Transfers
- Add International Transfer callback
- Update error list for the international transfer errors
Tuesday, November 30 2021
- Add Accept Payment API section, it includes
- Create Bill
- Edit Bill
- Get One Bill
- Get All Bill
- Get Payment(s) from a Bill
- Get All Payments
- Add accept payment callback
- Update error list for the accept payment errors
Friday, October 01 2021
- Change supported Bank Names:
- from BNI/BNI Syariah to BNI
- from Bank NTB to Bank NTB Syariah
- from Bank Aceh to Bank Aceh Syariah
- from Bank Syariah Mandiri/BSI to BSI (Bank Syariah Indonesia)
- from BTN (Bank Tabungan Negara) to BTN/BTN Syariah
Wednesday, September 22 2021
- Update callback timeout info
Tuesday, August 16 2021
- Change the production environment base URL to https://bigflip.id/api
- API v2 from https://big.flip.id/api/v2/ to https://bigflip.id/api/v2
- API v3 from https://big.flip.id/api/v3/ to https://bigflip.id/api/v2
- The old base URL for both API v2 and v3 can still be used until it is deprecated (estimated at the end of November 2021).
- Change supported Bank Names:
- from Bank Artos Indonesia to Jago/Artos
- from Bank Yudha Bakti to Neo Commerce/Yudha Bhakti
- from Bank Kesejahteraan Ekonomi to Seabank/Bank BKE
- from UOB Indonesia to TMRW/UOB
- from Bank MNC Internasional to Motion/MNC Bank
- from KEB Hana Bank Indonesia to LINE Bank/KEB Hana
- from Bank Royal Indonesia to Blu/BCA Digital
- from Bukopin to Wokee/Bukopin
- from Bank Harda Internasional to Allo Bank/Bank Harda Internasional
- from Bank Agris to Bank IBK Indonesia
- from Bank Syariah Mandiri to Bank Syariah Mandiri/BSI
- Remove BRI (Bank Rakyat Indonesia) Syariah (
bri_syr
) from Supported Banks list
Tuesday, March 23 2021
- New Disbursement V3 menu
- Create disbursement
- Get all disbursements
- Get disbursement by IK
- Get disbursement by ID
- New Special Disbursement V3 menu
- Create special disbursement
- New Postman collections
Wednesday, March 17 2021
- Remove
doku
from supported banks
Thursday, March 04 2021
- New styles
- More descriptions for request and response
- Fix URLs for
- Footer links
- Big Flip API Dashboard
- Remove Is Operational
Tuesday, November 10 2020
- Change Sandbox 2.0 description
Monday, October 12 2020
- Remove OVO and Dana as supported banks
- Add Idempotency Key implementation guide
Friday, April 17 2020
- Add
company
as a new option insender_job
for non-individual sender - Add Bank Victoria Syariah and BPD Banten in supported banks
Wednesday, Apr 01 2020
- Remove max amount information
Tuesday, March 31 2020
- Drop the “required” from recipient city code
Wednesday, March 18 2020
- Update attributes sender_identity_type, sender_identity_number, recipient_city, sender_place_of_birth, and sender_date_of_birth in Special Disbursement to be optionals
Friday, February 28 2020
- Update OVO availability
Monday, January 27 2020
- Update information about sandbox environment
Wednesday, January 22 2020
- Add OVO, Dana, and Doku as a bank code
Wednesday, May 5 2019
- Fix special disbursement url in sample code
Wednesday, February 20 2019
- Change
WRONG_ACCOUNT_NUMBER
toCANCELLED
in sandbox env description
Friday, February 8 2019
- Change sample price on
/general/banks
endpoint
Sunday, January 13 2018
- Update operational time
- Remove information about race condition
Wednesday, August 29 2018
- Update bank availability info
Monday, May 28 2018
- Add information about changed remark when disbursing to
bri
Wednesday, April 18 2018
- Change remark from
required
tooptional
Monday, January 15 2018
- Update idempotency key behavior
Wednesday, December 6 2017
- Update bank availability info
Monday, November 20 2017
- Change sender attribute name for improved readability
Thursday, November 9 2017
- Add idempotency-key header
Wednesday, October 25 2017
- Add list of newly supported banks
Wednesday, October 18 2017
- Change country list to English
Wednesday, September 13 2017
- Add remaining endpoint
- Remove leading zeroes removal information, as it cause another problem
Wednesday, August 9 2017
- Add leading zeroes removal information
Monday, July 17 2017
- Initial commit