Preguntar a la IA
Español ES
Ir a CleverApp

Cuentas del contacto

Estos métodos trabajan con las cuentas del contacto, un saldo interno en el bot: bonos, puntos, un depósito. Son las mismas cuentas con las que trabajan los bloques Recargar la cuenta del contacto y Cargo en la cuenta del contacto, y que se muestran en la pestaña «Cuentas» de la ficha del contacto. Por ejemplo, un sistema de pagos puede abonar bonos al contacto tras una compra en tu sitio web, y el bot puede mostrar el saldo con la función getBalance.

Un contacto tiene una cuenta independiente para cada moneda. Las operaciones de la API aparecen en el historial de la cuenta como «Abono por API» y «Cargo por API».

Advertencia

Las cuentas del contacto son saldos internos del bot (bonos, puntos, depósito), no cuentas bancarias: la plataforma no transfiere dinero a través de ellas y no es un servicio de pagos. Lleva un registro de las operaciones que envías por la API en tu propio sistema; te servirá para conciliar los saldos.

Importante

Los importes se envían y se devuelven en las unidades menores de la moneda (céntimos) como un entero. 15000 en una cuenta USD significa 150 $. En las monedas sin parte fraccionaria, como JPY, la unidad es el yen entero. Una sola recarga o un solo cargo es como máximo de 10¹⁴ unidades menores (un billón de dólares en USD); un importe mayor devuelve 422.

getContactAccounts

Devuelve todas las cuentas de un contacto.

GETPOSThttps://app.cleverapp.pro/api/v1/getContactAccounts
Parámetro Tipo Obligatorio Descripción
contact_id entero sí ID del contacto
Solicitud
curl -G "https://app.cleverapp.pro/api/v1/getContactAccounts" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json" \
  --data-urlencode "contact_id=678"
Respuesta 200
{
  "data": [
    {
      "id": 4521,
      "currency": "USD",
      "amount": 15000,
      "amount_note": "150 USD",
      "created_at": "2026-09-14T10:22:05+00:00",
      "updated_at": "2026-10-01T18:40:12+00:00",
      "blocked_at": null
    }
  ]
}
Campo Descripción
id ID de la cuenta: pásalo a los demás métodos como account_id
currency Código de moneda ISO 4217
amount Saldo en las unidades menores de la moneda
amount_note Saldo en unidades mayores con el código de moneda, para mostrarlo
created_at, updated_at Cuándo se abrió la cuenta y cuándo cambió por última vez
blocked_at Cuándo se bloqueó la cuenta; null, no está bloqueada. No se puede hacer un cargo en una cuenta bloqueada

Las cuentas se listan en el orden en que se abrieron.

addContactAccount

Abre al contacto una cuenta en una moneda. El mismo método también está disponible como createContactAccount.

POSThttps://app.cleverapp.pro/api/v1/addContactAccount
Parámetro Tipo Obligatorio Descripción
contact_id entero sí ID del contacto
currency cadena sí Código de moneda ISO 4217 en mayúsculas: USD, EUR, GBP
Solicitud
curl -X POST "https://app.cleverapp.pro/api/v1/addContactAccount" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"contact_id": 678, "currency": "USD"}'
Respuesta 201
{
  "data": {
    "id": 4521,
    "currency": "USD",
    "amount": 0,
    "amount_note": "0 USD",
    "created_at": "2026-10-03T12:00:00+00:00",
    "updated_at": "2026-10-03T12:00:00+00:00",
    "blocked_at": null
  }
}
Respuesta 422
{
  "message": "Account with the currency already exists",
  "code": "currency_exists",
  "errors": {
    "currency": [
      "Account with the currency already exists"
    ]
  }
}

Detalles:

  • Si el contacto ya tiene una cuenta en esta moneda: 422 con un error en el campo currency.
  • Los bloques del flujo no necesitan la cuenta de antemano: el bloque «Recargar la cuenta del contacto» la abre por sí mismo. Los métodos de recarga de la API sí la necesitan, porque trabajan por account_id.

deleteContactAccount

Elimina una cuenta del contacto.

POSThttps://app.cleverapp.pro/api/v1/deleteContactAccount
Parámetro Tipo Obligatorio Descripción
account_id entero sí ID de la cuenta
Solicitud
curl -X POST "https://app.cleverapp.pro/api/v1/deleteContactAccount" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"account_id": 4521}'
Respuesta 422
{
  "message": "You can not delete the account with a balance of 150 USD",
  "code": "account_not_empty",
  "errors": {
    "account_id": [
      "You can not delete the account with a balance of 150 USD"
    ]
  }
}

La respuesta tiene el estado 204 y no tiene cuerpo.

Solo se puede eliminar una cuenta vacía. Si tiene dinero: 422 con un error en el campo account_id; primero carga el saldo restante.

addFundsToContactAccount

Recarga una cuenta.

POSThttps://app.cleverapp.pro/api/v1/addFundsToContactAccount
Parámetro Tipo Obligatorio Descripción
account_id entero sí ID de la cuenta
amount entero sí Importe en las unidades menores de la moneda, de 1 a 100 000 000 000 000 (10¹⁴)
description cadena sí Concepto del abono, hasta 255 caracteres. Se registra en el historial de la cuenta
Solicitud
curl -X POST "https://app.cleverapp.pro/api/v1/addFundsToContactAccount" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"account_id": 4521, "amount": 15000, "description": "Bono por el pedido A-1024"}'
Respuesta 200
{
  "data": {
    "id": 4521,
    "currency": "USD",
    "amount": 15000,
    "amount_note": "150 USD",
    "created_at": "2026-10-03T12:00:00+00:00",
    "updated_at": "2026-10-03T12:05:41+00:00",
    "blocked_at": null
  }
}

Una cuenta bloqueada se puede recargar igualmente.

withdrawFundsFromContactAccount

Hace un cargo en una cuenta.

POSThttps://app.cleverapp.pro/api/v1/withdrawFundsFromContactAccount
Parámetro Tipo Obligatorio Descripción
account_id entero sí ID de la cuenta
amount entero sí Importe en las unidades menores de la moneda, de 1 a 100 000 000 000 000 (10¹⁴)
description cadena sí Concepto del cargo, hasta 255 caracteres. Se registra en el historial de la cuenta
Solicitud
curl -X POST "https://app.cleverapp.pro/api/v1/withdrawFundsFromContactAccount" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"account_id": 4521, "amount": 5000, "description": "Gastos de envío"}'
Respuesta 200
{
  "data": {
    "id": 4521,
    "currency": "USD",
    "amount": 10000,
    "amount_note": "100 USD",
    "created_at": "2026-10-03T12:00:00+00:00",
    "updated_at": "2026-10-03T12:07:15+00:00",
    "blocked_at": null
  }
}
Respuesta 422
{
  "message": "Insufficient funds. Current balance 100 USD",
  "code": "insufficient_funds",
  "errors": {
    "account_id": [
      "Insufficient funds. Current balance 100 USD"
    ]
  }
}

Un cargo nunca deja la cuenta por debajo de cero, ni siquiera con solicitudes simultáneas. Si el cargo no es posible, el método no cambia nada y responde con 422 y un error en el campo account_id:

code Motivo
account_blocked La cuenta está bloqueada: desbloquéala en la ficha del contacto
insufficient_funds La cuenta tiene menos que amount; el texto muestra el saldo actual

Primero se comprueba el bloqueo y luego el saldo.

Errores de las cuentas

  • No hay ningún contacto o cuenta con ese ID, el contacto está eliminado o su bot está eliminado: 404.
  • Contacto o cuenta de un bot ajeno: 403.
  • Los errores propios de estos métodos son 422 con los campos message, code y errors. El texto del error está en el idioma de la solicitud (el encabezado Accept-Language), así que en tu código comprueba code:
code Método Motivo
currency_exists addContactAccount Ya existe una cuenta en esta moneda
account_not_empty deleteContactAccount La cuenta todavía tiene dinero
account_blocked withdrawFundsFromContactAccount La cuenta está bloqueada
insufficient_funds withdrawFundsFromContactAccount No hay dinero suficiente en la cuenta

Los errores generales de la API se describen en Errores.