Ruby

Integra InvoCash con Ruby

Automatiza la facturación electrónica VeriFactu desde Ruby on Rails o scripts Ruby. Guía paso a paso con net/http nativo.

Ruby

Facturación VeriFactu en Ruby y Rails

La API REST de InvoCash se integra de forma idiomática con Ruby. Puedes usar net/http de la librería estándar o la gema faraday según las convenciones de tu proyecto Rails.

Ideal para SaaS B2B en Rails, scripts de automatización contable o servicios Sinatra que necesiten emitir facturas homologadas con VeriFactu sin gestionar la normativa fiscal internamente.

COMPATIBILIDAD
Ruby
2.73.03.13.23.3
Frameworks
Rails 6+SinatraHanamiRoda
HTTP
net/httpfaradayhttpartyjson
  • VeriFactu incluido sin integración extra.
  • net/http disponible en librería estándar.
  • Autenticación JWT o API Key.
  • Sandbox gratuito para pruebas.
Por qué Ruby + InvoCash

Lo que consigues al integrar

Idiomático y elegante

Rails ActiveJob, Sidekiq, y el resto del stack Ruby se integran sin fricción.

Background Jobs ready

Encola la facturación con ActiveJob o tu job framework favorito sin bloqueos.

VeriFactu delegado

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

Escala con tu negocio

Desde startups hasta SaaS maduros. Ruby y Rails te acompañan.

Antes de empezar

Requisitos previos

Integración

Guía de integración paso a paso

1

Autenticación

require 'net/http'
require 'json'
require 'uri'

BASE_URL = 'https://{su-tenant}.invo.cash/api'

def get_token
  uri  = URI("#{BASE_URL}/auth/login")
  resp = Net::HTTP.post(uri,
    { email: 'usuario@empresa.com', password: 'tu_contraseña' }.to_json,
    'Content-Type' => 'application/json')
  JSON.parse(resp.body)['access_token']
end

# Alternativa: API Key
HEADERS = { 'X-API-Key' => 'tu_api_key', 'Content-Type' => 'application/json' }
2

Crear una factura

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

def crear_factura(token, customer_id, descripcion, precio, iva = 21)
  tax_base   = precio
  tax_amount = (tax_base * iva / 100.0).round(2)

  payload = {
    customer_id:                customer_id,
    verifactu_issuer_territory: 'MAINLAND',
    simplified:                 false,
    lines: [{
      description:             descripcion,
      quantity:                1,
      unit_price:              precio,
      tax_base:                tax_base,
      tax_pctge:               iva,
      tax_amount:              tax_amount,
      tax_withholding_pctge:   0,
      tax_withholding_amount:  0,
      tax_type:                'IVA',
      clave_regimen:           '01',
      qualification_operation: 'S1',
      exempt_operation:        nil,
      total:                   tax_base
    }],
    total: (tax_base + tax_amount).round(2)
  }

  uri  = URI("#{BASE_URL}/invoices")
  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true
  req  = Net::HTTP::Post.new(uri, {
    'Content-Type'  => 'application/json',
    'Authorization' => "Bearer #{token}"
  })
  req.body = payload.to_json
  JSON.parse(http.request(req).body)['data'][0]
end
3

Estado VeriFactu y PDF

def api_get(token, path)
  uri  = URI("#{BASE_URL}#{path}")
  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true
  req  = Net::HTTP::Get.new(uri, 'Authorization' => "Bearer #{token}")
  http.request(req)
end

# Estado VeriFactu
vf = JSON.parse(api_get(token, "/invoice/#{id}/verifactu").body)

# Descargar PDF
pdf = api_get(token, "/invoice/#{id}/downloadPdf")
File.binwrite('factura.pdf', pdf.body)

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: SaaS Rails con facturación automática en Active Job

Pago confirmado
ActiveJob enqueu
API InvoCash
Factura VeriFactu
Base de datos

Un SaaS B2B en Rails encola un ActiveJob al confirmar el pago de una suscripción. El job llama a la API de InvoCash con los datos de la factura, la valida con VeriFactu y almacena el número de factura en el registro de la suscripción — sin bloquear el hilo principal de Rails.

Contacto

¿Necesitas ayuda con la integración?

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