Crear una venta
Envía una venta (SALE) a un POS. El equipo muestra el monto y tu cliente paga con su tarjeta de crédito, débito o prepago.
POST /api/v1/pos-operations| Ambiente | URL base API |
|---|---|
| Integración | https://ms-payment-c2c.virtualpos-dev.com/ms-payment-c2c |
| Producción | https://ms-payment-c2c.virtualpos.cl/ms-payment-c2c |
Headers
Sección titulada «Headers»| Nombre | Requerido | Descripción |
|---|---|---|
Content-Type |
Sí | application/json |
X-Api-Key |
Sí | Tu API key. Ver Autenticación. |
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
posSerial |
string | Sí | Serial del POS que debe cobrar. |
operationType |
string | Sí | SALE |
externalPaymentId |
string | Sí | ID de la venta en tu sistema. Debe ser único: ver idempotencia. Se usa como referencia de la venta en el POS. |
amount |
integer | Sí | Monto en pesos chilenos, sin decimales. Mayor que 0. |
tipAmount |
integer | No | Propina en pesos, sin decimales. Por defecto 0. Solo se acepta en SALE. |
currency |
string | No | Solo CLP. Por defecto CLP. |
callbackUrl |
string | No | URL HTTPS de tu sistema donde recibirás los webhooks de la operación. |
Ejemplo de request
Sección titulada «Ejemplo de request»curl -X POST 'https://ms-payment-c2c.virtualpos-dev.com/ms-payment-c2c/api/v1/pos-operations' \ -H 'Content-Type: application/json' \ -H "X-Api-Key: $API_KEY" \ -d '{ "posSerial": "VPOS-1A2B3C4D5E", "operationType": "SALE", "externalPaymentId": "orden-10234", "amount": 9900, "tipAmount": 0, "currency": "CLP", "callbackUrl": "https://tu-sistema.cl/webhooks/virtualpos"}'Respuestas
Sección titulada «Respuestas»201 Created
Sección titulada «201 Created»La venta se creó y se envió al POS. El resultado del cobro llega después, por webhook o consultando la operación. Guarda el paymentRequestId.
{ "paymentRequestId": "8f1c2d3e-4b5a-4c6d-9e7f-0a1b2c3d4e5f", "externalPaymentId": "orden-10234", "posSerial": "VPOS-1A2B3C4D5E", "amount": 9900, "tipAmount": 0, "currency": "CLP", "operationType": "SALE", "status": "DISPATCHED", "jobId": "job-5d6e7f80-1a2b-4c3d-8e9f-0a1b2c3d4e5f", "attemptId": "orden-10234#attempt-1", "attemptNumber": 1, "callbackUrl": "https://tu-sistema.cl/webhooks/virtualpos", "createdAt": "2026-11-13T16:01:10Z", "updatedAt": "2026-11-13T16:01:11Z"}Ya existía una operación con ese externalPaymentId. La respuesta trae esa operación, con la misma forma que el 201. Ver idempotencia.
Resultado de la venta
Sección titulada «Resultado de la venta»Cuando el cliente paga, recibes un webhook con status: "APPROVED" y el detalle de la transacción en resultPayload:
{ "event": "PAYMENT_C2C_UPDATED", "eventId": "evt-c2c-4b6e60ad-33fa-4c63-952d-91368108795a", "createdAt": "2026-11-13T16:01:30.492Z", "paymentRequestId": "8f1c2d3e-4b5a-4c6d-9e7f-0a1b2c3d4e5f", "externalPaymentId": "orden-10234", "posSerial": "VPOS-1A2B3C4D5E", "operationType": "SALE", "status": "APPROVED", "jobId": "job-5d6e7f80-1a2b-4c3d-8e9f-0a1b2c3d4e5f", "attemptId": "orden-10234#attempt-1", "attemptNumber": 1, "resultPayload": { "requestId": "orden-10234", "operationType": "SALE", "resultStatus": "approved", "responseCode": "M2M_200", "message": "Venta aprobada", "amountMinor": 9900, "tipAmountMinor": 0, "currency": "CLP", "authCode": "238518", "authDatetime": "20261113130129", "posTransactionId": "1b39fb38-8625-400c-8b5e-0f95886a5a08", "transactionId": "txn-42426451", "acquirerTransactionId": "acq-61752016", "terminalId": "VPOS-1A2B3C4D5E", "tid": "TID 8447735", "operationalTid": "00288NHGGV", "cardBrand": "VISA", "cardTypeId": "CREDIT", "cardTypeLabel": "Credito", "cardBin": "411111", "cardLast4": "1111", "cardMaskedPan": "411111******1111", "installmentsPlanType": "NONE", "installmentsQuantity": 1, "timestamp": "2026-11-13T16:01:29.726Z" }, "errorPayload": null}Campos de resultPayload
Sección titulada «Campos de resultPayload»| Campo | Descripción |
|---|---|
requestId |
Tu externalPaymentId. |
resultStatus |
Resultado informado por el POS, por ejemplo approved. |
message |
Mensaje legible del resultado. |
amountMinor / tipAmountMinor |
Monto y propina cobrados, en pesos. |
authCode |
Código de autorización del emisor. |
authDatetime |
Fecha y hora de la autorización, en formato yyyyMMddHHmmss. |
posTransactionId |
ID de la transacción en el POS. Úsalo para reimprimir el voucher. |
transactionId / acquirerTransactionId |
IDs de la transacción en Virtualpos y en el adquirente. |
terminalId / tid / operationalTid |
Identificadores del terminal. operationalTid es el TID impreso en el voucher. |
cardBrand |
Marca de la tarjeta, por ejemplo VISA o MASTERCARD. |
cardTypeId / cardTypeLabel |
Tipo de tarjeta: crédito, débito o prepago. |
cardBin / cardLast4 / cardMaskedPan |
Primeros 6 dígitos, últimos 4 y número enmascarado. Nunca se informa el número completo. |
installmentsPlanType / installmentsQuantity |
Tipo de cuotas y cantidad. NONE y 1 es una venta sin cuotas. |
Usa el status de primer nivel para decidir si la venta fue aprobada; los campos de resultPayload son el detalle informado por el POS.