Getting Started
The fluX API is a RESTful JSON interface that enables you to send SPEI payouts, verify account ownership, and receive real-time notifications all through a single integration point connected to Mexico's interbank payment network via BANXICO.
Platform Capabilities
Everything you need to move money in Mexico built on SPEI, powered by BANXICO.
Design Principles
Real-Time
All transactions are processed via SPEI in real time. No batch processing, no delays.
Secure by Default
TLS encryption, JWT authentication, and idempotency keys protect every request.
RESTful JSON API
Standard HTTP methods, predictable URLs, and JSON request/response bodies.
Idempotent
Safely retry any request with the same idempotency key without duplicating operations.
Webhook-First
Get notified in real time as events happen. No polling required (though supported).
ISO 20022 Ready
Aligned with international financial messaging standards for cross-border compatibility.
Quickstart Guide
Go from zero to your first API call in four steps.
curl -X POST https://flux.praxisglobe.com/api/v1/partners/login \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d '{ "email": "user@example.com", "password": "password123" }'
API Conventions
| Convention | Details |
|---|
Environments
Use the sandbox environment for development and testing. No real funds are moved. Simulated SPEI responses and CEPs.
https://sandbox.flux.praxisglobe.com/api/v1/partners
Production environment for live operations. Real SPEI transactions and CEP retrieval via BANXICO. Requires approved onboarding.
https://flux.praxisglobe.com/api/v1/partners
¿Qué es fluX One?What is fluX One?
fluX One es una plataforma de middleware financiero que conecta tu negocio con los rieles de pago instantáneo de Latinoamérica a través de una sola integración. En México opera con SPEI (Banco de México) y en Colombia con Bre-B (Banco de la República). Tu equipo técnico integra una vez, y tu negocio puede mover dinero en ambos países de forma inmediata.fluX One is a financial middleware platform that connects your business to Latin America's instant payment rails through a single integration. In Mexico it operates via SPEI (Banco de México) and in Colombia via Bre-B (Banco de la República). Your technical team integrates once, and your business can move money across both countries instantly.
Capacidades de NegocioBusiness Capabilities
Proceso de OnboardingOnboarding Process
¿Listo para comenzar?Ready to get started?
Agenda una llamada con nuestro equipo de integración para recibir tus credenciales de sandbox.Schedule a call with our integration team to receive your sandbox credentials.
Contactar EquipoContact TeamFlujo de una TransacciónTransaction Flow
Comprende el ciclo de vida completo de un pago o transferencia a través de la infraestructura integrada de fluX One, desde la solicitud inicial del cliente hasta el asentamiento en la red bancaria local y la notificación asíncrona.
Understand the complete lifecycle of a payment or transfer through the integrated infrastructure of fluX One, from the initial client request to the settlement in the local banking network and the asynchronous notification.
Ciclo Operativo Paso a PasoStep-by-Step Operating Cycle
Idempotency-Key previene transacciones duplicadas ante fallos de red.Idempotency-Key header prevents duplicate transactions in case of network failures.Ciclo de Vida de un PagoPayment Lifecycle
Cada pago que procesas a través de fluX One sigue un ciclo de vida predecible y transparente. Desde que tu plataforma envía la instrucción hasta la confirmación final, el proceso toma menos de 10 segundos.Every payment processed through fluX One follows a predictable and transparent lifecycle. From the moment your platform sends the instruction to final confirmation, the process takes less than 10 seconds.
¿Qué pasa si algo falla?What happens if something fails?
- ✓ fluX One reintenta automáticamente si el banco no responde. Zero intervención manual.fluX One automatically retries if the bank doesn't respond. Zero manual intervention.
- ✓ Tu sistema recibe una notificación instantánea con el resultado final (éxito o fallo).Your system receives an instant notification with the final result (success or failure).
- ✓ Protección contra duplicados: un pago nunca se procesa dos veces, incluso con fallas de red.Duplicate protection: a payment is never processed twice, even with network failures.
- ✓ Cada transacción queda registrada en el journal inmutable de blockchain para auditoría completa.Every transaction is recorded on the immutable blockchain journal for complete auditability.
Obligaciones de SeguridadSecurity Obligations
Normativas obligatorias de seguridad y cumplimiento normativo que todos los clientes de la plataforma fluX One deben seguir estrictamente para proteger los datos financieros corporativos y de tarjetahabientes.
Mandatory security and compliance regulations that all fluX One platform clients must strictly follow to protect corporate and cardholder financial data.
Reglas de Cumplimiento ObligatoriasMandatory Compliance Rules
1. Almacenamiento de Datos Sensibles: Está estrictamente prohibido almacenar las credenciales de autenticación JWT o claves de API en repositorios de código abiertos o del lado del cliente (frontend). Todas las llamadas a la API de fluX One deben realizarse desde tu servidor back-end.
1. Sensitive Data Storage: It is strictly prohibited to store JWT authentication credentials or API keys in public code repositories or client-side code (frontend). All fluX One API calls must be executed from your back-end server.
2. Protocolos Seguros obligatorios: Todas las conexiones externas a la API deben utilizar HTTPS con cifrado TLS 1.2 o superior. Las conexiones cifradas en versiones antiguas de TLS (como TLS 1.0 y 1.1) serán rechazadas por el Gateway de seguridad.
2. Mandatory Secure Protocols: All external connections to the API must use HTTPS with TLS 1.2 encryption or higher. Encrypted connections on older TLS versions (like TLS 1.0 and 1.1) will be rejected by the security Gateway.
3. Gestión de Claves de Firma de Webhook: La clave secreta para validar las firmas criptográficas de los Webhooks debe ser tratada como un dato altamente confidencial. Si sospechas de un compromiso de seguridad, debes rotar la clave inmediatamente en el panel administrativo corporativo.
3. Webhook Signature Key Management: The secret key used to validate cryptographic Webhook signatures must be treated as highly confidential data. If you suspect a security compromise, you must rotate the key immediately in the corporate administrative dashboard.
Seguridad y CumplimientoSecurity & Compliance
fluX One opera bajo los más altos estándares de seguridad financiera. Tu información y la de tus clientes están protegidas con tecnología de grado bancario.fluX One operates under the highest financial security standards. Your information and your customers' data are protected with bank-grade technology.
Autenticación
Todas las peticiones a las APIs de fluX deben estar autenticadas mediante Llaves Secretas (API Keys). No utilizamos un sistema de usuario y contraseña para integraciones máquina a máquina.
Uso de API Keys
Tus API Keys proporcionan acceso completo a tu entorno y deben mantenerse seguras en el backend. Nunca las expongas en el código del lado del cliente o repositorios públicos.
curl -X GET "https://flux.praxisglobe.com/api/v1/partners/some_endpoint" \ -H "Authorization: Bearer sk_live_ejemplo_secreto_12345" \ -H "Accept: application/json"
Collections SPEI (Pay-ins)
SPEI (Sistema de Pagos Electrónicos Interbancarios) is Mexico's real-time interbank transfer system operated by Banco de México (BANXICO). fluX leverages SPEI to collect payments from any valid CLABE account into your concentrator account.
Use Cases
Subscription Billing
Automatically collect recurring payments from subscribers via SPEI.
E-Commerce Payments
Accept payments from customers directly into your concentrator account.
Invoice Collection
Generate collection requests tied to invoices for B2B payment flows.
Marketplace Deposits
Collect funds from buyers into your platform's escrow or settlement account.
El cliente envía una solicitud de recaudo con payer_clabe, amount y source_instrument_id.
Client sends a collection request with payer_clabe, amount, and source_instrument_id.
fluX valida la solicitud e inicia el recaudo SPEI. Retorna la transacción con status: INITIALIZED. Los fondos se liquidan al confirmar el banco del pagador.
fluX validates the request and initiates the SPEI collection. Returns the transaction with status: INITIALIZED. Funds settle once payer's bank confirms.
Create a Collection
Transaction Status Lifecycle
| Status | Description |
|---|---|
| INITIALIZED | Collection request created and registered. Awaiting payer confirmation. |
| PENDING | Collection authorized, awaiting SPEI credit from the payer's bank. |
| PROCESSING | SPEI credit received, funds being settled to your concentrator account. |
| LIQUIDATED | Funds successfully received and settled in your concentrator account. |
| FAILED | Collection could not be completed. Check the error details for more information. |
Error Codes
| Code | HTTP | Description |
|---|---|---|
| invalid_clabe | 400 | The payer CLABE is invalid or unreachable via SPEI. |
| invalid_amount | 400 | The amount is invalid (zero, negative, or exceeds decimals limit). |
| invalid_description | 400 | Description contains invalid characters or exceeds 40 characters. |
| amount_exceeds_limit | 400 | The collection amount exceeds the configured daily or per-transaction limit. |
| client_not_found | 404 | The provided client_id does not exist or is inactive. |
| payer_bank_rejected | 502 | The payer's bank rejected the collection request. |
| internal_server_error | 500 | An internal server error occurred. |
Idempotency Safe Retries
Include a Idempotency-Key (UUID v5) header with every request. If you retry the same request with the same key and body within 24 hours, fluX will return the cached result instead of creating a duplicate.
| Scenario | HTTP | Result |
|---|---|---|
| Invalid key format (not UUID v5) | 400 | Bad Request the key must be a valid UUID v5. |
| Key-body mismatch (same key, different body) | 409 | Conflict the idempotency key was used with a different payload. |
| Duplicate while original is in-flight | 409 | Conflict "operation in progress". Retry once the first resolves. |
| Identical retry (same key + body within 24 h) | 200 | OK returns the same payload from cache. No duplicate created. |
Possible Errors
Standard HTTP status codes are used to indicate the success or failure of API requests.
| Code | Description |
|---|---|
| 400 | Bad Request. Invalid data or malformed payload. Check the error response for details. |
| 401 | Unauthorized. Missing or invalid Bearer token. Verify your API credentials. |
| 422 | Unprocessable Entity. A validation error occurred on specific fields. |
| 500 | Internal Server Error. Something went wrong on our end. |
Seguridad de AccesoAccess Security
Tu integración con fluX One está protegida con llaves criptográficas únicas (API Keys). Solo tu equipo técnico autorizado puede realizar operaciones. No utilizamos contraseñas — el acceso es 100% programático y seguro.Your fluX One integration is protected with unique cryptographic keys (API Keys). Only your authorized technical team can perform operations. We don't use passwords — access is 100% programmatic and secure.
- ✓ Una llave para Sandbox (pruebas) y otra para Producción (dinero real).One key for Sandbox (testing) and another for Production (real money).
- ✓ Las llaves se rotan cuando lo necesites sin interrumpir tu operación.Keys can be rotated whenever you need without interrupting your operation.
- ✓ Todas las llamadas quedan registradas para auditoría de seguridad.All calls are logged for security audit purposes.
- ✓ Protección contra duplicados: cada transacción incluye una clave de idempotencia que impide pagos dobles.Duplicate protection: every transaction includes an idempotency key that prevents double payments.
Payments (Payouts)
Send payouts to any Mexican bank account via SPEI in real time. Transfers are processed instantly during SPEI operating hours and settle within seconds. FluX handles all the complexity of SPEI connectivity, tracking, and reconciliation through a single API call.
Postman Collection Payouts
v1Download the ready-to-use Postman collection with the Payouts endpoint, test scripts, and example responses.
Payouts SPEI
SPEI (Sistema de Pagos Electrónicos Interbancarios) is Mexico's real-time interbank transfer system operated by Banco de México (BANXICO). FluX leverages SPEI to deliver instant payouts to any valid CLABE account in the Mexican banking system.
Use Cases
Payroll Disbursements
Automate salary payments to thousands of employees in real time via SPEI.
Supplier Payments
Pay suppliers and vendors instantly without manual bank transfers.
Marketplace Settlements
Settle funds to sellers, drivers, or freelancers from your platform balance.
Refunds & Returns
Issue instant refunds directly to the customer's bank account.
Create a Payout
Initiate a SPEI payout from your concentrator account to any valid CLABE in Mexico.
Request Parameters
| Field | Type | Description |
|---|---|---|
client_id Req. |
string | Your unique client identifier. Provided during onboarding. |
source_instrument_id Req. |
string | Instrument ID linked to your concentrator account (funding source). Provided during onboarding. |
destination_clabe Req. |
string | The 18-digit CLABE of the beneficiary account. Must be a valid SPEI-reachable CLABE. |
transaction_request.external_reference Req. |
string | Numeric reference (max 7 digits). |
transaction_request.description Req. |
string | Brief description to identify the transaction (max 40 chars). Only letters, numbers, spaces, and ñ/. |
transaction_request.amount Req. |
string | Amount in MXN with up to 2 decimal places (e.g. "1.95"). Must be greater than 0. |
transaction_request.currency Req. |
string | ISO 4217 currency code. Currently only "MXN" is supported. |
curl -i -X POST \ https://flux.praxisglobe.com/api/v1/partners/transactions/payouts \ -H 'Authorization: Bearer <YOUR_JWT_HERE>' \ -H 'Accept: application/json' \ -H 'Content-Type: application/json' \ -H 'Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000' \ -d '{ "client_id": "c2d1d1e3-3340-4170-980e-e9269bbbc551", "source_instrument_id": "709448c3-7cbf-454d-a87e-feb23801269a", "destination_clabe": "734180000069183455", "transaction_request": { "external_reference": "1234567", "description": "lorem ipsum dolor sit amet", "amount": "1.95", "currency": "MXN" } }'
Response
Status code: 200 OK. Returns the created transaction with status INITIALIZED.
{
"id": "16811ee8-1ef9-4dd4-8d84-9c2df89cf302",
"bankId": "9d84b03a-28d1-4898-a69c-38824239e2b1",
"clientId": "c2d1d1e3-3340-4170-980e-e9269bbbc551",
"externalReference": "1234567",
"trackingId": "20250306FINCHVLIKQ5SKUM",
"description": "lorem ipsum dolor sit amet",
"amount": "1.95",
"currency": "MXN",
"category": "DEBIT_TRANS",
"subCategory": "SPEI_DEBIT",
"transactionStatus": "INITIALIZED",
"audit": {
"createdAt": "2025-03-06 11:57:55.408000-06:00",
"updatedAt": "2025-03-06 11:57:55.408000-06:00",
"deletedAt": "None",
"blockedAt": "None"
}
}
Transfer Lifecycle
| Status | Description |
|---|---|
| INITIALIZED | Transfer created and registered. Transitions to PENDING within seconds. |
| PENDING | Transfer queued for submission to the SPEI network. |
| PROCESSING | Transfer submitted and being processed by SPEI. |
| LIQUIDATED | Funds successfully delivered to the beneficiary account via SPEI. |
| FAILED | Transfer could not be completed. Check the error details for more information. |
Idempotency & Errors
Always include a unique Idempotency-Key (UUID v5) for every payout request. If a network failure occurs and you retry with the same key and body within 24 hours, you'll receive the original 200 OK response from cache.
| Code | HTTP | Description |
|---|---|---|
invalid_clabe | 400 | The destination CLABE is invalid or unreachable via SPEI. |
insufficient_funds | 400 | Your concentrator account balance is insufficient for this transfer. |
invalid_amount | 400 | The amount is invalid (zero, negative, or exceeds decimals limit). |
invalid_description | 400 | Description contains invalid characters or exceeds 40 characters. |
amount_exceeds_limit | 400 | The transfer amount exceeds the configured daily or per-transaction limit. |
client_not_found | 404 | The provided client_id does not exist or is inactive. |
beneficiary_bank_rejected | 502 | The beneficiary bank rejected the incoming transfer. |
Dispersión de Pagos en MéxicoPayouts in Mexico
Envía dinero a cualquier cuenta bancaria en México a través del sistema SPEI del Banco de México. Los pagos se liquidan en segundos, las 24 horas del día, los 365 días del año.Send money to any bank account in Mexico through Banco de México's SPEI system. Payments settle in seconds, 24 hours a day, 365 days a year.
Casos de UsoUse Cases
Collections (Pay-ins)
Collect payments from any Mexican bank account via SPEI. Pay-in requests are processed in real time during SPEI operating hours. FluX handles the end-to-end flow from request initiation to fund settlement in your concentrator account.
Postman Collection Collections (Pay-ins)
v1Download the ready-to-use Postman collection with the Collections endpoint, test scripts, and example responses.
Collections SPEI (Pay-ins)
SPEI (Sistema de Pagos Electrónicos Interbancarios) is Mexico's real-time interbank transfer system operated by Banco de México (BANXICO). FluX leverages SPEI to collect payments from any valid CLABE account into your concentrator account.
Use Cases
Subscription Billing
Automatically collect recurring payments from subscribers via SPEI.
E-Commerce Payments
Accept payments from customers directly into your concentrator account.
Invoice Collection
Generate collection requests tied to invoices for B2B payment flows.
Marketplace Deposits
Collect funds from buyers into your platform's escrow or settlement account.
Create a Collection
Initiate a SPEI collection from any valid CLABE to your concentrator account in Mexico.
Request Parameters
| Field | Type | Description |
|---|---|---|
client_id Req. |
string | Your unique client identifier. Provided during onboarding. |
source_instrument_id Req. |
string | Instrument ID linked to your concentrator account (collection destination). Provided during onboarding. |
payer_clabe Req. |
string | The 18-digit CLABE of the payer's account. Must be a valid SPEI-reachable CLABE. |
transaction_request.external_reference Req. |
string | Numeric reference (max 7 digits). |
transaction_request.description Req. |
string | Brief description to identify the collection (max 40 chars). Only letters, numbers, spaces, and ñ/. |
transaction_request.amount Req. |
string | Amount in MXN with up to 2 decimal places (e.g. "150.00"). Must be greater than 0. |
transaction_request.currency Req. |
string | ISO 4217 currency code. Currently only "MXN" is supported. |
curl -i -X POST \ https://flux.praxisglobe.com/api/v1/partners/transactions/collections \ -H 'Authorization: Bearer <YOUR_JWT_HERE>' \ -H 'Accept: application/json' \ -H 'Content-Type: application/json' \ -H 'Idempotency-Key: 660e8400-e29b-41d4-a716-446655440001' \ -d '{ "client_id": "c2d1d1e3-3340-4170-980e-e9269bbbc551", "source_instrument_id": "709448c3-7cbf-454d-a87e-feb23801269a", "payer_clabe": "012180015000000012", "transaction_request": { "external_reference": "7654321", "description": "Cobro servicio mensual", "amount": "150.00", "currency": "MXN" } }'
Response
Status code: 200 OK. Returns the created transaction with status INITIALIZED.
{
"id": "a3b8d1b6-0b3b-4b1a-9c1a-1a2b3c4d5e6f",
"bankId": "9d84b03a-28d1-4898-a69c-38824239e2b1",
"clientId": "c2d1d1e3-3340-4170-980e-e9269bbbc551",
"externalReference": "7654321",
"trackingId": "20250317FINCHCOLL8K3PQRS",
"description": "Cobro servicio mensual",
"amount": "150.00",
"currency": "MXN",
"category": "CREDIT_TRANS",
"subCategory": "SPEI_CREDIT",
"transactionStatus": "INITIALIZED",
"audit": {
"createdAt": "2025-03-17 09:30:00.000000-06:00",
"updatedAt": "2025-03-17 09:30:00.000000-06:00",
"deletedAt": "None",
"blockedAt": "None"
}
}
Transaction Status Lifecycle
| Status | Description |
|---|---|
| INITIALIZED | Collection request created and registered. Awaiting payer confirmation. |
| PENDING | Collection authorized, awaiting SPEI credit from the payer's bank. |
| PROCESSING | SPEI credit received, funds being settled to your concentrator account. |
| LIQUIDATED | Funds successfully received and settled in your concentrator account. |
| FAILED | Collection could not be completed. Check the error details for more information. |
Idempotency & Errors
Include a Idempotency-Key (UUID v5) header with every request. If you retry the same request with the same key and body within 24 hours, FluX will return the cached result instead of creating a duplicate.
| Code | HTTP | Description |
|---|---|---|
invalid_clabe | 400 | The payer CLABE is invalid or unreachable via SPEI. |
invalid_amount | 400 | The amount is invalid (zero, negative, or exceeds decimals limit). |
invalid_description | 400 | Description contains invalid characters or exceeds 40 characters. |
amount_exceeds_limit | 400 | The collection amount exceeds the configured daily or per-transaction limit. |
client_not_found | 404 | The provided client_id does not exist or is inactive. |
payer_bank_rejected | 502 | The payer's bank rejected the collection request. |
Cobros en MéxicoCollections in Mexico
Recibe pagos de tus clientes a través de SPEI. Cada vez que alguien transfiere a tu cuenta concentradora, fluX One te notifica automáticamente con los detalles del pago para reconciliación instantánea.Receive payments from your customers via SPEI. Every time someone transfers to your concentrator account, fluX One automatically notifies you with payment details for instant reconciliation.
Ideal ParaIdeal For
Penny Validation México
The Penny Validation API enables account ownership verification by sending a minimal payment ($0.01 MXN) to a beneficiary account. This process generates a CEP (Comprobante Electrónico de Pago) that provides verified account holder information and creates an official payment receipt through BANXICO.
Postman Collection
v1Download the ready-to-use Postman collection with all Penny Validation endpoints, test scripts, and example responses.
Core Features
Account Verification
Confirm the actual account holder matches your intended recipient before sending funds.
Official Documentation
Get an easy-to-use URL to obtain XML or PDF receipts for compliance directly from BANXICO.
Fraud Prevention
Automate payments, reduce errors and prevent fraudulent transactions before they happen.
Important Considerations
- ⬢ Processing Time: CEP generation depends on the beneficiary's bank and may vary significantly.
- ⬢ Supported Accounts: Currently supports CLABE debit accounts only.
- ⬢ Data Delivery: CEP results are delivered via a dedicated CEP webhook for Penny Validation.
- ⬢ Transient State: After creation, INITIALIZED may appear briefly treat it as equivalent to PENDING.
- ⬢ RFC Optional: You may register instruments with rfc = "ND".
El cliente envía una solicitud de validación de centavo con destination_clabe y client_id.
Client sends penny validation request with destination_clabe and client_id.
fluX procesa el centavo ($0.01 MXN) vía SPEI y retorna status: INITIALIZED. Comienza la recuperación del CEP en segundo plano.
fluX processes the $0.01 MXN penny via SPEI and returns status: INITIALIZED. CEP retrieval begins in the background.
fluX entrega el resultado de la validación CEP en tu webhook con el nombre y RFC del beneficiario verificado y el cepUrl (promedio: ~90 segundos).
fluX delivers the CEP result via webhook with verified beneficiary_name, beneficiary_rfc, and cepUrl (average delivery: ~90 seconds).
Create Penny Validation
Webhook & Completed Payload
After approximately 90 seconds (average for most banks), the CEP webhook will deliver the verified identity information. You can also poll the transaction endpoint manually to get updated metadata.
{
"client_id": "09b1c156-73c7-62e1-9a3e-bf705f8f3cbe",
"payload": {
"id_msg": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"msg_name": "CEP",
"msg_date": "2025-08-15",
"body": {
"id": "1eb4b5ac-71f6-4203-aded-4fcb7fd21637",
"tracking_key": "20250815XXXXXX123456789",
"external_reference": "1234567",
"payment_concept": "Validacion de cuenta",
"beneficiary_account": "734180000069183455",
"beneficiary_name": "Daniela Paola Santelices Chavez",
"beneficiary_rfc": "SACD900815XXX",
"status": "COMPLETED",
"processed_at": "2025-08-15 16:42:39.327313-06:00"
}
},
"webhook_type": "CEP"
}
{
"id": "1eb4b5ac-71f6-4203-aded-4fcb7fd21637",
"bankId": "14b402f6-5dd1-4cd8-ac54-d12c5647d137",
"clientId": "09b1c156-73c7-62e1-9a3e-bf705f8f3cbe",
"externalReference": "1234567",
"trackingId": "20250820FINCHXXXXQ6RPX4",
"description": "Validacion de cuenta",
"amount": "0.01",
"currency": "MXN",
"category": "DEBIT_TRANS",
"subCategory": "SPEI_DEBIT",
"transactionStatus": "LIQUIDATED",
"audit": {
"createdAt": "2025-01-01 00:00:00.000000-00:00",
"updatedAt": "2025-01-01 00:00:00.000000-00:00"
},
"sourceInstrument": {
"id": "UUID_4",
"instrumentAlias": "InternalAccount",
"instrumentStatus": "ACTIVE",
"instrumentDetail": {
"accountNumber": "ACCOUNT_001",
"clabeNumber": "CLABE_001",
"holderName": "ANCV"
},
"rfc": "ND"
},
"destinationInstrument": {
"id": "UUID_6",
"instrumentAlias": "CLABE",
"instrumentDetail": {
"accountNumber": "ACCOUNT_002",
"clabeNumber": "734180000069183455",
"holderName": "Daniela Paola Santelices Chavez"
},
"rfc": "SACD900815XXX"
}
}
CEP Status Lifecycle
| Status | Description |
|---|---|
| INITIALIZED | Transient initial state right after creation. Typically flips to PENDING within seconds. |
| PENDING | Waiting for CEP retrieval and confirmation from BANXICO. |
| DELAYED | CEP is taking longer than expected. Background retries continue automatically. |
| COMPLETED | CEP available and validated. Beneficiary identity information is ready. |
| FAILED | CEP unavailable or permanently failed after all retry attempts. |
Delivery & Retry Policy
Total attempts: 17 over approximately 3 hours 3 minutes.
Every 90 seconds. Status remains PENDING.
Every 5 minutes. Status turns to DELAYED.
Every 15 minutes. Transitions to FAILED at attempt 17.
| # | Delay | Elapsed | Status |
|---|---|---|---|
| 1 | 0:00 | 0:00 | PENDING |
| 2 | 1:30 | 1:30 | PENDING |
| 3 | 1:30 | 3:00 | PENDING |
| 4 | 5:00 | 8:00 | DELAYED |
| 5-6 | 5:00 | 13:00 - 18:00 | DELAYED |
| 7-16 | 15:00 | 33:00 - 2:48:00 | DELAYED |
| 17 | 15:00 | 3:03:00 | FAILED |
Error Codes
| Code | HTTP | Description |
|---|---|---|
| invalid_clabe | 400 | The destination CLABE is invalid, unreachable, or not a debit account. |
| invalid_description | 400 | Description contains invalid characters or exceeds 40 characters. |
| invalid_external_reference | 400 | External reference exceeds 7 digits or contains non-numeric characters. |
| duplicate_idempotency_key | 409 | A penny validation with this idempotency key already exists. |
| client_not_found | 404 | The provided client_id does not exist or is inactive. |
| insufficient_funds | 400 | Your account balance is insufficient for the $0.01 MXN penny transaction. |
| internal_server_error | 500 | An internal server error occurred. |
Idempotency Tip
Always include the X-Idempotency-Key header with a unique value (e.g. a UUID) for every penny validation request. This allows you to safely retry failed requests without creating duplicate transactions. If a duplicate key is detected, a 409 Conflict will be returned with the original transaction data.
Possible Errors
Standard HTTP status codes are used to indicate the success or failure of API requests.
| Code | Description |
|---|---|
| 400 | Bad Request. Invalid data or malformed payload. Check the error response for details. |
| 401 | Unauthorized. Missing or invalid Bearer token. Verify your API credentials. |
| 422 | Unprocessable Entity. A validation error occurred on specific fields. |
| 500 | Internal Server Error. Something went wrong on our end. |
Validación de Cuentas BancariasBank Account Validation
Antes de enviar un pago, verifica que la cuenta destino es real, activa y alcanzable. fluX One envía un micro-depósito (centavos) a la cuenta para confirmar su existencia. Esto reduce drásticamente los rechazos y errores.Before sending a payment, verify that the destination account is real, active, and reachable. fluX One sends a micro-deposit (pennies) to the account to confirm its existence. This drastically reduces rejections and errors.
- ✓ Verifica la titularidad antes de dispersar grandes montos.Verify ownership before disbursing large amounts.
- ✓ Reduce costos operativos al eliminar transferencias fallidas.Reduce operational costs by eliminating failed transfers.
- ✓ Compatible con cuentas CLABE de cualquier banco mexicano.Compatible with CLABE accounts from any Mexican bank.
- ✓ Respuesta inmediata: sabes si la cuenta es válida antes de comprometer fondos.Immediate response: know if the account is valid before committing funds.
Webhooks México
Webhooks allow your application to receive real-time notifications when events occur in your fluX account. Instead of polling the API, fluX pushes event data to your server as it happens keeping your system in sync with minimal latency.
Postman Collection Webhooks
v1Download the Postman collection with webhook event simulations for testing your handler.
How Webhooks Work
Listening URL: You must provide a public HTTPS URL for your webhook endpoint.
Retries: If your server responds with a code other than 201 Created, fluX will retry delivery 2 more times at 5-second intervals.
Security: Every POST includes an X-Secret-key header to validate the authenticity of the webhook.
Registras tu URL HTTPS de webhook especificando los tipos de eventos (ej. PAYIN) y una clave secreta a través de la API.
Register your HTTPS endpoint with the event type (PAYIN) and a secret key via the API.
Se recibe un pago SPEI entrante en una de las cuentas CLABE vinculadas a tus clientes en la plataforma de fluX.
An incoming SPEI payment is received into a beneficiary account linked to your client.
fluX envía una petición HTTP POST a tu servidor con el payload del evento y la cabecera de autenticación X-Secret-Key.
fluX sends an HTTP POST with the transaction payload and X-Secret-Key header to your URL.
Tu servidor responde 201 Created para aceptar el pago. Si respondes 400, fluX reversa (reembolsa) el SPEI automáticamente.
Return 201 Created to accept. Return 400 to reject this triggers an automatic reversal (refund) of the transaction.
Available Events
| Event | Description |
|---|---|
| PAYIN | Incoming money reception (SPEI Credit). Triggered when funds are received into a beneficiary account linked to your client. |
Register Webhook
Update Webhook
/api/v1/partners/webhooks/{webhook_id}
Update an existing webhook registration
Update the URL, secret, or status of an existing webhook registration.
Body Parameters
| Field | Type | Req. | Description |
|---|---|---|---|
| url | string | No | New HTTPS URL for receiving webhook events. |
| secret | string | No | New secret for signature validation. |
| status | string | No | Webhook status. Set to 'inactive' to pause delivery, or 'active' to resume. |
curl -i -X PUT \ https://flux.praxisglobe.com/api/v1/partners/webhooks/<WEBHOOK_UUID> \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer <ACCESS_TOKEN>' \ -d '{ "url": "https://new-url.com/webhook", "secret": "your_new_secret", "status": "inactive" }'
PAYIN Event Payload & Delivery
When a SPEI credit is received, fluX sends the following JSON payload to your registered webhook URL via an HTTP POST request. The X-Secret-key header is included for validation.
{
"id": "0196da9a-8947-703e-9a3b-bf8c7d9f6059",
"beneficiary_account": "734180123045603216",
"beneficiary_name": "John Smith",
"beneficiary_rfc": "XYZ123456789",
"payer_account": "137180210044008609",
"payer_name": "Juan Perez",
"payer_rfc": "XYZ987654321",
"payer_institution": "40002",
"amount": "123.00",
"transaction_date": "2025-04-02 10:14:05",
"tracking_key": "50118609TBRNZ00I07219647",
"payment_concept": "Payment for invoice 4567",
"numeric_reference": "2504021",
"sub_category": "SPEI_CREDIT",
"registered_at": "2025-04-02T10:14:05.915184-06:00",
"owner_id": "24f1e5d5-4045-4b1a-a0c4-5e6c6b1d44ef"
}
curl -X POST https://your-domain.com/webhooks/receptor \ -H 'Content-Type: application/json' \ -H 'Accept: application/json' \ -H 'X-Secret-key: <YOUR_WEBHOOK_SECRET>' \ -d '{ "id": "0196da9a-8947-703e-9a3b-bf8c7d9f6059", "beneficiary_account": "734180123045603216", "beneficiary_name": "John Smith", "beneficiary_rfc": "XYZ123456789", "payer_account": "137180210044008609", "payer_name": "Juan Perez", "payer_rfc": "XYZ987654321", "payer_institution": "40002", "amount": "123.00", "transaction_date": "2025-04-02 10:14:05", "tracking_key": "50118609TBRNZ00I07219647", "payment_concept": "Payment for invoice 4567", "numeric_reference": "2504021", "sub_category": "SPEI_CREDIT", "registered_at": "2025-04-02T10:14:05.915184-06:00", "owner_id": "24f1e5d5-4045-4b1a-a0c4-5e6c6b1d44ef" }'
Expected Responses & Security
Return HTTP/1.1 201 Created to confirm that the incoming transaction was received and accepted by your system.
Return HTTP/1.1 400 Bad Request to reject the transaction. This triggers an automatic reversal (refund) of the funds back to the payer.
Security X-Secret-key Validation
Every webhook delivery includes an X-Secret-key header containing the secret you provided during registration. Always compare this header with your stored secret before processing the event.
X-Secret-key header from the incoming request.
401 Unauthorized.
const express = require('express'); const app = express(); app.use(express.json()); const WEBHOOK_SECRET = process.env.FLUX_WEBHOOK_SECRET; app.post('/webhooks/receptor', (req, res) => { // 1. Validate X-Secret-key header const secretKey = req.headers['x-secret-key']; if (secretKey !== WEBHOOK_SECRET) { console.error('Invalid secret key'); return res.status(401).json({ error: 'Unauthorized' }); } // 2. Process the PAYIN event const payload = req.body; console.log(`Received PAYIN: ${payload.id}`); console.log(`Amount: ${payload.amount} MXN`); console.log(`Payer: ${payload.payer_name}`); console.log(`Tracking Key: ${payload.tracking_key}`); // 3. Save to your database // await db.transactions.create(payload); // 4. Respond with 201 to accept the transaction res.status(201).json({ received: true }); }); app.listen(3000, () => { console.log('Webhook handler listening on port 3000'); });
Retry Policy & Best Practices
If your endpoint does not return a 201 Created status, fluX will retry the delivery up to 2 more times at 5-second intervals.
| Attempt | Delay | Description |
|---|---|---|
| 1st | Immediate | Initial delivery attempt. |
| 2nd | 5 seconds | First retry after initial failure. |
| 3rd | 5 seconds | Final retry attempt. After this, the event delivery is marked as failed. |
Best Practices
Return a 201 Created status. Returning 400 will trigger an automatic reversal of the transaction.
Always compare the X-Secret-key header with your registered secret before processing.
Use the transaction ID to deduplicate events. The same event may be delivered more than once during retries.
Your webhook endpoint must use HTTPS. HTTP endpoints will be rejected during registration.
Possible Errors
| Code | Description |
|---|---|
| 400 | Bad Request. Validation error in the webhook payload. |
| 401 | Unauthorized. Missing or invalid Bearer token. |
| 404 | Not Found / Conflict. The webhook ID does not exist, or the URL is already registered. |
| 500 | Internal Server Error. Occurred while creating or updating the webhook. |
Notificaciones en Tiempo RealReal-Time Notifications
Tu sistema recibe alertas automáticas cada vez que ocurre un evento importante: un pago se completa, una cobranza se acredita o una operación falla. Sin necesidad de consultar manualmente.Your system receives automatic alerts every time an important event occurs: a payment completes, a collection is credited, or an operation fails. No need to check manually.
- ✓ Reconciliación automática sin intervención humana.Automatic reconciliation without human intervention.
- ✓ Reintentos automáticos si tu servidor no responde (hasta 3 intentos).Automatic retries if your server doesn't respond (up to 3 attempts).
- ✓ Seguridad: cada notificación incluye una firma criptográfica para validar su autenticidad.Security: each notification includes a cryptographic signature to validate its authenticity.
- ✓ Soporte para múltiples tipos de evento: pagos, cobros, validaciones, QR.Support for multiple event types: payments, collections, validations, QR.
Getting Started
The FluX Colombia API unlocks seamless access to the Bre-B instant payment system. Use a single, modern RESTful interface to process real-time payouts in COP, deploy interoperable QR codes, and receive event notificationsáll backed by an immutable blockchain journal layer.
Base URL
https://flux.praxisglobe.com/api/v1
Protocol
HTTPS / TLS 1.3Format
JSONPlatform Capabilities
Everything you need to move money securely in Colombia across the national instant payment rails.
Payouts (Bre-B)
Send instant payouts to any Colombian bank account via the Bre-B system. Near real-time settlement.
QR Codes
Generate static or dynamic QR codes to accept instant payments from customers using compatible banking apps.
Webhooks
Receive real-time notifications about the outcome of payments (completed or failed) directly to your server.
Blockchain Journal
Every transaction generates a verifiable hash on FluX's distributed ledger for unparalleled auditability.
Architectural Principles
Bre-B Instant Payments
Direct integration with Banco de la República's clearing system for immediate Colombian funds transfer.
Secure by Default
TLS encryption, JWT authentication, and idempotency keys protect every API request.
RESTful JSON API
Standard HTTP methods, predictable resource URLs, and native JSON payloads.
Idempotent Operations
Safely retry requests in case of network failures without risking double-charges.
Webhook-First Eventing
Get real-time push notifications when payment status changes, backed by an automatic retry policy.
Blockchain Journal
A distributed ledger layer ensures the integrity and irrefutability of the entire payment footprint.
Colombia Quickstart
Complete your first Bre-B API request in under 10 minutes.
Get Your Credentials
During onboarding, FluX provides your access credentials. These are unique to your account for the Colombian environment.
Authenticate
Obtain a JWT token by sending your credentials to the login endpoint. Include this Bearer token in all subsequent requests.
curl -X POST https://flux.praxisglobe.com/api/v1/partners/login \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d '{ "email": "user@example.com", "password": "password123" }'
Make Your First API Call
Use your JWT token in the Authorization header to call any endpoint. Here's an example creating a standard Bre-B payout:
curl -X POST \ https://flux.praxisglobe.com/api/v1/payments \ -H "Authorization: Bearer <YOUR_JWT>" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: <UUID_V5>" \ -d '{ "amount": { "value": 50000, "currency": "COP" }, "destination_account": { "account_number": "12345678901", "account_type": "SAVINGS", "holder_name": "Nombre Beneficiario", "holder_document": { "type": "CC", "number": "10203040" }, "bank_code": "001" }, "description": "Pago Bre-B", "external_reference": "ref-001" }'
Handle the Response
All accepted requests return a 202 status indicating the payment is PROCESSING over Bre-B. The response includes a blockchain journal hash.
{
"id": "pay_1a2b3c4d5e6f",
"status": "PROCESSING",
"created_at": "2025-10-08T14:30:00Z",
"transaction_journal_hash": "0xabcde12345..."
}
Colombia Conventions
| Convention | Details |
|---|---|
| Base URL | https://flux.praxisglobe.com/api/v1 |
| Authentication | Bearer JWT token in the Authorization header |
| Idempotency | UUID strings via the Idempotency-Key header on state-changing requests like POST. |
| Amounts & Currencies | COP amounts are generally required as integers, e.g., 50000. currency field must be "COP". |
| Destination Accounts | Combined from account_number, account_type, and bank_code. |
| Bank IDs | Standardized 3-digit strings (e.g. "001" for Bancolombia) |
| IDs | UUID v4 or prefixed unique strings (e.g., pay_123456) |
| Dates | ISO 8601 formatting (e.g., 2025-10-08T14:30:00Z) |
Environments
Real transaction execution over the Bre-B system. Subject to standard API rate limits.
https://flux.praxisglobe.com/api/v1
fluX One en ColombiafluX One in Colombia
fluX One conecta tu negocio con Bre-B, el sistema de pagos instantáneos del Banco de la República de Colombia. Procesa pagos en pesos colombianos (COP) con liquidación en tiempo real, despliega QR interoperables y recibe notificaciones automáticas — todo con la misma integración que ya tienes para México.fluX One connects your business with Bre-B, the instant payment system from Colombia's Banco de la República. Process payments in Colombian pesos (COP) with real-time settlement, deploy interoperable QR codes, and receive automatic notifications — all with the same integration you already have for Mexico.
Payouts
Send payments to any Colombian bank account via Bre-B (Banco de la República's instant payment system). Payments are processed in real time and each transaction is recorded on FluX's immutable Transaction Journal (blockchain).
Postman Collection CO Payouts
v1Download the Postman collection with Payouts endpoints for Colombia.
Use Cases
Loan Disbursements
Disburse approved loans directly to borrower accounts via Bre-B.
Payroll
Process payroll payments to employee SAVINGS/CHECKING accounts.
Vendor Payments
Pay suppliers and vendors with real-time settlement.
Refunds
Issue refunds back to customer accounts in real time.
Create a Payment
Initiate an instant payment via Bre-B to any Colombian bank account.
Request Parameters
| Field | Type | Description |
|---|---|---|
amount.value Req. | number | Amount in COP (integer, e.g. 50000). |
amount.currency Req. | string | ISO 4217 currency code. Must be "COP". |
destination_account.account_number Req. | string | Beneficiary bank account number. |
destination_account.account_type Req. | string | Account type: "SAVINGS" or "CHECKING". |
destination_account.holder_name Req. | string | Full name of the account holder. |
destination_account.holder_document.type Req. | string | Document type: "CC", "CE", "NIT", "PP". |
destination_account.holder_document.number Req. | string | Document number of the account holder. |
destination_account.bank_code Req. | string | Bank code (e.g. 001 for Bancolombia). |
description Req. | string | Payment description/concept. |
external_reference Req. | string | Your unique reference for this payment. |
curl -i -X POST \ https://flux.praxisglobe.com/api/v1/payments \ -H 'Authorization: Bearer <ACCESS_TOKEN>' \ -H 'Content-Type: application/json' \ -H 'Idempotency-Key: unique-request-id-12345' \ -d '{ "amount": { "value": 50000, "currency": "COP" }, "destination_account": { "account_number": "12345678901", "account_type": "SAVINGS", "holder_name": "Nombre del Beneficiario", "holder_document": { "type": "CC", "number": "1020304050" }, "bank_code": "001" }, "description": "Pago de crédito #A-54321", "external_reference": "ref_cliente_xyz_001" }'
Response
{
"id": "pay_1a2b3c4d5e6f",
"status": "PROCESSING",
"created_at": "2025-10-08T14:30:00Z",
"transaction_journal_hash": "0xabcde12345..."
}
Get Payment Status
Retrieve the current status and details of an existing payment.
{
"id": "pay_1a2b3c4d5e6f",
"status": "COMPLETED",
"created_at": "2025-10-08T14:30:00Z",
"completed_at": "2025-10-08T14:30:03Z",
"amount": { "value": 50000, "currency": "COP" },
"description": "Pago de crédito #A-54321",
"external_reference": "ref_cliente_xyz_001",
"transaction_journal_hash": "0xabcde12345..."
}
Transaction Status Lifecycle
| Status | Description |
|---|---|
| PROCESSING | Payment accepted, being processed through Bre-B. |
| COMPLETED | Funds successfully delivered to the beneficiary. |
| FAILED | Payment could not be completed. Check error details. |
Transaction Journal Blockchain Auditability
Every accepted transaction generates a cryptographic record on FluX's internal permissioned blockchain. The transaction_journal_hash in the response provides an immutable proof of the transaction, ensuring maximum integrity and auditability.
Possible Errors
| Code | Description |
|---|---|
400 | Bad Request. Invalid data or malformed payload. Check the error response for details. |
401 | Unauthorized. Missing or invalid Bearer token. Verify your API credentials. |
422 | Unprocessable Entity. A validation error occurred on specific fields. |
500 | Internal Server Error. Something went wrong on our end. |
Dispersión de Pagos en ColombiaPayouts in Colombia
Envía pagos a cuentas de ahorro o corrientes en cualquier entidad financiera colombiana a través del sistema Bre-B. Liquidación casi inmediata con confirmación automática.Send payments to savings or checking accounts at any Colombian financial institution through the Bre-B system. Near-instant settlement with automatic confirmation.
Casos de UsoUse Cases
Collections (Pay-ins)
Accept instant payments in Colombia via Bre-B (Pay-ins). You have two mechanisms to collect money effortlessly from your customers: sharing your Referenced Keys (Llaves Referenciadas) or generating EMVCo standard QR Codes.
1. Referenced Keys (Llaves Referenciadas)
Referenced Keys are aliases registered to your FluX account. Instead of memorizing long account numbers, you simply provide an alias to your customers. When they initiate a transfer via their banking app to your key, FluX will automatically credit your account and send you a webhook notification.
Alphanumeric Key
Must start with @FLX
Alias Format
Letters and numbers only after prefix
Receiving the Funds
No API request is needed on your end to "create" a Referenced Key transaction. Once your customer completes the payment, FluX instantly pushes a payment.completed webhook to your server containing the transaction details.
Create a Key
Register a new Referenced Key linked to your Bre-B account via API. This alias can then be shared with payers.
Request Parameters
| Field | Type | Description |
|---|---|---|
alias Req. | string | A friendly name for your Key. |
key_config Req. | string | Configuration of the key. Must be 'open_input'. |
open_input Req. | string | Your personalized key. Must be alphanumeric and always start with '@FLX' (e.g., @FLXMyBusiness123). |
curl -i -X POST \ https://flux.praxisglobe.com/api/v1/accounts/acc_12345/keys \ -H 'Authorization: Bearer <ACCESS_TOKEN>' \ -H 'Content-Type: application/json' \ -d '{ "alias": "My first FluX Key", "key_config": "open_input", "open_input": "@FLXMyBusiness123" }'
Response
{
"id": "key_TQjvIO8UFf1bv81",
"key_value": "@FLXMyBusiness123",
"source_id": "acc_12345",
"alias": "My first FluX Key",
"connectivity": {
"status": "processing",
"description": ""
},
"previous_action": {
"action_requested": "create",
"action_code": "",
"action_description": ""
},
"created_at": "2025-11-28T21:32:08Z",
"updated_at": "2025-11-28T21:32:08Z"
}
2. QR Codes
Generate EMVCo standard QR codes for in-person or online checkout flows. FluX supports both static (reusable) and dynamic (single-use) QR codes.
Postman Collection CO QR Codes
v1Download the Postman collection with QR Code generation endpoints.
Static QR
Reusable QR code linked to an account. Optionally includes a fixed amount. Ideal for point-of-sale or recurring collections.
Dynamic QR
Single-use QR tied to a specific transaction amount. Expires after payment. Ideal for e-commerce checkouts and precise billing.
Generate Static QR
Generates a reusable QR linking directly to your Referenced Key.
Request Parameters
| Field | Type | Description |
|---|---|---|
correlationId Req. | string | UUID to identify this QR generation request. |
keyString Req. | string | Account key (phone number, email, or alphanumeric string). |
keyType Req. | string | "PHONE_NUMBER", "EMAIL", "ACCOUNT_NUMBER", or "ALPHANUMERIC". |
payment.reference Req. | string | Payment reference for identification. |
payment.currency Req. | string | ISO 4217 code. Must be "COP". |
payment.amount | number | Optional fixed amount. If omitted, payer enters amount. |
qrCodeData.imgWidth | number | Width of the generated QR image in pixels (default 250). |
curl -i -X POST \ https://flux.praxisglobe.com/api/v1/qr/static \ -H 'Authorization: Bearer <ACCESS_TOKEN>' \ -H 'Content-Type: application/json' \ -d '{ "correlationId": "123e4567-e89b-12d3-a456-426614174000", "keyString": "3001234567", "keyType": "PHONE_NUMBER", "payment": { "reference": "orden-9876", "currency": "COP", "amount": 25075.00 }, "qrCodeData": { "imgWidth": 250 } }'
Response
{
"correlationId": "123e4567-e89b-12d3-a456-426614174000",
"qrCode": {
"emv": "000201010212...",
"imgContent": "base64string=="
}
}
Generate Dynamic QR
Generate a single-use QR code that requests an exact amount.
Request Parameters
| Field | Type | Description |
|---|---|---|
correlationId Req. | string | UUID to identify this QR generation request. |
payment.currency Req. | string | ISO 4217 code. Must be "COP". |
payment.amount Req. | number | Exact amount for this single-use QR. |
qrCodeData.imgWidth | number | Width of the generated QR image in pixels. |
{
"correlationId": "unique-dynamic-id-654321",
"payment": {
"currency": "COP",
"amount": 5000.00
},
"qrCodeData": { "imgWidth": 250 }
}
Response
{
"correlationId": "unique-dynamic-id-654321",
"payment": { "status": "ACTIVE" },
"qrCode": {
"emv": "000201010212...",
"imgContent": "base64string=="
}
}
Query QR Code Status
Retrieve the payment status associated with a QR code. Useful if webhooks are delayed.
Response
{
"correlationId": "3a7d5245-1fed-4eba-af0c-5f150ef18a38",
"creditor": {
"name": "JUAN PEREZ",
"participantId": "1",
"nit": "191680120"
},
"payment": {
"transactionAmount": 5000.00,
"transactionCurrency": "COP"
},
"qrCodeType": "DYNAMIC",
"status": "SUCCESS"
}
Displaying the QR Image
The imgContent field contains the QR code as a base64-encoded image. You can render it directly in an HTML <img> tag using src="data:image/png;base64,...".
Possible Errors
| Code | Description |
|---|---|
400 | Bad Request. Invalid data or malformed payload. Check the error response for details. |
401 | Unauthorized. Missing or invalid Bearer token. Verify your API credentials. |
422 | Unprocessable Entity. A validation error occurred on specific fields. |
500 | Internal Server Error. Something went wrong on our end. |
Cobros en ColombiaCollections in Colombia
Recibe pagos de clientes colombianos a través de dos mecanismos modernos y sin fricción: Llaves Referenciadas (alias como @FLX_TUNEGOCIO) y Códigos QR interoperables con estándar EMVCo.Receive payments from Colombian customers through two modern, frictionless mechanisms: Referenced Keys (aliases like @FLX_YOURBUSINESS) and interoperable QR Codes with EMVCo standard.
Webhooks
Receive real-time notifications when payment events occur in your FluX Colombia account. FluX pushes event data to your server when payments complete or fail keeping your system in sync.
Postman Collection CO Webhooks
v1Simulate webhook events for testing your Colombia handler.
How Webhooks Work
Configuration
- 1. Listening URL: Provide a public HTTPS endpoint for receiving events.
- 2. Retries: If your server responds with a non-2xx code, FluX retries 2 more times at 5-second intervals.
- 3. Security: Every POST includes an
X-Secret-keyheader for authenticity validation.
Register Webhook
Register your HTTPS endpoint with the event type and secret via the API.
Payment Event Occurs
A payment completes or fails in the Bre-B network.
FluX Sends Notification
FluX POSTs the event payload with X-Secret-key header to your URL.
Your Server Responds
Return 200 OK to confirm receipt. Non-2xx triggers retries.
Available Events
| Event | Description |
|---|---|
payment.completed | A payment has been completed successfully. Funds were delivered to the beneficiary. |
payment.failed | A payment has failed. The payload includes the failure reason. |
Register Webhook
Register your endpoint to start receiving payment event notifications.
Request Parameters
| Field | Type | Description |
|---|---|---|
client_id Req. | string | Your unique client identifier. |
url Req. | string | Your public HTTPS endpoint for receiving events. |
event Req. | string | Event to subscribe: "payment.completed", "payment.failed". |
secret Req. | string | Secret for X-Secret-key header validation. |
Update Webhook
Update the URL, secret, or status of an existing webhook.
Request Parameters
| Field | Type | Description |
|---|---|---|
url | string | New HTTPS URL for receiving webhook events. |
secret | string | New secret for validation. |
status | string | "active" or "inactive". |
Event Payloads
FluX sends the following JSON payloads to your webhook URL. The X-Secret-key header is included for validation.
payment.completed
{
"id": "pay_1a2b3c4d5e6f",
"event": "payment.completed",
"status": "COMPLETED",
"created_at": "2025-10-08T14:30:00Z",
"completed_at": "2025-10-08T14:30:03Z",
"amount": { "value": 50000, "currency": "COP" },
"destination_account": {
"account_number": "12345678901",
"bank_code": "001",
"holder_name": "Nombre del Beneficiario"
},
"description": "Pago de crédito #A-54321",
"external_reference": "ref_cliente_xyz_001",
"transaction_journal_hash": "0xabcde12345..."
}
payment.failed
{
"id": "pay_9z8y7x6w5v4u",
"event": "payment.failed",
"status": "FAILED",
"created_at": "2025-10-08T14:30:00Z",
"failed_at": "2025-10-08T14:30:05Z",
"amount": { "value": 50000, "currency": "COP" },
"destination_account": {
"account_number": "12345678901",
"bank_code": "001",
"holder_name": "Nombre del Beneficiario"
},
"description": "Pago de crédito #A-54321",
"external_reference": "ref_cliente_xyz_001",
"failure_reason": "ACCOUNT_NOT_FOUND"
}
Security X-Secret-key Validation
Secret Key Verification
Every delivery includes an X-Secret-key header. Compare it with your registered secret before processing.
const express = require('express'); const app = express(); app.use(express.json()); const WEBHOOK_SECRET = process.env.FLUX_WEBHOOK_SECRET; app.post('/webhooks/flux-co', (req, res) => { // 1. Validate X-Secret-key header const secretKey = req.headers['x-secret-key']; if (secretKey !== WEBHOOK_SECRET) { console.error('Invalid secret key'); return res.status(401).json({ error: 'Unauthorized' }); } // 2. Process the event const { event, id, status, external_reference } = req.body; switch (event) { case 'payment.completed': console.log(`S& Payment ${id} completed - ref: ${external_reference}`); // Update your database, notify customer, etc. break; case 'payment.failed': const { failure_reason } = req.body; console.log(`R Payment ${id} failed: ${failure_reason}`); // Handle retries or notify operations team break; default: console.log(`Unknown event: ${event}`); } // 3. Acknowledge receipt res.status(200).json({ received: true }); }); app.listen(3000, () => { console.log('CO Webhook handler listening on port 3000'); });
Retry Policy
If your endpoint doesn't return a 2xx status, FluX retries up to 2 more times at 5-second intervals.
| Attempt | Delay | Description |
|---|---|---|
| 1st | Immediate | Initial delivery attempt. |
| 2nd | 5 seconds | First retry after failure. |
| 3rd | 5 seconds | Final retry. After this, delivery is marked as failed. |
Best Practices
Respond with 200
Return 200 OK to acknowledge receipt. Non-2xx responses trigger retries.
Validate X-Secret-key
Always compare the X-Secret-key header with your registered secret.
Handle Duplicates
Use the payment ID and event type to deduplicate. Same event may arrive multiple times.
Use HTTPS
Your webhook URL must use HTTPS. HTTP endpoints are rejected.
Idempotent Processing
Processing the same event twice should have no side effects.
Monitor Failures
Implement alerting for persistent webhook delivery failures.
Possible Errors
| Code | Description |
|---|---|
400 | Bad Request. Validation error in the webhook payload. |
401 | Unauthorized. Missing or invalid Bearer token. |
404 | Not Found / Conflict. The webhook ID does not exist, or the URL is already registered. |
500 | Internal Server Error. Occurred while creating or updating the webhook. |
Notificaciones ColombiaColombia Notifications
El mismo sistema de notificaciones instantáneas de México, adaptado a los eventos de Bre-B en Colombia. Tu sistema se mantiene sincronizado con cada operación sin consultar manualmente.The same instant notification system from Mexico, adapted to Bre-B events in Colombia. Your system stays synchronized with every operation without manual checking.
- ✓ Notificación instantánea cuando un pago Bre-B se completa o falla.Instant notification when a Bre-B payment completes or fails.
- ✓ Alertas cuando un cliente paga vía QR o Llave Referenciada.Alerts when a customer pays via QR or Referenced Key.
- ✓ Reintentos automáticos con firma de seguridad.Automatic retries with security signature.
- ✓ Mismo formato y estructura que México — un solo código para ambos países.Same format and structure as Mexico — one codebase for both countries.
¿Necesitas operar en ambos países?Need to operate in both countries?
Con una sola integración accedes a SPEI (México) y Bre-B (Colombia). Mismo código, misma lógica, dos mercados.With a single integration you access SPEI (Mexico) and Bre-B (Colombia). Same code, same logic, two markets.
Hablar con VentasTalk to Sales/partners/login
Autenticar Sesión
Authenticate Session
Intercambia tus credenciales de cliente corporativo por un token JWT temporal para acceder a todos los endpoints protegidos.
Exchange your corporate client credentials for a temporary JWT token to access all protected endpoints.
Cuerpo de la Solicitud (Body Params)
Request Body Parameters
"user@example.com""password123"Llamada de Ejemplo
Sample Request
curl -X POST https://flux.praxisglobe.com/api/v1/partners/login \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d '{ "email": "user@example.com", "password": "password123" }'
Respuesta del Servidor
Response
{
"token": "eyJhbGciOiJIUzI1NiIsIn...",
"expires_in": 21600
}
/partners/transactions/payouts
Crear Payout (México)
Create Payout (Mexico)
Inicia un pago electrónico inmediato de fondos hacia una cuenta CLABE en México utilizando la red SPEI.
Initiate an immediate electronic payout of funds to a CLABE bank account in Mexico via the SPEI network.
Parámetros del Payload
Payload Parameters
"cli_992123""734180000069183455""1250.00""MXN"Llamada de Ejemplo
Sample Request
curl -X POST https://flux.praxisglobe.com/api/v1/partners/transactions/payouts \ -H "Authorization: Bearer <YOUR_JWT>" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: <UUID>" \ -d '{ "client_id": "cli_992123", "source_instrument_id": "inst_8819", "destination_clabe": "734180000069183455", "transaction_request": { "external_reference": "ref_mx_001", "description": "Pago Proveedores", "amount": "1250.00", "currency": "MXN" } }'
Respuesta del Servidor
Response
{
"id": "16811ee8-1ef9-4dd4-8d84-9c2df89cf302",
"trackingId": "20250306FINCHVLIKQ5SKUM",
"amount": "1250.00",
"currency": "MXN",
"transactionStatus": "INITIALIZED"
}
/partners/transactions/penny-validations
Penny Validation (México)
Inicia la validación en tiempo real de una cuenta CLABE enviando una micro-transferencia de un centavo y recuperando el CEP firmado.
Initiate the real-time validation of a CLABE bank account by sending a micro-transfer of one penny and retrieving the signed CEP.
Parámetros del Payload
Payload Parameters
"734180000069183455"Llamada de Ejemplo
Sample Request
curl -X POST https://flux.praxisglobe.com/api/v1/partners/transactions/penny-validations \ -H "Authorization: Bearer <YOUR_JWT>" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d '{ "client_id": "cli_992123", "destination_clabe": "734180000069183455" }'
Respuesta del Servidor
Response
{
"validation_id": "val_1e2d3c4b5a6f",
"status": "PENDING",
"micro_amount": "0.01",
"currency": "MXN"
}
/partners/webhooks
Configurar Webhook (México)
Registra o actualiza la URL de retorno en tu servidor para recibir las notificaciones asíncronas de la red SPEI.
Register or update the callback URL on your server to receive asynchronous notifications from the SPEI network.
Parámetros del Payload
Payload Parameters
"https://yourdomain.com/callbacks/flux"Llamada de Ejemplo
Sample Request
curl -X POST https://flux.praxisglobe.com/api/v1/partners/webhooks \ -H "Authorization: Bearer <YOUR_JWT>" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d '{ "url": "https://yourdomain.com/callbacks/flux", "secret_key": "mysecretkey_generated" }'
Respuesta del Servidor
Response
{
"status": "ACTIVE",
"webhook_id": "wh_1a2b3c4d5e",
"url": "https://yourdomain.com/callbacks/flux"
}
/payments
Crear Payout (Colombia)
Create Payout (Colombia)
Inicia un pago electrónico inmediato a cualquier banco en Colombia a través del sistema interbancario Bre-B.
Initiate an immediate electronic payment to any bank in Colombia through the Bre-B interbank system.
Parámetros del Payload
Payload Parameters
50000"COP""12345678901"Llamada de Ejemplo
Sample Request
curl -X POST https://flux.praxisglobe.com/api/v1/payments \ -H "Authorization: Bearer <YOUR_JWT>" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: <UUID>" \ -d '{ "amount": { "value": 50000, "currency": "COP" }, "destination_account": { "account_number": "12345678901", "account_type": "SAVINGS", "holder_name": "Nombre del Beneficiario", "holder_document": { "type": "CC", "number": "1020304050" }, "bank_code": "001" }, "description": "Pago de prueba", "external_reference": "ref_co_001" }'
Respuesta del Servidor
Response
{
"id": "pay_1a2b3c4d5e6f",
"status": "PROCESSING",
"created_at": "2025-10-08T14:30:00Z",
"transaction_journal_hash": "0xabcde12345..."
}
/keys
Registrar Llave (Alias Bre-B)
Register Key (Alias Bre-B)
Registra una llave de identificación rápida vinculada a tu cuenta bancaria para permitir cobros inmediatos interbancarios sin compartir datos sensibles.
Register a quick identification key linked to your bank account to allow immediate interbank collections without sharing sensitive data.
Parámetros del Payload
Payload Parameters
"EMAIL""pagos@flux.praxisglobe.com"Llamada de Ejemplo
Sample Request
curl -X POST https://flux.praxisglobe.com/api/v1/keys \ -H "Authorization: Bearer <YOUR_JWT>" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d '{ "key_type": "EMAIL", "key_value": "pagos@flux.praxisglobe.com", "account_id": "acc_co_0991223" }'
Respuesta del Servidor
Response
{
"key_id": "key_abc123",
"status": "REGISTERED",
"key_value": "pagos@flux.praxisglobe.com"
}
/qr-codes
Generar Código QR (Bre-B)
Generate QR Code (Bre-B)
Genera una cadena de datos EMVCo y una imagen QR para permitir a tus clientes escanear y pagar en tiempo real.
Generate an EMVCo data string and QR image to let your clients scan and pay in real time.
Parámetros del Payload
Payload Parameters
100000Llamada de Ejemplo
Sample Request
curl -X POST https://flux.praxisglobe.com/api/v1/qr-codes \ -H "Authorization: Bearer <YOUR_JWT>" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d '{ "amount": { "value": 100000, "currency": "COP" }, "payment_reference": "factura_9918", "expiration_minutes": 30 }'
Respuesta del Servidor
Response
{
"qr_id": "qr_0991ab",
"emvco_payload": "00020101021226500010a...",
"qr_image_url": "https://flux.praxisglobe.com/v1/qr/qr_0991ab.png"
}