International Transfer: Transaction ID Format Change
Action Required by June 20, 2026
The new 18-digit International Transfer Transaction ID format will go live on June 20, 2026. Please make sure your systems are ready before that date to avoid service disruptions.
What's Changing
The International Transfer (International Disbursement) transaction ID response format is being updated from Integer to BigInteger (18-digit format).
Current Format
{
"id": 11 // Integer format
}
New Format (After June 20, 2026)
{
"id": 123456789012345678 // BigInteger format (18 digits)
}
Do You Need to Take Action?
✅ You Can Safely Ignore This Change If:
Your system is already prepared if you meet any of the following conditions:
-
Using String/VARCHAR for IDs
- Your database stores transaction IDs as
VARCHAR,TEXT, orSTRINGtype - Your application code treats IDs as strings
- Your database stores transaction IDs as
-
Using BigInteger/BIGINT Data Types
- Your database column type is
BIGINT,LONG, or equivalent 64-bit integer - Your application uses
BigInteger,Long,Int64, or similar data types
- Your database column type is
-
System Handles 64-bit Integers
- Your system architecture already supports large numbers (64-bit integers)
- You can store numbers up to 9,223,372,036,854,775,807
If any of the above applies to you, no action is needed. Your integration will continue to work seamlessly.
⚠️ You MUST Take Action If:
- Using
INT,INTEGER, or 32-bit integer types in your database - Using
int,Integer,int32, or similar in your application code - Your system has a limitation on integer size (< 18 digits)
- Using JavaScript, TypeScript, or Node.js (see below — silent rounding risk)
- Unsure about your current implementation
⚠️ Language-Specific Considerations
Different programming languages handle large integers differently. This section highlights the most important pitfalls to watch out for.
🚨 JavaScript / TypeScript / Node.js (Critical)
JavaScript's Number type is a 64-bit floating-point (IEEE 754), which can only safely represent integers up to Number.MAX_SAFE_INTEGER = 9,007,199,254,740,991 (16 digits). Any 18-digit ID parsed with the default JSON.parse() will be silently rounded — no error, no warning, just wrong data.
// ❌ This silently corrupts the ID
const response = JSON.parse('{"id": 123456789012345678}');
console.log(response.id); // 123456789012345680 — last digits changed!
// ✅ Option 1: Use BigInt with a reviver (Node 10.4+, modern browsers)
const response = JSON.parse(
'{"id": 123456789012345678}',
(key, value) => key === 'id' && typeof value === 'number' ? BigInt(value) : value
);
// Note: BigInt won't help if value already lost precision before reviver — use option 2 for safety
// ✅ Option 2: Use a JSON library that preserves big numbers
// npm install json-bigint
const JSONbig = require('json-bigint')({ storeAsString: true });
const response = JSONbig.parse('{"id": 123456789012345678}');
console.log(response.id); // "123456789012345678" — safe as string
Why this is dangerous: The API call succeeds with HTTP 200, but the stored ID is wrong. You won't notice until you try to reconcile the transaction with Flip and the IDs don't match.
Recommended approach:
- Use
json-bigint(withstoreAsString: true) or similar library - Treat all transaction IDs as strings throughout your application
- Never compare IDs using
===after default JSON parsing
Java / Kotlin
- ❌ Avoid:
int(32-bit, max ~2.1 billion) - ✅ Use:
long(64-bit, max ~9.2 quintillion — handles 18 digits) orjava.math.BigInteger - Jackson/Gson default to
longfor whole numbers within range, but verify your POJO field types
Python
- ✅ No action needed: Python's
intis arbitrary-precision. 18-digit IDs work natively withjson.loads(). - Just confirm your database column type is
BIGINTif you persist the ID.
Go
- ❌ Avoid:
int32 - ✅ Use:
int64orstring.encoding/jsondecodes JSON numbers intofloat64by default — declare your struct field asint64or usejson.Numberto preserve precision.
PHP
- 64-bit builds (most modern Linux/macOS deployments): native
inthandles 18 digits — no action needed. - 32-bit builds:
intoverflows at ~2.1 billion → cast IDs tostringwithJSON_BIGINT_AS_STRING:$response = json_decode($body, true, 512, JSON_BIGINT_AS_STRING);
.NET / C#
- ❌ Avoid:
int(Int32) - ✅ Use:
long(Int64) orSystem.Numerics.BigInteger System.Text.Jsondeserializes whole numbers intolongif the target property type islong.
Ruby
- ✅ No action needed: Ruby's
Integeris unbounded. StandardJSON.parsehandles 18-digit IDs correctly.
📢 Important: Notify Your Sales Team
Once your system is ready for the new ID format, please inform your Flip Sales team.
We want to ensure your system is fully prepared and that this change will not impact your operations. Your Sales team will:
- Confirm your readiness status
- Provide additional support if needed
- Track the migration progress
- Help coordinate if any special considerations
Contact your dedicated Flip Sales representative or email [email protected] with:
- Your company name
- Your email account Flip for Business
- Confirmation that your system has been updated for this change
- Any concerns or questions about the migration
This helps us ensure a smooth transition for all merchants and allows us to provide targeted support where needed.
Why This Change?
This upgrade is part of our new architecture deployment that will:
- Support higher transaction volumes
- Improve system scalability
- Enhance data integrity
- Prevent ID collision as our platform grows
⚠️ Action Required
All API merchants must update their systems before June 20, 2026 to avoid service disruptions.
Required Changes
-
Update Data Storage
- Change database column type from
INTtoBIGINTorVARCHAR - Ensure your database can store 18-digit numbers
- Change database column type from
-
Update Application Code
- Store International Transfer IDs as
BigIntegerorString(notInteger) - Review any code that parses or processes transaction IDs
- Update any ID validation logic
- Store International Transfer IDs as
-
Update API Integration
- Ensure your API client can handle 18-digit integers
Affected Endpoints
The following endpoints will return IDs in the new format:
- Create C2C / C2B International Transfer
- Create B2B / B2C International Transfer
- Get All International Transfer
- Get International Transfer
- International Transfer callback/webhook responses
Related Documentation
Please review the following documentation pages for detailed information about the affected endpoints and integration:
API Reference:
- Create C2C / C2B International Transfer - Consumer-to-Consumer / Consumer-to-Business international transfer
- Create B2B / B2C International Transfer - Business-to-Business / Business-to-Consumer international transfer
- Get All International Transfer - Retrieve all international transfer transactions
- Get International Transfer - Retrieve specific international transfer transaction details
Integration Guides:
- International Transfer Integration Guide - Complete integration documentation
- Handling Callback - Callback / webhook handling guide
These pages contain the current API specifications and will be updated to reflect the new ID format once the change is deployed on June 20, 2026.
Testing Your Integration
Recommended Testing Approach
-
Update Data Types First
- Modify your database schema to support
BIGINTorVARCHARfor ID fields - Update your application code to handle
BigIntegerorStringtypes - Ensure your system can store and process 18-digit numbers
- Modify your database schema to support
-
Code Review & Validation
- Review all code that handles transaction IDs
- Check for any hardcoded assumptions about ID length
- Verify that your parsing logic can handle larger numbers
- Update any display or formatting logic
-
End-to-End Testing
- Test complete transaction flows with the new ID format
- Verify database storage and retrieval
- Check reporting and analytics systems
- Validate any third-party integrations
What to Verify
Before June 20, 2026, ensure you have:
- ✅ Updated database schema to support 18-digit integers
- ✅ Modified application code to use BigInteger/String for IDs
- ✅ Reviewed all ID parsing and validation logic
- ✅ Updated webhook/callback handling code
- ✅ Verified ID display in your UI can handle longer numbers
- ✅ Tested database storage and retrieval with large numbers
Potential Issues if Not Updated
If you don't update your systems by June 20, 2026, you may experience:
- ❌ ID Truncation: Transaction IDs may be truncated, causing data loss
- ❌ Mismatched Data: Unable to match transactions between systems
- ❌ Failed Queries: Queries using truncated IDs will fail
- ❌ Integration Errors: API responses may fail to parse correctly
- ❌ Database Errors: Storage failures due to overflow
Timeline
- May 14, 2026: Announcement published
- May – June 2026: Grace period for testing and updates
- June 20, 2026: New format goes live
Need Help?
Our technical team is here to assist you with the migration:
Support Resources
- Email: [email protected]
- Documentation: International Transfer Integration Guide
- API Reference: Create C2C / C2B International Transfer
- Error List: International Transfer Error List
Please contact our technical team at [email protected] with subject line: "International Transfer ID Format Migration Support"
Preparation Checklist
Use this checklist to ensure you're ready:
- ☑️ Review current implementation of transaction ID handling
- ☑️ Update database schema to support BigInteger or VARCHAR
- ☑️ Modify application code to handle 18-digit IDs
- ☑️ Verify webhook handling with large IDs
- ☑️ Update any stored procedures or queries
- ☑️ Test end-to-end transaction flow
- ☑️ Document changes in your system
- ☑️ Deploy changes to production before June 20, 2026
- ☑️ Notify your Flip Sales team that you're ready
Thank you for your cooperation in ensuring a smooth transition. We appreciate your partnership with Flip for Business!