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/cobroRequiere 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
| Campo | Tipo | Descripción |
|---|---|---|
environment | "homologacion" | "produccion" | Entorno del comprobante |
representada | string (11 dígitos) | CUIT representado que emitió |
cbteTipo | number | Tipo de comprobante |
ptoVta | number | Punto de venta |
cbteNro | number | Número de comprobante |
regenerate | boolean (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.
created — se generó el link
{
"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.
exists — ya había link
{
"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:
| Motivo | Có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 cruzados | Ver 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.