VA Payments
VA Payments generate a dedicated virtual account instruction that your integration can display directly within your own product. Instead of redirecting the payer to a hosted Basilic checkout, you immediately receive the CVU and alias to present the transfer instructions yourself.
What is a VA payment
- A VA payment is an API-only bank transfer collection flow.
- Basilic creates the payment record, reserves the receiving account, and returns the CVU / alias to show the payer.
- Your server can query the lifecycle with
GET /api/v1/va-paymentsandGET /api/v1/va-payments/{id}or react to callbacks when configured. - VA payments are currently only supported in Argentina and only for ARS transfer instructions.
VA payment flow
What you can control
- Lock mode by time, amount, or both.
- Expiry window via
ttlSeconds. - Optional client identification with
clientId,clientTaxId, andclientName. - Callback delivery to your backend via
callbackUrl. - External references and metadata for reconciliation in your own systems.
Callback payload
When a transfer arrives and Basilic matches it to a VA payment, it delivers a POST to the callbackUrl you configured.
Webhook payload:
{
"eventId": "uuid",
"vaPaymentId": "uuid",
"eventType": "cash_in_received",
"status": "completed",
"payload": {
"vaPaymentId": "uuid",
"operationId": "internal-op-id",
"incomingAmount": 4970.00,
"total": 5000.00,
"totalWithoutTaxes": 4970.00,
"taxes": 30.00,
"receivedAmount": 4970.00,
"remainingAmount": 0
},
"createdAt": "2026-05-18T12:00:00Z"
}
Event types:
eventType carries one of these seven values, and no other.
eventType | When Basilic sends it |
|---|---|
created | You created the VA payment |
cash_in_received | A transfer arrived and Basilic matched it |
succeeded | The VA payment is paid in full |
underpaid | The transfer paid less than the amount |
overpaid | The transfer paid more than the amount |
failed | The VA payment expired before it was paid |
cancelled | You cancelled the VA payment |
The
payloadobject differs per event. Acreatedorcancelledevent carries the same body as the response of the endpoint that raised it. The events that a transfer raises carry the amount fields below.
Which URL receives which event:
You configure either callbackUrl alone, or successUrl and failureUrl
together. You cannot combine them.
| Configuration | Delivery |
|---|---|
callbackUrl | Every one of the seven events goes to this URL |
successUrl + failureUrl | succeeded goes to successUrl. failed and cancelled go to failureUrl. underpaid and overpaid go to successUrl when the VA payment names a client, and to failureUrl when it does not |
createdandcash_in_receivedare delivered only throughcallbackUrl. The split configuration has no URL for an event that is neither a success nor a failure, thus it drops them. UsecallbackUrlif you need them.
Payload fields:
| Field | Description |
|---|---|
payload.incomingAmount | Net amount received after taxes (pre-existing field, same as totalWithoutTaxes) |
payload.total | Gross amount before taxes |
payload.totalWithoutTaxes | Net amount after taxes (same as incomingAmount) |
payload.taxes | Tax amount retained by the provider. total - taxes = incomingAmount |
payload.receivedAmount | Amount credited toward the VA payment (may differ if partial or over-paid) |
payload.remainingAmount | Amount still pending. 0 when fully paid |
In most transfers there are no taxes and
total === incomingAmountwhiletaxes === 0. For Argentine transfers with withholding, these fields carry the breakdown.
Create VA Payment
Creates an API-only VA/CVU payment instruction and returns bank transfer details directly to the integrator.
List VA Payments
Retrieves API-only VA payments with filtering by status, client identity, references, and date ranges.
Get VA Payment
Retrieves a single VA payment including payment instructions, callback delivery summary, and accumulated cash-ins.
Cancel VA Payment
Cancels an active waiting or underpaid VA payment and releases its lock.