Obtener una venta
const url = 'https://api.posdata.so/public/v1/sales/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api.posdata.so/public/v1/sales/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0 \ --header 'Authorization: Bearer <token>'Permiso requerido: sales:read.
Autorización
Sección titulada «Autorización»Parámetros
Sección titulada «Parámetros»Parámetros de ruta
Sección titulada «Parámetros de ruta»Respuestas
Sección titulada «Respuestas»OK
Venta. Ingreso neto = total - tax - tip_amount.
object
Estado tal como lo registró el POS (completed, cancelled, open, pending…).
Documento que pidió el POS al cobrar.
Medio de pago tal como lo registró el POS (CASH, CARD, NEQUI…).
Suma de las líneas, impuestos incluidos.
Pesos colombianos (COP), entero sin decimales.
Parte del total que es impuesto.
Propina. Nunca es base gravable.
Subtotal - discount + tip_amount.
Total de un tributo en el documento, agrupado por (código, tarifa).
Línea de una venta.
object
product o una línea libre.
Puede ser fraccionaria (ventas por peso).
Precio unitario con los impuestos porcentuales incluidos.
Total de la línea con impuestos incluidos.
Impuesto cobrado en una línea, congelado al momento de la venta.
object
Código DIAN del tributo: 01 IVA, 03 ICA, 04 INC, 22 INC bolsas.
Pesos colombianos (COP), entero sin decimales.
Pesos colombianos (COP), entero sin decimales.
Resumen de un documento de la venta. El detalle está en GET /invoices/{id}.
object
electronic_invoice = factura electrónica (DIAN 1, CUFE) · pos_document = documento equivalente POS electrónico (DIAN 15, CUDE) · pos_adjustment_note = nota de ajuste del documento POS (DIAN 26) · internal_invoice = factura no electrónica.
Cuando se registró la venta en la caja (reloj de la caja). En ventas sincronizadas antes del 28-sep-2026 es la hora de llegada.
Cuando la venta llegó al servidor (una caja sin conexión la sube después).
Ejemplo
{ "object": "sale", "document_kind": "pos", "items": [ { "object": "sale_item" } ], "invoices": [ { "document_type": "electronic_invoice" } ]}Petición inválida (VALIDATION_ERROR, INVALID_JSON, INVALID_CURSOR).
object
object
Explicación en español, con el siguiente paso.
Campo que causó el error, si aplica.
Ejemplo
{ "error": { "code": "UNAUTHENTICATED" }}Sin API key válida (UNAUTHENTICATED, INVALID_API_KEY, API_KEY_REVOKED, API_KEY_EXPIRED, API_KEY_WRONG_ENVIRONMENT, ACCOUNT_INACTIVE).
object
object
Explicación en español, con el siguiente paso.
Campo que causó el error, si aplica.
Ejemplo
{ "error": { "code": "UNAUTHENTICATED" }}Sin permiso (PLAN_REQUIRED, INSUFFICIENT_SCOPE, BROWSER_REQUESTS_NOT_ALLOWED).
object
object
Explicación en español, con el siguiente paso.
Campo que causó el error, si aplica.
Ejemplo
{ "error": { "code": "UNAUTHENTICATED" }}No existe en esta cuenta (NOT_FOUND).
object
object
Explicación en español, con el siguiente paso.
Campo que causó el error, si aplica.
Ejemplo
{ "error": { "code": "UNAUTHENTICATED" }}Límite de peticiones (RATE_LIMITED). Respeta Retry-After.
object
object
Explicación en español, con el siguiente paso.
Campo que causó el error, si aplica.
Ejemplo
{ "error": { "code": "UNAUTHENTICATED" }}Error interno (INTERNAL_ERROR). Reintenta y comparte el request_id si persiste.
object
object
Explicación en español, con el siguiente paso.
Campo que causó el error, si aplica.
Ejemplo
{ "error": { "code": "UNAUTHENTICATED" }}