Provision a reusable CVU account, then process online CVU payouts using pay by bank.
CVU deposits don't use a standard transaction initiation request. Instead, you provision a reusable CVU account once per shopper, show the CVU or alias in your cashier, and the shopper transfers funds from their own banking app. PXP creates the deposit when the processor notifies it, and sends you the cvu-transaction-order-executed webhook as your first and authoritative notice of the deposit.
You can submit a CVU payout in these ways:
- Payout (withdrawal), new bank account: Create a pay-by-bank transaction with
apmProviderset toCvuandintentset toPayout, and supplybankAccountNumber,bankCode, andaccountType. CapturefundingData.payByBank.gatewayTokenIdfrom the response to reuse the destination later. - Payout (withdrawal), stored bank account: Create a payout and supply
gatewaytokenidfrom an earlier accepted payout instead of resending bank details.
CVU supports ARS only and shoppers in Argentina (countryCode AR). Treat merchant webhooks as the authoritative final outcome. There's no hosted redirect step for CVU. Learn more about webhooks.
Use the following request to provision a reusable CVU account for a shopper. The call creates no transaction. Repeat calls for the same shopperId, merchant, and site return the same CVU account unchanged.
{
"merchant": "MERCHANT-1",
"site": "SITE-1",
"shopperId": "Shopper_AR_01",
"email": "maria.lopez@example.com",
"firstName": "Maria",
"lastName": "Lopez",
"country": "AR",
"documentType": "TaxIdNumber",
"documentNumber": "20123456789",
"nickName": "maria-lopez"
}| Parameter | Description |
|---|---|
merchantstring (≤ 20 characters) required | Your unique merchant identifier, as assigned by PXP. |
sitestring (≤ 20 characters) required | Your unique site identifier, as assigned by PXP. |
shopperIdstring required | Your unique identifier for this shopper. Together with merchant and site, it determines which CVU account is returned: there's one active CVU account for each shopper at a given merchant and site. A repeat call with the same three values returns that same account unchanged. |
emailstring (email) required | The shopper's email address. |
firstNamestring required | The shopper's first name. |
lastNamestring required | The shopper's last name. |
countrystring (2 characters) required | The shopper's country, in ISO 3166-1 alpha-2 format. For CVU, this must be AR. |
documentTypestring required | The shopper identity document type. Possible values: IdentityDocument, Passport, TaxIdNumber, ForeignResidentCard, CivilRegisterId. When supplied, documentNumber is also required. |
documentNumberstring required | The shopper identity document number. |
nickNamestring | An optional preferred label used when generating the human-readable alias returned in the response. If omitted, the alias is generated without this input. |
If your request is successful, you'll receive a 200 response with status set to Success. Show the cvu or alias to the shopper. Store transactionContextId if you want to update the alias later. On failure, status is Error and stateData carries the mapped fault detail.
{
"transactionContextId": "3f6f0d0e-6d2a-4b7e-9d3c-1a2b3c4d5e6f",
"cvu": "0000003100010000000001",
"alias": "maria.lopez.cvu",
"status": "Success"
}After you display the CVU, don't call any API when the shopper deposits. Wait for the cvu-transaction-order-executed webhook, which creates and confirms the deposit. Deposit notifications may have a null merchantTransactionId because there was no merchant create call. Learn more about webhooks.
Use the following request to update the human-readable alias for a previously provisioned CVU. The CVU account number and any prior deposits are unaffected.
{
"merchant": "MERCHANT-1",
"site": "SITE-1",
"alias": "maria.lopez.updated"
}| Parameter | Description |
|---|---|
transactionContextIdstring (uuid) required | The PXP identifier of the provisioned CVU transaction context, returned by the provision endpoint. |
merchantstring (≤ 20 characters) required | Your unique merchant identifier, as assigned by PXP. |
sitestring (≤ 20 characters) required | Your unique site identifier, as assigned by PXP. |
aliasstring required | The new human-readable alias for the CVU account. |
If your request is successful, you'll receive a 200 response with the same shape as the provision response and the updated alias.
{
"transactionContextId": "3f6f0d0e-6d2a-4b7e-9d3c-1a2b3c4d5e6f",
"cvu": "0000003100010000000001",
"alias": "maria.lopez.updated",
"status": "Success"
}Use the following request to start a CVU withdrawal when you supply the destination bank account for the first time. Capture fundingData.payByBank.gatewayTokenId from the response so you can reuse the same destination later.
{
"merchant": "MERCHANT-1",
"site": "SITE-1",
"merchantTransactionId": "CVU-PAYOUT-001",
"merchantTransactionDate": "2024-01-27 08:51:02.826445+00:00",
"transactionMethod": {
"intent": "Payout",
"entryType": "Ecom",
"fundingType": "PayByBank"
},
"fundingData": {
"payByBank": {
"apmProvider": "Cvu",
"bankAccountNumber": "0000003100010000000001",
"bankCode": "00007",
"accountType": "Savings"
}
},
"amounts": {
"transaction": 1400.00,
"currencyCode": "ARS"
},
"shopper": {
"id": "Shopper_AR_01",
"firstName": "Maria",
"lastName": "Lopez",
"email": "maria.lopez@example.com",
"countryCode": "AR",
"documentType": "TaxIdNumber",
"documentNumber": "20123456789"
}
}| Parameter | Description |
|---|---|
merchantstring (≤ 20 characters) required | Your unique merchant identifier, as assigned by PXP. |
sitestring (≤ 20 characters) required | Your unique site identifier, as assigned by PXP. |
merchantTransactionIdstring (≤ 50 characters) required | A unique identifier for this transaction. |
merchantTransactionDatedate-time required | The date and time when the transaction happened, in ISO 8601 format. |
transactionMethodobject required | Details about the transaction method. |
transactionMethod.entryTypestring required | The entry type. For e-commerce CVU transactions, this is always Ecom. |
transactionMethod.fundingTypestring required | The funding type. For CVU, this is always PayByBank. |
transactionMethod.intentstring required | The payment intent. For a CVU withdrawal, set this to Payout. Learn more about intents. |
amountsobject required | Details about the transaction amount. |
amounts.transactionnumber | The transaction amount. The numbers after the decimal will be zero padded if they are less than the expected currencyCode exponent. For example, GBP 1.1 = GBP 1.10, EUR 1 = EUR 1.00, or BHD 1.3 = 1.300. The transaction will be rejected if numbers after the decimal are greater than the expected currencyCode exponent (e.g., GBP 1.234), or if a decimal is supplied when the currencyCode exponent does not require it (e.g., JPY 1.0). |
amounts.currencyCodestring (1-3 characters) required | The currency code associated with the transaction, in ISO 4217 format. For CVU, this must be ARS. |
fundingDataobject required | Details about the payment method used for the transaction. For CVU, use the Pay by bank funding shape only. |
fundingData.payByBankobject required | Pay by bank funding details for CVU. |
fundingData.payByBank.apmProviderstring required | The APM provider. For CVU, this must be Cvu. |
fundingData.payByBank.bankAccountNumberstring required | The destination CVU or CBU account number. Required with bankCode and accountType when gatewaytokenid isn't supplied. |
fundingData.payByBank.bankCodestring (5 characters) required | The destination bank code. Required with bankAccountNumber and accountType when gatewaytokenid isn't supplied. |
fundingData.payByBank.accountTypestring required | The destination bank account type. Possible values: Savings, Current. Clabe isn't valid for CVU. Required when gatewaytokenid isn't supplied. |
shopperobject required | Details about the shopper receiving the payout. |
shopper.countryCodestring (2 characters) required | The shopper's country, in ISO 3166-1 alpha-2 format. For CVU, this must be AR. |
shopper.documentTypestring required | The shopper identity document type. Possible values: IdentityDocument, Passport, TaxIdNumber, ForeignResidentCard, CivilRegisterId. When supplied, documentNumber is also required. |
shopper.documentNumberstring required | The shopper identity document number. |
If your request is successful, you'll receive a 200 response. For a successful CVU payout initiation, expect a Pending state with no redirectUrl, plus fundingData.payByBank.paymentId and fundingData.payByBank.gatewayTokenId. providerTransactionId and fundingData.payByBank.processorPaymentId aren't on the immediate response. They appear on a later query after PXP's background status check has run.
The final outcome is delivered by a CVU merchant webhook (e.g., cvu-transaction-order-executed). Learn more about webhooks.
Always use the systemTransactionId for later PXP API calls against the same transaction. Provider payment identifiers (providerTransactionId, fundingData.payByBank.paymentId, and fundingData.payByBank.processorPaymentId) are for reconciliation and support only.
{
"state": "Pending",
"systemTransactionId": "2fe879cc-f99b-5747-a2bf-78a38ddcc13c",
"merchantTransactionId": "CVU-PAYOUT-001",
"fundingData": {
"payByBank": {
"apmProvider": "Cvu",
"paymentId": "4d2e9f81-5b3c-4a7d-9e6f-1a2b3c4d5e6f",
"gatewayTokenId": "b6e2f1a4-c3d8-4f7a-b1e9-d2c3f4a5b6c7"
}
}
}CVU deposits support a full refund only. Use the shared Refund guide for the request shape, response, and webhook confirmation.