Skip to content

CVU transaction

Provision a reusable CVU account, then process online CVU payouts using pay by bank.

Overview

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 apmProvider set to Cvu and intent set to Payout, and supply bankAccountNumber, bankCode, and accountType. Capture fundingData.payByBank.gatewayTokenId from the response to reuse the destination later.
  • Payout (withdrawal), stored bank account: Create a payout and supply gatewaytokenid from 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.

Provision a CVU

POST
/v1/transaction-contexts

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"
}
ParameterDescription
merchant
string (≤ 20 characters)
required
Your unique merchant identifier, as assigned by PXP.
site
string (≤ 20 characters)
required
Your unique site identifier, as assigned by PXP.
shopperId
string
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.
email
string (email)
required
The shopper's email address.
firstName
string
required
The shopper's first name.
lastName
string
required
The shopper's last name.
country
string (2 characters)
required
The shopper's country, in ISO 3166-1 alpha-2 format. For CVU, this must be AR.
documentType
string
required
The shopper identity document type. Possible values: IdentityDocument, Passport, TaxIdNumber, ForeignResidentCard, CivilRegisterId. When supplied, documentNumber is also required.
documentNumber
string
required
The shopper identity document number.
nickName
string
An optional preferred label used when generating the human-readable alias returned in the response. If omitted, the alias is generated without this input.

Response example

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.

Update a CVU alias

PUT
/v1/transaction-contexts/{transactionContextId}/alias

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"
}
ParameterDescription
transactionContextId
string (uuid)
required
The PXP identifier of the provisioned CVU transaction context, returned by the provision endpoint.
merchant
string (≤ 20 characters)
required
Your unique merchant identifier, as assigned by PXP.
site
string (≤ 20 characters)
required
Your unique site identifier, as assigned by PXP.
alias
string
required
The new human-readable alias for the CVU account.

Response example

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"
}

Initiate a CVU payout

POST
/v1/transactions

Request examples

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"
  }
}
ParameterDescription
merchant
string (≤ 20 characters)
required
Your unique merchant identifier, as assigned by PXP.
site
string (≤ 20 characters)
required
Your unique site identifier, as assigned by PXP.
merchantTransactionId
string (≤ 50 characters)
required
A unique identifier for this transaction.
merchantTransactionDate
date-time
required
The date and time when the transaction happened, in ISO 8601 format.
transactionMethod
object
required
Details about the transaction method.
transactionMethod.entryType
string
required
The entry type. For e-commerce CVU transactions, this is always Ecom.
transactionMethod.fundingType
string
required
The funding type. For CVU, this is always PayByBank.
transactionMethod.intent
string
required
The payment intent. For a CVU withdrawal, set this to Payout. Learn more about intents.
amounts
object
required
Details about the transaction amount.
amounts.transaction
number
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.currencyCode
string (1-3 characters)
required
The currency code associated with the transaction, in ISO 4217 format. For CVU, this must be ARS.
fundingData
object
required
Details about the payment method used for the transaction. For CVU, use the Pay by bank funding shape only.
fundingData.payByBank
object
required
Pay by bank funding details for CVU.
fundingData.payByBank.apmProvider
string
required
The APM provider. For CVU, this must be Cvu.
fundingData.payByBank.bankAccountNumber
string
required
The destination CVU or CBU account number. Required with bankCode and accountType when gatewaytokenid isn't supplied.
fundingData.payByBank.bankCode
string (5 characters)
required
The destination bank code. Required with bankAccountNumber and accountType when gatewaytokenid isn't supplied.
fundingData.payByBank.accountType
string
required
The destination bank account type. Possible values: Savings, Current. Clabe isn't valid for CVU. Required when gatewaytokenid isn't supplied.
shopper
object
required
Details about the shopper receiving the payout.
shopper.countryCode
string (2 characters)
required
The shopper's country, in ISO 3166-1 alpha-2 format. For CVU, this must be AR.
shopper.documentType
string
required
The shopper identity document type. Possible values: IdentityDocument, Passport, TaxIdNumber, ForeignResidentCard, CivilRegisterId. When supplied, documentNumber is also required.
shopper.documentNumber
string
required
The shopper identity document number.

Response example

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.