geCloud
Abrir geCloud

geCloud API

Integre la facturación, la contabilidad y la gestión de clientes de geCloud en sus propias herramientas. Esta API REST/JSON cubre empresas, clientes, facturas, presupuestos, gastos, pagos y productos.

URL base: https://app.gecloud.me/api/v1/ Formato: JSON Auth: api_token

Introducción

Todas las solicitudes se realizan sobre https://app.gecloud.me/api/v1/ seguido de la ruta del endpoint. Todas las respuestas son application/json, incluidos los errores.

API versionada — use /v1/

/api/v1/… es la ruta recomendada para cualquier integración nueva: es estable, y los futuros cambios incompatibles se publicarán bajo un nuevo prefijo (/api/v2/…) sin modificar nunca el comportamiento de v1. Las rutas antiguas sin prefijo (/api/…, sin /v1/) siguen disponibles para no romper las integraciones existentes, pero se consideran históricas — no las use para código nuevo.

Autenticación

La API utiliza un token estático por usuario: api_token. Se genera automáticamente al registrarse o en el primer inicio de sesión, y permanece válido hasta su revocación manual (sin expiración automática).

Cómo enviar el token

Método de la solicitudDónde colocar el token
GETParámetro de consulta ?api_token=xxxx
POSTCampo de formulario api_token (algunos endpoints también lo aceptan en el cuerpo JSON o en la cabecera Authorization — indicado en cada página)

Token único, sin expiración ni alcance limitado

El api_token otorga acceso completo a la cuenta, sin limitación de alcance (scope) ni expiración. Trátelo como una contraseña: nunca lo exponga del lado del cliente (navegador, app móvil compilada), y regenérelo si sospecha una fuga.

Errores y convenciones

La API siempre responde con el código HTTP 200, incluso en caso de error de negocio — el estado real se lee en el cuerpo JSON mediante la clave st o status según el endpoint (ver cada página). Un valor 0 siempre significa un fallo; el mensaje de error se entrega en msg, message o error según el endpoint.

Sin una convención única de código de estado

Los endpoints de esta API se desarrollaron en distintos momentos y no todos usan la misma clave ni la misma escala de códigos. Consulte siempre la sección "Respuestas" de cada endpoint en lugar de asumir una convención global.

Autenticación

Crear una cuenta, iniciar sesión y crear la primera empresa asociada.

POST/api/v1/register

Crea una nueva cuenta de usuario (prueba gratuita o cuenta estándar según la configuración) y genera automáticamente su api_token.

No requiere autenticación

Parámetros (form-data)

CampoTipoDescripción
emailrequeridostringEmail válido y único.
passwordrequeridostringDe 4 a 46 caracteres.
phonerequeridostringDe 10 a 20 caracteres.
namestringNombre completo del usuario.

Solicitud

cURL
curl -X POST https://app.gecloud.me/api/v1/register \
  -d "email=juan@ejemplo.com" \
  -d "password=MiContrasena123" \
  -d "phone=+22997001122" \
  -d "name=Juan Pérez"

Respuesta — éxito

200 OK
{
  "st": 1,
  "msg": "Registration successful",
  "user": {
    "id": 482,
    "name": "Juan Pérez",
    "email": "juan@ejemplo.com",
    "role": "user",
    "token": "9f3c1a...e02b"
  }
}

Respuestas posibles

  • st: 0 Campos inválidos — el detalle está en msg.
  • st: 2 Ese email ya existe.
  • st: 1 Cuenta creada — token devuelto en user.token.
POST/api/v1/login

Autentica a un usuario por email y contraseña, y devuelve (o genera, si falta) su api_token.

No requiere autenticaciónAcepta JSON o form-data

Cuerpo de la solicitud

CampoTipoDescripción
emailrequeridostringEmail de la cuenta.
passwordrequeridostringContraseña de la cuenta.

Solicitud

cURL
curl -X POST https://app.gecloud.me/api/v1/login \
  -H "Content-Type: application/json" \
  -d '{"email":"juan@ejemplo.com","password":"MiContrasena123"}'

Respuesta — éxito

200 OK
{
  "st": 1,
  "msg": "Login successful",
  "user": {
    "id": 482,
    "name": "Juan Pérez",
    "slug": "juan-perez",
    "thumb": "assets/front/img/avatar.png",
    "email": "juan@ejemplo.com",
    "role": "user",
    "parent": 482,
    "token": "9f3c1a...e02b"
  }
}

Respuestas posibles

  • st: 0 Credenciales inválidas.
  • st: 2 Cuenta pendiente de activación.
  • st: 3 Cuenta suspendida.
  • st: 4 Se requiere verificación de email antes de iniciar sesión.
  • st: 1 Inicio de sesión exitoso — token en user.token.
POST/api/v1/business

Crea la primera empresa asociada a una cuenta recién registrada.

api_token requerido

Solicitud

cURL
curl -X POST https://app.gecloud.me/api/v1/business \
  -d "api_token=xxxx" -d "name=Ma Société" -d "country=21"

Parámetros (form-data)

CampoTipoDescripción
api_tokenrequeridostringToken del usuario.
namerequeridostringRazón social de la empresa.
countryrequeridointId del país (ver Referencia — Países).
categoryintId de categoría de empresa.

Respuesta — éxito

200 OK
{ "st": 3, "msg": "Business registered successfully" }

Respuestas posibles

  • st: 0 Token faltante/inválido, o campos requeridos ausentes.
  • st: 3 Creada — verificación de email desactivada en la cuenta.
  • st: 4 Creada — verificación de email activada (cuenta pendiente de verificación).

Empresas

Una cuenta de usuario puede gestionar varias empresas (multiempresa). La mayoría de los demás recursos (facturas, clientes, productos…) están vinculados a una empresa mediante su uid público.

id interno vs uid público

Cada empresa tiene un id interno (numérico, base de datos) y un uid público. Según el endpoint, el parámetro esperado (a veces llamado igualmente business_id) es en realidad el uid, no el id interno — esto se indica en cada endpoint relevante a continuación. En caso de duda, use siempre el valor uid devuelto por la lista de empresas.

GET/api/v1/business

Lista todas las empresas que pertenecen al usuario autenticado.

api_token requerido
ParámetroDescripción
api_tokenrequeridoQuery string.

Solicitud

cURL
curl "https://app.gecloud.me/api/v1/business?api_token=xxxx"

Respuesta — éxito

200 OK
{ "status": 1, "business": [ { "id": 12, "uid": "88123", "name": "Mi Empresa", "..." : "..." } ] }
POST/api/v1/business/add

Crea una nueva empresa, o edita una existente si se proporciona id. Al crearla, el número de empresas está limitado por el plan de la cuenta.

api_token requeridoAcepta JSON o form-data
CampoTipoDescripción
api_tokenrequeridostring
idintSi se indica = edición.
namerequeridostringRazón social.
countryintRequerido solo al crear.
title, phone, address, biz_number, vat_code, categorystring/intCampos opcionales del perfil de empresa.
num_format, symbol_direction, space_price_symbol, price_separatorintPreferencias de formato monetario.

Indique siempre las preferencias monetarias

Dejar num_format vacío provoca un error del servidor al mostrar los montos de esta empresa. Envíe 0 explícitamente si no tiene preferencia.

Solicitud

cURL
curl -X POST https://app.gecloud.me/api/v1/business/add \
  -d "api_token=xxxx" -d "name=Ma Société" -d "country=21"

Respuesta — éxito (creación)

200 OK
{ "status": 1, "msg": "Business created", "business_id": 57 }

Respuestas posibles

  • status: 0 Token faltante/inválido, nombre ausente, o límite del plan alcanzado.
  • status: 1 Creada o actualizada — ver msg.
GET/api/v1/business/show/{hash}

Detalle de una empresa. El identificador esperado en la URL no es ni el id ni el uid en bruto, sino el MD5 del id interno (md5(id)).

api_token requerido
ParámetroDescripción
api_tokenrequeridoQuery string.
hashrequeridoSegmento de URL — md5(id), donde id es el id interno devuelto por la lista de empresas.

Solicitud

cURL
curl "https://app.gecloud.me/api/v1/business/show/39461a19e9eddfb385ea76b26521ea48?api_token=xxxx"

Respuestas posibles

  • status: 0 No encontrada, o no pertenece al propietario del token (Access denied).
  • status: 1 business: detalle completo.

Clientes

Gestión de la cartera de clientes de una empresa.

POST/api/v1/customers/add

Crea un cliente, o lo edita si se proporciona id.

api_token requerido

business_id espera el uid, no el id interno

A pesar de su nombre, el campo business_id de este endpoint debe contener el uid público de la empresa (el devuelto por la lista de empresas), no su id interno. Enviar el id interno crea el cliente con éxito, pero queda invisible en la lista de clientes (que filtra por el uid).

CampoTipoDescripción
api_tokenrequeridostring
idintSi se indica = edición.
namerequeridostringMáximo 100 caracteres.
business_idrequeridostringuid de la empresa (ver advertencia arriba).
email, phone, address, address1, address2, city, postal_codestringDatos de contacto.
cus_number, vat_code, aibstringIdentificadores fiscales.
country, currencyintPaís / moneda.

Solicitud

cURL
curl -X POST https://app.gecloud.me/api/v1/customers/add \
  -d "api_token=xxxx" -d "business_id=88123" -d "name=ACME SARL" -d "email=contact@acme.bj"

Respuesta — éxito

200 OK
{ "st": 1, "msg": "Customer created successfully", "customer_id": 913 }

Respuestas posibles

  • st: 0 Token inválido, validación fallida, o límite de clientes del plan alcanzado (solo creación).
  • st: 1 Creado o actualizado.
GET/api/v1/customers

Lista los clientes de una empresa.

api_token requerido
ParámetroDescripción
api_tokenrequeridoQuery string.
business_uidrequeridoQuery string — uid de la empresa.

Solicitud

cURL
curl "https://app.gecloud.me/api/v1/customers?api_token=xxxx&business_uid=88123"

Respuesta — éxito

200 OK
{
  "st": 1,
  "total": 2,
  "customers": [
    { "id": 913, "name": "ACME SARL", "email": "contact@acme.bj", "phone": "...",
      "address": "...", "cus_number": "...", "vat_code": "...", "country": 21,
      "currency": "XOF", "city": "Cotonou", "postal_code": "", "status": 1 }
  ]
}
POST/api/v1/customers/show

Detalle completo de un cliente. (Endpoint de lectura accesible vía POST por razones históricas.)

api_token requerido
CampoTipoDescripción
api_tokenrequeridostring
customer_idrequeridoint

Solicitud

cURL
curl -X POST https://app.gecloud.me/api/v1/customers/show \
  -d "api_token=xxxx" -d "customer_id=913"

Respuestas posibles

  • st: 0 No encontrado, o no pertenece a este usuario (Unauthorized).
  • st: 1 customer: detalle completo.
POST/api/v1/customers/delete

Elimina permanentemente un cliente.

api_token requerido
CampoTipoDescripción
api_tokenrequeridostring
customer_idrequeridoint

Solicitud

cURL
curl -X POST https://app.gecloud.me/api/v1/customers/delete \
  -d "api_token=xxxx" -d "customer_id=913"

Respuesta — éxito

200 OK
{ "st": 1, "msg": "Customer deleted successfully" }

Respuestas posibles

  • st: 0 No encontrado, o no pertenece a este usuario (Unauthorized).
  • st: 1 Eliminado.

Facturas

Creación, consulta, envío y normalización fiscal (MECeF, Benín) de facturas de venta. El campo business_id de las facturas corresponde al uid público de la empresa.

POST/api/v1/invoices/add

Crea una factura (o la edita si se proporciona id) con sus líneas de productos/servicios, impuestos, y configuración de facturación recurrente si corresponde.

api_token requerido
CampoTipoDescripción
api_tokenrequeridostring
idintSi se indica = edición.
customerrequeridointId del cliente.
business_idstringuid de la empresa.
title, status, summary, number, poso_number—Metadatos de la factura.
date, payment_due, due_limitdateFechas de emisión y vencimiento.
discount, sub_total, grand_total, taxnumberMontos y tasa de impuesto.
is_recurringboolSi 1, indique también recurring_start, recurring_end, frequency.
product_ids[], items[], details[], price[], quantity[], total_price[], taxes[]arraysLíneas de la factura, índices alineados entre arrays. product_ids[i] = 0 crea un nuevo producto al vuelo a partir de items[i]/price[i].

Solicitud

cURL
curl -X POST https://app.gecloud.me/api/v1/invoices/add \
  -d "api_token=xxxx" -d "business_id=88123" -d "customer=913" \
  -d "title=Facture Juillet" -d "grand_total=150000" -d "sub_total=150000"

Respuesta — éxito

200 OK
{ "status": 2, "invoice_id": "a3f9c2e1b4d6..." }

Respuestas posibles

  • st: 0 Token faltante o inválido.
  • status: 3 Error de validación — detalle en error.
  • status: 4 Cuota global de facturas de la plataforma alcanzada.
  • status: 5 Límite de facturas de su plan alcanzado.
  • status: 2 Creada o actualizada — se devuelve invoice_id (hash MD5).
GET/api/v1/invoices

Lista las facturas (o notas de crédito si type=4) de una empresa, paginadas.

api_token requerido
ParámetroDescripción
api_tokenrequeridoQuery string.
business_uidrequeridoQuery string.
statusFiltro por estado de factura. Omitido = sin filtro (todas visibles).
type1 = factura normal (por defecto), 4 = nota de crédito. Alternativa: credit_note=true.
per_page, pagePaginación (por defecto: 10 / 1).

Solicitud

cURL
curl "https://app.gecloud.me/api/v1/invoices?api_token=xxxx&business_uid=88123"

Respuesta — éxito

200 OK
{
  "business_id": "88123", "type": 1,
  "st": 1, "total": 34, "per_page": 10, "page": 1,
  "invoices": [
    { "id": 501, "number": "FAC-0501", "title": "...", "summary": "...",
      "customer_id": 913, "customer_name": "ACME SARL",
      "date": "2026-07-01", "grand_total": 150000, "status": 1,
      "created_at": "2026-07-01 10:22:00" }
  ]
}
GET/api/v1/invoices/{id}

Detalle de una factura y sus pagos asociados.

api_token requerido
ParámetroDescripción
api_tokenrequeridoQuery string.
business_uidrequeridoQuery string.
idrequeridoSegmento de URL — id numérico interno de la factura.

Solicitud

cURL
curl "https://app.gecloud.me/api/v1/invoices/501?api_token=xxxx&business_uid=88123"

Respuesta — éxito

200 OK
{
  "st": 1,
  "invoice": { "id": 501, "number": "FAC-0501", "..." : "..." },
  "payments": [ { "id": 88, "amount": 50000, "payment_date": "2026-07-05", "..." : "..." } ]
}
POST/api/v1/send_invoice/{invoice_id}

Envía la factura por email al cliente y la marca como enviada.

api_token requeridoCuerpo JSON obligatorio
Campo (JSON)TipoDescripción
api_tokenrequeridostringEn el cuerpo JSON (no en query string).
customer_idrequeridoint
email_torequeridostringDirección del destinatario.
subject, messagestringPersonalización del email.
is_myself / email_myselfboolEnvía una copia al remitente.

Solicitud

cURL
curl -X POST https://app.gecloud.me/api/v1/send_invoice/501 \
  -H "Content-Type: application/json" \
  -d '{"api_token":"9f3c1a...","customer_id":913,"email_to":"cliente@acme.bj"}'

Respuestas posibles

  • status: 0 JSON inválido, token faltante/inválido, factura o cliente no encontrado.
  • status: 1 Email enviado.
  • status: 2 Fallo al enviar el email (problema SMTP).
GET/api/v1/invoices/{id}/pdf

Descarga la factura en formato PDF.

api_token requerido
ParámetroDescripción
api_tokenrequeridoEncabezado Authorization, o parámetro de consulta en su defecto.
idrequeridoSegmento de URL (id numérico de la factura).

Solicitud

cURL
curl -OJ "https://app.gecloud.me/api/v1/invoices/501/pdf?api_token=xxxx"

Respuesta — éxito

200 OK
Content-Type: application/pdf
Content-Disposition: attachment; filename="Invoice-501.pdf"

<contenido binario del PDF>

Respuestas posibles

  • status: 0 Token faltante/inválido, factura no encontrada, o generación de PDF no disponible en este servidor.
  • 200 Flujo binario del archivo PDF.
DELETE/api/v1/invoices/delete/{id}

Elimina definitivamente una factura y sus pagos asociados. Irreversible.

api_token requerido
ParámetroDescripción
api_tokenrequeridoCabecera Authorization, o parámetro de consulta como alternativa.
idrequeridoSegmento de URL (hash MD5).

Solicitud

cURL
curl -X DELETE https://app.gecloud.me/api/v1/invoices/delete/207f88018f72237565570f8a9e5ca240 \
  -H "Authorization: xxxx"

Respuesta — éxito

200 OK
{ "status": 1, "message": "Facture et paiements associés supprimés avec succès" }
POST/api/v1/invoices/{invoice_id}/normalize

Envía una factura a la pasarela fiscal MECeF (Benín, DGI) para obtener un id de factura normalizada/certificada.

api_token requeridoSolo Benín
ParámetroDescripción
api_tokenrequeridoCabecera Authorization, o en POST como alternativa.
invoice_idrequeridoSegmento de URL. La factura debe tener ya una clave API MECeF configurada.

Solicitud

cURL
curl -X POST https://app.gecloud.me/api/v1/invoices/501/normalize \
  -H "Authorization: xxxx"

Respuesta — éxito

200 OK
{
  "status": 1,
  "message": "Facture normalisée créée avec succès",
  "uid": "MECEF-UID-...",
  "data": { "uid": "...", "invoice_id": 501, "type": "FV", "total": 150000, "etat": 0, "...": "..." }
}

Respuestas posibles

  • status: 0 Token faltante/inválido, factura no encontrada, clave MECeF no definida, o error devuelto por la pasarela fiscal.
  • status: 1 Normalización exitosa.
GET/api/v1/invoices-normalized

Lista las facturas normalizadas vía MECeF para una empresa.

api_token requerido
ParámetroDescripción
api_tokenrequeridoQuery string.
business_uidrequeridoQuery string.
per_page, pagePaginación (por defecto: 10 / 1).

Solicitud

cURL
curl "https://app.gecloud.me/api/v1/invoices-normalized?api_token=xxxx&business_uid=88123"

Respuesta — éxito

200 OK
{ "st": 1, "total": 12, "per_page": 10, "page": 1, "invoices": [ "..." ] }

Presupuestos (proforma)

Los presupuestos comparten la misma tabla que las facturas pero con un tipo distinto; pueden convertirse en factura definitiva. Se crean como borrador por defecto.

GET/api/v1/estimates

Lista los presupuestos de una empresa, paginados y filtrables por estado.

api_token requerido
ParámetroDescripción
api_tokenrequeridoQuery string.
business_uidrequeridoQuery string.
per_page, pagePaginación (por defecto: 10 / 1).
statusOmitido = sin filtro (todos los presupuestos visibles).

Solicitud

cURL
curl "https://app.gecloud.me/api/v1/estimates?api_token=xxxx&business_uid=88123"

Respuesta — éxito

200 OK
{ "st": 1, "total": 8, "per_page": 10, "page": 1,
  "estimates": [ { "id": 22, "number": "PRE-0022", "grand_total": 80000, "status": 0, "...": "..." } ] }
GET/api/v1/estimates/{id}

Detalle de un presupuesto con sus líneas e impuestos.

api_token requerido
ParámetroDescripción
api_tokenrequeridoQuery string.
idrequeridoSegmento de URL.

Solicitud

cURL
curl "https://app.gecloud.me/api/v1/estimates/22?api_token=xxxx"

Respuestas posibles

  • st: 0 No encontrado (o no es un presupuesto).
  • st: 1 estimate: detalle con items y taxes.
POST/api/v1/estimates/add

Crea un presupuesto (o lo edita si se proporciona id), creando automáticamente los productos desconocidos.

api_token requerido
CampoTipoDescripción
api_tokenrequeridostring
idintSi se indica = edición.
customerrequeridoint
business_id, title, summary, number, poso_number—Metadatos.
date, expire_ondate
discount, sub_total, grand_totalnumber
product_ids[], items[], details[], price[], quantity[], total_price[], taxes[]arraysLíneas del presupuesto.

Solicitud

cURL
curl -X POST https://app.gecloud.me/api/v1/estimates/add \
  -d "api_token=xxxx" -d "business_id=88123" -d "customer=913" \
  -d "title=Devis Juillet" -d "grand_total=80000" -d "sub_total=80000"

Respuesta — éxito

200 OK
{ "status": 1, "estimate_id": 22, "estimate_crypt_id": "e91a...c02" }

Respuestas posibles

  • status: 2 Error de validación.
  • status: 4 Límite del plan alcanzado (solo creación).
  • status: 1 Creado o actualizado.
POST/api/v1/estimates/convert-proforma

Convierte un presupuesto existente en una factura definitiva (borrador).

api_token requerido
CampoTipoDescripción
api_tokenrequeridostring
invoice_idrequeridointId del presupuesto a convertir.

Solicitud

cURL
curl -X POST https://app.gecloud.me/api/v1/estimates/convert-proforma \
  -d "api_token=xxxx" -d "invoice_id=22"

Respuesta — éxito

200 OK
{ "st": 1, "msg": "Proforma converted to invoice successfully", "invoice_id": 501 }

Respuestas posibles

  • st: 0 Id faltante, no encontrado, o no es un presupuesto.
  • st: 1 Convertido — se convierte en factura en estado borrador.
POST/api/v1/estimates/delete/{id}

Elimina permanentemente un presupuesto.

api_token requerido
ParámetroDescripción
api_tokenrequeridoEncabezado Authorization, o campo de formulario en su defecto.
idrequeridoSegmento de URL (id numérico del presupuesto).

Solicitud

cURL
curl -X POST https://app.gecloud.me/api/v1/estimates/delete/22 \
  -d "api_token=xxxx"

Respuesta — éxito

200 OK
{ "st": 1, "msg": "Estimate deleted successfully" }

Respuestas posibles

  • st: 0 No encontrado, no pertenece a este usuario, o no es un presupuesto.
  • st: 1 Eliminado.

Facturas de proveedores

Gestión de las facturas recibidas de sus proveedores (compras).

GET/api/v1/bills

Lista las facturas de proveedores de una empresa, paginadas.

api_token requerido
ParámetroDescripción
api_tokenrequeridoQuery string.
business_idrequeridoQuery string — uid de la empresa.
limit, offsetPaginación (por defecto: 20 / 0).

Solicitud

cURL
curl "https://app.gecloud.me/api/v1/bills?api_token=xxxx&business_id=88123"

Respuesta — éxito

200 OK
{ "status": 1, "bills": [ { "id": 71, "number": "BILL-0071", "...": "..." } ] }
GET/api/v1/bills/{id}

Detalle de una factura de proveedor.

api_token requerido
ParámetroDescripción
api_tokenrequeridoQuery string.
idrequeridoSegmento de URL.

Solicitud

cURL
curl "https://app.gecloud.me/api/v1/bills/71?api_token=xxxx"

Respuesta — éxito

200 OK
{ "status": 1, "bill": { "id": 71, "number": "BILL-0071", "...": "..." } }
POST/api/v1/bills/add

Crea una factura de proveedor (o la edita si se proporciona id) con sus líneas.

api_token requerido
CampoTipoDescripción
api_tokenrequeridostring
idintSi se indica = edición.
vendorrequeridointId del proveedor.
business_id, title, summary, number, date—Metadatos.
discount, sub_total, grand_totalnumber
payment_due, due_limitdate
items[], details[], price[], quantity[], total_price[]arraysLíneas de la factura.

Solicitud

cURL
curl -X POST https://app.gecloud.me/api/v1/bills/add \
  -d "api_token=xxxx" -d "business_id=88123" -d "vendor=12" \
  -d "title=Facture Fournisseur" -d "grand_total=45000" -d "sub_total=45000"

Respuesta — éxito

200 OK
{ "status": 1, "bill_id": "7c1e...a09" }

Respuestas posibles

  • status: 2 Error de validación — detalle en error.
  • status: 1 Creada o actualizada.

Gastos

Seguimiento de gastos, con comprobante opcional.

GET/api/v1/expenses

Lista los gastos de una empresa.

api_token requerido
ParámetroDescripción
api_tokenrequeridoQuery string.
business_idrequeridoQuery string — uid de la empresa.

Solicitud

cURL
curl "https://app.gecloud.me/api/v1/expenses?api_token=xxxx&business_id=88123"

Respuesta — éxito

200 OK
{ "status": 1, "data": [ { "id": 305, "amount": 25000, "net_amount": 27500, "...": "..." } ] }
GET/api/v1/expenses/{id}

Detalle de un gasto.

api_token requerido
ParámetroDescripción
api_tokenrequeridoQuery string.
business_idrequeridoQuery string.
idrequeridoSegmento de URL.

Solicitud

cURL
curl "https://app.gecloud.me/api/v1/expenses/305?api_token=xxxx&business_id=88123"

Respuestas posibles

  • status: 0 No encontrado, o no pertenece a esta empresa/usuario.
  • status: 1 data: detalle completo.
POST/api/v1/expenses/add

Crea un gasto (o lo edita si se proporciona id), con carga opcional del comprobante.

api_token requeridomultipart/form-data
CampoTipoDescripción
api_tokenrequeridostring
business_idrequeridostringuid de la empresa.
idintSi se indica = edición.
amountrequeridonumberMonto sin impuestos.
taxnumberTasa (%) — net_amount = amount + amount × tax / 100.
vendor, category, notes, date—Metadatos.
filearchivoComprobante: pdf, gif, jpg, jpeg, png — 10 MB máx.

Solicitud

cURL
curl -X POST https://app.gecloud.me/api/v1/expenses/add \
  -d "api_token=xxxx" -d "business_id=88123" -d "amount=25000" -d "tax=18"

Respuesta — éxito

200 OK
{ "status": 1, "expense_id": 305, "message": "Expense created successfully" }

Pagos

Registro de cobros/pagos vinculados a facturas.

Conversión de moneda no finalizada

El campo convert_amount devuelto/almacenado por estos endpoints intenta una conversión automática a una moneda fija (XAF) que no se completa en el caso general: si no se puede resolver una tasa de cambio, el endpoint simplemente devuelve el monto original sin convertir. No confíe en convert_amount para uso multi-moneda hasta que esto se confirme/finalice del lado del producto.

GET/api/v1/payments

Lista los pagos de una empresa, opcionalmente filtrados por factura.

api_token requerido
ParámetroDescripción
api_tokenrequeridoParámetro de consulta.
business_uidrequeridoParámetro de consulta.
invoice_idFiltro opcional sobre una factura específica.

Solicitud

cURL
curl "https://app.gecloud.me/api/v1/payments?api_token=xxxx&business_uid=88123"

Respuesta — éxito

200 OK
{ "status": 1, "data": [
    { "id": 875, "invoice_id": 1650, "business_id": "881777", "customer_id": 1275,
      "amount": "40000.000", "payment_date": "2026-07-19", "payment_method": "0",
      "type": "income", "...": "..." }
  ] }
POST/api/v1/payments/new

Registra un pago sobre una factura y actualiza su estado (pagada / parcialmente pagada). Contabiliza automáticamente el asiento para los pagos de tipo ingreso.

api_token requerido
CampoTipoDescripción
api_tokenrequeridostringGET o POST.
invoice_idrequeridoint
amountrequeridonumber
business_uidrequeridostring
payment_methodintVer lista de métodos de pago. Por defecto: 0.
payment_datedatePor defecto: hoy.
note, typestringtype: income o expense.

Solicitud

cURL
curl -X POST https://app.gecloud.me/api/v1/payments/new \
  -d "api_token=xxxx" -d "invoice_id=501" -d "amount=50000" -d "business_uid=88123"

Respuesta — éxito

200 OK
{ "status": 1, "message": "Pago registrado con éxito", "invoice_status": "parcialmente pagada" }
POST/api/v1/payments/update/{id}

Edita un pago existente y recalcula el estado de la factura asociada.

api_token requerido
CampoTipoDescripción
api_tokenrequeridostringGET o POST.
idrequeridointSegmento de URL — id del pago.
invoice_id, amount, payment_methodrequerido—
payment_date, note—Opcionales.

Solicitud

cURL
curl -X POST https://app.gecloud.me/api/v1/payments/update/875 \
  -d "api_token=xxxx" -d "invoice_id=501" -d "amount=60000" -d "payment_method=1"

Respuesta — éxito

200 OK
{ "status": 1, "message": "Pago actualizado con éxito", "updated_payment": { "...": "..." } }
POST/api/v1/payments/delete/{id}

Elimina un pago y recalcula automáticamente el estado de la factura asociada (pagada / parcialmente pagada / pendiente).

api_token requerido
ParámetroDescripción
api_tokenrequeridoEncabezado Authorization, o parámetro de consulta en su defecto.
idrequeridoSegmento de URL — id del pago.

Solicitud

cURL
curl -X POST https://app.gecloud.me/api/v1/payments/delete/875 \
  -H "Authorization: xxxx"

Respuesta — éxito

200 OK
{ "status": 1, "message": "Pago eliminado con éxito" }

Respuestas posibles

  • status: 0 Token faltante/inválido, o pago no encontrado / no pertenece a este usuario.
  • status: 1 Eliminado — el estado de la factura se reajusta automáticamente.
GET/api/v1/payments/methods

Lista estática de los métodos de pago disponibles.

No requiere autenticación

Solicitud

cURL
curl "https://app.gecloud.me/api/v1/payments/methods"

Respuesta — éxito

200 OK
{ "status": 1, "message": "Liste des modes de paiement récupérée avec succès",
  "data": [
    { "id": 1, "name": "Virement Bancaire" }, { "id": 2, "name": "Cash" },
    { "id": 3, "name": "Chèque" }, { "id": 4, "name": "Stripe" },
    { "id": 5, "name": "Paypal" }, { "id": 6, "name": "Mobile Money" },
    { "id": 7, "name": "Autres Méthodes" }
  ] }

Productos

Catálogo de artículos vendibles y/o comprables, con seguimiento de stock opcional.

GET/api/v1/products/{type}

Lista los productos de una empresa, filtrados por uso.

api_token requerido
ParámetroDescripción
api_tokenrequeridoQuery string.
business_idrequeridoQuery string — uid de la empresa.
typeSegmento de URL: sell (por defecto) o buy.

Solicitud

cURL
curl "https://app.gecloud.me/api/v1/products/sell?api_token=xxxx&business_id=88123"

Respuesta — éxito

200 OK
{ "status": 1, "type": "sell", "data": [ { "id": 44, "name": "Servicio de consultoría", "price": 50000, "...": "..." } ] }
POST/api/v1/products/add

Crea un producto (o lo edita si se proporciona id).

api_token requerido
CampoTipoDescripción
api_tokenrequeridostring
business_idrequeridostringuid de la empresa.
idintSi se indica = edición.
namerequeridostring
pricerequeridonumber
is_bothboolSi es verdadero, define is_sell e is_buy en 1.
is_sell, is_buyboolUso del producto.
income_category, expense_categoryintPor defecto: 0.
detailsstringDescripción.
quantity, alert_quantityintSeguimiento de stock. Por defecto: 0.

Solicitud

cURL
curl -X POST https://app.gecloud.me/api/v1/products/add \
  -d "api_token=xxxx" -d "business_id=88123" -d "name=Prestation conseil" -d "price=50000" -d "is_sell=1"

Respuesta — éxito

200 OK
{ "status": 1, "message": "Product added successfully", "id": 44 }

Previsión

Entradas presupuestarias previsionales (ingresos/gastos futuros) para la planificación financiera.

GET/api/v1/previsions

Lista las entradas previsionales de una empresa.

api_token requerido
ParámetroDescripción
api_tokenrequeridoQuery string.
business_idrequeridoQuery string — uid de la empresa.

Solicitud

cURL
curl "https://app.gecloud.me/api/v1/previsions?api_token=xxxx&business_id=88123"

Respuesta — éxito

200 OK
{ "status": 1, "data": [ { "id": 61, "amount": 300000, "net_amount": 330000, "...": "..." } ] }
GET/api/v1/previsions/{id}

Detalle de una entrada previsional.

api_token requerido
ParámetroDescripción
api_tokenrequeridoQuery string.
idrequeridoSegmento de URL.

Solicitud

cURL
curl "https://app.gecloud.me/api/v1/previsions/61?api_token=xxxx"

Respuestas posibles

  • status: 0 No encontrada, o no pertenece al usuario.
  • status: 1 data: detalle completo.
POST/api/v1/previsions/add

Crea una entrada previsional (o la edita si se proporciona id).

api_token requerido
CampoTipoDescripción
api_tokenrequeridostring
business_idrequeridostringuid de la empresa.
idintSi se indica = edición.
amountrequeridonumber
taxnumberPor defecto: 0.
category, notes—
date_min, date_maxdatePeríodo previsional.

Solicitud

cURL
curl -X POST https://app.gecloud.me/api/v1/previsions/add \
  -d "api_token=xxxx" -d "business_id=88123" -d "amount=300000" -d "date_min=2026-08-01" -d "date_max=2026-08-31"

Respuesta — éxito

200 OK
{ "status": 1, "prevision_id": 61, "message": "Prevision created successfully" }
DELETE/api/v1/previsions/delete/{id}

Elimina una entrada previsional.

api_token requerido
ParámetroDescripción
api_tokenrequeridoQuery string.
idrequeridoSegmento de URL.

Solicitud

cURL
curl "https://app.gecloud.me/api/v1/previsions/delete/61?api_token=xxxx"

Respuesta — éxito

200 OK
{ "status": 1, "message": "Prevision deleted" }

Contabilidad

Plan contable OHADA, asientos y estados financieros. Estos endpoints solo funcionan para una empresa con la contabilidad activada (enable_accounting = 1).

Acceso delegado (gestorías contables)

Además del propietario de la empresa, una gestoría con un vínculo activo y el permiso accounting (asientos/plan contable) o reports (estados financieros) otorgado por el cliente puede llamar a estos endpoints con su propio api_token — sin necesidad de las credenciales del cliente.

GET/api/v1/accounting/chart-of-accounts

Lista el plan contable activo de una empresa.

api_token requerido
ParámetroDescripción
api_tokenrequeridoParámetro de consulta.
business_uidrequeridoParámetro de consulta.

Solicitud

cURL
curl "https://app.gecloud.me/api/v1/accounting/chart-of-accounts?api_token=xxxx&business_uid=88123"

Respuesta — éxito

200 OK
{ "status": 1, "data": [
    { "id": 1383, "account_number": "512", "name": "Banco", "account_type": "asset",
      "account_class": "5", "is_active": 1, "...": "..." }
  ] }

Respuestas posibles

  • status: 0 Token inválido, empresa no encontrada, acceso denegado, o contabilidad no activada para esta empresa.
  • status: 1 Lista de cuentas.
POST/api/v1/accounting/chart-of-accounts/add

Crea una nueva cuenta en el plan contable.

api_token requerido
CampoTipoDescripción
api_tokenrequeridostring
business_uidrequeridostring
account_numberrequeridostringEj. "512".
namerequeridostring
account_typerequeridostringUno de: asset, liability, equity, revenue, expense.
account_classintPor defecto: primer dígito de account_number.
parent_idintCuenta padre, para una estructura de árbol.

Solicitud

cURL
curl -X POST https://app.gecloud.me/api/v1/accounting/chart-of-accounts/add \
  -d "api_token=xxxx" -d "business_uid=88123" -d "account_number=512" -d "name=Banque" -d "account_type=asset"

Respuesta — éxito

200 OK
{ "status": 1, "message": "Account created", "id": 1385 }
GET/api/v1/accounting/journal-entries

Lista los asientos contables de un ejercicio.

api_token requerido
ParámetroDescripción
api_tokenrequeridoParámetro de consulta.
business_uidrequeridoParámetro de consulta.
fiscal_year_idPor defecto: ejercicio abierto actual.
journal_typeFiltro: AC (compras), VT (ventas), BQ (banco), CA (caja), OD (varios).
from, toFiltro de fechas (YYYY-MM-DD).

Solicitud

cURL
curl "https://app.gecloud.me/api/v1/accounting/journal-entries?api_token=xxxx&business_uid=88123"

Respuesta — éxito

200 OK
{ "status": 1, "fiscal_year_id": 18, "data": [
    { "id": 45, "journal_type": "OD", "date": "2026-07-21", "description": "Venta al contado",
      "created_by_name": "Juan Pérez", "...": "..." }
  ] }
POST/api/v1/accounting/journal-entries/add

Crea un asiento contable equilibrado (partida doble).

api_token requerido
CampoTipoDescripción
api_tokenrequeridostring
business_uidrequeridostring
linesrequeridoJSONArray de {account_id, label, debit, credit}. El total de débitos debe igualar el total de créditos.
journal_typestringPor defecto: OD.
reference, description, date—date por defecto: hoy.
fiscal_year_idintPor defecto: ejercicio abierto actual.

Solicitud

cURL
curl -X POST https://app.gecloud.me/api/v1/accounting/journal-entries/add \
  -d "api_token=xxxx" -d "business_uid=88123" -d "journal_type=OD" \
  -d "description=Venta al contado" \
  --data-urlencode 'lines=[{"account_id":1383,"label":"Venta","debit":50000,"credit":0},
                            {"account_id":1384,"label":"Venta","debit":0,"credit":50000}]'

Respuestas posibles

  • status: 0 Asiento desequilibrado, cuenta fuera del plan contable de esta empresa, o ningún ejercicio abierto.
  • status: 1 Asiento creado — id devuelto.
GET/api/v1/accounting/financial-statements/income-statement

Estado de resultados: saldo neto (ingresos − gastos) por cuenta, en un ejercicio.

api_token requerido
ParámetroDescripción
api_tokenrequeridoParámetro de consulta.
business_uidrequeridoParámetro de consulta.
fiscal_year_idPor defecto: ejercicio abierto actual.

Solicitud

cURL
curl "https://app.gecloud.me/api/v1/accounting/financial-statements/income-statement?api_token=xxxx&business_uid=88123"

Respuesta — éxito

200 OK
{ "status": 1, "fiscal_year_id": 18, "data": [
    { "account_number": "701", "name": "Ventas", "account_type": "revenue", "net_amount": "50000.000" }
  ] }

Nota

La respuesta lista un saldo por cuenta (ingresos/gastos no nulos) — sin agrupación por rúbrica OHADA precalculada; agregue del lado cliente si lo necesita.

GET/api/v1/accounting/financial-statements/balance-sheet

Balance general: saldo (débito − crédito) por cuenta de activo/pasivo/patrimonio, en un ejercicio.

api_token requerido
ParámetroDescripción
api_tokenrequeridoParámetro de consulta.
business_uidrequeridoParámetro de consulta.
fiscal_year_idPor defecto: ejercicio abierto actual.

Solicitud

cURL
curl "https://app.gecloud.me/api/v1/accounting/financial-statements/balance-sheet?api_token=xxxx&business_uid=88123"

Respuesta — éxito

200 OK
{ "status": 1, "fiscal_year_id": 18, "data": [
    { "account_number": "512", "name": "Banco", "account_type": "asset", "balance": "50000.000" }
  ] }
GET/api/v1/accounting/fiscal-year/current

Devuelve el ejercicio contable actualmente abierto.

api_token requerido
ParámetroDescripción
api_tokenrequeridoParámetro de consulta.
business_uidrequeridoParámetro de consulta.

Solicitud

cURL
curl "https://app.gecloud.me/api/v1/accounting/fiscal-year/current?api_token=xxxx&business_uid=88123"

Respuesta — éxito

200 OK
{ "status": 1, "data": { "id": 18, "name": "2026", "start_date": "2026-01-01", "end_date": "2026-12-31", "status": "open" } }

Respuestas posibles

  • status: 0 Ningún ejercicio abierto para esta empresa.
  • status: 1 Ejercicio encontrado.

Conciliación bancaria

Cuentas bancarias, importación de extractos y conciliación con los pagos registrados. Restringido a empresas con enable_accounting=1, misma regla de acceso que Contabilidad (propietario, o una gestoría con el ámbito accounting).

GET/api/v1/bank-accounts

Lista las cuentas bancarias activas de una empresa.

api_token requerido
ParámetroDescripción
api_tokenrequeridoParámetro de consulta o encabezado Authorization.
business_uidrequeridoParámetro de consulta.

Solicitud

cURL
curl "https://app.gecloud.me/api/v1/bank-accounts?business_uid=88123" \
  -H "Authorization: xxxx"

Respuesta — éxito

200 OK
{ "status": 1, "data": [
    { "id": 5, "name": "Cuenta Ecobank", "account_type": "bank", "currency_code": "XOF",
      "initial_balance": "500000.000", "balance": "647500.000", "is_active": "1" }
  ] }
POST/api/v1/bank-accounts/add

Crea una cuenta bancaria, de caja o de dinero móvil.

api_token requerido
CampoTipoDescripción
api_tokenrequeridostring
business_uidrequeridostring
namerequeridostring
account_typestringbank (por defecto), cash o mobile_money.
currency_codestring
initial_balancenumberPor defecto: 0.

Solicitud

cURL
curl -X POST https://app.gecloud.me/api/v1/bank-accounts/add \
  -d "api_token=xxxx" -d "business_uid=88123" -d "name=Cuenta Ecobank" \
  -d "account_type=bank" -d "initial_balance=500000"

Respuesta — éxito

200 OK
{ "status": 1, "message": "Bank account created", "id": 5 }
GET/api/v1/bank-accounts/{id}/transactions

Lista las transacciones de una cuenta bancaria, con el pago asociado si ya fue conciliado.

api_token requerido
ParámetroDescripción
api_tokenrequeridoParámetro de consulta.
business_uidrequeridoParámetro de consulta.
idrequeridoSegmento de URL — id de la cuenta bancaria.
from, toFiltro de fechas opcional.
reconciled0 o 1 para filtrar por estado de conciliación.

Solicitud

cURL
curl "https://app.gecloud.me/api/v1/bank-accounts/5/transactions?api_token=xxxx&business_uid=88123"

Respuesta — éxito

200 OK
{ "status": 1, "data": [
    { "id": 1, "date": "2026-07-15", "description": "Transferencia cliente ACME",
      "amount": "150000.000", "type": "credit", "reference": "VIR001",
      "payment_record_id": null, "is_reconciled": "0" }
  ] }
POST/api/v1/bank-accounts/{id}/transactions/add

Importa un lote de transacciones bancarias (extracto) y recalcula automáticamente el saldo de la cuenta.

api_token requerido
CampoTipoDescripción
api_tokenrequeridostring
business_uidrequeridostring
idrequeridointSegmento de URL.
transactionsrequeridoJSONArray de {date, description, amount, type, reference} — type: credit o debit.

Solicitud

cURL
curl -X POST https://app.gecloud.me/api/v1/bank-accounts/5/transactions/add \
  -d "api_token=xxxx" -d "business_uid=88123" \
  --data-urlencode 'transactions=[{"date":"2026-07-15","description":"Transferencia cliente ACME","amount":150000,"type":"credit","reference":"VIR001"}]'

Respuesta — éxito

200 OK
{ "status": 1, "message": "2 transaction(s) imported" }
GET/api/v1/bank-transactions/{id}/suggestions

Sugiere hasta 5 pagos no conciliados que podrían coincidir con esta transacción (mismo monto ±0.01, fecha ±3 días).

api_token requerido
ParámetroDescripción
api_tokenrequeridoParámetro de consulta.
business_uidrequeridoParámetro de consulta.
idrequeridoSegmento de URL — id de la transacción bancaria.

Solicitud

cURL
curl "https://app.gecloud.me/api/v1/bank-transactions/1/suggestions?api_token=xxxx&business_uid=88123"

Respuesta — éxito

200 OK
{ "status": 1, "data": [
    { "id": 876, "payment_date": "2026-07-16", "amount": "150000.000",
      "contact_name": "ACME SARL", "invoice_number": "FAC-0501" }
  ] }
POST/api/v1/bank-transactions/reconcile

Concilia manualmente una transacción bancaria con un pago registrado.

api_token requerido
CampoTipoDescripción
api_tokenrequeridostring
business_uidrequeridostring
bank_txn_idrequeridoint
payment_record_idrequeridoint

Solicitud

cURL
curl -X POST https://app.gecloud.me/api/v1/bank-transactions/reconcile \
  -d "api_token=xxxx" -d "business_uid=88123" -d "bank_txn_id=1" -d "payment_record_id=876"

Respuesta — éxito

200 OK
{ "status": 1, "message": "Transaction reconciled" }

Respuestas posibles

  • status: 0 Faltan campos, o la transacción/el pago no pertenece a esta empresa.
  • status: 1 Conciliado.
POST/api/v1/bank-transactions/unreconcile

Deshace una conciliación existente.

api_token requerido
CampoTipoDescripción
api_tokenrequeridostring
business_uidrequeridostring
bank_txn_idrequeridoint

Solicitud

cURL
curl -X POST https://app.gecloud.me/api/v1/bank-transactions/unreconcile \
  -d "api_token=xxxx" -d "business_uid=88123" -d "bank_txn_id=1"

Respuesta — éxito

200 OK
{ "status": 1, "message": "Transaction unreconciled" }
GET/api/v1/bank-accounts/{id}/summary

Resumen de conciliación de una cuenta: totales de créditos/débitos y la parte ya conciliada.

api_token requerido
ParámetroDescripción
api_tokenrequeridoParámetro de consulta.
business_uidrequeridoParámetro de consulta.
idrequeridoSegmento de URL.
from, toFiltro de fechas opcional.

Solicitud

cURL
curl "https://app.gecloud.me/api/v1/bank-accounts/5/summary?api_token=xxxx&business_uid=88123"

Respuesta — éxito

200 OK
{ "status": 1, "data": {
    "total_credit": "150000.000", "total_debit": "2500.000",
    "reconciled_credit": "150000.000", "reconciled_debit": "0.000",
    "total_txn": "2", "reconciled_txn": "1" } }

Categorías (ingresos/gastos)

Categorías usadas para clasificar productos, gastos y entradas previsionales. No confundir con las categorías de empresa (sector de actividad), que son una referencia global distinta.

GET/api/v1/categories

Lista las categorías de ingresos y/o gastos de una empresa.

api_token requerido
ParámetroDescripción
api_tokenrequeridoParámetro de consulta.
business_uidrequeridoParámetro de consulta.
typeincome o expense. Omitido = devuelve ambas, agrupadas.

Solicitud

cURL
curl "https://app.gecloud.me/api/v1/categories?api_token=xxxx&business_uid=88123&type=expense"

Respuesta — éxito (con type)

200 OK
{ "status": 1, "data": [
    { "id": 465, "name": "Suministros de oficina", "slug": "suministros-de-oficina", "type": "2" }
  ] }

Respuesta — éxito (sin type)

200 OK
{ "status": 1, "data": {
    "income": [ { "id": 464, "name": "Ventas de mercancía", "type": "1" } ],
    "expense": [ { "id": 465, "name": "Suministros de oficina", "type": "2" } ] } }
POST/api/v1/categories/add

Crea una categoría de ingreso o gasto.

api_token requerido
CampoTipoDescripción
api_tokenrequeridostring
business_uidrequeridostring
namerequeridostring
typerequeridostringincome o expense.

Solicitud

cURL
curl -X POST https://app.gecloud.me/api/v1/categories/add \
  -d "api_token=xxxx" -d "business_uid=88123" -d "name=Ventas de mercancía" -d "type=income"

Respuesta — éxito

200 OK
{ "status": 1, "message": "Category created", "id": 464 }

Espacio Gestoría

Reservado a cuentas de gestoría contable (profile_type = 'cabinet'). Permite gestionar clientes — con cuenta geCloud (invitación) o sin ella (expediente).

GET/api/v1/cabinet/clients

Lista los clientes (cuentas vinculadas + expedientes) de la gestoría autenticada.

api_token requerido
ParámetroDescripción
api_tokenrequeridoParámetro de consulta.
statusFiltro opcional: pending, active, suspended, revoked.

Solicitud

cURL
curl "https://app.gecloud.me/api/v1/cabinet/clients?api_token=xxxx"

Respuesta — éxito

200 OK
{ "status": 1, "data": [
    { "id": 13, "client_business_id": 385, "status": "active", "is_dossier": 1,
      "client_name": "Panadería Test", "client_email": "contact@test.local",
      "scope": "{\"accounting\":true,\"reports\":true,\"invoices\":true,\"expenses\":true}", "...": "..." }
  ] }

Respuestas posibles

  • status: 0 Token inválido, o esta cuenta no es una cuenta de gestoría contable.
  • status: 1 Lista de clientes.
POST/api/v1/cabinet/dossiers/add

Crea un expediente de cliente — para un cliente sin cuenta geCloud. La gestoría lleva su contabilidad directamente, sin invitación ni aceptación.

api_token requerido
CampoTipoDescripción
api_tokenrequeridostring
namerequeridostringRazón social del expediente.
contact_email, contact_phonestringDatos de contacto del expediente (no se crea ninguna cuenta real).
scopeJSONPor defecto: acceso completo (accounting, reports, invoices, expenses en true).

Solicitud

cURL
curl -X POST https://app.gecloud.me/api/v1/cabinet/dossiers/add \
  -d "api_token=xxxx" -d "name=Boulangerie Test" -d "contact_email=contact@test.local"

Respuesta — éxito

200 OK
{ "status": 1, "message": "Dossier created.", "link_id": 13, "business_id": 385, "business_uid": "59862" }

Respuestas posibles

  • status: 0 Falta el nombre, o se alcanzó el límite de expedientes del plan de gestoría.
  • status: 1 Expediente creado — reutilice business_uid en los endpoints de Contabilidad.
POST/api/v1/cabinet/invite

Invita a un cliente ya registrado en geCloud a otorgar acceso a la gestoría, por email.

api_token requerido
CampoTipoDescripción
api_tokenrequeridostring
client_emailrequeridostringEmail de la cuenta geCloud del cliente.
scopeJSONPor defecto: acceso completo.

Solicitud

cURL
curl -X POST https://app.gecloud.me/api/v1/cabinet/invite \
  -d "api_token=xxxx" -d "client_email=client@exemple.com"

Respuesta — éxito

200 OK
{ "status": 1, "message": "Invitation sent", "link_id": 14 }

Respuestas posibles

  • status: 0 Falta el email, no existe cuenta geCloud con esa dirección, ya vinculado o invitación pendiente, o límite del plan de gestoría alcanzado.
  • status: 1 Invitación enviada — a la espera de la aceptación del cliente.
POST/api/v1/cabinet/revoke/{link_id}

Revoca el acceso a un cliente (o elimina el vínculo con un expediente).

api_token requerido
ParámetroDescripción
api_tokenrequeridoCampo de formulario.
link_idrequeridoSegmento de URL — id del vínculo (devuelto por la lista de clientes).

Solicitud

cURL
curl -X POST https://app.gecloud.me/api/v1/cabinet/revoke/13 \
  -d "api_token=xxxx"

Respuesta — éxito

200 OK
{ "status": 1, "message": "Access revoked" }

Respuestas posibles

  • status: 0 Vínculo no encontrado, o no pertenece a esta gestoría.
  • status: 1 Acceso revocado.

Suscripción

Consulta de solo lectura del plan activo del usuario autenticado y su consumo respecto a los límites de ese plan.

GET/api/v1/subscription

Devuelve el plan activo del usuario, sus límites, y el consumo actual.

api_token requerido
ParámetroDescripción
api_tokenrequeridoParámetro de consulta.

Solicitud

cURL
curl "https://app.gecloud.me/api/v1/subscription?api_token=xxxx"

Respuesta — éxito (con suscripción activa)

200 OK
{ "status": 1,
  "plan": { "package_id": 2, "package_name": "STARTER", "package_slug": "starter",
            "billing_type": "yearly", "status": "verified", "expire_on": "2027-07-21" },
  "limits": { "business": 3, "customer": 500, "invoice": 200, "estimate": 100, "user-roles": 2 },
  "usage":  { "business": 1, "customer": 42, "invoice": 18, "estimate": 5 } }

Respuesta — éxito (sin suscripción activa)

200 OK
{ "status": 1, "plan": null, "message": "No active subscription" }

Nota

En limits, -2 significa ilimitado, -1/0 significa función desactivada en este plan, cualquier otro valor es un límite numérico.

Referencia

Datos estáticos útiles para completar sus formularios (no requiere autenticación).

GET/api/v1/countries

Lista completa de países, con los ids utilizados en el resto de la API (campo country).

No requiere autenticación

Solicitud

cURL
curl "https://app.gecloud.me/api/v1/countries"

Respuesta — éxito

200 OK
{ "status": 1, "message": "Liste des pays récupérée avec succès",
  "data": [ { "id": 21, "name": "Benin", "code": "BJ", "dial_code": "+229", "currency_symbol": "F", "currency_name": "West African Franc" } ] }
GET/api/v1/account-categories

Lista de categorías de empresa disponibles.

No requiere autenticación

Solicitud

cURL
curl "https://app.gecloud.me/api/v1/account-categories"

Respuesta — éxito

200 OK
{ "status": 1, "message": "Liste des catégories de compte récupérée avec succès",
  "data": [ { "id": 3, "name": "Comercio y Distribución" } ] }

Documentación de la API geCloud — gecloud.me