Usa estos endpoints para anular o reembolsar transacciones presenciales procesadas en una terminal POS en Chile. Las dos operaciones admiten modo sin tarjeta: no se requiere leer la tarjeta al momento de la anulación o del reembolso.
Endpoints#
| Endpoint | Propósito |
|---|
POST /pos/v1/transaction | Anula o reversa una transacción |
POST /pos/v1/refund | Reembolsa una transacción completada |
Tipos de operación#
| Tipo | Cuándo | Endpoint |
|---|
| Reverso | El mismo día de la transacción — se usa cuando hay un error de comunicación y no sabes si el cargo se procesó | POST /pos/v1/transaction (transaction_mode: "Reverse") |
| Anulación | El mismo día, antes de las 23:59 hora local de Chile — cancela una transacción confirmada | POST /pos/v1/transaction (transaction_mode: "Void") |
| Reembolso | Después del corte de anulación o en otro día — procesa una devolución | POST /pos/v1/refund |
Los requests de anulación enviados después de las 23:59 hora local de Chile se procesan automáticamente como reembolsos.
Anulación#
La anulación cancela una transacción autorizada antes de la liquidación. Envía transaction_mode: "Void" con el transaction_reference de la transacción original.{
"transaction_type": "charge",
"transaction_mode": "Void",
"country": "CHL",
"client_transaction_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"transaction_reference": "f2f29080-0214-42c0-95a5-77ecf3434cd7",
"amount": {
"currency": "CLP",
"subtotal_iva": 0,
"subtotal_iva0": 10000,
"iva": 0
},
"card_details": {
"reading_type": "ICC",
"enc_tlv": "<encrypted-tlv>",
"pin_ksn": "<ksn-value>",
"tracks": {
"enc_track2": "<encrypted-track2>",
"track_ksn": "<ksn-value>"
}
},
"cvm_type": "pin",
"pos_details": {
"brand": "SUNMI",
"model": "P2-EU",
"version": "Kushki SunmiV1.1.28",
"has_print": true,
"terminal_id": "PB04209860189",
"location": {
"latitude": -33.4489,
"longitude": -70.6693
}
}
}
Anulación sin tarjeta#
Pon omit_card: true para anular sin volver a leer la tarjeta.{
"transaction_type": "charge",
"transaction_mode": "Void",
"client_transaction_id": "b2c3d4e5-f6a7-8901-bcde-f23456789012",
"transaction_reference": "f2f29080-0214-42c0-95a5-77ecf3434cd7",
"omit_card": true,
"is_smart_void": true,
"amount": {
"currency": "CLP",
"subtotal_iva": 0,
"subtotal_iva0": 10000,
"iva": 0
}
}
Anulación parcial#
Incluye el objeto amount solo con la porción a anular. Omítelo para una anulación total.
Reverso#
Usa un reverso cuando hay problemas de comunicación y no sabes si la transacción fue aprobada. Envía transaction_mode: "Reverse" con el client_transaction_id de la transacción original.{
"transaction_type": "charge",
"transaction_mode": "Reverse",
"country": "CHL",
"client_transaction_id": "c3d4e5f6-a7b8-9012-cdef-34567890abcd",
"amount": {
"currency": "CLP",
"subtotal_iva": 0,
"subtotal_iva0": 5000,
"iva": 0
},
"card_details": {
"reading_type": "ICC",
"enc_tlv": "<encrypted-tlv>",
"pin_ksn": "<ksn-value>",
"tracks": {
"enc_track2": "<encrypted-track2>",
"track_ksn": "<ksn-value>"
}
},
"cvm_type": "pin",
"pos_details": {
"brand": "SUNMI",
"model": "P2-EU",
"version": "Kushki SunmiV1.1.28",
"has_print": true,
"terminal_id": "PB04209860189"
}
}
Reverso sin tarjeta#
{
"transaction_type": "charge",
"transaction_mode": "Reverse",
"client_transaction_id": "c3d4e5f6-a7b8-9012-cdef-34567890abcd",
"omit_card": true,
"amount": {
"currency": "CLP",
"subtotal_iva": 0,
"subtotal_iva0": 5000,
"iva": 0
}
}
Los reversos solo son válidos el mismo día de la transacción. Espera al menos 1 minuto después de la transacción original antes de iniciar un reverso.
Reembolso#
Reembolsa una transacción ya liquidada usando su transaction_reference. Envíalo a POST /pos/v1/refund.{
"transaction_type": "refund",
"transaction_mode": "Authorization",
"country": "CHL",
"client_transaction_id": "d4e5f6a7-b8c9-0123-def0-456789abcdef",
"transaction_reference": "f2f29080-0214-42c0-95a5-77ecf3434cd7",
"amount": {
"currency": "CLP",
"subtotal_iva": 0,
"subtotal_iva0": 10000,
"iva": 0
},
"card_details": {
"reading_type": "ICC",
"enc_tlv": "<encrypted-tlv>",
"pin_ksn": "<ksn-value>",
"tracks": {
"enc_track2": "<encrypted-track2>",
"track_ksn": "<ksn-value>"
}
},
"cvm_type": "pin",
"pos_details": {
"brand": "SUNMI",
"model": "P2-EU",
"version": "Kushki SunmiV1.1.28",
"has_print": true,
"terminal_id": "PB04209860189"
}
}
Reembolso sin tarjeta#
{
"transaction_type": "refund",
"transaction_mode": "Authorization",
"client_transaction_id": "e5f6a7b8-c9d0-1234-ef01-567890abcdef",
"transaction_reference": "f2f29080-0214-42c0-95a5-77ecf3434cd7",
"omit_card": true,
"amount": {
"currency": "CLP",
"subtotal_iva": 0,
"subtotal_iva0": 10000,
"iva": 0
}
}
Reembolso parcial#
El objeto amount es siempre obligatorio en POST /pos/v1/refund: para un reembolso total, envía subtotal_iva0 igual al monto de la transacción original; para un reembolso parcial, envía solo la porción a reembolsar.El tiempo máximo para procesar un reembolso es de 120 días desde la fecha de la transacción original.
Campos del request#
Anulación y reverso — POST /pos/v1/transaction#
| Campo | Obligatorio | Descripción |
|---|
transaction_type | Sí | Tipo de la transacción original (por ejemplo, "charge", "preAuth", "capture"). |
transaction_mode | Sí | "Void" para anular; "Reverse" para deshacer de inmediato. |
country | Sí | ISO 3166-1 alpha-3. Debe ser "CHL" (opcional para operaciones sin tarjeta). |
client_transaction_id | Sí | UUID v4 único por request. Para el reverso: usa el ID de la transacción original. |
transaction_reference | Sí | Referencia de la transacción a anular. No es obligatorio para los reversos. |
amount | No | Obligatorio para anulaciones parciales. |
omit_card | No | true para operaciones sin tarjeta. |
is_smart_void | No | Solo Chile. Envía true si quieres que esta anulación se procese como un reembolso: se usa para transacciones con tarjeta de crédito de BCI, Banco de Chile y Scotiabank. Por defecto es false. |
cvm_type | No | "none", "pin" o "signature". Opcional para operaciones sin tarjeta. |
Reembolso — POST /pos/v1/refund#
| Campo | Obligatorio | Descripción |
|---|
transaction_type | Sí | Siempre "refund". |
transaction_mode | Sí | Siempre "Authorization". |
country | Sí | ISO 3166-1 alpha-3. Debe ser "CHL" (opcional para operaciones sin tarjeta). |
client_transaction_id | Sí | UUID v4 único por request. |
transaction_reference | Sí | Referencia de la transacción a reembolsar. |
amount | Sí | Siempre obligatorio. Envía subtotal_iva0 igual al monto original para un reembolso total, o un monto menor para un reembolso parcial. |
omit_card | No | true para reembolsos sin tarjeta. |
cvm_type | Sí | "none", "pin" o "signature". No es obligatorio para reembolsos sin tarjeta. |
amount#
| Campo | Obligatorio | Descripción |
|---|
currency | Sí | Debe ser "CLP". |
subtotal_iva | Sí | Ponlo en 0. |
subtotal_iva0 | Sí | Monto a anular o reembolsar en CLP. |
iva | Sí | Ponlo en 0. |
tip | No | Monto de la propina en CLP. |
Autenticación#
Entornos#
https://api.kushkipagos.com/
Endpoints disponibles#
Anulación / Reverso
Anula una autorización (void) o deshace una transacción de inmediato (reverse). Admite operaciones sin tarjeta y anulaciones parciales.
Reembolso
Reembolsa una transacción presencial ya liquidada — total o parcial, con o sin lectura de la tarjeta. Máximo 120 días.
¿Tienes una sugerencia sobre esta documentación? Contáctanos.