Colombia - PayIn (v2)
If you still call
POST /api/v1/payin, that endpoint is deprecated. Use POST /api/v2/payin for all new integrations.POST /api/v2/payin) creates deposit transactions and returns the experience that matches each payment_method. You choose the flow with the fields you send โ no separate B2B configuration is required.
Quick Reference
Payment experiences
Each method resolves to one of three execution modes:Methods in Colombia
Request parameters
Required fields
Customer data
PSE-only fields (direct experience)
Send both fields insidecustomer_data to receive the PSE redirect URL in payment_information instead of the generic checkout link:
Optional fields
EFECTY minimum amount: 10,000 COP.
Response structure
Every successful PayIn returns the same envelope. The fields insidedata depend on the execution mode (Checkout, Direct, or Hybrid).
All timestamps are in UTC. Both
data.date (transaction creation) and payment_information.expiration_date (when present) use the format YYYY-MM-DD HH:MM:SS in UTC. Convert to the customerโs local timezone in your UI if needed.Envelope (always present)
data object โ common fields
Checkout (hosted only)
Use when you only need a link. Response includesticket, date, payment_url, and transaction. payment_information is not included.
Applies to: ALL_METHODS, CARD, PSE (without bank + person_type).
Direct (your UI)
Use when you render the payment step yourself. Response includesticket, date, payment_information, and transaction. No payment_url.
Applies to: PSE with customer_data.bank + customer_data.person_type.
Hybrid (hosted + instructions)
Use for cash, keys, QR, or transfer methods. Response includes bothpayment_url and payment_information. Show instructions immediately in your app and keep the hosted page as fallback.
Applies to: EFECTY, BREB, BREB_QR.
Examples by payment method
Each example below shows thedata block for that method. All timestamps are UTC.
PSE โ Checkout (hosted bank selection)
Mode: Checkout ยท You get:payment_url only (no payment_information).
Omit bank and person_type. Redirect the customer to data.payment_url (path payments/main).
PSE โ Direct (your UI, PSE redirect URL)
Mode: Direct ยท You get:payment_information only (no payment_url).
Include bank and person_type in customer_data. Use GET /api/v1/pse/banks for bank codes. Open payment_information.payment_url in the browser or WebView โ it is the PSE redirect URL, not the TumiPay hosted page.
EFECTY โ Hybrid
Mode: Hybrid ยท You get:payment_url + payment_information.
Minimum amount 10,000 COP. Hosted page: efecty-confirmation. Show reference and convenio so the customer can pay at an Efecty location. expiration_date is in UTC (default 720 minutes unless expiration_time is sent).
BREB โ Hybrid
Mode: Hybrid ยท You get:payment_url + payment_information.
Use payment_method: "BREB". Hosted page: breb-payment. Display key_value so the customer can send the transfer from their bank app. Default validity: 15 minutes (expiration_time overrides). expiration_date is in UTC.
BREB_QR โ Hybrid
Mode: Hybrid ยท You get:payment_url + payment_information.
Use payment_method: "BREB_QR". Hosted page: breb-qr-payment. Render qr_code (base64 image) in your UI or redirect to payment_url. Default validity: 15 minutes. expiration_date is in UTC.
ALL_METHODS โ Checkout
Mode: Checkout ยท You get:payment_url only (no payment_information).
Customer chooses the payment method on the TumiPay hosted page (payments/main).
CARD โ Checkout
Mode: Checkout ยท You get:payment_url only (no payment_information).
Redirect the customer to the secure card form on the hosted page (payments/main). Final status arrives via webhook (ipn_url).
Related
- Bre-B PayIn โ Bre-B specific flow details
- PayIn API reference โ Full v2 reference and Peru/Mexico examples