API

Documentación para desarrolladores

Recursos: received_invoices, delivery_notes

Facturación

Referencia de los recursos de Facturación de la API: facturas de compra y remitos. La emisión de comprobantes electrónicos AFIP/ARCA tiene su propia guía completa en /dev/invoices/; esta página cubre los demás documentos de facturación.


Todos los endpoints de esta página están bajo la URL base https://api.yo-facturo.com. Cada recurso expone una API REST estándar (listado, detalle, alta, modificación, baja y operaciones masivas) y se protege con sus propios scopes de lectura y escritura. Para emitir facturas, notas de crédito y notas de débito electrónicas ante AFIP/ARCA, consultá la guía de Facturación AFIP.

Facturas de compra

Una factura de compra es un comprobante emitido por un tercero (proveedor) a nombre del CUIT de la cuenta. La API no permite dar de alta una factura de compra desde cero: los datos fiscales (CUIT, tipo, número, CAE, importes) provienen de ARCA. Los registros entran importando un CSV exportado del portal de ARCA ("Mis Comprobantes Recibidos"). Sobre esos registros, la API sí permite operaciones de gestión: vincularlos a un asiento contable, marcarlos como ignorados o eliminarlos. En resumen, no hay alta ni edición fiscal campo a campo, pero el recurso no es de solo lectura pura: la escritura existe para importar y para gestionar el estado contable de cada comprobante.

Endpoint base: /api/v1/received_invoices

Scopes: received_invoices:read, received_invoices:write

Como las facturas de compra no se crean campo a campo por la API, no hay un cuerpo de creación. Los siguientes campos son los que devuelve un GET de cada registro:

Campos

CampoTipoRequeridoNotas
idstringnoIdentificador único del registro.
tenant_cuitstringnoCUIT del receptor (la cuenta).
supplier_cuitstringnoCUIT del emisor (proveedor).
supplier_namestringnoRazón social del proveedor.
voucher_typeenteronoCódigo del tipo de comprobante AFIP (1, 6, 11, ...).
sale_pointenteronoPunto de venta del comprobante.
voucher_numberenteronoNúmero del comprobante.
caestringnoCAE del comprobante recibido.
cae_expirationstring (ISO 8601)noFecha de vencimiento del CAE.
issue_datestring (ISO 8601)noFecha de emisión del comprobante.
processed_datestring (ISO 8601)noFecha en que AFIP registró el comprobante.
currencystringnoMoneda del comprobante (por ejemplo "PES").
exchange_ratenúmeronoCotización de la moneda. Por defecto 1.0.
total_amountnúmeronoImporte total del comprobante.
net_taxednúmeronoImporte neto gravado.
net_untaxednúmeronoImporte neto no gravado.
exemptnúmeronoImporte exento.
ivanúmeronoImporte de IVA.
other_taxesnúmeronoImporte de otros tributos.
vat_itemsarraynoDesglose de alícuotas de IVA (alícuota, base, importe).
statusstringnoEstado en el pipeline: "pending", "linked" o "ignored".
sourcestringnoOrigen del registro: "wsmtxca", "portal_scrape" o "excel_import".
linked_journal_entry_idstringnoID del asiento contable vinculado, si lo hay.
linked_expense_idstringnoID del gasto vinculado, si lo hay.
linked_account_idstringnoID de la cuenta contable vinculada, si la hay.
notesstringnoNotas internas sobre el comprobante.

Endpoints

Relativos a /api/v1/received_invoices. Este recurso no expone los endpoints CRUD genéricos de alta y edición campo a campo: los registros entran por importación de CSV y luego se gestionan. La escritura (received_invoices:write) habilita importar el CSV, vincular el comprobante a la contabilidad, ignorarlo o eliminarlo.

MétodoEndpointDescripciónScope
GET/api/v1/received_invoices/list/Listar facturas de compra (con filtros y paginación)received_invoices:read
GET/api/v1/received_invoices/{id}/Obtener una factura de compra por su IDreceived_invoices:read
GET/api/v1/received_invoices/import-history/Historial de importaciones de CSV recientesreceived_invoices:read
POST/api/v1/received_invoices/upload-csv/Importar un CSV exportado del portal ARCA (multipart/form-data, campo file)received_invoices:write
POST/api/v1/received_invoices/{id}/link/Vincular el comprobante a un asiento contable y cuentareceived_invoices:write
POST/api/v1/received_invoices/{id}/ignore/Marcar el comprobante como ignoradoreceived_invoices:write
DELETE/api/v1/received_invoices/{id}/Eliminar un registro de factura de comprareceived_invoices:write

Ejemplo

Petición — listar las facturas de compra de la cuenta:

curl "https://api.yo-facturo.com/api/v1/received_invoices/list/?page=1&limit=20" \
  -H "X-API-Key: TU_TOKEN"

Respuesta — un registro del listado:

{
  "success": true,
  "data": {
    "id": "8c1f0d2e-3a4b-4c5d-9e6f-7a8b9c0d1e2f",
    "tenant_cuit": "30716543210",
    "supplier_cuit": "20345678901",
    "supplier_name": "Insumos del Sur S.R.L.",
    "voucher_type": 1,
    "sale_point": 4,
    "voucher_number": 1203,
    "cae": "75123456789012",
    "cae_expiration": "2026-05-31T00:00:00",
    "issue_date": "2026-05-12T00:00:00",
    "processed_date": "2026-05-13T09:15:00",
    "currency": "PES",
    "exchange_rate": 1.0,
    "total_amount": 121000.00,
    "net_taxed": 100000.00,
    "net_untaxed": 0.00,
    "exempt": 0.00,
    "iva": 21000.00,
    "other_taxes": 0.00,
    "vat_items": [
      { "aliquot": 21, "base": 100000.00, "amount": 21000.00 }
    ],
    "status": "pending",
    "source": "wsmtxca",
    "linked_journal_entry_id": null,
    "linked_expense_id": null,
    "linked_account_id": null,
    "notes": null
  }
}

Petición — POST /api/v1/received_invoices/{id}/link/ para vincular un comprobante a un asiento contable. journal_entry_id es obligatorio; account_id es opcional:

{
  "journal_entry_id": "5f3a1b2c-9d8e-4f7a-b6c5-1d2e3f4a5b6c",
  "account_id": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
}

Respuesta — el comprobante queda en estado "linked":

{
  "success": true,
  "data": {
    "received_invoice_id": "8c1f0d2e-3a4b-4c5d-9e6f-7a8b9c0d1e2f"
  }
}

Remitos

Un remito es un documento que registra el traslado físico de mercadería al cliente, independiente de la facturación. Descuenta stock al emitirse y luego puede convertirse en una factura. Se administra por completo desde la API: se crean, modifican y dan de baja remitos como cualquier otro recurso.

Endpoint base: /api/v1/delivery_notes

Scopes: delivery_notes:read, delivery_notes:write

Campos

CampoTipoRequeridoNotas
customer_idstringID del cliente destinatario del remito.
itemsarrayLíneas del remito. Debe tener al menos un item (ver tabla de campos del item).
customer_namestringnoNombre del cliente. Máximo 200 caracteres.
customer_documentstringnoDocumento del cliente. Máximo 30 caracteres.
sale_pointenteronoPunto de venta. Entre 1 y 99999.
referencestringnoReferencia libre (orden de compra, nota interna). Máximo 100 caracteres.
origin_addressstringnoDomicilio de origen de la mercadería. Máximo 300 caracteres.
destination_addressstringnoDomicilio de destino de la mercadería. Máximo 300 caracteres.
carrier_namestringnoNombre del transportista. Máximo 200 caracteres.
carrier_documentstringnoDocumento del transportista. Máximo 30 caracteres.
driver_namestringnoNombre del chofer. Máximo 200 caracteres.
vehicle_platestringnoPatente del vehículo. Máximo 20 caracteres.
statusstringnoEstado del remito: "draft", "issued", "delivered", "invoiced" o "cancelled".
notesstringnoNotas internas. Máximo 2000 caracteres.
metadataobjectnoObjeto libre para datos adicionales.

Cada elemento del array items es un objeto con los siguientes campos:

Campos del item

CampoTipoRequeridoNotas
descriptionstringDescripción de la línea. Máximo 500 caracteres.
quantitynúmeroCantidad. Debe ser mayor que 0.
product_idstringnoID del producto asociado.
variant_idstringnoID de la variante del producto.
skustringnoSKU del producto. Máximo 100 caracteres.
unitstringnoUnidad de medida (por ejemplo "u", "kg"). Máximo 20 caracteres.
unit_pricenúmeronoPrecio unitario. Mayor o igual a 0.
subtotalnúmeronoSubtotal de la línea. Mayor o igual a 0.

Endpoints

Relativos a /api/v1/delivery_notes.

MétodoEndpointDescripción
GET/api/v1/delivery_notes/list/Listar registros (con filtros y paginación)
GET/api/v1/delivery_notes/{id}/Obtener un registro por su ID
POST/api/v1/delivery_notes/Crear un registro
PUT/api/v1/delivery_notes/{id}/Actualizar un registro
DELETE/api/v1/delivery_notes/{id}/Eliminar un registro
POST/api/v1/delivery_notes/bulk/create/Crear varios registros en una sola llamada
PUT/api/v1/delivery_notes/bulk/update/Actualizar varios registros en una sola llamada
POST/api/v1/delivery_notes/bulk/delete/Eliminar varios registros en una sola llamada

Ejemplo

Petición — POST /api/v1/delivery_notes/ para crear un remito:

{
  "customer_id": "c0a8f1d2-3e4b-4c5d-8e6f-1a2b3c4d5e6f",
  "customer_name": "Comercial Andina S.A.",
  "customer_document": "30709876543",
  "sale_point": 1,
  "reference": "OC-2026-0042",
  "origin_address": "Av. Siempre Viva 742, Córdoba",
  "destination_address": "Ruta 9 Km 312, Rosario",
  "carrier_name": "Transportes del Litoral",
  "driver_name": "Juan Pérez",
  "vehicle_plate": "AD123FG",
  "items": [
    {
      "description": "Caja de repuestos modelo X-200",
      "quantity": 10,
      "sku": "REP-X200",
      "unit": "u",
      "unit_price": 4500.00,
      "subtotal": 45000.00
    }
  ],
  "status": "issued",
  "notes": "Entregar en horario comercial"
}

Respuesta — el remito creado, con su number asignado y el stock descontado:

{
  "success": true,
  "data": {
    "id": "7b2e9c1a-4d5f-4a6b-9c8d-2e3f4a5b6c7d",
    "number": 58,
    "sale_point": 1,
    "reference": "OC-2026-0042",
    "customer_id": "c0a8f1d2-3e4b-4c5d-8e6f-1a2b3c4d5e6f",
    "customer_name": "Comercial Andina S.A.",
    "customer_document": "30709876543",
    "origin_address": "Av. Siempre Viva 742, Córdoba",
    "destination_address": "Ruta 9 Km 312, Rosario",
    "carrier_name": "Transportes del Litoral",
    "driver_name": "Juan Pérez",
    "vehicle_plate": "AD123FG",
    "items": [
      {
        "product_id": null,
        "variant_id": null,
        "sku": "REP-X200",
        "description": "Caja de repuestos modelo X-200",
        "quantity": 10,
        "unit": "u",
        "unit_price": 4500.00,
        "subtotal": 45000.00,
        "metadata": {}
      }
    ],
    "issue_date": "2026-05-21T13:40:00",
    "delivery_date": null,
    "status": "issued",
    "invoice_id": null,
    "cae": null,
    "stock_deducted": true,
    "notes": "Entregar en horario comercial"
  }
}

Comprobantes AFIP/ARCA

La emisión de facturas, notas de crédito y notas de débito electrónicas ante AFIP/ARCA no se documenta acá: tiene su propia guía detallada en Facturación AFIP (ruta /dev/invoices/), con el flujo de autorización, los tipos de comprobante y la obtención del CAE. Su endpoint base es /api/v1/bill/receipts y usa el scope invoices (invoices:read e invoices:write).

Ver la guía de Facturación AFIP