InvoiceDocument


Documento fiscal electrónico (facturación en Venezuela a través de Unidigital). Se genera a partir de las comisiones ya conciliadas y se emite ante el proveedor fiscal externo.

Tipos (type)

FA (factura), NC (nota de crédito) y ND (nota de débito). Las NC/ND son reintegros de una FA y quedan enlazadas a ella por related_document_id / relación relatedDocument.

Ciclo de emisión

Al crearse sólo tiene reference, target e items. Al despacharse se envía a Unidigital (CreateUnidigitalDocumentJob), se marca issued_at y se guarda document_id. verify() consulta el proveedor y, cuando la respuesta trae número y número de control, marca completed_at. number, control y serie_strong_id se leen de payload.result.

Notas y gotchas

  • target es polimórfico: el Client, Branch o Provider al que se factura. related_type/related_id apuntan al origen (orden o GeneralInvoice).
  • Sólo se puede emitir una NC/ND de una FA ya completada.
  • Al eliminar un documento se borran sus items.

Estructura de Datos

Atributo Tipo Descripción
id int
type string Tipo de documento: FA, NC o ND.
reference string Referencia del documento (normalmente el uid de la orden o un código por comercio/proveedor y fecha).
issued_at datetime\|null Momento en que se envió a emitir; null si aún no se despachó.
completed_at datetime\|null Momento en que el proveedor confirmó la emisión (número + control).
document_id string\|null Identificador del documento en el proveedor fiscal.
payload array\|null Respuesta del proveedor fiscal; payload.result trae número, control y serie.
related_type string Clase del origen del documento (orden o GeneralInvoice).
related_id int ID del origen del documento.
target_type string Clase de la entidad facturada (App\Client, App\Branch o App\Provider).
target_id int ID de la entidad facturada.
company_id int Compañía dueña del documento.
created_at datetime\|null Fecha de creación.
updated_at datetime\|null Fecha de última modificación.
related_document_id string\|null document_id de la FA de la que esta NC/ND es reintegro.
company Company Compañía dueña del documento.
control int\|null Número de control fiscal, leído de payload.result.controlNumber.
items InvoiceDocumentItem> Líneas del documento.
number int\|null Número del documento, leído de payload.result.number.
relatedDocument InvoiceDocument\|null FA a la que corresponde esta NC/ND.
serie_strong_id string\|null Identificador de serie del documento en el proveedor.
target Model\|Eloquent Entidad facturada (Client, Branch o Provider).
{
    "id": 1,
    "type": "FA",
    "reference": "00d-0006047",
    "issued_at": "2025-01-24T20:34:10.000000Z",
    "completed_at": "2025-01-29T20:25:50.000000Z",
    "document_id": "c1a1a7de-972d-4ef4-af89-ed7185beb5f6",
    "payload": {
        "result": {
            "strongId": "c1a1a7de-972d-4ef4-af89-ed7185beb5f6",
            "codeName": "FA",
            "serieStrongId": "74b748e7-2531-4e57-a3b1-97cf4a6bed3b",
            "serie": "0",
            "number": 1,
            "fiscalRegistry": "V19892238",
            "name": "Social D, Jos Daniel",
            "currency": "VES",
            "exemptAmount": 0,
            "taxBase": 21.43,
            "taxBaseReduced": 0,
            "taxAmount": 3.43,
            "total": 24.86,
            "igtfBaseAmount": 0,
            "igtfAmount": 0,
            "grandTotal": 0,
            "controlNumber": 1,
            "batchStrongId": "74f4ebd9-56cc-4e88-bbf6-8273c8569c0d",
            "status": "Assigned"
        },
        "information": [],
        "success": [],
        "hasErrors": false
    },
    "related_type": "App\Order",
    "related_id": 15440,
    "target_type": "App\Client",
    "target_id": 228,
    "company_id": 116,
    "created_at": "2025-01-24T16:21:41.000000Z",
    "updated_at": "2025-01-29T20:25:50.000000Z",
    "related_document_id": null,
    "number": 1,
    "control": 1
}

Endpoints

Acciones de InvoiceDocument

Emitir un reintegro (NC/ND)

Genera una nota de crédito o de débito (type) a partir del InvoiceDocument indicado, enlazada a la factura original.

Método URI Cabeceras
POST /companies/{companyId}/invoices-documents/{invoiceDocumentId}/refund Authorization
{
    "type": {
        "required": true,
        "string": true
    }
}

Errores de negocio

Código HTTP Cuándo ocurre
EF700 400 El documento original no está completado.

Relaciones