Skip to content

Pagos

El recurso Pagos te permite registrar pagos sobre una venta existente y consultarlos. Es la forma de saldar una venta que quedó con balance pendiente o de registrar abonos posteriores.

Todas las rutas son relativas a la URL base de producción:

https://api-pos.zelta.dev/public/v1

INFO

La autenticación se hace con el header Authorization: Bearer <key> o X-API-Key: <key>, usando una llave con prefijo zpk_. Consulta para más detalles.

Registrar un pago

http
POST /payments

Registra un pago sobre una venta. Devuelve 201. Si el monto excede el balance pendiente de la venta, responde 409 (conflict).

Campos del cuerpo

CampoTipoRequeridoDescripción
saleIdstring (cuid2)ID de la venta. Es el saleId que devuelve .
paymentMethodstring (cuid2)ID del método de pago. Lo obtienes de .
amountnumberMonto del pago. Debe ser mayor que 0.
referencestringNoReferencia libre del pago (máx. 500 caracteres).

TIP

El saleId proviene de la respuesta de creación de una factura. Guárdalo si planeas registrar pagos en momentos distintos al de la venta (por ejemplo, ventas a crédito).

bash
curl -X POST "https://api-pos.zelta.dev/public/v1/payments" \
  -H "Authorization: Bearer zpk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "saleId": "sal_1a2b3c4d5e6f7g8h",
    "paymentMethod": "pm_2x9a8b7c6d5e4f3g",
    "amount": 59.20,
    "reference": "Transferencia ACH #88231"
  }'

Ejemplo JS

javascript
const res = await fetch('https://api-pos.zelta.dev/public/v1/payments', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${process.env.ZELTA_POS_API_KEY}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    saleId: 'sal_1a2b3c4d5e6f7g8h',
    paymentMethod: 'pm_2x9a8b7c6d5e4f3g',
    amount: 59.20,
    reference: 'Transferencia ACH #88231'
  })
});
const data = await res.json();

Ejemplo Py

python
import requests

res = requests.post(
    'https://api-pos.zelta.dev/public/v1/payments',
    headers={'Authorization': 'Bearer zpk_live_xxx', 'Content-Type': 'application/json'},
    json={
        'saleId': 'sal_1a2b3c4d5e6f7g8h',
        'paymentMethod': 'pm_2x9a8b7c6d5e4f3g',
        'amount': 59.20,
        'reference': 'Transferencia ACH #88231'
    }
)
data = res.json()

Respuesta

json
{
  "id": "pay_3c4d5e6f7g8h9i0j",
  "paymentMethodId": "pm_2x9a8b7c6d5e4f3g",
  "amount": "59.20",
  "reference": "Transferencia ACH #88231",
  "allocations": [
    { "orderId": "sal_1a2b3c4d5e6f7g8h", "amount": "59.20" }
  ],
  "date": "2026-06-30T14:25:00.000Z"
}
CampoTipoDescripción
idstringID del pago.
paymentMethodIdstringMétodo de pago usado.
amountstringMonto del pago.
referencestring | nullReferencia del pago.
allocationsarrayDistribución del pago. Cada elemento tiene orderId y amount.
datestringFecha del pago.

Listar pagos

http
GET /payments

Devuelve la lista de pagos en un envoltorio { "data": [ ... ] }. Soporta paginación y sincronización incremental (start, limit, updatedSince, from/to, metadata). Consulta la .

bash
curl "https://api-pos.zelta.dev/public/v1/payments?limit=30&metadata=true" \
  -H "Authorization: Bearer zpk_live_xxx"

Ejemplo JS

javascript
const res = await fetch('https://api-pos.zelta.dev/public/v1/payments?limit=30&metadata=true', {
  headers: { 'Authorization': `Bearer ${process.env.ZELTA_POS_API_KEY}` }
});
const data = await res.json();

Ejemplo Py

python
import requests

res = requests.get(
    'https://api-pos.zelta.dev/public/v1/payments',
    headers={'Authorization': 'Bearer zpk_live_xxx'},
    params={'limit': 30, 'metadata': 'true'}
)
data = res.json()
json
{
  "data": [
    {
      "id": "pay_3c4d5e6f7g8h9i0j",
      "paymentMethodId": "pm_2x9a8b7c6d5e4f3g",
      "amount": "59.20",
      "reference": "Transferencia ACH #88231",
      "allocations": [
        { "orderId": "sal_1a2b3c4d5e6f7g8h", "amount": "59.20" }
      ],
      "date": "2026-06-30T14:25:00.000Z"
    }
  ],
  "metadata": { "total": 1 }
}

Obtener un pago

http
GET /payments/{id}

Devuelve un pago como objeto directo. Responde 404 si no existe.

bash
curl "https://api-pos.zelta.dev/public/v1/payments/pay_3c4d5e6f7g8h9i0j" \
  -H "Authorization: Bearer zpk_live_xxx"

Ejemplo JS

javascript
const res = await fetch('https://api-pos.zelta.dev/public/v1/payments/pay_3c4d5e6f7g8h9i0j', {
  headers: { 'Authorization': `Bearer ${process.env.ZELTA_POS_API_KEY}` }
});
const data = await res.json();

Ejemplo Py

python
import requests

res = requests.get(
    'https://api-pos.zelta.dev/public/v1/payments/pay_3c4d5e6f7g8h9i0j',
    headers={'Authorization': 'Bearer zpk_live_xxx'}
)
data = res.json()

Problemas comunes

CódigoHTTPCausa probable
validation_error400Falta saleId, paymentMethod o amount, o el monto es ≤ 0.
unauthorized401API key ausente o inválida.
forbidden403La key no tiene acceso al recurso solicitado.
not_found404El saleId, el paymentMethod o el pago consultado no existen.
conflict409El monto excede el balance pendiente de la venta.
rate_limited429Se superó el límite de peticiones.
internal_error500Error interno del servidor.

Siguientes pasos

  • — crea la venta de la que obtienes el saleId.
  • — descubre los id de los métodos de pago.
  • — consulta los reembolsos asociados a tus ventas.

Documentación oficial de Zelta