Action Required by June 20, 2026
The International Transfer transaction ID format will change from Integer to BigInteger (18-digit format) on June 20, 2026.
All International Transfer endpoints (Create C2C / C2B International Transfer, Create B2B / B2C International Transfer, Get All International Transfer, Get International Transfer) will return IDs in the new format. Ensure your system stores transaction IDs as BigInteger or String to prevent data truncation and integration issues.
Overview
The International Transfer API solution is designed for businesses, particularly money transfer operators, seeking to offer their users a cost-effective, secure, and swift way to handle international transfers.
C2C (Consumer to Consumer) and C2B (Consumer to Business) For consumer-focused transactions, the API supports both C2C (Consumer to Consumer) and C2B (Consumer to Business) transfers, allowing individuals to send money directly to other individuals or businesses.
B2B (Business to Business) and B2C (Business to Consumer) For business transactions, the API provides support for B2B (Business to Business) and B2C (Business to Consumer) transfers, enabling businesses to send funds to other businesses or directly to consumers.
The API currently covers several international corridors, and we are continuously expanding to include more options.
Step for Integration
To ensure a smooth integration with Flip's International Transfer API, please follow the steps outlined below. This process will guide you from initial testing to live production, ensuring that your system is fully prepared for a seamless operation. To integrate with International Transfer, please follow the steps given below:
1. Preparation Steps Before Integration
-
Testing in Test Mode/Sandbox
Start by testing your integration in the Test Mode/Sandbox environment. You can access it here: Flip Sandbox Overview. -
Preparing and Retrieving API Secret Keys
To verify that the HTTP requests we receive are genuinely from you, it's crucial to use basic authentication with your API Secret Key for every request you send. Flip’s API Gateway employs basic access authentication. The format is[username]:[password]; use your API Secret key as the username and leave the password field empty. Then, encode this string in Base64. The resulting encoded string must be included in the Authorization HTTP header for every API call. For development make sure you use the Test environment's API Secret Key. Read for more information for Retrieving API Secret Key.- Here’s an example of an authentication string (in plain text) - note the colon:
JDJ5JDEzJDBkRTB6T2tBdk8uQWcvRDU2TTY0TmVQd0NrNC5POVF5elZuQnpJUTJvdWc4a2t0Tm44RnlT:
- And the corresponding Base64 encoded string:
SkRKNUpERXpKREJrUlRCNlQydEJkazh1UVdjdlJEVTJUVFkwVG1WUWQwTnJOQzVQT1ZGNWVsWnVRbnBKVVRKdmRXYzRhMnQwVG00NFJubFQ6
- For the HTTP Authorization header, it should look like this:
Authorization: Basic SkRKNUpERXpKREJrUlRCNlQydEJkazh1UVdjdlJEVTJUVFkwVG1WUWQwTnJOQzVQT1ZGNWVsWnVRbnBKVVRKdmRXYzRhMnQwVG00NFJubFQ6
Base64 Code Simulator
Live Editorfunction Base64Encoder() { // Replace the value with your test mode API Secret Key const apiSecretKey = 'JDJ5JDEzJDBkRTB6T2tBdk8uQWcvRDU2TTY0TmVQd0NrNC5POVF5elZuQnpJUTJvdWc4a2t0Tm44RnlT' const [encodedString, setEncodedString] = useState(''); useEffect(() => { // Encode the API Secret Key to Base64 const encoded = btoa(`${apiSecretKey} + :`); setEncodedString(encoded); }, [apiSecretKey]); return ( <div> <h2>Base64 Encoded String:</h2> <p>{encodedString}</p> </div> ) }
ResultLoading... - Here’s an example of an authentication string (in plain text) - note the colon:
2. Generate Signature (Optional)
Signature is used to secure your API request and prevent attackers from altering your payload. It is optional and disabled by default. This feature is only applicable to Disbursement-related APIs. If you want to use signature, follow these steps:
- Generate a public and private key pair using the
OPENSSL_KEYTYPE_RSA 2048-bitalgorithm. - Send your public key to Flip API Integration team and notify when you're ready to make requests with a signature.
- Generate the signature using your private key with input data from your POST and GET request parameters, encoded as strings (ensure all data types are strings).
The signature must use the
sha256WithRSAEncryptionalgorithm and be encoded with Base64.
Generate Signature Algorithm
function generateSignature(privateKey, payload) {
const payloadString = JSON.stringify(payload); // Step 1: Convert payload to string
const sign = createSignature(payloadString, privateKey); // Step 2: Create signature with sha256WithRSAEncryption algorithm
const signature = btoa(sign); // Step 3: Convert signature to Base64
return signature;
}
// In actual implementation, use a library like crypto-js, or Web Crypto API
function createSignature(data, key) {
return `signature`;
}
// Example usage:
const privateKey = "your-private-key";
const payload = {
"account_number": "0437051936",
"bank_code": "bni",
"amount": "10000",
"remark": "testing",
"recipient_city": "391",
"beneficiary_email": "",
};
const signature = generateSignature(privateKey, payload);
console.log("Generated Signature:", signature);
- For every Disbursement API request, include the X-Signature header. Sample request with Signature in the Header :
Sample Request with Signature:
curl -X POST 'https://bigflip.id/big_sandbox_api/v2/disbursement/bank-account-inquiry' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-H 'Accept: application/json; charset=UTF-8' \
-H 'Authorization: Basic <Base64(Your-API-SecretKey + :)>' \
-H 'X-Signature: Your-Generated-Signature' \ # <-- Signature
-d 'account_number=5465327020' \
-d 'bank_code=bca' \
-d 'inquiry_key=your-unique-id-12344'
3. Get Exchange Rate
Before initiating an international transfer, it's essential to know the applicable rates for the destination country. You can use the Get Exchange Rates API, which provides not only the exchange rates but also key details for the destination corridors, such as the minimum and maximum transfer amounts, cut-off times, estimated arrival times, and transfer fees. This information will help you understand the requirements and costs associated with the transfer.
Request Details
| Requirement | Description |
|---|---|
| API Secret Key | The api key that will be used to authenticate the request. For more details, refer to Retrieving API Access Keys. |
country_iso_code | Country code using ISO 3166 (Alpha-3). You can choose multiple countries separate by comma. See supported Country ISO Codes. |
transaction_type | Transaction type information. C2C, C2B, B2B, B2C |
Sample Request:
curl -L 'https://bigflip.id/big_sandbox_api/v2/international-disbursement/exchange-rates?country_iso_code=SGP&transaction_type=C2C' \
-H 'Accept: application/json; charset=UTF-8' \
-H 'Authorization: Basic <Base64(Your-API-SecretKey + :)>'
Sample Response:
- SUCCESS
[
{
"currency_code": "SGD",
"country_code": "SG",
"country_name": "Singapore",
"country_iso_code": "SGP",
"flip_exchange_rate": 11886.6,
"flip_transfer_fee": 85000,
"minimum_amount": 1,
"maximum_amount": 200000,
"payment_speed": "Real Time",
"arrival_message": "Uang diperkirakan sampai dalam hitungan detik.",
"notes": null,
"transaction_type": "C2C",
"flip_cutoff_time": "2024-08-30 15:41:54+0700",
"flip_arrival_time": "2024-08-30 15:41:54+0700",
"is_active": true
}
]
Refer to this page for more information about the Get Exchange Rate API Reference.
4. Get Form Data
This endpoint retrieves a form with all the required fields needed to create a transaction, including details like the remittance purpose, source of funds, relationship with the beneficiary, and the beneficiary’s bank account information.
Request Details
| Requirement | Description |
|---|---|
| API Secret Key | The api key that will be used to authenticate the request. For more details, refer to Retrieving API Access Keys. |
country_iso_code | Country code using ISO 3166 (Alpha-3). You can choose multiple countries separate by comma. See supported Country ISO Codes. |
transaction_type | Transaction type information. C2C, C2B, B2B, B2C |
Sample Request:
curl -L 'https://bigflip.id/big_sandbox_api/v2/international-disbursement/form-data?country_iso_code=SGP&transaction_type=C2C' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-H 'Accept: application/json; charset=UTF-8' \
-H 'Authorization: Basic <Base64(Your-API-SecretKey + :)>' \
Sample Response:
- SUCCESS
{
"country_iso_code": "SGP",
"currency_code": "SGD",
"beneficiary_relationships": {
"SELF": "Diri Sendiri",
"FATHER": "Orang Tua",
"BROTHER": "Keluarga",
"FRIEND": "Teman"
},
"source_of_funds": {
"BUSINESS": "Bisnis",
"SALARY": "Gaji",
"SAVINGS": "Tabungan",
"GIFT": "Hadiah"
},
"remittance_purposes": {
"FAMILY_SUPPORT": "Bantuan Keluarga",
"PERSONAL_TRANSFER": "Pengiriman Pribadi",
"EDUCATION": "Pendidikan",
"GIFT_AND_DONATION": "Hadiah Dan Donasi",
"SALARY_PAYMENT": "Pembayaran Gaji",
"MEDICAL_TREATMENT": "Perawatan Medis",
"MAINTENANCE_EXPENSES": "Beban Pemeliharaan",
"TRAVEL": "Perjalanan",
"SMALL_VALUE_REMITTANCE": "Remitansi Nilai Kecil",
"LIBERALIZED_REMITTANCE": "Remitansi Liberal",
"CONSTRUCTION_EXPENSES": "Beban Konstruksi",
"HOTEL_ACCOMMODATION": "Akomodasi Penginapan",
"ADVERTISING_EXPENSES": "Beban Iklan",
"ADVISORY_FEES": "Biaya Konsultan",
"BUSINESS_INSURANCE": "Asuransi Bisnis",
"INSURANCE_CLAIMS": "Klaim Asuransi",
"DELIVERY_FEES": "Biaya Pengiriman",
"EXPORTED_GOODS": "Pembayaran Barang Ekspor",
"SERVICE_CHARGES": "Biaya Layanan",
"LOAN_PAYMENT": "Pembayaran Pinjaman",
"OFFICE_EXPENSES": "Beban Kantor",
"PROPERTY_PURCHASE": "Pembelian Properti",
"PROPERTY_RENTAL": "Pembayaran Sewa Properti",
"ROYALTY_FEES": "Biaya Royalti Dan Hak Cipta",
"SHARES_INVESTMENT": "Investasi Saham",
"FUND_INVESTMENT": "Investasi Dana",
"TAX_PAYMENT": "Pembayaran Pajak",
"TRANSPORTATION_FEES": "Biaya Transportasi",
"UTILITY_BILLS": "Tagihan Utilitas",
"COMPUTER_SERVICES": "Layanan Komputer",
"REWARD_PAYMENT": "Pembayaran Hadiah",
"INFLUENCER_PAYMENT": "Pembayaran Influencer",
"OTHER_FEES": "Biaya Komitmen Dan Garansi"
},
"banks": {
"848": "Australia And New Zealand Banking Group Limited",
"859": "Bank Of China Limited",
"865": "Bank Of Tokyo-mitsubishi Ufj, Ltd., The",
"868": "Bnp Paribas - Singapore Branch",
"884": "Cimb Bank Berhad",
"885": "Citibank Singapore Ltd",
"886": "Citibank,n.a.",
"901": "Dbs Bank Ltd.",
"904": "Deutsche Bank Ag",
"931": "Hl Bank, Singapore",
"2669": "Hsbc (corporate)",
"2668": "Hsbc (personal)",
"939": "Icici Bank Limited",
"942": "Industrial And Commercial Bank Of China",
"1665": "Malayan Banking Berhad",
"2666": "Malayan Singapore Limited",
"2667": "Mizuho Bank Limited",
"954": "Oversea-chinese Banking Corporation Limited",
"963": "Rhb Bank Berhad",
"2670": "Sing Investments & Finance Limited",
"980": "Standard Chartered Bank Limited",
"983": "Sumitomo Mitsui Banking Corporation",
"1007": "United Overseas Bank Limited"
},
"special_identifiers": [],
"regions": [],
"nationality_countries": []
}
Refer to this page for more information about the Get Form Data API Reference.
5. Perform International Transfer
After you finish check the exchange rates and completed the required form data, you can proceed to create an International Transfer transactions.
- C2C / C2B
- B2B / B2C
Request Details
| Environment | Method | URL |
|---|---|---|
| Test Mode | POST | https://bigflip.id/big_sandbox_api/v2/international-disbursement |
| Live Mode | POST | https://bigflip.id/api/v2/international-disbursement |
| Requirement | Description |
|---|---|
| API Secret Key | The api key that will be used to authenticate the request. For more details, refer to Retrieving API Access Keys. |
idempotency-key | Unique identifier for each request. Please see more detail on Idempotent Request section. Only alphanumeric characters (A-Z, a-z, 0-9) and hyphens (-) are allowed. |
id_number | Id number. |
id_expiration_date | ID expiration date using YYYY-MM-DD format. |
amount | Id number. |
source_country | Source country code using ISO 3166 (Alpha-3). Currently possible value is IDN. |
destination_country | Destination country code using ISO 3166 (Alpha-3). See supported Destination Countries. |
beneficiary_full_name | Full name of the beneficiary |
beneficiary_account_number | Account number of the beneficiary bank |
beneficiary_bank_id | ID of beneficiary bank |
beneficiary_msisdn | A number used to identify a phone number internationally |
beneficiary_nationality | Country code using ISO 3166 (Alpha-3) of beneficiary nationality |
beneficiary_province | Province or state of the beneficiary |
beneficiary_city | City of the beneficiary |
beneficiary_address | Address of the beneficiary |
beneficiary_relationship | Relationship of beneficiary |
beneficiary_source_of_funds | Source of funds |
beneficiary_remittance_purposes | Purpose of remittance |
beneficiary_iban | Identifier of individual account involved in the international transaction |
beneficiary_swift_bic_code | Identifier of specific bank during an international transaction |
beneficiary_sort_code | Digits of code which is used by British and Irish banks |
beneficiary_ifs_code | Indian financial system code |
beneficiary_bsb_number | Identifier of banks and branches across Australia |
beneficiary_branch_number | Identifier of banks and branches across Japan |
beneficiary_document_reference_number | Reference number of document related to the transaction |
beneficiary_registration_number | Registration number |
beneficiary_region | Required for destination country China code. |
sender_name | The name of the user of the Money Transfer Company that act as a sender |
sender_country | Country code of the sender’s residence. Available value can be retrieved from country list. |
sender_place_of_birth | 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 |
sender_date_of_birth | Sender’s date of birth with YYYY-MM-DD format |
sender_address | Sender’s address |
sender_identity_type | Sender’s ID type. |
sender_identity_number | Sender’s ID number |
sender_job | Sender’s job. |
sender_email | Sender’s email. Only accept one email. |
sender_city | Sender’s city. |
sender_phone_number | Sender’s phone number. Start with country phone code. |
To perform a C2B transaction, simply set the transaction_type to C2B in the Create International Transfer Request.
Sample Request:
curl -X POST 'https://bigflip.id/big_sandbox_api/v2/international-disbursement' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-H 'Accept: application/json; charset=UTF-8' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-H 'idempotency-key: Test523489832' \
-d 'amount=1000' \
-d 'source_country=IDN' \
-d 'destination_country=SGP' \
-d 'transaction_type=C2C' \
-d 'beneficiary_full_name=felicia' \
-d 'beneficiary_account_number=67462374939049' \
-d 'beneficiary_bank_id=859' \
-d 'beneficiary_nationality=SGP' \
-d 'beneficiary_province=Singapore' \
-d 'beneficiary_city=Singapore' \
-d 'beneficiary_address=Singapore' \
-d 'beneficiary_relationships=FRIEND' \
-d 'beneficiary_source_of_funds=SALARY' \
-d 'beneficiary_remittance_purposes=FAMILY_SUPPORT' \
-d 'sender_name=Lala' \
-d 'sender_country=100252' \
-d 'sender_place_of_birth=122' \
-d 'sender_date_of_birth=1996-07-09' \
-d 'sender_address=Jakarta%20' \
-d 'sender_identity_type=nat_id' \
-d 'sender_identity_number=4536748275648882' \
-d 'sender_job=private_employee' \
-d 'sender_email=test%40gmail.com' \
-d 'sender_city=Jakarta' \
-d 'sender_phone_number=6285463746357'