Skip to content

Integracion con Sage 50 (ContaPlus)

Por que Sage 50

Sage 50 (antes ContaPlus) es el ERP mas utilizado por PYMEs espanolas, con mas de 300.000 empresas activas. Es el estandar de facto en contabilidad y facturacion para el sector del transporte en Espana.

Lo que puedes integrar

ProcesoDe Cargoffer a SageComo
Facturas de transporteContrato firmado -> Factura ventaWebhook + API Sage
ClientesDatos del contrato -> Ficha clienteImportacion automatica
ProveedoresTransportistas -> Ficha proveedorImportacion datos fiscales
CobrosPago confirmado -> Asiento cobroWebhook payment.received

Metodos de integracion

1. Via fichero CSV (mas sencillo)

Sage 50 permite importar facturas desde CSV. Es el metodo mas rapido de implementar.

2. Via API Sage (automatico)

Sage tiene APIs REST disponibles para sus planes superiores. Requiere licencia Sage API.

3. Via middleware (recomendado)

Un servicio intermedio que recibe webhooks de Cargoffer y los transforma a llamadas Sage.


Guia paso a paso: Facturacion automatica

Paso 1: Registrar webhook en Cargoffer

bash
curl -X POST "https://api.pro.cargoffer.com/api/webhook" \
  -H "Authorization: Bearer *** \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://tu-sistema.com/webhook/cargoffer",
    "events": ["contract.signed", "payment.received"]
  }'

Paso 2: Recibir el evento

Cuando se firme un contrato, recibiras:

json
{
  "event": "contract.signed",
  "data": {
    "serviceCode": "SRV-2026-001",
    "amount": 1250.00,
    "currency": "EUR",
    "client": {
      "name": "Cliente SA",
      "cif": "A12345678"
    },
    "date": "2026-06-17",
    "description": "Transporte Madrid-Barcelona"
  }
}

Paso 3: Mapear campos a Sage 50

Campo CargofferCampo Sage 50Ejemplo
client.nameCliente.NombreCliente SA
client.cifCliente.CIF_NIFA12345678
amountFactura.BaseImponible1250.00
serviceCodeFactura.NumeroFacturaSRV-2026-001
dateFactura.Fecha17/06/2026

Paso 4: Generar CSV para Sage 50

python
import csv, requests, os

TOKEN="tu_t...R_CSV = "/exportaciones/sage"

def exportar_a_sage():
    """Exporta contratos firmados a formato CSV de Sage 50."""
    
    # Obtener contratos pendientes de facturar
    r = requests.get(
        "https://api.pro.cargoffer.com/api/company/contracts/",
        headers={"Authorization": f"Bearer {TOKEN}"}
    )
    contratos = r.json()
    
    # Generar CSV en formato Sage 50
    with open(f"{DIR_CSV}/facturas_sage_{fecha}.csv", "w", newline="") as f:
        writer = csv.writer(f, delimiter=";")
        writer.writerow(["TipoDoc", "Serie", "NumeroFactura", "Fecha",
                        "ClienteCIF", "ClienteNombre", "BaseImponible",
                        "Concepto"])
        
        for c in contratos:
            writer.writerow([
                "F",                    # TipoDoc: Factura
                "T",                    # Serie: Transportes
                c["serviceCode"],
                c["date"],
                c["client"]["cif"],
                c["client"]["name"],
                c["amount"],
                f"Transporte {c['serviceCode']}"
            ])
    
    return f"{DIR_CSV}/facturas_sage_{fecha}.csv"

Paso 5: Importar en Sage 50

Desde Sage 50: Utilidades -> Importar -> CSV -> Seleccionar archivo -> Asignar columnas -> Importar


Caso de uso: Facturacion diaria automatica

Cada noche, tu sistema:

  1. Consulta los contratos firmados del dia en Cargoffer
  2. Genera el CSV de facturas para Sage 50
  3. Lo deja en una carpeta compartida
  4. Sage 50 lo importa automaticamente (o manualmente cada manana)
python
import requests
from datetime import datetime, timedelta

TOKEN="tu_t...e manana = (datetime.now() - timedelta(days=1)).strftime("%Y-%m-%d")
hoy = datetime.now().strftime("%Y-%m-%d")

# Contratos firmados ayer
r = requests.get(
    f"https://api.pro.cargoffer.com/api/company/contracts/?dateFrom={manana}&dateTo={hoy}",
    headers={"Authorization": f"Bearer {TOKEN}"}
)

print(f"Contratos a facturar: {len(r.json())}")
# ... generar CSV como en el paso 4

Documentacion relacionada

Documentación de Cargoffer