Pago Móvil API for Venezuela
Accept Pago Móvil and send Pago Móvil pay-outs in Venezuela through one API. Each pay-in gives the buyer a phone number, a cédula and a bank to pay, and the bolívars you collect are credited to you in USDT.
- Phone +584121234567
- Cédula V-12345678
- Bank code 0134
- Bank Banesco
Pago Móvil, from a merchant's side
Pago Móvil is Venezuela's interbank mobile payment service, offered by the banks inside their own apps and online banking. The payer doesn't need an account number. They identify the recipient by three details: the phone number registered to the account, the holder's cédula (the national ID) and the bank, which has a four-digit code.
In ATLAS it is the default way to pay in Venezuela. Any bank counts as a Pago Móvil bank, so an order can be served by an account at any of them, and ATLAS confirms the payment by hand. The same details, plus an account number, carry your pay-outs.
paymentMethod 0102 0108 0134
- WaitingPayment Phone, cédula and bank sent to the buyer
- Checked by hand Every Venezuelan pay-in
- Completed Credited to your USDT balance
How a buyer pays with Pago Móvil through ATLAS
-
Create a VES order
Your server creates a pay-in in bolívars, with the amount to two decimal places.
-
Get a phone, a cédula and a bank
The response carries the phone number, the cédula, the bank and the account holder.
-
Show the three details
Put the phone, cédula, bank and exact amount on your payment screen, ideally with a copy button on each.
-
The buyer sends a Pago Móvil
In their bank's app the buyer opens Pago Móvil, enters the phone, the cédula and the bank, then the amount, and sends.
-
ATLAS confirms it
ATLAS confirms the payment, the order completes and the completion webhook arrives.
{ "amount": 1500.00, "currency": "VES", "geo": 2, "expiresIn": 900, "merchantOrderId": "order-12345", "clientReference": "customer-7781"} { "event": "pay_in.completed", "payInId": "1c75c312-93f3-4b34-903e-10fb38a56bec", "displayId": "PI00000996", "merchantOrderId": "order-12345", "status": "Completed", "geo": "Venezuela", "utr": null} Any bank, or one you choose
In Venezuela paymentMethod is optional. Leave it out and the order goes to the default rail, Pago Móvil, on any bank. Send a bank code when you need a specific one: GET /api/merchant/payment-methods?geo=Venezuela returns the codes contracted for your account, such as 0102 for Banco de Venezuela or 0108 for Provincial. A code you don't have returns METHOD_NOT_CONTRACTED.
The codes are the four-digit bank codes Venezuela already uses, and they are the same vocabulary as recipientBank on pay-outs, so one table maps both directions. Amounts carry two decimals.
{ "amount": 1500.00, "currency": "VES", "geo": 2, "expiresIn": 900, "merchantOrderId": "order-ve-12345", "clientReference": "customer-7781", "paymentMethod": "0102"} { "displayId": "PI00000023", "geo": "Venezuela", "ownerName": "Demo Receiver", "bankName": "Banesco", "recipientPhone": "+584121234567", "recipientCedula": "V-12345678", "amount": 1500.00, "requiresManualConfirmation": true} Your screen, our details
The hosted payment page covers India and South Korea only, so in Venezuela you show the payment on your own screen over the H2H API. The response is built for that. It holds only the keys a Pago Móvil order needs, so they map straight onto your screen.
There is no reference to relay. The UTR endpoint is for India and South Korea, and a Venezuelan pay_in.completed carries utr: null. Every Venezuelan pay-in waits for a manual confirmation, so requiresManualConfirmation is always true. A pay-in that expires before the payment is matched can still be confirmed later, and the webhook tells you when it happens.
Reconciling Pago Móvil orders
Two identifiers travel with every pay-in. merchantOrderId is your idempotency key: repeat a request with the same value while the order is live and the API returns the original pay-in. clientReference is your stable ID for the payer, up to 64 characters, echoed on the status call so you can tie orders to customers.
Once an order completes, GET /api/merchant/pay-in/{payInId}/status also reports payerName, the name the payment came from. If a buyer sends less than the order asked for, support can close it on the amount that actually arrived. amount and requestedAmount then show the money received, which is what you are credited for, and originalAmount keeps your original request.
If no account is free when you create the order, the API answers NO_CARD_AVAILABLE; retry after a short delay.
Pago Móvil pay-outs
A Venezuelan pay-out needs four recipient fields together: recipientPhone, recipientCedula, recipientBank and recipientAccountNumber (5 to 20 digits, hyphens and spaces accepted), plus recipientName. Send nothing else; a stray field returns 400 VALIDATION_ERROR. Venezuela has a single pay-out rail, Pago Móvil / bank transfer, which is why it asks for the Pago Móvil details and the account number together, and why paymentMethod is ignored.
The money comes out of your USDT balance. A pay-out sent before the balance is funded is still accepted, as AwaitingFunds, and goes ahead after you top up. pay_out.completed echoes all four recipient fields. Statuses run from Pending through Claimed and PendingValidation to Completed; the pay-outs page covers funding, failures and expiry.
{ "recipientPhone": "+584121234567", "recipientCedula": "V-12345678", "recipientBank": "Banesco", "recipientAccountNumber": "01020123456789012345", "recipientName": "Demo Receiver", "amount": 1500.00, "currency": "VES", "geo": 2, "expiresIn": 1800, "merchantOrderId": "payout-ve-12345", "clientReference": "customer-7781"} { "payOutId": "660e8400-e29b-41d4-a716-446655440222", "displayId": "PO00000002", "amountFiat": 1500.00, "currency": "VES", "expiresAt": "2026-06-04T22:00:00Z"} From a confirmed Pago Móvil to USDT
A Pago Móvil pay-in stays in WaitingPayment until ATLAS confirms it, then ends in Completed, Expired or Failed with a signed webhook. Credit the order from pay_in.completed or from GET /api/merchant/pay-in/{payInId}/status, and see webhook signatures and retries for verification.
Each completed pay-in adds its USDT value, fixed when the order is created, to your balance. Auto-settle or a withdrawal on request takes it to your TRC-20 wallet. The rest of the market is on payments in Venezuela.
FAQ
Do I have to send paymentMethod for Pago Móvil?
No. Without it the order uses the default rail, Pago Móvil, on any bank. Send a bank code only when you want a specific bank.
What does the buyer need to pay?
The phone number, the cédula, the bank and the exact amount, all returned in the pay-in response.
What does a Pago Móvil pay-out need?
recipientPhone, recipientCedula, recipientBank and recipientAccountNumber, plus recipientName.
Is there a hosted payment page for Venezuela?
No. The hosted and embedded page covers India and South Korea; in Venezuela you show the details on your own screen.
Do I send a transaction reference after the buyer pays?
No. The reference endpoint is for India and South Korea. ATLAS confirms Venezuelan pay-ins by hand.
How are VES amounts formatted?
As decimals with two places, for example 1500.00.