API Technical Docs

Mantente al día con las innovaciones tecnológicas que están transformando el mercado.

Diferencias y devoluciones

Estado documental: Contrato propuesto. Las rutas, campos, límites y tiempos pasan a estado confirmado solo después de su implementación y verificación.

Objetivo: Definir cobros complementarios por faltantes y seguimiento de devoluciones ejecutadas por la empresa.

Diferencias de monto

Audiencia Método Ruta propuesta Uso Idempotencia Eventos o callbacks relacionados
Integración GET /v1/payment-orders/{id}/amount-difference Consultar diferencia. No Ninguno
Integración POST /v1/payment-orders/{id}/supplemental-orders Crear cobro por faltante. Obligatoria payment.supplemental_order_created
Integración GET /v1/payment-orders/{id}/supplemental-orders Listar órdenes vinculadas. No Ninguno
Administración POST /v1/amount-differences/{difference_id}/accept Aceptar diferencia según política. Obligatoria payment.amount_difference_accepted
Administración POST /v1/amount-differences/{difference_id}/resolve Registrar resolución. Obligatoria payment.amount_difference_resolved

Pago incompleto

{
  "expected_amount": "85.50",
  "received_amount": "80.00",
  "difference_amount": "5.50",
  "difference_type": "underpayment",
  "currency": "PEN"
}

Crear orden complementaria

POST /v1/payment-orders/ypt_01JXYZ/supplemental-orders
Idempotency-Key: 53bfc29e-d79f-45df-9428-1a77976e01b5
{
  "reason": "underpayment",
  "amount": "5.50",
  "currency": "PEN"
}
{
  "parent_yupy_transaction_id": "ypt_01JXYZ",
  "supplemental_yupy_transaction_id": "ypt_01JNEW",
  "amount": "5.50",
  "state": {
    "financial": "awaiting_payment"
  },
  "request_id": "req_01JXYZ"
}

Pago en exceso

Un exceso puede originar un caso de devolución. YUPY no devuelve el dinero.

Responsabilidad: YUPY identifica, organiza, alerta y da seguimiento. La empresa revisa, decide, ejecuta la devolución y registra la evidencia.

Devoluciones

Audiencia Método Ruta propuesta Uso Idempotencia Eventos o callbacks relacionados
Integración POST /v1/payment-orders/{id}/refund-cases Crear caso vinculado. Obligatoria refund.identified
Administración GET /v1/refund-cases Listar casos. No Ninguno
Administración GET /v1/refund-cases/{refund_case_id} Consultar caso. No Ninguno
Administración POST /v1/refund-cases/{id}/request Registrar solicitud. Obligatoria refund.requested
Administración POST /v1/refund-cases/{id}/approve Aprobar internamente. Obligatoria refund.approved
Administración POST /v1/refund-cases/{id}/reject Rechazar con motivo. Obligatoria refund.rejected
Administración POST /v1/refund-cases/{id}/execution-attempts Registrar ejecución realizada por la empresa. Obligatoria refund.completed o refund.execution_failed
Administración GET /v1/refund-cases/{id}/execution-attempts Listar intentos. No Ninguno
Administración POST /v1/refund-cases/{id}/cancel Cancelar caso cuando proceda. Obligatoria refund.cancelled
Administración GET /v1/refund-cases/{id}/history Consultar auditoría. No Ninguno

Crear caso de devolución

POST /v1/payment-orders/ypt_01JXYZ/refund-cases
{
  "reason": "overpayment",
  "amount_to_refund": "4.50",
  "currency": "PEN"
}
{
  "refund_case_id": "rfc_01JXYZ",
  "status": "refund_identified",
  "refund_executor": "client_company",
  "request_id": "req_01JXYZ"
}

Registrar ejecución exitosa

POST /v1/refund-cases/rfc_01JXYZ/execution-attempts
{
  "result": "success",
  "amount": "4.50",
  "currency": "PEN",
  "executed_at": "2026-07-20T16:10:00-05:00",
  "external_reference": "DEV-884120",
  "evidence_id": "evi_ref_01JXYZ"
}
{
  "refund_case_id": "rfc_01JXYZ",
  "status": "refund_completed",
  "request_id": "req_01JXYZ"
}

Registrar intento fallido

{
  "result": "failed",
  "amount": "4.50",
  "currency": "PEN",
  "failure_reason": "recipient_data_not_available"
}

Estados de devolución

refund_identified
refund_requested
refund_under_review
refund_approved
refund_pending_execution
refund_completed
refund_rejected
refund_failed
refund_cancelled

refund_approved no significa que el dinero ya fue devuelto.

Errores principales

HTTP Código Descripción
404 refund_case_not_found Caso inexistente.
422 refund_amount_exceeds_received Monto superior al recibido o disponible.
422 refund_execution_evidence_required Falta evidencia de ejecución.
409 refund_already_completed La devolución ya fue registrada.
409 invalid_state_transition Acción incompatible con el estado.