Ancla Pay
Obtener claves de API

Guías

Facturas

Una factura es una solicitud de pago de un precio en fiat que se paga en cripto, con su propia página de pago y su ciclo de vida.

Ciclo de vida

newpendingconfirmingpaid
pendingpartialconfirmingpaid / overpaid
new / pendingexpired / cancelled
  • newCreada; el pagador aún no eligió moneda (crypto es null).
  • pendingMoneda fijada: la dirección, el importe exacto y la tasa quedan fijos hasta expires_at.
  • partialLlegó menos del importe. El pagador puede enviar el resto antes de que caduque.
  • confirmingLlegó el importe completo y espera las confirmaciones necesarias.
  • paidPagada y confirmada. Completa el pedido.
  • overpaidPagada con más de lo pedido. También es final: completa el pedido y devuelve la diferencia si quieres.
  • expiredSe acabó el tiempo sin el importe completo. Los pagos tardíos se siguen detectando durante un periodo de gracia.
  • cancelledCancelada por ti (API o panel) o por el pagador antes de pagar.
Considera correctas paid y overpaid. Para decidir que un pedido está pagado usa los webhooks (o GET /invoices/{id}), nunca la redirección a success_url.

Fija la moneda desde tu servidor

Si ya sabes cómo pagará el cliente, envía asset. La respuesta incluye crypto.address, crypto.amount y una crypto.uri de pago, para que muestres tu propia pantalla de pago. GET /currencies lista los activos que tu workspace puede recibir.

curl -X POST 'https://anclapay.com/api/v1/invoices' \
  -H 'Authorization: Bearer ancla_test_••••' \
  -H 'Idempotency-Key: 6f1c2a0e-order-1001' \
  -H 'Content-Type: application/json' \
  -d '{
  "amount": "49.90",
  "currency": "EUR",
  "asset": "usdt_tron",
  "order_id": "SO-1002",
  "metadata": {
    "customer_id": "c_381"
  }
}'

Importes

Los importes fiat son objetos como { "value": "49.90", "currency": "EUR", "minor": 4990 }. Los importes cripto llegan como strings decimales más amount_base_units (satoshis, wei…) como string entero: nunca los conviertas a números de coma flotante.

invoice.crypto
{
  "asset": "usdt_tron",
  "network": "tron",
  "symbol": "USDT",
  "amount": "53.47",
  "amount_base_units": "53470000",
  "decimals": 6,
  "address": "TJYeasTPa6gpEEfYqeoTBpFkqZ4jhy5zj7",
  "required_confirmations": 19
}

Listados y paginación

Los listados devuelven lo más reciente primero con limit (1–100, por defecto 20). Cuando meta.has_more es true, envía meta.next_cursor como cursor para obtener la página siguiente. Filtra las facturas por status, order_id, created_after y created_before.

cURL
curl 'https://anclapay.com/api/v1/invoices?status=paid&limit=50' \
  -H 'Authorization: Bearer ancla_test_••••'