Go

Integra InvoCash con Go

Automatiza la facturación electrónica VeriFactu desde microservicios Go. Guía paso a paso con net/http nativo y encoding/json.

Go

Facturación VeriFactu en microservicios Go

La API REST de InvoCash es ideal para Go: JSON estándar, autenticación con header Bearer y endpoints RESTful claros. Compatible con cualquier versión de Go 1.18+ sin dependencias externas.

Perfecto para equipos que construyen backends de alta concurrencia o microservicios cloud-native que necesiten emisión automática de facturas sin gestionar el cumplimiento VeriFactu.

COMPATIBILIDAD
Go
1.181.191.201.21+
Frameworks
GinEchogRPCchiFiber
HTTP
net/httpencoding/jsongoroutineschannels
  • VeriFactu incluido sin integración extra.
  • Solo librería estándar, sin dependencias.
  • Autenticación JWT o API Key.
  • Sandbox gratuito para pruebas.
Por qué Go + InvoCash

Lo que consigues al integrar

Sin dependencias extra

net/http y encoding/json vienen nativos. Cero dependencias externas.

Goroutines ready

Llamadas concurrentes sin bloqueo. Ideal para procesar miles de facturas simultáneamente.

VeriFactu delegado

InvoCash gestiona firma, hashes y envío a la AEAT. Tu código solo crea facturas.

Escala con tu volumen

Desde microservicios pequeños hasta plataformas con millones de transacciones.

Antes de empezar

Requisitos previos

Integración

Guía de integración paso a paso

1

Autenticación y cliente HTTP

package main

import (
    "bytes"
    "encoding/json"
    "net/http"
)

const baseURL = "https://{su-tenant}.invo.cash/api"

type AuthResp struct {
    AccessToken string `json:"access_token"`
}

func getToken() (string, error) {
    body, _ := json.Marshal(map[string]string{
        "email":    "usuario@empresa.com",
        "password": "tu_contraseña",
    })
    resp, err := http.Post(baseURL+"/auth/login",
        "application/json", bytes.NewBuffer(body))
    if err != nil { return "", err }
    defer resp.Body.Close()
    var auth AuthResp
    json.NewDecoder(resp.Body).Decode(&auth)
    return auth.AccessToken, nil
}
2

Crear una factura

Calcula tax_base, tax_amount y total antes de enviar — la API no los calcula automáticamente.

func crearFactura(token string, customerId int, desc string, precio float64) {
    taxBase   := precio
    taxAmount := math.Round(taxBase*21) / 100

    payload, _ := json.Marshal(map[string]any{
        "customer_id":                customerId,
        "verifactu_issuer_territory": "MAINLAND",
        "simplified":                 false,
        "lines": []map[string]any{{
            "description":             desc,
            "quantity":                1,
            "unit_price":              precio,
            "tax_base":                taxBase,
            "tax_pctge":               21,
            "tax_amount":              taxAmount,
            "tax_withholding_pctge":   0,
            "tax_withholding_amount":  0,
            "tax_type":                "IVA",
            "clave_regimen":           "01",
            "qualification_operation": "S1",
            "exempt_operation":        nil,
            "total":                   taxBase,
        }},
        "total": taxBase + taxAmount,
    })

    req, _ := http.NewRequest("POST", baseURL+"/invoices",
        bytes.NewBuffer(payload))
    req.Header.Set("Content-Type", "application/json")
    req.Header.Set("Authorization", "Bearer "+token)
    http.DefaultClient.Do(req)
}
3

Estado VeriFactu y descarga de PDF

func apiGet(token, path string) *http.Response {
    req, _ := http.NewRequest("GET", baseURL+path, nil)
    req.Header.Set("Authorization", "Bearer "+token)
    resp, _ := http.DefaultClient.Do(req)
    return resp
}

// Estado VeriFactu
vfResp := apiGet(token, "/invoice/123/verifactu")

// Descargar PDF
pdfResp := apiGet(token, "/invoice/123/downloadPdf")
pdfData, _ := io.ReadAll(pdfResp.Body)
os.WriteFile("factura.pdf", pdfData, 0644)

VeriFactu incluido automáticamente: todas las facturas creadas mediante la API de InvoCash se procesan con el sistema VeriFactu de la AEAT. Cumplimiento de la Ley Antifraude y el RD 1007/2023 sin ningún desarrollo adicional por tu parte.

¿Dudas durante la integración?
Nuestro equipo técnico te da respuesta ágil dentro del horario laboral. No hace falta que seas cliente.

Hablar con el equipo técnico
Referencia rápida

Endpoints principales de la API

Los endpoints que usarás con más frecuencia en tu integración. La documentación completa está disponible dentro de la plataforma.

MétodoEndpointDescripción
POST/api/auth/loginAutenticar y obtener token JWT
GET/api/customersListar clientes
POST/api/invoicesCrear una o varias facturas
GET/api/invoicesListar facturas (paginado, con filtros)
GET/api/invoice/{id}Detalle de una factura
PUT/api/invoice/{id}Actualizar factura (solo si no está validada)
GET/api/invoice/{id}/verifactuEstado de validación VeriFactu en la AEAT
GET/api/invoice/{id}/downloadPdfDescargar el PDF de la factura
POST/api/invoice/{id}/communicate/emailEnviar la factura por email al cliente
POST/api/invoice/{id}/validateEnviar manualmente a VeriFactu
Caso de uso

Ejemplo real: microservicio Go con facturación concurrente

Evento de pago
Goroutine consumer
API InvoCash
Factura VeriFactu
Almacenamiento

Un microservicio de pagos en Go publica eventos en un canal. Un goroutine consumidor escucha los eventos de pago completado y llama a InvoCash de forma concurrente para generar múltiples facturas simultáneamente, aprovechando el modelo de concurrencia nativo de Go.

Contacto

¿Necesitas ayuda con la integración?

Nuestro equipo técnico te acompaña en todo el proceso. Sin compromiso.