Ir al contenido

Inicio rápido

Esta es la forma habitual de integrar Invoise en un sitio o un backend: inicia sesión como persona, configura la tienda en el panel y deja que tu servidor llame a la API con una clave.

¿Vas a crear un agente autónomo sin navegador ni correo? Ve a Inicio de sesión de agentes en su lugar. Esta página asume que la configuración la hace una persona.

Abre platform.invoise.me e inicia sesión con un código por correo o con Google. En el primer inicio de sesión creas un comercio; un comercio nuevo aún no tiene tiendas, así que crea una.

Una tienda necesita un destinatario —la billetera que recibe tu dinero— o paga a tu billetera de Invoise. Puedes cambiar el destinatario y el delegado opcional más adelante; las facturas y direcciones ya creadas conservan los que tenían al crearse.

Crea una tienda sandbox si quieres practicar sin fondos reales. Consulta Sandbox.

En la tienda, crea una clave con los permisos read y write. Empieza con ivk_ y se muestra una sola vez, así que guárdala de inmediato.

Tu servidor la envía en cada solicitud:

Authorization: Bearer ivk_...

La clave funciona solo para una tienda y no puede tocar tu cuenta ni tu equipo. Consulta Claves de API.

Ventana de terminal
curl https://platform.invoise.me/api/v1/networks

Toma chain_id, la dirección del token y decimals de la respuesta. Elige una red habilitada para tu comercio y un token disponible. Los activos disponibles cambian; no fijes su lista en el código. Consulta Redes y tokens.

Los importes son cadenas de enteros en las unidades más pequeñas del token. Con 6 decimales, 10000000 son 10 tokens.

Define estas variables de entorno antes de la solicitud:

Variable Valor
CHAIN_ID El chain_id de la red elegida, obtenido de la API.
TOKEN_ADDRESS El tokens[].address del token elegido en esa red.
AMOUNT Importe de la factura en las unidades más pequeñas, calculado con tokens[].decimals.
Ventana de terminal
curl -X POST https://platform.invoise.me/api/v1/shops/{shop_id}/invoices \
-H 'Authorization: Bearer ivk_...' \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: 2a8b1f47-6d0c-4a1f-8f0b-4f2c9f3a77d2' \
-d "{\"chain_id\":${CHAIN_ID:?},\"token\":\"${TOKEN_ADDRESS:?}\",\"amount\":\"${AMOUNT:?}\"}"

Sustituye {shop_id} por el ID de tu tienda. Genera y guarda una Idempotency-Key única para esta factura; la clave de ejemplo es solo ilustrativa.

La respuesta es 202 Accepted: guarda su id como issuance_id. 202 significa que la creación se aceptó, no que el cliente haya pagado.

¿Quieres una dirección de recarga reutilizable sin importe fijo? Llama a /deposits en su lugar. Consulta Depósitos y facturas.

Ventana de terminal
curl https://platform.invoise.me/api/v1/shops/{shop_id}/issuances/{issuance_id} \
-H 'Authorization: Bearer ivk_...'

Haz sondeos hasta que llegue una dirección y luego envía al pagador al payment_url de esa respuesta. Esa es la página de pago alojada, con la dirección, un código QR y el estado en vivo ya integrados.

Una factura está pagada cuando su status es funded o settled. funded significa que se confirmó el importe requerido; settled significa que la factura se cerró en la cadena. Consulta el estado mediante la API y recibe notificaciones de cambios mediante webhooks.

Antes de tu primer pago, registra el endpoint de tu servidor:

Ventana de terminal
curl -X POST 'https://platform.invoise.me/api/v1/shops/{shop_id}/webhooks' \
-H 'Authorization: Bearer ivk_...' \
-H 'Idempotency-Key: <saved-webhook-key>' \
-H 'Content-Type: application/json' \
-d '{"url":"https://example.com/invoise","filters":["transfer","invoice","payout"]}'

Sustituye la URL por tu endpoint HTTPS público y guarda secret de la respuesta.

  1. Verifica Invoise-Signature con ese secreto y evita duplicados usando Invoise-Event-ID. Consulta el ejemplo de verificación de firma.
  2. transfer.confirmed informa de una transferencia entrante confirmada. Toma data.issuance_id y consulta la factura mediante el GET de abajo: una sola transferencia puede cubrir solo una parte del importe.
  3. Si status es funded o settled y cancelled_at es null, marca el pedido como pagado una sola vez. Por separado, payout.confirmed confirma la liquidación completa correspondiente al pago al destinatario.

Consulta la factura desde tu backend:

Ventana de terminal
curl 'https://platform.invoise.me/api/v1/shops/{shop_id}/issuances/{issuance_id}' \
-H 'Authorization: Bearer ivk_...'

Campos relevantes de la respuesta tras el pago:

{
"status": "funded",
"amount": "10000000",
"received": "10000000",
"cancelled_at": null
}

El importe completo de la factura está confirmado. Marca el pedido como pagado; otro GET o webhook no debe acreditarlo dos veces.

Con open, sigue esperando: el pago completo aún no ha llegado. Puedes sondear cada 3–5 segundos y espaciar más los sondeos si la espera se alarga. registering y reconciling tampoco significan éxito. Si cancelled_at está definido, gestiona por separado el pedido pagado y cancelado.

Consulta Estado de facturas y depósitos para ver todos los estados y el comportamiento específico de los depósitos.

Crear una factura o un depósito requiere Idempotency-Key. Conserva la clave: si una solicitud agota el tiempo de espera y no sabes si funcionó, envía la misma solicitud con la misma clave otra vez. Obtendrás el resultado original en lugar de una segunda factura. Consulta Idempotencia y errores.