ARCA {API}
Cobros

Generar el link de cobro

Genera (o devuelve) el link de pago de Mercado Pago de un comprobante emitido.

Devuelve el link de pago de Mercado Pago de un comprobante emitido, creándolo si todavía no existe.

Endpoint

POST /api/wsfe/comprobante/cobro

Requiere una API key con scope read_write: crea una preferencia en Mercado Pago.

Request

curl -X POST https://arca.api.com.ar/api/wsfe/comprobante/cobro \
  -H "Authorization: Bearer ak_TuSecretoAqui" \
  -H "Content-Type: application/json" \
  -d '{
    "environment": "produccion",
    "representada": "27111111118",
    "cbteTipo": 6,
    "ptoVta": 1,
    "cbteNro": 42
  }'

Parámetros

CampoTipoDescripción
environment"homologacion" | "produccion"Entorno del comprobante
representadastring (11 dígitos)CUIT representado que emitió
cbteTiponumberTipo de comprobante
ptoVtanumberPunto de venta
cbteNronumberNúmero de comprobante
regenerateboolean (opcional)Crea una preferencia nueva aunque ya haya link. Default false

El comprobante se identifica por la tupla completa —los cinco primeros campos—, igual que en PDF y en envío por correo electrónico. No usamos el identificador interno del comprobante: la API nunca lo expone.

Los cuatro desenlaces

El código HTTP es 200 en los cuatro casos. Lo que pasó viaja en el campo status del body. Un skipped no es un error del request —es "no correspondía generar el link"— y devolverlo como 4xx obligaría a distinguir "fallé" de "no correspondía" leyendo un mensaje. Chequeá status, no res.ok.

{
  "status": "created",
  "initPoint": "https://www.mercadopago.com.ar/checkout/v1/redirect?pref_id=123456789-abcd-..."
}

El cobro queda registrado como pendiente. initPoint es la URL que le pasás a tu cliente.

{
  "status": "exists",
  "initPoint": "https://www.mercadopago.com.ar/checkout/v1/redirect?pref_id=123456789-abcd-..."
}

No se creó una preferencia nueva: te devolvemos la que ya existía. Es el caso normal cuando emitiste con Mercado Pago conectado, porque el link se genera solo tras la emisión — ver El link no viaja en la respuesta de la emisión.

Pedir el link dos veces es seguro: no duplica el cobro ni le manda dos links distintos a tu cliente.

skipped — no correspondía generarlo

{
  "status": "skipped",
  "reason": "La cuenta no tiene Mercado Pago conectado.",
  "initPoint": null
}

reason es legible y podés mostrárselo a un humano tal cual. Los motivos posibles:

MotivoCómo se resuelve
La cuenta no tiene Mercado Pago conectado.Conectala desde el dashboard. Verificalo con GET /api/cobros/estado
Los cobros con Mercado Pago no están disponibles.La integración no está habilitada en este entorno. No es algo que puedas resolver vos
El comprobante no está aprobado: no hay nada que cobrar.El comprobante fue rechazado por ARCA (sin CAE). Emitilo de nuevo corrigiendo el rechazo
Mercado Pago sólo cobra en pesos; este comprobante está en DOL.No hay camino: cobralo por fuera
El comprobante no tiene un importe cobrable.El total es cero o no es un número válido. No hay nada que cobrar
El comprobante ya está pagado.Nada que hacer: consultá el estado
Entornos cruzadosVer Los entornos tienen que coincidir

failed — se intentó y falló

{
  "status": "failed",
  "error": "La conexión con Mercado Pago dejó de ser válida. Volvé a conectarla.",
  "initPoint": null
}

Se intentó crear la preferencia y no se pudo. Puede ser un problema transitorio de Mercado Pago —en cuyo caso reintentar más tarde alcanza— o que la autorización dejó de ser válida, que se arregla reconectando desde el dashboard. El texto de error distingue los dos casos.

El comprobante no queda en un estado raro: si no hubo link antes, sigue sin haberlo; si lo había, sigue siendo el mismo.

Regenerar el link

curl -X POST https://arca.api.com.ar/api/wsfe/comprobante/cobro \
  -H "Authorization: Bearer ak_TuSecretoAqui" \
  -H "Content-Type: application/json" \
  -d '{
    "environment": "produccion",
    "representada": "27111111118",
    "cbteTipo": 6,
    "ptoVta": 1,
    "cbteNro": 42,
    "regenerate": true
  }'

Con regenerate: true se crea una preferencia nueva aunque ya hubiera link, y la respuesta es created con un initPoint distinto.

Un comprobante tiene un solo cobro: el link nuevo reemplaza al anterior en tu cuenta. La preferencia vieja queda huérfana en Mercado Pago y su URL puede seguir andando un tiempo — si alguien la pagara igual, la conciliamos correctamente, porque la referencia al comprobante no cambia. Aun así, no repartas los dos links.

Un comprobante ya pagado ignora regenerate y devuelve skipped: no se puede volver a cobrar lo cobrado.

Errores

No consume cuota del plan. Queda registrado como consumo en el dashboard.

En esta página