# 144 Pay

> Pasarela de pago cripto sobre USDT en Polygon y BSC, sin custodia de claves del comercio. Soporta dos productos: COBROS (genera direcciones desechables, detecta el pago on-chain y distribuye según split configurado) y DISPERSIONES (payouts batch: envía a hasta 200 destinatarios en una sola transacción on-chain vía contrato Disperse propio, ahorrando ~50% de gas).

Lo importante para integrar:

- API REST documentada con OpenAPI 3.0
- Autenticación por API key (header `X-API-Key`) — misma para cobros y dispersiones
- Webhooks firmados con HMAC-SHA256
- Idempotency-Key opcional para crear cobros y dispersiones
- USDT en Polygon (6 decimales) y BSC (18 decimales) — decimales se manejan por (chain, token)
- Contratos Disperse desplegados en mainnet:
  - Polygon: 0xDaC2d1d17421116C6C82861d01c76DE0BcEb6981
  - BSC:     0x941628fee59787151841f87e1223db5b128704a6

## Documentación

- [API Reference (Redoc)](https://144pay.com/docs): documentación interactiva navegable
- [OpenAPI 3.0 Spec](https://144pay.com/openapi.json): especificación machine-readable
- [Landing comercial](https://144pay.com/): explicación funcional + ejemplos curl, Node y Python
- [Repositorio](https://github.com/rojasjuniore/144pay): código fuente del proyecto

## Endpoints de cobros (recibir pagos)

- POST https://144pay.com/api/v1/payments — crear cobro (devuelve depositAddress)
- GET https://144pay.com/api/v1/payments/:id — consultar estado
- GET https://144pay.com/api/v1/payments — listar cobros del comercio
- POST https://144pay.com/api/v1/payments/:id/webhook-retry — reintentar entrega de webhook

## Endpoints de dispersiones (enviar pagos batch)

- POST https://144pay.com/api/v1/dispersions — crear dispersión a N destinatarios; devuelve depositAddress y totalToDeposit (= totalAmount + fee). Cuando el comercio deposita ese total, la pasarela ejecuta el contrato Disperse y envía a todos los destinos en 1 tx.
- GET https://144pay.com/api/v1/dispersions/:id — consultar estado
- GET https://144pay.com/api/v1/dispersions — listar dispersiones del comercio

## Sistema

- GET https://144pay.com/api/v1/health — liveness, sin auth

## Webhooks

Cobros:
- payment.completed | payment.underpaid | payment.overpaid | payment.expired | payment.failed

Dispersiones:
- dispersion.deposit_received | dispersion.completed | dispersion.underpaid | dispersion.failed | dispersion.expired

Header `X-Signature: sha256=<hmac>` firmado con el `webhook_secret` del comercio.
At-least-once: tu endpoint debe tolerar duplicados.

## Optional

- [Sitemap](https://144pay.com/sitemap.xml)
- [Estado del servicio](https://144pay.com/api/v1/health)
