Documentación de la API: OficinaPro
Creación de Factura
Video Tutorial:
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 |
Sí | Clave API para autenticar la solicitud. Esta es un ejemplo, para obtener una URL real comuniquese con su asesor. |
| Content-Type | application/json |
Sí | 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 |
Sí | El ambiente donde se genera la factura "pruebas" o "produccion". |
| NitEmisor | integer |
Sí | El NIT (ID tributario) del emisor de la factura. |
| Oficina | integer |
Sí | ID de oficina donde se genera la factura. |
| FechaEmision | string |
Sí | Fecha de emisión de la factura en formato "YYYY-MM-DD". |
| HoraEmision | string |
Sí | Hora de emisión de la factura en formato "HH:MM:SS". |
| CustomerName | string |
Sí | Nombre completo del cliente que recibe la factura. |
| CustomerCity | string |
Sí | Ciudad donde reside el cliente. |
| CustomerDepto | string |
Sí | Departamento o estado de la dirección del cliente. |
| CustomerAddress | string |
Sí | Dirección completa del cliente. |
| CustomerNit | integer |
Sí | NIT (ID tributario) del cliente. |
| CustomerEmail | string |
Sí | Correo electrónico del cliente. |
| CustomerIdCode | integer |
Sí | Código del tipo de identificación del cliente 13 para persona natural, 31 para juridica. |
| CustomerPhone | integer |
Sí | Número de teléfono del cliente. |
| ValorBaseGravada | decimal |
Sí | Valor base gravado de la factura. |
| Subtotal | decimal |
Sí | Subtotal de la factura. |
| IvaTotal | decimal |
Sí | Total del IVA aplicado a la factura. |
| IpoTotal | decimal |
Sí | Total del impuesto al consumo (IPO). |
| OtrosCargos | decimal |
No | Otros cargos adicionales, si los hay. |
| TotalFactura | decimal |
Sí | 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 |
Sí | Cantidad del producto vendido. |
| SutotalProducto | integer |
Sí | Subtotal del producto antes de impuestos. |
| TotalIvaProducto | integer |
Sí | Total del IVA aplicado al producto. |
| TotalIpoProducto | integer |
Sí | Total del impuesto al consumo (IPO) del producto. |
| TotalProducto | integer |
Sí | Costo total del producto, incluyendo impuestos. |
| PorcentageIVA | integer |
Sí | El porcentaje de IVA aplicado al producto. |
| NombreProducto | string |
Sí | 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:
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 |
Sí | Se deber pasar el valor 1 |
| Ambiente | string |
Sí | El ambiente donde se genera la factura "pruebas" o "produccion". |
| NitEmisor | integer |
Sí | El NIT (ID tributario) del emisor de la factura. |
| CustomerNit | integer |
Sí | NIT (ID tributario) del cliente. |
| ID de la Factura | integer |
Sí | 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:
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 |
Sí | Se deber pasar el valor 1 |
| Ambiente | string |
Sí | El ambiente donde se genera la factura "pruebas" o "produccion". |
| NitEmisor | integer |
Sí | El NIT (ID tributario) del emisor de la factura. |
| CustomerNit | integer |
Sí | NIT (ID tributario) del cliente. |
| ID de la Factura | integer |
Sí | Se deber pasar ID de la factura obtenido al momento de enviar la factura. |
| SubTotalAjuste | decimal |
Sí | Subtotal de la nota. |
| IvaAjuste | decimal |
Sí | Total de IVA en nota. |
| TotalAjuste | decimal |
Sí | 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.