Payments / RailsCVU
CVU
Argentina's virtual account identifier for instant bank transfers. Used for pay-in in Argentina.
Rail overview
Use CVU to collect Argentine bank transfers into an internal account. Static CVUs are best for recurring topups; dynamic CVUs are best for checkout-style matching.
Dynamic CVU payments are matched 1:1 to a payment attempt. Static CVU transfers create an unassigned payment that Conomy reconciles before settlement.
Show the CVU code clearly to the payer and rely on webhooks to update your UI once the transfer is received, matched, settled, expired, or refunded.
Static CVU vs dynamic CVU
Section titled “Static CVU vs dynamic CVU”The platform supports two CVU allocation modes. The mode determines how an incoming transfer is matched to a transaction.
| Characteristic | Static CVU | Dynamic CVU |
|---|---|---|
| Allocation | A fixed code assigned to a specific identity. Shared across all topups for that identity. | A unique code allocated per payment attempt. |
| Transfer matching | No automatic match — an unassigned payment is created and reconciled against an account on our side. | Automatic 1:1 match with the originating payment attempt. |
| Typical use case | Recurring topups, off-platform onboarding, bulk collection flows. | Checkout flows where payer identity and amount are known upfront. |
| Underpaid / overpaid classification | At reconciliation time. | Automatic, by comparing the received amount against the amount on the attempt. |
Static CVU
Section titled “Static CVU”A static CVU is a fixed code bound to an identity in your tenant. Every topup that arrives on that code creates an unassigned payment in CREATED state, with no accountNumber set.
How topups arrive
Section titled “How topups arrive”- The payer initiates an ARS transfer to the static CVU code.
- The platform receives the transfer notification and creates an unassigned payment in
CREATED. - A webhook fires so your dashboard can surface the pending item.
- The payment is reconciled against a destination account on our side and transitions to
SETTLED. - Webhook
payment.settledfires.
Expiry
Section titled “Expiry”A topup that is not reconciled within 48 hours expires automatically:
- A refund is initiated back to the originating bank account.
- A child
REFUNDtransaction is created inRECEIVEDstate. - The parent transitions to
EXPIREDand apayment.expiredwebhook fires.
Dynamic CVU
Section titled “Dynamic CVU”A dynamic CVU is allocated per payment attempt. When you create a payment attempt with type: CVU as the origin, the platform returns a unique CVU code for that specific transaction. The payer transfers to that code and the topup auto-matches.
Creating a payment attempt with CVU
Section titled “Creating a payment attempt with CVU”{ "purchaseAmount": "1500.00", "purchaseCurrency": "ARS", "origins": [ { "type": "CVU", "currency": "ARS", "cvu": { "customer": { "firstName": "Juan", "lastName": "Perez", "documentNumber": "12345678", "documentType": "DNI" } } } ], "destinations": [ { "type": "ACCOUNT", "currency": "ARS", "account": { "accountNumber": "17733420419010021326597" } } ]}The response includes the allocated CVU code in origins[0].cvu.code. Display this code to the payer so they can initiate the bank transfer.
Matching
Section titled “Matching”When the topup arrives, the platform matches it to the attempt by CVU code. The attempt is promoted to CREATED and continues through the normal lifecycle toward SETTLED.
If the received amount differs from the expected amount, purchase.overpaid or purchase.underpaid fires alongside the lifecycle events.
Required fields
Section titled “Required fields”| Field | Type | Description |
|---|---|---|
type | string | Must be "CVU" |
currency | string | Must be "ARS" |
Optional fields
Section titled “Optional fields”| Field | Type | Description |
|---|---|---|
cvu.code | string | Pre-assigned CVU code for static mode. Omit when using dynamic allocation via a payment attempt. |
cvu.customer | object | Customer data for the originante — used for automatic customer resolution on topup receipt. |
cvu.customer.firstName | string | Originante’s first name. |
cvu.customer.lastName | string | Originante’s last name. |
cvu.customer.documentNumber | string | Originante’s document number. |
cvu.customer.documentType | string | Document type, e.g. "DNI". |
Valid destinations
Section titled “Valid destinations”| Node | Description |
|---|---|
ACCOUNT | Internal platform account |
Related
Section titled “Related”Object
Section titled “Object”Optional CVU/CBU code when pre-assigned by the payer flow.
Information on who pays the transaction
idstringUnique identifier for the internal service.
firstNamestringrequiredPayer's name
emailstringPayer's email
lastNamestringPayer's last name
phoneNumberstringPayer's phone number without prefix
phoneNumberPrefixstringPhone number prefix (e.g., +57)
documentTypestringDocumeny type of the entity (e.g., RUT, CURP, CURL). Go to the Supported Identity document types page for the complete list of supported values.
documentNumberstringThe document number associated with the documentType
addressobjectThe entity’s address information.
administrativeAreaLevel1stringThe first-level administrative division.
administrativeAreaLevel2stringThe second-level administrative division.
administrativeAreaLevel3stringThe third-level administrative division.
streetstringThe name of the street.
streetNumberstringThe street number.
optionalAddressstringAdditional address details.
countrystringCountry of operations for the entity, specified using the ISO 3166-1 alpha-3 standard (e.g., CHL, USA, MEX). Go to the countries page for the complete list of supported values.
zipcodestringZipcode f the address