Documentación de la API: OficinaPro


Creación de Factura

Video Tutorial:

https://youtu.be/zig0paY6Ovo

URL Base:

https://api-test.oficinapro.co/api/

Esta es una URL de ejemplo, para obtener una URL real comuniquese con su asesor.

Endpoint:

/invoice/create

Método:

POST

Encabezados:

Encabezado Valor Requerido Descripción
Authorization key_0000001 Clave API para autenticar la solicitud. Esta es un ejemplo, para obtener una URL real comuniquese con su asesor.
Content-Type application/json Especifica que el cuerpo está en formato JSON.

Cuerpo de la Solicitud:

El cuerpo de la solicitud debe estar en formato JSON. Los siguientes campos deben proporcionarse para crear una factura exitosamente:

Campo Tipo Requerido Descripción
Ambiente string El ambiente donde se genera la factura "pruebas" o "produccion".
NitEmisor integer El NIT (ID tributario) del emisor de la factura.
Oficina integer ID de oficina donde se genera la factura.
FechaEmision string Fecha de emisión de la factura en formato "YYYY-MM-DD".
HoraEmision string Hora de emisión de la factura en formato "HH:MM:SS".
CustomerName string Nombre completo del cliente que recibe la factura.
CustomerCity string Ciudad donde reside el cliente.
CustomerDepto string Departamento o estado de la dirección del cliente.
CustomerAddress string Dirección completa del cliente.
CustomerNit integer NIT (ID tributario) del cliente.
CustomerEmail string Correo electrónico del cliente.
CustomerIdCode integer Código del tipo de identificación del cliente 13 para persona natural, 31 para juridica.
CustomerPhone integer Número de teléfono del cliente.
ValorBaseGravada decimal Valor base gravado de la factura.
Subtotal decimal Subtotal de la factura.
IvaTotal decimal Total del IVA aplicado a la factura.
IpoTotal decimal Total del impuesto al consumo (IPO).
OtrosCargos decimal No Otros cargos adicionales, si los hay.
TotalFactura decimal Total de la factura.
isPos integer No Indica si la factura es POS electronico. Use 1 para sí, 0 para no.
FormaDePago integer No Método de pago utilizado: 1 para efectivo, 2 tarjeta crédito, 3 tarjeta débito, 4 transferencia electrónica

Objeto Producto:

Cada objeto dentro del arreglo Productos debe incluir los siguientes campos:

Campo Tipo Requerido Descripción
Cantidad integer Cantidad del producto vendido.
SutotalProducto integer Subtotal del producto antes de impuestos.
TotalIvaProducto integer Total del IVA aplicado al producto.
TotalIpoProducto integer Total del impuesto al consumo (IPO) del producto.
TotalProducto integer Costo total del producto, incluyendo impuestos.
PorcentageIVA integer El porcentaje de IVA aplicado al producto.
NombreProducto string Nombre del producto facturado.

Ejemplo de Solicitud JSON:

{
"Ambiente": "pruebas",
"NitEmisor": 90135497,
"Oficina": 1,
"FechaEmision": "2024-05-28",
"HoraEmision": "21:26:39",
"CustomerName": "Diego Andres Perez Torres",
"CustomerCity": "Medellin",
"CustomerDepto": "Antioquia",
"CustomerAddress": "Calle 88#17-43",
"CustomerNit": 1032413224,
"CustomerEmail": "diegotorres@gmail.com",
"CustomerIdCode": 13,
"CustomerPhone": 3195487898,
"ValorBaseGravada": 555000,
"Subtotal": 885000,
"IvaTotal": 105450,
"IpoTotal": 10000,
"OtrosCargos": 2000,
"TotalFactura": 1002450,
"isPos": 0,
"FormaDePago": 1,
"Productos": [
  {
     "Cantidad": 1,
     "SutotalProducto": 125000,
     "TotalIvaProducto": 23750,
     "TotalIpoProducto": 10000,
     "TotalProducto": 158750,
     "PorcentageIVA": 19,
     "NombreProducto": "Chivas extra 700ml"
  },
  {
     "Cantidad": 2,
     "SutotalProducto": 215000,
     "TotalIvaProducto": 40850,
     "TotalIpoProducto": 0,
     "TotalProducto": 255850,
     "PorcentageIVA": 19,
     "NombreProducto": "Chivas 18años 750ml"
  },
  {
     "Cantidad": 3,
     "SutotalProducto": 110000,
     "TotalIvaProducto": 0,
     "TotalIpoProducto": 0,
     "TotalProducto": 110000,
     "PorcentageIVA": 0,
     "NombreProducto": "Chivas regal 12años 700ml"
  }
]
}
    

Respuestas:

Respuesta de Éxito:

Código de Estado: 200 OK

{
"codigo": "ACEPTADA",
"numero": 12345,
"cufe": "CUFE123456789",
"qr": "https://example.com/qr-code-url"
}
    

Respuestas de Error:

Código de Estado: 200 OK

E22. El formato de HoraEmision es invalido
    

Ejemplo Codigo en PHP:

      

// Endpoint URL
$url = 'https://api-test.oficinapro.co/api/invoice/create';

// Headers
$headers = [
'Content-Type: application/json',
'Authorization: key_0000001'
];


// Data to be sent in JSON format
$data = [
"Ambiente" => "pruebas",
"NitEmisor" => 90135497,
"Oficina" => 1,
"FechaEmision" => date('Y-m-d'),
"HoraEmision" => date('H-i-s'),
"CustomerName" => "Diego Andres Perez Torres",
"CustomerCity" => "Medellin",
"CustomerDepto" => "Antioquia",
"CustomerAddress" => "Calle 88#17-43",
"CustomerNit" => 1032413224,
"CustomerEmail" => "diegotorres@gmail.com",
"CustomerIdCode" => 13,
"CustomerPhone" => 3195487898,
"ValorBaseGravada" => 555000,
"Subtotal" => 885000,
"IvaTotal" => 105450,
"IpoTotal" => 10000,
"OtrosCargos" => 2000,
"TotalFactura" => 1002450,
"isPos" => 0,
"FormaDePago" => 1,
"Productos" => [
    [
        "Cantidad" => 1,
        "SutotalProducto" => 125000,
        "TotalIvaProducto" => 23750,
        "TotalIpoProducto" => 10000,
        "TotalProducto" => 158750,
        "PorcentageIVA" => 19,
        "NombreProducto" => "Chivas extra 700ml"
    ],
    [
        "Cantidad" => 2,
        "SutotalProducto" => 215000,
        "TotalIvaProducto" => 40850,
        "TotalIpoProducto" => 0,
        "TotalProducto" => 255850,
        "PorcentageIVA" => 19,
        "NombreProducto" => "Chivas 18años 750ml"
    ],
    [
        "Cantidad" => 3,
        "SutotalProducto" => 110000,
        "TotalIvaProducto" => 0,
        "TotalIpoProducto" => 0,
        "TotalProducto" => 110000,
        "PorcentageIVA" => 0,
        "NombreProducto" => "Chivas regal 12años 700ml"
    ]
]
];

// Initialize cURL session
$ch = curl_init($url);

// Set options
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));

// Execute request and get response
$response = curl_exec($ch);

// Check for errors
if (curl_errno($ch)) {
echo 'cURL error: ' . curl_error($ch);
} else {
// Print the response
echo 'Response: ' . $response;
}

// Close cURL session
curl_close($ch);

    

Anulación de Factura (Nota Credito)

Video Tutorial:

https://youtu.be/D6SkQcP__Lg

Cuerpo de la Solicitud:

El cuerpo de la solicitud debe estar en formato JSON. Los siguientes campos deben proporcionarse para emitir nota de credito exitosamente:

Campo Tipo Requerido Descripción
Anulacion integer Se deber pasar el valor 1
Ambiente string El ambiente donde se genera la factura "pruebas" o "produccion".
NitEmisor integer El NIT (ID tributario) del emisor de la factura.
CustomerNit integer NIT (ID tributario) del cliente.
ID de la Factura integer Se deber pasar ID de la factura obtenido al momento de enviar la factura.

Ejemplo de Solicitud JSON:

{
"Anulacion": 1,
"Ambiente": "pruebas",
"NitEmisor": 90135497,
"CustomerNit": 1032413224,
"ID": 4050,
}
    

Respuestas:

Respuesta de Éxito:

Código de Estado: 200 OK

{
"codigo": "ACEPTADA",
"credit_note_id ": 152,
"cude": "CUFE123456789"
}
    

Respuestas de Error:

Código de Estado: 200 OK

 N99. N99. Factura inexistente. 

Ejemplo Codigo en PHP:

      

// Endpoint URL
$url = 'https://api-test.oficinapro.co/api/invoice/create';

// Headers
$headers = [
'Content-Type: application/json',
'Authorization: key_0000001'
];


// Data to be sent in JSON format
$data = [
    "Ambiente" => "pruebas",
    "Anulacion" => 1,
    "CustomerNit" => 900711566,
    "NitEmisor" => 90135497,
    "ID" => 3048
];

// Initialize cURL session
$ch = curl_init($url);

// Set options
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));

// Execute request and get response
$response = curl_exec($ch);

// Check for errors
if (curl_errno($ch)) {
echo 'cURL error: ' . curl_error($ch);
} else {
// Print the response
echo 'Response: ' . $response;
}

// Close cURL session
curl_close($ch);

    

Ajuste en Factura (Nota Credito)

Video Tutorial:

https://youtu.be/uYbG4rxWF0g

Cuerpo de la Solicitud:

El cuerpo de la solicitud debe estar en formato JSON. Los siguientes campos deben proporcionarse para emitir nota de credito exitosamente:

Campo Tipo Requerido Descripción
Ajuste integer Se deber pasar el valor 1
Ambiente string El ambiente donde se genera la factura "pruebas" o "produccion".
NitEmisor integer El NIT (ID tributario) del emisor de la factura.
CustomerNit integer NIT (ID tributario) del cliente.
ID de la Factura integer Se deber pasar ID de la factura obtenido al momento de enviar la factura.
SubTotalAjuste decimal Subtotal de la nota.
IvaAjuste decimal Total de IVA en nota.
TotalAjuste decimal Total nota.

Ejemplo de Solicitud JSON:

{
"Ambiente":"pruebas",
"Ajuste":1,
"CustomerNit":900711566,
"NitEmisor":90135497,
"ID":3081,
"SubTotalAjuste":500000,
"IvaAjuste":95000,
"TotalAjuste":595000
}
    

Respuestas:

Respuesta de Éxito:

Código de Estado: 200 OK

{
"codigo": "ACEPTADA",
"credit_note_id ": 152,
"cude": "CUFE123456789"
}
    

Respuestas de Error:

Código de Estado: 200 OK

 N99. N99. Factura inexistente. 

Ejemplo Codigo en PHP:

      

// Endpoint URL
$url = 'https://api-test.oficinapro.co/api/invoice/create';

// Headers
$headers = [
'Content-Type: application/json',
'Authorization: key_0000001'
];


// Data to be sent in JSON format
$data = [
    "Ambiente" => "pruebas",
    "Ajuste" => 1,
    "CustomerNit" => 900711566,
    "NitEmisor" => 90135497,
    "ID" => 3081,
    "SubTotalAjuste" => 500000,
    "IvaAjuste" => 95000,
    "TotalAjuste" => 595000
];

// Initialize cURL session
$ch = curl_init($url);

// Set options
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));

// Execute request and get response
$response = curl_exec($ch);

// Check for errors
if (curl_errno($ch)) {
echo 'cURL error: ' . curl_error($ch);
} else {
// Print the response
echo 'Response: ' . $response;
}

// Close cURL session
curl_close($ch);

    

Acceso Panel Administrativo:

Para ver y validar las facturas enviadas acceda al panel administrativo en su cuenta de oficinapro.co

O desde la cuenta de demo https://api-test.oficinapro.co/admin

Para obtener clave y usario de esta cuenta de DEMO comuniquese con su asesor.