Saltar al contenido

Ciclo fiscal ​

Los pedidos comunican la intencion fiscal mediante dos campos:

CampoValores
fiscal_eventorder_sync, invoice_candidate, cancel_candidate, refund_candidate
invoice_actionnone, create_invoice, cancel_or_annul, rectify_or_refund, exchange_to_full (v1.1)

Flujos habituales ​

Escenariofiscal_eventinvoice_action
Sincronizacion sin facturaorder_syncnone
Pedido pagado listo para facturainvoice_candidatecreate_invoice
Pedido canceladocancel_candidatecancel_or_annul
Reembolso parcial o totalrefund_candidaterectify_or_refund
Comprador invitado aporta NIF despuesinvoice_candidateexchange_to_full (v1.1)

Para cambios posteriores a la factura, envia contract_version: "1.3" con correction_events[]. Reembolsos y devoluciones deben incluir id estable, evidencia por linea y deltas con signo. Un cambio conocido solo por fingerprint es unknown: abre revision guiada, pero nunca se autocorrige. refunds[] legacy sigue siendo compatible.

Canje F2 a F3 ​

Un comprador invitado recibe primero una factura simplificada (F2, "ticket"). Si despues aporta sus datos fiscales y solicita factura completa, reenvia el pedido con invoice_action: "exchange_to_full" y la identificacion fiscal completa del cliente en client:

json
{
  "contract_version": "1.1",
  "id_external": "order-1001",
  "reference": "1001",
  "fiscal_event": "invoice_candidate",
  "invoice_action": "exchange_to_full",
  "original_order_reference": "1001",
  "client": {
    "id_external": "customer-1001",
    "company": "Example SL",
    "vat_number": "B00000000",
    "customer_type": "b2b",
    "tax_id_type": "cif",
    "country": "ES"
  }
}
  • original_order_reference solo es necesario cuando el canje se envia como un pedido nuevo que referencia al original. Se omite cuando el canje se envia como actualizacion del mismo pedido.
  • El nucleo emite una factura completa (F3) que sustituye a la F2. La F2 no se anula ni se rectifica.
  • El canje exige que la F2 este aceptada, no haya sido canjeada antes y este dentro del plazo permitido. Si no se cumple alguna condicion, el pedido queda en needs_review en lugar de devolver un error.
  • Reenviar el mismo canje es idempotente: no genera una segunda F3.

Documentacion publica de la API de Factulit.