Automatiza la facturación electrónica VeriFactu desde microservicios Go. Guía paso a paso con net/http nativo y encoding/json.
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.
net/http y encoding/json vienen nativos. Cero dependencias externas.
Llamadas concurrentes sin bloqueo. Ideal para procesar miles de facturas simultáneamente.
InvoCash gestiona firma, hashes y envío a la AEAT. Tu código solo crea facturas.
Desde microservicios pequeños hasta plataformas con millones de transacciones.
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
}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)
}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.
Los endpoints que usarás con más frecuencia en tu integración. La documentación completa está disponible dentro de la plataforma.
| Método | Endpoint | Descripción |
|---|---|---|
| POST | /api/auth/login | Autenticar y obtener token JWT |
| GET | /api/customers | Listar clientes |
| POST | /api/invoices | Crear una o varias facturas |
| GET | /api/invoices | Listar 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}/verifactu | Estado de validación VeriFactu en la AEAT |
| GET | /api/invoice/{id}/downloadPdf | Descargar el PDF de la factura |
| POST | /api/invoice/{id}/communicate/email | Enviar la factura por email al cliente |
| POST | /api/invoice/{id}/validate | Enviar manualmente a VeriFactu |
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.
Nuestro equipo técnico te acompaña en todo el proceso. Sin compromiso.