Skip to main content

MoneyTransfer: Transaction ID Format Change

ยท 9 min read
Flip Technical Team
Technical Documentation Team

Action Required by December 8, 2025

A quick reminder that the new 19-digit Money Transfer Transaction ID format will go live on December 8, 2025 - approximately 1.5 months from now.


๐Ÿงช Test the New Format Now!โ€‹

We've created an interactive simulator to help you test and prepare for the new 19-digit ID format:

๐Ÿ‘‰ Access MT ID Simulator

  • โœ… Test API endpoints with 19-digit IDs
  • โœ… Send test callbacks to your webhook
  • โœ… Validate your data type compatibility
  • โœ… Get code examples for your integration

What's Changingโ€‹

The Money Transfer (Disbursement) transaction ID response format is being updated from Integer to BigInteger (19-digit format).

Current Formatโ€‹

{
"id": 123456789 // Integer format
}

New Format (After December 8, 2025)โ€‹

{
"id": 1234567890123456789 // BigInteger format (19 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:

  1. Using String/VARCHAR for IDs

    • Your database stores transaction IDs as VARCHAR, TEXT, or STRING type
    • Your application code treats IDs as strings
  2. 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
  3. 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 (< 19 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 19-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": 1234567890123456789}');
console.log(response.id); // 1234567890123456800 โ€” last digits changed!

// โœ… Recommended: use a JSON library that preserves big numbers
// npm install json-bigint
const JSONbig = require('json-bigint')({ storeAsString: true });
const response = JSONbig.parse('{"id": 1234567890123456789}');
console.log(response.id); // "1234567890123456789" โ€” 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 (with storeAsString: 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 19 digits) or java.math.BigInteger
  • Jackson/Gson default to long for whole numbers within range, but verify your POJO field types

Pythonโ€‹

  • โœ… No action needed: Python's int is arbitrary-precision. 19-digit IDs work natively with json.loads().
  • Just confirm your database column type is BIGINT if you persist the ID.

Goโ€‹

  • โŒ Avoid: int32
  • โœ… Use: int64 or string. encoding/json decodes JSON numbers into float64 by default โ€” declare your struct field as int64 or use json.Number to preserve precision.

PHPโ€‹

  • 64-bit builds (most modern Linux/macOS deployments): native int handles 19 digits โ€” no action needed.
  • 32-bit builds: int overflows at ~2.1 billion โ†’ cast IDs to string with JSON_BIGINT_AS_STRING:
    $response = json_decode($body, true, 512, JSON_BIGINT_AS_STRING);

.NET / C#โ€‹

  • โŒ Avoid: int (Int32)
  • โœ… Use: long (Int64) or System.Numerics.BigInteger
  • System.Text.Json deserializes whole numbers into long if the target property type is long.

Rubyโ€‹

  • โœ… No action needed: Ruby's Integer is unbounded. Standard JSON.parse handles 19-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 accoount Flip for Business
  • Confirmation that your system has been updated for this changes
  • 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 December 8, 2025 to avoid service disruptions.

Required Changesโ€‹

  1. Update Data Storage

    • Change database column type from INT to BIGINT or VARCHAR
    • Ensure your database can store 19-digit numbers
  2. Update Application Code

    • Store Money Transfer IDs as BigInteger or String (not Integer)
    • Review any code that parses or processes transaction IDs
    • Update any ID validation logic
  3. Update API Integration

    • Ensure your API client can handle 19-digit integers

Affected Endpointsโ€‹

The following endpoints will return IDs in the new format:

Please review the following documentation pages for detailed information about the affected endpoints and integration:

API Reference:

Integration Guides:

These pages contain the current API specifications and will be updated to reflect the new ID format once the change is deployed on December 8, 2025.

Testing Your Integrationโ€‹

๐Ÿงช Test with Our Simulatorโ€‹

To help you prepare for the new ID format, we've created a Money Transfer ID Simulator where you can test the new 19-digit format before the December 8, 2025 rollout.

๐Ÿ‘‰ Access the MT ID Simulator

The simulator provides:

  1. Live API Testing

    • Test endpoints that return responses with new 19-digit BigInteger IDs
    • Call directly from your backend to verify integration
    • No authentication required for testing
  2. Available Endpoints

    • Regular Disbursement: Test standard money transfer creation
    • Special Disbursement: Test special money transfer with sender information
    • List & Get by ID: Test retrieval operations with new ID format
  3. Callback/Webhook Testing

    • Send test callbacks to your webhook URL
    • Verify your system can receive and process 19-digit IDs
    • Uses actual Flip callback format (application/x-www-form-urlencoded)
    • Test with different transaction statuses (PENDING, DONE, CANCELLED)
  4. Data Type Validation

    • Check if your current database data type can handle 19-digit numbers
    • Get recommendations for required changes
    • Interactive compatibility checker

Code Examplesโ€‹

The simulator provides ready-to-use code examples in multiple languages:

  • cURL commands for quick testing
  • Node.js/JavaScript integration examples
  • Python integration examples

๐Ÿ‘‰ Start Testing Now

  1. Update Data Types First

    • Modify your database schema to support BIGINT or VARCHAR for ID fields
    • Update your application code to handle BigInteger or String types
    • Ensure your system can store and process 19-digit numbers
  2. Test with Simulator

    • Use the API endpoints to test your backend integration
    • Verify your system can parse 19-digit IDs correctly
    • Test your webhook handler with the callback simulator
    • Ensure your UI can display long transaction IDs
  3. 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
  4. 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 December 8, 2025, ensure you have:

  • โœ… Updated database schema to support 19-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
  • โœ… Tested your integration using the MT ID Simulator
  • โœ… Verified your webhook can receive callbacks with 19-digit IDs

Potential Issues if Not Updatedโ€‹

If you don't update your systems by December 8, 2025, 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โ€‹

  • October 22, 2025: Announcement published
  • November 2025: Grace period for testing and updates
  • December 8, 2025: New format goes live

Need Help?โ€‹

Our technical team is here to assist you with the migration:

Support Resourcesโ€‹

Please contact our technical team at [email protected] with subject line: "MT ID Format Migration Support"

Preparation Checklistโ€‹

Use this checklist to ensure you're ready:

  1. โ˜‘๏ธ Review current implementation of transaction ID handling
  2. โ˜‘๏ธ Use the Data Type Validator to check compatibility
  3. โ˜‘๏ธ Update database schema to support BigInteger or VARCHAR
  4. โ˜‘๏ธ Modify application code to handle 19-digit IDs
  5. โ˜‘๏ธ Test API integration using the MT ID Simulator
  6. โ˜‘๏ธ Test your webhook using the Callback Simulator
  7. โ˜‘๏ธ Verify webhook handling with large IDs
  8. โ˜‘๏ธ Update any stored procedures or queries
  9. โ˜‘๏ธ Test end-to-end transaction flow with simulator
  10. โ˜‘๏ธ Document changes in your system
  11. โ˜‘๏ธ Deploy changes to production before December 8, 2025
  12. โ˜‘๏ธ 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!