Skip to content

Integracion con Contasol / A3

Por que Contasol

Contasol (Wolters Kluwer) y A3ERP son los programas de contabilidad mas utilizados por asesorias y pequenas empresas en Espana. Aunque no tienen API nativa, la importacion de datos se puede automatizar mediante archivos CSV con formatos estandarizados.

Lo que puedes integrar

ProcesoFormatoPeriodo
Facturas emitidasCSV importableDiario/Semanal
Asientos contablesCSV o XLSXMensual
Clientes/proveedoresCSVA demanda

Guia paso a paso

Paso 1: Obtener contratos firmados

bash
curl -X GET "https://api.pro.cargoffer.com/api/company/contracts/?dateFrom=2026-06-01&dateTo=2026-06-30" \
  -H "Authorization: Bearer <token...
### Paso 2: Generar CSV en formato Contasol

Contasol espera un formato especifico de columnas. Este script genera el archivo listo para importar:

```python
import csv, requests
from datetime import datetime

TOKEN=*** = "exportaciones"

def generar_asientos_contasol():
    """Genera CSV de asientos contables para importar en Contasol."""
    
    r = requests.get(
        "https://api.pro.cargoffer.com/api/company/contracts/",
        headers={"Authorization": f"Bearer {TOKEN}"}
    )
    contratos = r.json()
    
    fecha_archivo = datetime.now().strftime("%Y%m%d")
    archivo = f"{DIR_EXPORT}/asientos_cargoffer_{fecha_archivo}.csv"
    
    with open(archivo, "w", newline="", encoding="utf-8") as f:
        writer = csv.writer(f, delimiter=";")
        
        # Cabecera Contasol
        writer.writerow([
            "Diario", "Fecha", "Cuenta", "Debe", "Haber",
            "Concepto", "Documento", "CIF"
        ])
        
        for c in contratos:
            # Asiento de ingreso
            writer.writerow([
                "VT",                    # Diario de ventas
                c["date"],
                "70500001",              # Cuenta de ingresos (personalizar)
                "",                      # Debe
                str(c["amount"]),        # Haber
                f"Transporte {c['serviceCode']}",
                c["serviceCode"],
                c["client"]["cif"]
            ])
            
            # Asiento de IVA (si aplica)
            writer.writerow([
                "VT",
                c["date"],
                "47700001",              # Cuenta de IVA repercutido
                "",
                str(round(c["amount"] * 0.21, 2)),
                f"IVA Transporte {c['serviceCode']}",
                c["serviceCode"],
                c["client"]["cif"]
            ])
    
    return archivo

Paso 3: Importar en Contasol

  1. Abre Contasol
  2. Ve a Utilidades -> Importar -> Asientos
  3. Selecciona el archivo CSV generado
  4. Mapea las columnas segun el orden del CSV
  5. Ejecuta la importacion

Paso 4: Automatizar con tarea programada

bash
# En Linux (cron diario a las 22:00)
0 22 * * * /usr/bin/python3 /scripts/exportar_contasol.py

# En Windows (Programador de tareas)
# C:\Python39\python.exe C:\scripts\exportar_contasol.py

Formato CSV para A3ERP

Si usas A3ERP en lugar de Contasol, el formato es ligeramente diferente:

python
def generar_a3erp(contratos):
    with open("asientos_a3.csv", "w", newline="") as f:
        writer = csv.writer(f, delimiter=";")
        writer.writerow([
            "TipoAsiento", "Fecha", "CuentaContable",
            "ImporteDebe", "ImporteHaber", "Concepto"
        ])
        
        for c in contratos:
            writer.writerow(["F", c["date"], "43000001",
                           c["amount"], "", f"Cobro {c['serviceCode']}"])
            writer.writerow(["F", c["date"], "57000001",
                           "", c["amount"], f"Cobro {c['serviceCode']}"])

Automatizacion completa con Power Automate

Si no quieres programar, puedes usar Microsoft Power Automate para:

  1. Trigger: Calendario (cada dia a las 22:00)
  2. Accion: Llamar a API Cargoffer para obtener contratos
  3. Accion: Generar archivo CSV
  4. Accion: Enviar por email al despacho contable

Documentacion relacionada

Documentación de Cargoffer