Desarrolladores · Documentación de la API

Cobros

Cuotas, datos de pago, segunda copia y resumen financiero del alumno por la API de EduPay.

Los cobros de EduPay son las cuotas de cada matrícula. Cada cuota tiene valor, vencimiento, forma de pago y, mientras se puede pagar, los datos para pagar: línea digitable y enlace del boleto, PIX copiar y pegar o enlace de pago con tarjeta.

Consultar cuotas

GET /installments (billing:read) acepta enrollment_id, student_id, status, período de vencimiento (due_from, due_to) y período de pago (paid_from, paid_to), todos en AAAA-MM-DD, además de updated_since.

curl "https://edupay.estudiosite.com/api/v1/installments?status=overdue&due_to=2026-10-31&limit=100" \
  -H "Authorization: Bearer $EDUPAY_KEY"

GET /installments/{id} trae una cuota y, en el caso del PIX, también la imagen del código QR en payment.pix_qr_code_base64 (solo en el detalle, para que la lista no quede pesada).

Estados de la cuota

status Significa ¿Tiene payment?
open Pendiente, todavía no venció Sí, si el cobro ya se emitió
overdue Venció sin pago Sí
outstanding Deuda que quedó de una matrícula cancelada Sí
paid Pagada (por el banco, por la notaría o registrada manualmente por la escuela) No
cancelled Cancelada (incluida la que se reemplazó por una segunda copia) No
waived Dispensada por la escuela No

El objeto payment solo aparece mientras la cuota se puede pagar:

"payment": {
  "barcode": "23793.38128 60000.000003 ...",
  "boleto_url": "https://...",
  "pix_copy_paste": "00020126...",
  "payment_url": "https://checkout.stripe.com/...",
  "expires_at": "2026-11-12T02:59:59Z"
}

Un campo sin valor viene en null: un boleto no tiene payment_url, un enlace de tarjeta no tiene barcode. Una cuota pendiente todavía sin cobro emitido (el boleto y el PIX salen pocos días antes del vencimiento) viene con los campos en null — consulte de nuevo más cerca del vencimiento o espere el aviso installment.charge_issued.

Valores en centavos, con la moneda en currency. paid_amount es el valor que realmente entró.

Resumen financiero del alumno

GET /students/{id}/summary (billing:read) suma todo lo que el alumno todavía puede pagar, en todas las matrículas, incluida la deuda de una matrícula cancelada:

{
  "data": {
    "student_id": 532, "currency": "BRL",
    "open_installments": 3, "overdue_installments": 1,
    "amount_due": 135000, "amount_overdue": 45000,
    "next_installment": { "id": 9813, "due_date": "2026-11-10", "amount": 45000 },
    "active_enrollments": 1, "contract_status": "signed"
  }
}

Útil para mostrar la situación del alumno en otro sistema (área del alumno, atención, CRM) sin descargar todas las cuotas.

Segunda copia

POST /installments/{id}/second-copy (billing:write) hace lo mismo que el botón del panel: cancela la cuota actual junto con el cobro en el banco y crea otra, con un cobro nuevo y un e-mail al alumno. La nueva trae en replaces_installment_id el número de la anterior.

curl -X POST https://edupay.estudiosite.com/api/v1/installments/9813/second-copy \
  -H "Authorization: Bearer $EDUPAY_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 2via-9813-2026-11-20" \
  -d '{"due_date": "2026-11-20"}'
  • Sin due_date, la segunda copia vence en 3 días. La fecha vale de hoy en adelante, en la zona horaria de la escuela.
  • El valor no cambia por la API.
  • Solo cuotas pendientes, vencidas o en deuda (409 con code installment_not_payable en las demás).
  • Un boleto todavía dentro de su validez no se puede cancelar en el banco: 409 con code boleto_still_valid, y el motivo en detail.
  • Escuela sin cuenta de cobro conectada: 409 con code gateway_not_connected.
  • Si el banco rechaza, la respuesta es 502 con code gateway_error. Si viene installment_id, la segunda copia se creó y su cobro se emite de nuevo automáticamente.

Saber del pago en el momento

En lugar de consultar las cuotas de vez en cuando, registre una dirección para el aviso installment.paid. Llega segundos después de la confirmación, venga del banco, de la notaría o de un registro manual de la escuela. Vea Avisos automáticos.