Saltar al contenido principal

Guía de Pagos

Esta guía recorre el flujo completo para pagar a un beneficiario: crear el beneficiario, crear un lote de pago, enviarlo para aprobación y luego pasar a un humano en el paso maker/checker. Todos los ejemplos usan https://api.paguspay.com/api como base URL — reemplácela por el servidor de desarrollo para pruebas.

1. Crear un beneficiario

POST /v1/recipients requiere el scope write:recipients. PagusPay detecta el tipo de clave Pix (CPF, CNPJ, email, teléfono o EVP) en el servidor.

curl -X POST https://api.paguspay.com/api/v1/recipients \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Maria Silva",
"email": "maria@example.com",
"pixKey": "maria@example.com",
"documentNumber": "12345678900"
}'

Respuesta (201 Created):

{
"id": 501,
"organizationId": 12,
"name": "Maria Silva",
"email": "maria@example.com",
"pixKeyType": "email",
"pixKey": "maria@example.com",
"documentNumber": "12345678900",
"bankName": null,
"accountOwnerName": "Maria Silva",
"status": "active",
"failureReason": null,
"createdBy": 3,
"createdAt": "2026-07-11T10:00:00.000Z",
"updatedAt": "2026-07-11T10:00:00.000Z"
}

Si la clave Pix falla la validación, el beneficiario se crea igualmente en local, pero vuelve con status: "failed" y un failureReason — revise la respuesta 422.

2. Crear un lote de pago

POST /v1/payout-batches requiere write:payouts. Esto crea el lote en draftno lo envía para aprobación.

curl -X POST https://api.paguspay.com/api/v1/payout-batches \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"label": "Pagos a contratistas - Julio 2026",
"items": [
{ "recipientId": 501, "amountBrl": "1500.00" }
]
}'

Respuesta (201 Created):

{
"id": 88,
"organizationId": 12,
"label": "Pagos a contratistas - Julio 2026",
"status": "draft",
"createdBy": 3,
"approvedBy": null,
"executedAt": null,
"totalBrlCents": 150000,
"createdAt": "2026-07-11T10:05:00.000Z",
"items": [
{
"id": 900,
"batchId": 88,
"recipientId": 501,
"amountBrlCents": 150000,
"status": "draft",
"failureReason": null,
"createdAt": "2026-07-11T10:05:00.000Z",
"updatedAt": "2026-07-11T10:05:00.000Z"
}
]
}

Los ítems inválidos (beneficiario ausente, valor fuera de rango) devuelven 400 con errores por ítem, en lugar de persistir un lote parcial.

3. Enviar para aprobación

POST /v1/payout-batches/{id}/submit requiere write:payouts. Esto transiciona el lote de draft a pending_approval.

curl -X POST https://api.paguspay.com/api/v1/payout-batches/88/submit \
-H "Authorization: Bearer YOUR_API_TOKEN"

Respuesta (200 OK):

{
"id": 88,
"organizationId": 12,
"label": "Pagos a contratistas - Julio 2026",
"status": "pending_approval",
"createdBy": 3,
"approvedBy": null,
"executedAt": null,
"totalBrlCents": 150000,
"createdAt": "2026-07-11T10:05:00.000Z"
}

4. Aprobar en el panel (paso humano)

Aquí es donde la API se detiene. Una persona con permiso de aprobación inicia sesión en el panel de PagusPay, revisa el lote (beneficiarios, montos, total) y aprueba con un código 2FA enviado por email. Una vez aprobado, el lote avanza a approvedexecutingcompleted (o completed_with_errors si algún ítem individual falla en el riel Pix).

No existe un endpoint approve, reject o execute — vea la Introducción para entender por qué.

Verificar el estado

Consulte GET /v1/payout-batches/{id} (read:payouts) para seguir el lote en su ciclo de vida:

curl -H "Authorization: Bearer YOUR_API_TOKEN" \
https://api.paguspay.com/api/v1/payout-batches/88

status avanza por: draftpending_approvalapprovedexecutingcompleted | completed_with_errors | cancelled.

Vea la Referencia de la API para los esquemas completos de solicitud/respuesta.