Introducción

Esta documentación tiene como objetivo proporcionar toda la información que necesita para trabajar con nuestra API. Los ejemplos proporcionados usan una URL de prueba, la URL del entorno de producción será provista por la empresa logística que usa el sistema.

Si presenta algún inconveniente o consulta que no esté especificada, se puede comunicar al siguiente E-mail: soporte@midlasoft.com

Autenticación

Para autenticar los requests a los endpoints de nuestra API se debe enviar el Header con el valor "Bearer {YOUR_AUTH_KEY}" el cual les será suministrado.

El usuario (Token) deberá contar con los permisos necesarios para consumir los distintos endpoint de esta sección.

Crear comprobante

Servicio para la creación de un comprobante. Requiere autenticación.


Request

Headers
Authorization Bearer {YOUR_AUTH_KEY}
Accept application/json
Content-Type application/json

Object SaleInvoice

Parametros del Body
Campo Tipo Requerido Longitud Descripción Ejemplo
customer_id integer - ID del cliente. ✅ Obligatorio si no se envía información del customer. 1
afip_receipt integer - Tipo de Comprobantes. 6
Ver tipos de Comprobante
sale_point integer - Punto de venta. 1
Los códigos de cada punto de venta sera suministrado por el operador.
concept integer - Concepto del comprobante. 2
Valores admitidos 1:Productos, 2:Servicios
mon_id string - Moneda del comprobante. Default: PES "DOL"
Valores admitidos DOL:Dolar Estados Unidos, PES:Peso Argentino
mon_exchange_rate decimal 12,2 Cotización en PES:Peso Argentino. 710.50
reference string 55 Código/Número de referencia. "REF123456"
ref_external string 55 Código/Número de referencia externo. "REF123456"
validated boolean - Indica si se debe validar el comprobante luego de ser creado. Default: false false
create_receipt boolean Valor para establecer si crear un recibo al crear el comprobante. Default: false false
payment_method_code string 55 Código de método de pago. ✅ Obligatorio si se envía el campo "create_receipt" Consultar códigos disponibles en la sección Métodos de Pago del módulo de facturación
customer Object - Cliente. ✅ Obligatorio si no se informa customer_id. Link Object Customer
items Array Object - Items del comprobante. Link Object Item
taxes Array Object - Impuestos del comprobante. Link Object Tax

Object Customer

Parametros del Body
Campo Tipo Requerido Longitud Descripción Ejemplo
name string 120 Nombre del cliente. "Carlos Pérez"
brand string 120 Nombre de Marca o Fantasía del Cliente. "Patagonia"
external_code string 20 Código externo del Cliente. "CUST955"
email string 128 Email del cliente. "carlos.perez@example.com"
phone string 25 Teléfono del cliente. "+5491123456789"
legal_form_code string 20 Código de la posición fiscal. "5"
Ver posiciones fiscales
document_type_code string 20 Código del tipo de documento del cliente. "80"
Ver tipos de documento
document_number string 20 Número de documento del cliente. "20876543210"
address Object - Información de la dirección del cliente. Link al Object Address

Object Address

Objeto para definir la dirección.

Campo Tipo Requerido Longitud Descripción Ejemplo
country_code_iso string 2 Código ISO 3166-1 alfa-2 del país de la dirección. "AR"
Ver Códigos ISO
province_code_iso string 5 Al igual que el "country code ISO", este es un código de una o más letras utilizado para identificar de manera única las provincias o estados dentro de un país. "C"
Ver Códigos ISO
street_name string 255 Nombre de la calle. "Av. Libertador"
street_number string 50 Número de la calle. "1000"
building_floor string 50 Piso del edificio. "5"
building_room string 50 Departamento del edificio. "A"
note string 255 Nota adicional sobre la dirección. "Puerta verde."
zip_code string 16 Código postal de la dirección. "1425"
city string 64 Ciudad de la dirección. "San Isidro"
longitude numeric - Longitud de la dirección. -58.5255
latitude numeric - Latitud de la dirección. -34.4633

Object Item

Objeto para definir la información de items dentro del comprobante.

Campo Tipo Requerido Tamaño Descripción
description string 55 Descripción del item.
price decimal 12,2 Importe Neto del item (sin impuestos).
iva_price decimal 12,2 Importe del IVA. De no corresponder informar 0 (cero).
iva_percent decimal 12,2 Porcentaje del IVA. (0, 10.5, 21, 27). De no corresponder informar 0 (cero).
total_price decimal 12,2 Importe Total del item. Debe ser igual a la suma de price + iva_price.
count integer 11 Cantidad de items. Valor mínimo 1.

Object Tax

Objeto para definir la información de impuestos extras dentro del comprobante.

Campo Tipo Requerido Tamaño Descripción
afip_tax integer 55 Código de impuesto. Consultar impuestos.
base_price decimal 12,2 Importe Base para determinar el impuesto.
alicuota decimal 12,2 Porcentaje. Alicuota del impuesto sobre el importe base.
tax_price decimal 12,2 Importe del impuesto

Ejemplo de request para la creación de un comprobante

const url = new URL(
    "{BASE_URI}/api/billing-ar/sale-invoices"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "customer_id":null,
    "afip_receipt":6,
    "sale_point": 1,
    "concept":2,
    "mon_id": "DOL",
    "mon_exchange_rate": 710.50,
    "reference":"REF123456",
    "ref_external":"AR9653533",
    "create_receipt": true,
    "validated": false,
    "payment_method_code": "cash",
    "customer": {
        "name":"Juan Pedro Montaña",
        "brand":"",
        "external_code":"",
        "email":"juanpedro@domain.com",
        "phone":"",
        "legal_form_code":"6",
        "document_type_code":"80",
        "document_number":"12345678",
        "address":{
            "country_code_iso":"AR",
            "province_code_iso":"B",
            "street_name":"Calle falsa",
            "street_number":"345",
            "building_floor":"8",
            "building_room":"A",
            "note":"Golpear 2 veces.",
            "zip_code":"1406",
            "city":"Floresta",
            "longitude":"",
            "latitude":""
        }
    },
    "items":
    [
        {
            "description":"IVA Aduanero",
            "price":100,
            "iva_price":0,
            "iva_percent":0,
            "total_price":100,
            "count":1
        },
        {
            "description":"Tasa estadíastica",
            "price":45,
            "iva_price":0,
            "iva_percent":0,
            "total_price":45,
            "count":2
        }
    ],
    "taxes":[]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Ejemplo del response

{
"data": {
        "id": 877,
        "receipt_type": "Factura",
        "sale_point_number": "5555",
        "invoice_number": "PROV770",
        "invoice_full_number": "B5555-PROV770",
        "invoice_reference": "REF123456",
        "validated": false,
        "neto_price": "190.00",
        "iva_price": "0.00",
        "tax_price": "0.00",
        "sub_total_price": "190.00",
        "total_price": "190.00",
        "created_at": "2024-05-19T22:38:44.000000Z",
        "customer": {
            "name": "Juan Pedro Montaña",
            "document_type": "CUIT",
            "document_number": "12345678"
        },
        "items": [
            {
                "id": 5848,
                "invoice_id": 877,
                "description": "IVA Aduanero",
                "price": 100,
                "iva_price": 0,
                "iva_percent": 0,
                "total_price": 0,
                "count": 1,
                "code": null,
                "created_at": "2024-05-19T22:38:44.000000Z",
                "updated_at": "2024-05-19T22:38:44.000000Z"
            },
            {
                "id": 5849,
                "invoice_id": 877,
                "description": "Tasa estadíastica",
                "price": 45,
                "iva_price": 0,
                "iva_percent": 0,
                "total_price": 0,
                "count": 2,
                "code": null,
                "created_at": "2024-05-19T22:38:44.000000Z",
                "updated_at": "2024-05-19T22:38:44.000000Z"
            }
        ],
        "taxes": []
    }
}
                            

Consultar Comprobantes

Servicio para consutar comprobantes. Requiere autenticación.

Request
Headers
Authorization Bearer {YOUR_AUTH_KEY}
Accept application/json
Content-Type application/json

Ejemplo de request para consultar varios comprobantes


const url = new URL(
    "{BASE_URI}/api/billing-ar/sale-invoices"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

body = {
/* FILTER OPTIONS */
    "date_range":"today", /* date_range options: custom|today|last_week|last_two_weeks|current_month */
    //"search_date_from": "2024-01-01" // for date_range:custom
    //"search_date_to": "2024-01-16" // for date_range:custom
    "customer_document_number":"12345678" // find by customer document number
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Ejemplo de request para obtener comprobante por ID


const url = new URL(
    "{BASE_URI}/api/billing-ar/sale-invoices/877"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Ejemplo de request para obtener comprobante por Reference


const url = new URL(
    "{BASE_URI}/api/billing-ar/sale-invoices/reference/REF123456"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());