Saltearse al contenido

Lista los medios de pago de un cliente

GET
/v1/pagos/clientes/{clienteId}/tarjetas

Tarjetas enroladas del cliente. Host Factura es la fuente de verdad del enrolamiento.

Nunca devuelve un PAN, un CVV ni el token de la tarjeta (que además es de un solo uso y no sirve para cobrar): el identificador estable de una tarjeta es mascara + brandCode, y es lo que se usa en POST /v1/pagos/cobrar a través del id del medio.

recurringEligible: false significa que esa tarjeta no sirve para un cobro desatendido aunque esté activa: filtrá con soloElegiblesRecurrente=true antes de ofrecerla para una suscripción.

Alcance requerido: pagos:tarjetas o pagos:leer. Si la credencial no lo tiene, la respuesta es 403 API_ALCANCE_INSUFICIENTE con la lista en error.requerido. Las credenciales creadas antes del modelo de alcances (alcances: null) conservan acceso total.

La empresa sale de la credencial. No hay ningún parámetro ni campo de cuerpo que la elija: cada API_KEY opera sobre su propia EFacturaCuenta. La ÚNICA excepción es la cabecera x-cuenta-id de una credencial de revendedor, que apunta a una subcuenta de su cartera. Si integrás empresas que no son de tu cartera, usá una API_KEY por empresa.

clienteId
required
string format: uuid
soloActivas

Booleano de query: true/false/1/0

string
Allowed values: 0 1 true false

Booleano de query: true/false/1/0

soloElegiblesRecurrente

true deja sólo las tarjetas que sirven para cobro desatendido. Es el filtro que hay que usar antes de ofrecer una tarjeta para una suscripción.

string
Allowed values: 0 1 true false

true deja sólo las tarjetas que sirven para cobro desatendido. Es el filtro que hay que usar antes de ofrecer una tarjeta para una suscripción.

x-cuenta-id
string format: uuid
Ejemplo
0199d1b0-0000-7000-8000-000000000000

Sólo para credenciales de cuenta proveedora (revendedor). UUID de la subcuenta de la cartera sobre la que se quiere operar: la cuenta efectiva del request pasa a ser esa.

Una credencial que no es de proveedor, o una subcuenta que no está en su cartera, recibe 403 API_CUENTA_FUERA_DE_CARTERA. Sin la cabecera, la cuenta es siempre la de la credencial.

x-branch-id
string format: uuid

Sucursal contra la que operar, cuando la credencial es global. Si la credencial está fijada a una sucursal y esta cabecera indica otra, la respuesta es 403 API_ACCESS_BRANCH_MISMATCH. Sin la cabecera se asume la casa central.

x-point-id
string format: uuid

Punto de emisión dentro de la sucursal resuelta. Obligatorio cuando la sucursal tiene 2 o más puntos activos (400 PUNTO_EMISION_REQUERIDO si falta); con uno solo se selecciona automáticamente.

Tarjetas del cliente

object
Ejemplos
{
"data": [
{
"id": "5e6f7a8b-9c0d-1e2f-3a4b-5c6d7e8f9a0b",
"clienteId": "1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
"mascara": "411111******1111",
"brandCode": "VI",
"brand": "Visa",
"dueDate": "12/29",
"recurringEligible": true,
"activo": true
}
],
"meta": {
"total": 1
}
}

No autenticado. La API_KEY no fue enviada, no es válida o la credencial está desactivada.

Códigos posibles: API_AUTH_HEADER_MISSING, API_AUTH_HEADER_INVALID, API_ACCESS_INVALID.

object
error
required
object
code
required

Identificador estable del error en SCREAMING_SNAKE_CASE

string
message
required

Mensaje legible en español. No parsearlo: puede cambiar

string
details
Any of:
object
requerido

Sólo en 403 API_ALCANCE_INSUFICIENTE: alcances que habilitan la operación

Array<string>
Allowed values: cfe:emitir cfe:leer recibidos:leer consultas clientes:leer clientes:escribir pagos:leer pagos:cobrar pagos:tarjetas pagos:suscripciones pagos:configurar webhooks:gestionar
requestId

UUID de correlación; mismo valor que el header X-Request-ID

string format: uuid
Ejemplos

Falta header Authorization

{
"error": {
"code": "API_AUTH_HEADER_MISSING",
"message": "Se esperaba la cabecera Authorization con esquema Bearer"
},
"requestId": "5b2c7c8a-1f6e-4d29-9a0b-7c3a8d1e2f4c"
}

El módulo de cobros no está habilitado para esta cuenta, o la credencial no tiene el alcance que la operación exige. Son dos cosas distintas y se corrigen distinto:

CodeQué pasóCómo se corrige
PAGOS_NO_HABILITADOLa cuenta no tiene el módulo de cobrosEs una habilitación comercial: la hace administración, no se activa desde la API
API_ALCANCE_INSUFICIENTELa credencial no tiene el alcance (va en error.requerido)Editar la credencial en Integraciones → API
API_CUENTA_FUERA_DE_CARTERAx-cuenta-id apunta a una cuenta ajena a la carteraRevisar el UUID de la subcuenta

Ninguno se arregla reintentando.

object
error
required
object
code
required

Identificador estable del error en SCREAMING_SNAKE_CASE

string
message
required

Mensaje legible en español. No parsearlo: puede cambiar

string
details
Any of:
object
requerido

Sólo en 403 API_ALCANCE_INSUFICIENTE: alcances que habilitan la operación

Array<string>
Allowed values: cfe:emitir cfe:leer recibidos:leer consultas clientes:leer clientes:escribir pagos:leer pagos:cobrar pagos:tarjetas pagos:suscripciones pagos:configurar webhooks:gestionar
requestId

UUID de correlación; mismo valor que el header X-Request-ID

string format: uuid
Ejemplos

La cuenta no tiene el módulo de cobros

{
"error": {
"code": "PAGOS_NO_HABILITADO",
"message": "El módulo de pagos no está habilitado para esta cuenta. Es una habilitación comercial: la hace administración, no se activa desde la API."
},
"requestId": "4c5d6e7f-8a9b-4c0d-1e2f-3a4b5c6d7e8f"
}

Rate limit excedido. Esperá los segundos del header Retry-After. La cuota va por credencial: 60 req/min en cuentas estándar, 600 en cuentas proveedor.

object
error
required
object
code
required

Identificador estable del error en SCREAMING_SNAKE_CASE

string
message
required

Mensaje legible en español. No parsearlo: puede cambiar

string
details
Any of:
object
requerido

Sólo en 403 API_ALCANCE_INSUFICIENTE: alcances que habilitan la operación

Array<string>
Allowed values: cfe:emitir cfe:leer recibidos:leer consultas clientes:leer clientes:escribir pagos:leer pagos:cobrar pagos:tarjetas pagos:suscripciones pagos:configurar webhooks:gestionar
requestId

UUID de correlación; mismo valor que el header X-Request-ID

string format: uuid
Ejemplos

Excediste el rate limit

{
"error": {
"code": "API_RATE_LIMITED",
"message": "Se superó el límite de requests para esta API key"
},
"requestId": "5b2c7c8a-1f6e-4d29-9a0b-7c3a8d1e2f4c"
}
Retry-After
integer
Ejemplo
42

Segundos hasta que se libera la ventana de rate limit

No se pudo verificar la habilitación del módulo (PAGOS_ESTADO_INDETERMINADO), o falta la clave maestra de cifrado de secretos (PAGOS_CLAVE_MAESTRA_AUSENTE). Nada que corregir del lado del integrador: reintentar.

object
error
required
object
code
required

Identificador estable del error en SCREAMING_SNAKE_CASE

string
message
required

Mensaje legible en español. No parsearlo: puede cambiar

string
details
Any of:
object
requerido

Sólo en 403 API_ALCANCE_INSUFICIENTE: alcances que habilitan la operación

Array<string>
Allowed values: cfe:emitir cfe:leer recibidos:leer consultas clientes:leer clientes:escribir pagos:leer pagos:cobrar pagos:tarjetas pagos:suscripciones pagos:configurar webhooks:gestionar
requestId

UUID de correlación; mismo valor que el header X-Request-ID

string format: uuid
Ejemplos

No se pudo leer el flag de pagos

{
"error": {
"code": "PAGOS_ESTADO_INDETERMINADO",
"message": "No se pudo verificar si el módulo de pagos está habilitado para esta cuenta. Reintentá."
},
"requestId": "0f4a1c2e-5b6d-4e7f-8a9b-0c1d2e3f4a5b"
}