Card Async is a Chile-exclusive payment method that processes card transactions through Transbank's Webpay portal. Unlike the standard card flow, the customer is redirected to the Transbank portal to authenticate and complete the payment — your server receives the result asynchronously.This service is available exclusively in Chile. It requires an active Transbank/Webpay integration enabled on your Kushki account.
How it works#
1
Request a card async token
Call
POST /card-async/v1/tokens with the total amount, return URL, and currency. Returns a one-time
token.
{
"totalAmount": 10000,
"returnUrl": "https://yoursite.com/payment/return",
"currency": "CLP",
"email": "user@example.com",
"description": "Compra en Mi Comercio Chile"
}
⚠️ Token expiry: Tokens expire in 30 minutes and can only be used for a single transaction. Request a new token if it expires.
2
Init the transaction
Call
POST /card-async/v1/init with the token and amount. The response returns a
redirectUrl — send your customer there to complete the payment on Transbank's Webpay portal.
{
"token": "AbCDef123456Z7Ghi8901234jkLMNopQ",
"amount": {
"subtotalIva": 0,
"subtotalIva0": 10000,
"iva": 0,
"ice": 0,
"currency": "CLP"
},
"webhooks": ["https://yoursite.com/kushki/notify"],
"fullResponse": "v2"
}
{
"redirectUrl": "https://webpay.transbank.cl/...",
"transactionReference": "6f16659e-b711-4995-a9ae-161aecbd6521"
}
3
Customer completes payment on Webpay
The customer authenticates and confirms the payment on the Transbank portal. Transbank redirects the customer back to your returnUrl when done.
4
Check the transaction status
Call
GET /card-async/v1/status/{token} to retrieve the final result. Use the
token from Step 1 as the path parameter.
A successful response includes:{
"status": "approvedTransaction",
"ticketNumber": "319228478889680318",
"transactionReference": "6f16659e-b711-4995-a9ae-161aecbd6521",
"approvedTransactionAmount": 10000,
"lastFourDigits": "1234",
"cardType": "CREDIT"
}
Pre-authorization flow#
Use pre-authorization to reserve funds without capturing immediately — for hotel, rental, or marketplace flows.There is a maximum of 7 calendar days to capture after a pre-authorization. After that, Transbank automatically releases the reserved funds. This limit cannot be extended.
1
Request a token
Same as a regular charge — call POST /card-async/v1/tokens with the amount to reserve.
2
Pre-authorize
POST /card-async/v1/preAuthorization — Returns a
redirectUrl to redirect the customer to Transbank.
{
"token": "AbCDef123456Z7Ghi8901234jkLMNopQ",
"amount": {
"subtotalIva": 0,
"subtotalIva0": 30000,
"iva": 0
}
}
3
Customer authenticates on Webpay
Customer is redirected to the Transbank portal and confirms the hold.
4
Get status and ticketNumber
GET /card-async/v1/status/{token} — Once the customer returns, poll this endpoint to confirm the authorization and obtain the ticketNumber needed for capture.
5
Capture
POST /card-async/v1/capture — Collect the reserved funds using the
ticketNumber from the status response. Must be done within
7 calendar days.
{
"ticketNumber": "319228478889680318",
"amount": {
"subtotalIva": 0,
"subtotalIva0": 30000,
"iva": 0,
"ice": 0,
"currency": "CLP"
},
"fullResponse": "v2"
}
Currency#
| Currency | Code | Notes |
|---|
| Chilean Peso | CLP | Integer amounts only — no decimal places |
| Unidad de Fomento | UF | Indexed currency unit |
Always send amounts as whole integers (e.g., 10000). Sending 10000.50 returns 400 Bad Request.
Transaction status values#
| Status | Description |
|---|
requestedToken | Token created — the transaction has not been initialized yet |
initializedTransaction | Transaction initialized — awaiting customer action on Webpay |
approvedTransaction | Payment approved |
declinedTransaction | Payment declined by the issuer or processor |
Authentication#
Using the API#
https://api.kushkipagos.com/
Available Endpoints#
Request a Card Async Token
Request a token with the payment amount and return URL. Valid for 30 minutes, single use.
Init Transaction
Initialize the transaction. Returns a Webpay redirect URL for the customer.
Pre-Authorization
Reserve funds without capturing immediately. Returns a Webpay redirect URL. 7-day capture window.
Capture
Capture a previously authorized amount using the ticketNumber from the status response.
Get Status
Poll for the final transaction result using the token from the token request step.
Got a suggestion on this documentation? Contact us.