Representación de Contracargos a través de API
API de Evidencia de Contracargos
Con esta API puedes consultar qué evidencia requiere un contracargo y subir la
documentación para representarlo, es decir, para defender la disputa ante el banco.
La evidencia se sube en lote (batch): en una sola petición envías todos los
tipos de evidencia requeridos. Cuando la carga es exitosa, el contracargo pasa
automáticamente al estado pending_review.
Base URL:
https://api.conekta.io
Autenticación
Todas las peticiones usan HTTP Basic Auth. Envía tu llave privada (Private API
Key) como usuario y deja la contraseña vacía.
Authorization: Basic base64(API_KEY:)
curl -u key_xxxxxxxxx: https://api.conekta.io/...El flag
-u key_xxxxxxxxx:de cURL genera el headerAuthorization: Basic ...
(con base64) automáticamente. Los dos puntos finales indican contraseña vacía.
Si envías la petición sin credenciales válidas, recibirás un 401 Unauthorized.
IMPORTANTEPor seguridad de tu negocio, no compartas tu llave privada ni la expongas en
código del lado del cliente.
Tipos de evidencia
Cada contracargo exige un conjunto de tipos de evidencia. Algunos son
obligatorios (required: true) y otros opcionales. La lista exacta puede
variar según el adquirente y el motivo (reason code) del contracargo, por lo que
siempre debes consultarla con GET /evidence-types antes de subir.
| Tipo | Descripción |
|---|---|
order_details | Detalle del pedido / orden |
terms_and_conditions | Términos y condiciones aceptados |
cardholder_information | Información del tarjetahabiente |
proof_invalidate_claim | Prueba que invalida la disputa |
charge_information | Información del cargo |
contract | Contrato (opcional) |
receipt_of_shipment | Comprobante de envío/entrega (opcional) |
internal_validations | Validaciones internas (opcional) |
Algunos archivos los genera el sistema automáticamente y ya aparecen en
GET /filesantes de que subas algo (típicamentecharge_information). Esos
archivos cuentan para cumplir el requisito: no necesitas reenviar ese tipo en
el batch.
Endpoints
| # | Método | Ruta | Para qué lo usas |
|---|---|---|---|
| 1 | GET | /charges/{charge_id}/chargebacks/{chargeback_id}/evidence-types | Conocer los tipos requeridos/opcionales |
| 2 | GET | /charges/{charge_id}/chargebacks/{chargeback_id}/files | Listar los archivos ya cargados |
| 3 | GET | /charges/{charge_id}/chargebacks/{chargeback_id}/files/{file_id} | Obtener metadata + URL de un archivo |
| 4 | POST | /charges/{charge_id}/chargebacks/{chargeback_id}/files/batch | Subir evidencia (recomendado) |
| 5 | POST | /charges/{charge_id}/chargebacks/{chargeback_id}/files | Subir un archivo individual |
Parámetros de ruta (todos los endpoints)
| Parámetro | Tipo | Descripción |
|---|---|---|
charge_id | string | ID del cargo |
chargeback_id | string | ID del contracargo |
1. Obtener tipos de evidencia
Obtén la lista de tipos de evidencia que aplican al contracargo. Cada tipo indica si
es obligatorio y qué formatos de archivo acepta.
Llama este endpoint antes de subir evidencia para saber exactamente qué tipos
debes incluir.
GET /charges/{charge_id}/chargebacks/{chargeback_id}/evidence-types
Ejemplo
curl -X GET \
"https://api.conekta.io/charges/{charge_id}/chargebacks/{chargeback_id}/evidence-types" \
-u key_xxxxxxxxx:Response 200 OK
200 OKRecibes un arreglo de objetos de tipo de evidencia.
[
{ "type": "order_details", "permit_formats": ["pdf"], "required": true },
{ "type": "terms_and_conditions", "permit_formats": ["pdf"], "required": true },
{ "type": "cardholder_information", "permit_formats": ["pdf"], "required": true },
{ "type": "proof_invalidate_claim", "permit_formats": ["pdf"], "required": true },
{ "type": "charge_information", "permit_formats": ["pdf"], "required": true },
{ "type": "contract", "permit_formats": ["pdf"], "required": false },
{ "type": "receipt_of_shipment", "permit_formats": ["pdf"], "required": false },
{ "type": "internal_validations", "permit_formats": ["pdf"], "required": false }
]| Campo | Tipo | Descripción |
|---|---|---|
type | string | Identificador del tipo. Úsalo como nombre del campo al subir en el batch. |
permit_formats | string[] | Extensiones que acepta ese tipo (ej. "pdf", "jpeg", "png"). |
required | boolean | true si debes incluirlo en el batch; false si es opcional. |
2. Listar archivos del contracargo
Lista todos los archivos ya asociados al contracargo, incluidos los que genera el
sistema automáticamente.
GET /charges/{charge_id}/chargebacks/{chargeback_id}/files
Ejemplo
curl -X GET \
"https://api.conekta.io/charges/{charge_id}/chargebacks/{chargeback_id}/files" \
-u key_xxxxxxxxx:Response 200 OK
200 OKRecibes un arreglo directo de archivos (sin envoltura data).
[
{
"id": "chbkf_31HEQaaYvKUw8K3qY",
"name": "20260602100000000000004.pdf",
"created_at": "2026-06-25T14:29:45Z",
"evidence_type": "charge_information"
}
]| Campo | Tipo | Descripción |
|---|---|---|
id | string | Identificador del archivo (chbkf_...). |
name | string | Nombre original del archivo. |
created_at | string | Fecha de carga en ISO 8601 UTC. |
evidence_type | string | Tipo de evidencia asociado. |
3. Obtener un archivo específico
Obtén la metadata de un archivo más una URL de descarga prefirmada.
GET /charges/{charge_id}/chargebacks/{chargeback_id}/files/{file_id}
Ejemplo
curl -X GET \
"https://api.conekta.io/charges/{charge_id}/chargebacks/{chargeback_id}/files/{file_id}" \
-u key_xxxxxxxxx:Response 200 OK
200 OK{
"id": "chbkf_31HEQaaYvKUw8K3qY",
"name": "20260602100000000000004.pdf",
"created_at": "2026-06-25T14:29:45Z",
"evidence_type": "charge_information",
"url": "https://.../evidence/...?X-Amz-Algorithm=...&X-Amz-Expires=900&X-Amz-Signature=..."
}
El campourles un enlace prefirmado de almacenamiento (S3) y expira en
minutos. Descarga el archivo apenas lo obtengas; no lo guardes ni lo compartascomo permanente. Si expira, vuelve a llamar este endpoint para generar uno nuevo.
4. Subir evidencia en lote (batch) — recomendado
Sube uno o más archivos de evidencia en una sola petición. Todos los tipos
marcados como required en GET /evidence-types deben estar presentes —ya sea en
este batch o por un archivo previo en GET /files— de lo contrario la petición se
rechaza con un 422.
Cuando la carga es exitosa, el contracargo pasa automáticamente al estado
pending_review.
POST /charges/{charge_id}/chargebacks/{chargeback_id}/files/batch
Petición
- Content-Type:
multipart/form-data - El nombre de cada campo del formulario debe coincidir con un
typede
GET /evidence-types. - Puedes enviar exactamente un archivo por tipo de evidencia.
Restricciones de archivo
| Restricción | Límite |
|---|---|
| Máx. archivos | 10 por petición |
| Máx. tamaño por archivo | 2 MB |
| Máx. body total | 20 MB |
| Formatos aceptados | Según permit_formats del tipo (ej. pdf, jpeg, png) |
IMPORTANTEEl tipo de archivo se valida por contenido, no por extensión. Asegúrate de que
el contenido del archivo coincida con el MIME type que declaras.
Ejemplo
curl -X POST \
"https://api.conekta.io/charges/{charge_id}/chargebacks/{chargeback_id}/files/batch" \
-u key_xxxxxxxxx: \
-F "order_details=@order_details.pdf;type=application/pdf" \
-F "[email protected];type=application/pdf" \
-F "[email protected];type=application/pdf" \
-F "[email protected];type=application/pdf"En el ejemplo se omite
charge_informationporque ya existía como archivo
generado automáticamente en el contracargo. Por eso el batch se acepta aunque no
reenvíes ese tipo.
Response 200 OK
200 OKRecibes la lista de archivos subidos, bajo la clave files.
{
"files": [
{
"id": "chbkf_31HEk8nqQr6uPuzq4",
"name": "terms.pdf",
"created_at": "2026-06-25T14:55:22.976Z",
"evidence_type": "terms_and_conditions",
"url": "https://.../evidence/terms.pdf?X-Amz-Expires=...&X-Amz-Signature=..."
}
]
}| Campo | Tipo | Descripción |
|---|---|---|
files | object[] | Archivos subidos. |
files[].id | string | Identificador único del archivo (chbkf_...). |
files[].name | string | Nombre original del archivo. |
files[].created_at | string | Fecha de carga en ISO 8601 UTC. |
files[].evidence_type | string | Tipo de evidencia asociado. |
files[].url | string | URL prefirmada de descarga (expira en minutos). |
Errores
| Status | Descripción |
|---|---|
400 | Parámetros faltantes o inválidos, formato o tamaño de archivo incorrecto, tipo de evidencia duplicado, o el contracargo no está en estado action_required (p. ej. ya está en pending_review). |
401 | Token de autenticación faltante o inválido. |
422 | Falta uno o más tipos de evidencia obligatorios en el batch. |
500 | Error inesperado del servidor. |
Ejemplo 422 — faltan tipos obligatorios
422 — faltan tipos obligatoriosCuando falta evidencia obligatoria, el response te indica qué tipos faltan para que
puedas pedírselos a tu cliente.
{
"object": "error",
"type": "resource_error",
"details": [
{
"code": "conekta.errors.business.chargebacks.missing_mandatory_evidence_types",
"message": "The following mandatory evidence types are missing: cardholder_information, charge_information",
"param": null
}
]
}5. Subir un archivo individual
Sube un solo archivo de evidencia. Te sirve para casos puntuales, pero para la
representación te recomendamos el batch (#4), ya que valida en una sola operación
que estén todos los tipos obligatorios.
POST /charges/{charge_id}/chargebacks/{chargeback_id}/files
Petición
- Content-Type:
multipart/form-data
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
type | string | Sí | Tipo de evidencia (uno de GET /evidence-types). |
file | file | Sí | Archivo de evidencia. |
Ejemplo
curl -X POST \
"https://api.conekta.io/charges/{charge_id}/chargebacks/{chargeback_id}/files" \
-u key_xxxxxxxxx: \
-F "type=order_details" \
-F "file=@order_details.pdf;type=application/pdf"Igual que el batch, solo procede si el contracargo está en estado
action_required. Si ya está enpending_review, recibirás un400
(conekta.errors.business.chargebacks.cannot_process).
Flujo recomendado
1. GET /evidence-types → Conoce los tipos obligatorios y opcionales del contracargo
2. GET /files → Revisa los archivos ya adjuntos (incluye los automáticos)
3. Cruza las listas → Quita de los requeridos los tipos ya cubiertos
4. Reúne los archivos → Solo de los tipos requeridos que aún faltan
5. POST /files/batch → Sube todo en una sola petición
Si te saltas el paso 2 puedes recibir un 400 por tipo de evidencia duplicado,
ya que algunos archivos (p. ej. charge_information) los genera el sistema antes de
que subas algo.
Formato de errores
Todos los errores siguen el envelope estándar de Conekta:
{
"object": "error",
"log_id": "6a3d3ec723a11a001abb2dc1",
"type": "<error_type>",
"details": [
{
"code": "<error_code>",
"message": "<mensaje_legible>",
"param": "<campo_si_aplica>"
}
]
}El campo message se localiza según el header Accept-Language. El campo code
siempre viene en inglés.
Buenas prácticas para tu evidencia
Para mejorar tu probabilidad de ganar la disputa, te recomendamos:
- Incluir comprobante de entrega con firma.
- Mostrar la IP address o los datos del dispositivo.
- Adjuntar la confirmación de compra que enviaste a tu cliente.
- Incluir los términos y condiciones aceptados.
- Adjuntar la comunicación con tu cliente.

