Rust

Integra InvoCash con Rust

Automatiza la facturación electrónica VeriFactu desde servicios Rust de alto rendimiento. Ejemplos con reqwest y tokio.

Rust

Facturación VeriFactu en servicios Rust

La API REST de InvoCash es perfectamente compatible con el ecosistema async de Rust. Con reqwest para HTTP, serde_json para JSON y tokio como runtime, la integración es limpia y type-safe.

Ideal para backends de alto rendimiento, servicios financieros o aplicaciones que requieran garantías de memoria y velocidad nativa, manteniendo el cumplimiento VeriFactu externalizado a InvoCash.

COMPATIBILIDAD
Rust
2021 edition2024 edition
Frameworks
TokioAxumActix-webRocket
HTTP
reqwesthyperserde_jsonasync/await
  • VeriFactu incluido sin integración extra.
  • Type-safe por diseño del lenguaje.
  • Autenticación JWT o API Key.
  • Sandbox gratuito para pruebas.
Por qué Rust + InvoCash

Lo que consigues al integrar

Type-safe y performante

Rust garantiza memory-safety sin garbage collection. Cero costo por abstracción.

Async/await nativo

Con tokio, procesa miles de facturas simultáneamente sin bloques ni overhead.

VeriFactu delegado

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

Escala sin límites

Servicios financieros, high-frequency trading, sistemas críticos. Rust aguanta.

Antes de empezar

Requisitos previos

Integración

Guía de integración paso a paso

1

Autenticación

use reqwest::Client;
use serde_json::json;

const BASE_URL: &str = "https://{su-tenant}.invo.cash/api";

let client = Client::new();
let auth: serde_json::Value = client
    .post(format!("{}/auth/login", BASE_URL))
    .json(&json!({
        "email":    "usuario@empresa.com",
        "password": "tu_contraseña"
    }))
    .send().await?
    .json().await?;

let token = auth["access_token"].as_str().unwrap();

// Alternativa: API Key
// .header("X-API-Key", "tu_api_key")
2

Crear una factura

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

let precio: f64 = 2000.0;
let tax_base    = precio;
let tax_amount  = (tax_base * 21.0 / 100.0 * 100.0).round() / 100.0;

let result: serde_json::Value = client
    .post(format!("{}/invoices", BASE_URL))
    .bearer_auth(token)
    .json(&json!({
        "customer_id":                123,
        "verifactu_issuer_territory": "MAINLAND",
        "simplified":                 false,
        "lines": [{
            "description":             "Servicio backend Rust",
            "quantity":                1,
            "unit_price":              precio,
            "tax_base":                tax_base,
            "tax_pctge":               21,
            "tax_amount":              tax_amount,
            "tax_withholding_pctge":   0,
            "tax_withholding_amount":  0,
            "tax_type":                "IVA",
            "clave_regimen":           "01",
            "qualification_operation": "S1",
            "exempt_operation":        null,
            "total":                   tax_base,
        }],
        "total": tax_base + tax_amount,
    }))
    .send().await?
    .json().await?;
3

Estado VeriFactu y PDF

// Estado VeriFactu
let vf: serde_json::Value = client
    .get(format!("{}/invoice/{}/verifactu", BASE_URL, invoice_id))
    .bearer_auth(token)
    .send().await?.json().await?;

// Descargar PDF
let pdf_bytes = client
    .get(format!("{}/invoice/{}/downloadPdf", BASE_URL, invoice_id))
    .bearer_auth(token)
    .send().await?
    .bytes().await?;
std::fs::write("factura.pdf", &pdf_bytes)?;

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: servicio de pagos Rust con facturación automática

Transacción pagada
Tokio task
API InvoCash
Factura VeriFactu
ID a sistema origen

Un motor de procesamiento de pagos en Rust recibe confirmaciones de transacciones a miles por segundo. Ante cada pago exitoso, una task de tokio llama de forma no bloqueante a la API de InvoCash para generar la factura, validarla con VeriFactu y devolver el ID de factura al sistema origen — con latencia mínima y garantías de tipo en compilación.

Contacto

¿Necesitas ayuda con la integración?

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