Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Interoperabilidad Sistemas
de facturación externos
Especificación Técnica
Junio 2017
Control de Cambios
Versión Fecha Autor Descripción
3. APROVISIONAMIENTO ...........................................................................................................................................4
4. SEGURIDAD ............................................................................................................................................................6
2
4.1 CREAR TOKEN DE SEGURIDAD .......................................................................................................................7
7.2.4 COMPRADORES......................................................................................................................................62
3
2. INTRODUCCIÓN
Este documento describe las características del Portal API Management (servicio de Microsoft Azure ©) donde
Facture SAS tiene publicadas las API que se utilizan para la integración con la plataforma de facturación y
colaboración electrónica de PL-Colab.
La plataforma PL-Colab expone un API que permite a las aplicaciones realizar intercambio de información a través 4
de Web Services con interfaces definidas disponibles para los desarrolladores y las cuales serán descritas en el
presente documento.
Mediante el API Management se puede conocer la documentación de cada API, explorar las API, obtener códigos de
ejemplo en varias tecnologías y ejecutarlas obteniendo así un “cliente” directo.
Usando el portal para desarrolladores de autoservicio que le ofrece acceso a un catálogo de API, documentación y
ejemplos de código. Los desarrolladores pueden iniciar sesión usando identidades profesionales o de clientes
existentes, administrar claves de acceso, ver los informes de uso de API y efectuar llamadas de API sin necesidad de
escribir una línea de código mediante una consola.
3. APROVISIONAMIENTO
Para acceder al API Management el cliente debe registrarse en la dirección de API Management específica:
4. SEGURIDAD
El sistema siempre realiza control de acceso teniendo en cuenta el usuario y contraseña suministrado por facture, y
a partir de aquí, se genera un TOKEN de seguridad por cada sesión. El estándar para este tipo de autenticación es
utilizar JSON Web Tokens (JWT); el formato JSON es indistinto al lenguaje, y podemos utilizar el que queramos
(Node.js, Python, Ruby, PHP, .NET, Java...).
Luego que el servidor de ok, de forma inmediata retorna un token cómo respuesta, dicho token debe ser enviado
en las siguientes peticiones para poder acceder a los recursos y las API expuestas para la integración.
En cada petición nuestro servidor valida el token proporcionado por el usuario y, si es correcto, podrá acceder
nuestras API, si no, se denegará la petición.
Este mecanismo añade más seguridad. Al no utilizar cookies para almacenar la información del usuario, se puede
evitar ataques CSRF (Cross-Site Request Forgery) que manipulen la sesión que se envía al back-end.
Adicionalmente es posible hacer que el token expire después de un tiempo lo que le añade una capa extra de
seguridad. En dicho caso sería necesario renovar el token para continuar.
4.1 CREAR TOKEN DE SEGURIDAD
seleccionar la opción de Security
Visualizamos el API Crear Token de Seguridad, y damos clic en el botón Try it.
Para registrar la información en cada uno de los parámetros se reemplaza el nombre del parámetro y las llaves {{ }}
dejando solamente la información contenida en comillas simples ' '
Ejemplo:
Una vez reemplazados los parámetros por los valores apropiados, se puede notar que se actualiza el HTTP request
de la petición:
Luego se envía la petición mediante el uso del botón “Send”.
A continuación, se muestra la respuesta y su contenido. Si la solicitud es exitosa, el sistema responde: (200 OK), y
genera un token de autenticación, que permitirá al usuario conectarse para realizar acciones al contrato padre sobre
sus contratos hijos.
10
Una vez reemplazados los parámetros por los valores apropiados, se puede notar que se actualiza el HTTP request
de la petición:
11
A continuación, se muestra la respuesta y su contenido. Si la solicitud es exitosa, el sistema responde: (200 OK), y
actualiza el token de autenticación, que permitirá al usuario conectarse para realizar acciones al contrato padre sobre
sus contratos hijos.
5. CONVENCIONES GENERALES
Las siguientes son las convenciones generales manejadas en el Portal API, esta es una plataforma de administración
de API que permite conectarse con toda seguridad a los servicios back-end con independencia del lenguaje de
programación en el cual este desarrollado su sistema de información.
12
1. APIS: Esta sección muestra el listado de las API y los parámetros de cada una identificando el tipo de dato
del parámetro, la descripción y la obligatoriedad.
2. PRODUCTS: Esta sección muestra las dos API que expone PL-Colab, las cuales se clasifican acorde a la
funcionalidad de emisión de facturación electrónica y a la recepción de documentos electrónicos.
13
5.2.1 SECCIÓN 1: BANDA VERTICAL PANEL IZQUIERDO
En esta barra se pueden identificar cada uno de los métodos disponibles
para la manipulación y/o interacción con el sistema:
15
Ejemplo:
Bearer
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJxc2giOiIyMTFmOWI3OC1mYWYzLTQ3OTUtYWIxMi1hNzkwM
DE3OGJkNTYiLCJpYXQiOiIxNDk3MzA3OTAwIiwic3ViIjoiMGQyOWJkNzgtMGYxMi00NjhhLWJiY2MtYTY5ZTA
xN2QyZGZmIiwibmFtZSI6IjkwMDM5y7iWMSIsInVzciI6IjkwMDM5OTc0MSIsIjNpZCI6IjkwMDM5OTc0MSIsI
jNuYW1lIjoiRkFDVFVSRSBTLkEuUy4iLCJjY29kIjoiQ08iLCJyZWciOiIxMyIsImNpdHkiOiIxMzAwMSIsImFkZHIi
OiJDYWxsZSAyNiAjMjEtMTY0IiwidGF4IjoiUkVHQ09NIiwiaXNzIjoiUkQwMDE1NUQ0MzgzMEYi98ubWHAi
OjE0OTczOTQzMDAsIm5iZiI6MTQ5NzMwNzYwMH0.lDDIwmOWnDP9ieK1c9VfgBq5EpXLTOVE19i6cQtj1z
5.2.8 SEND
Presione el botón “Send” para consumir el API con los parámetros que se han digitado previamente.
Una vez se lance la petición de consumo, en la página se muestran dos nuevas secciones:
1. Sección 6: Corresponde a el código de respuesta de la petición. Si este es 200-OK quiere decir que la petición
se realizó exitosamente; en caso contrario se mostrará el código y descripción del error respectivo.
Para la autenticación en el Portal, se utiliza el usuario y contraseña con el que se registró, así como el número de
Contrato o TenantID suministrado por Facture durante el proceso de registro en la plataforma.
6.1 INICIAR SESIÓN
El Portal API se encuentra localizado en la URL: https://plcolab-api-portal-sandbox.facture.co
18
Una vez iniciada sesión en el sistema, se tiene disponibilidad de las API. En este momento es posible generar un API
Key (token de seguridad) para posteriormente hacer uso de los métodos que la requieren.
6.2 SELECCIONAR EL PRODUCTO A UTILIZAR
En el mundo de la facturación electrónica, existen dos aspectos principales, que a la vez son roles que puede cumplir
un cliente en la plataforma: Emisor y Receptor. PL-Colab organiza sus funcionalidades en dos categorías para cada 19
uno de dichos aspectos:
• Emisión: Permite realizar la emisión de documentos electrónicos, así como el mantenimiento de sucursales,
centros de costo (procesos), numeraciones (folios), procesos de aceptación/rechazo de los documentos y
consultas a diferentes niveles.
• Recepción: Permite realizar los procesos de Recepción y Envío de documentos entre Plataformas de
Colaboración Electrónica. Funcionalidad conocida como un "Inbox".
20
Una vez reemplazados los parámetros por los valores apropiados, se puede notar que se actualiza el HTTP request
de la petición:
Nota: El “accessToken” se debe copiar sin las comillas (“ ”), es de vital importancia copiar y guardar el
Token de seguridad porque será utilizado de aquí en adelante cuando se vaya a interactuar con las
distintas API´s.
6.3.1 IMPERSONACION
Seleccionar la opción de autorización
El siguiente paso consiste en obtener el token, haciendo login con contratos clientes.
23
Para registrar la información en cada uno de los parámetros se reemplaza el nombre del parámetro y las llaves {{ }}
dejando solamente la información contenida en comillas simples ' '
Ejemplo:
25
Una vez reemplazados los parámetros por los valores apropiados, se puede notar que se actualiza el HTTP request
de la petición como se puede visualizar en la imagen:
Nota: El “accessToken” se debe copiar sin las comillas (“ ”), es de vital importancia copiar y guardar el Token de
seguridad porque será utilizado de aquí en adelante cuando se vaya a interactuar con las distintas API´s.
El siguiente paso consiste en obtener el token, haciendo login con contratos clientes.
Para registrar la información en cada uno de los parámetros se reemplaza el nombre del parámetro y las llaves {{ }}
dejando solamente la información contenida en comillas simples ' '
Ejemplo:
28
Una vez reemplazados los parámetros por los valores apropiados, se puede notar que se actualiza el HTTP request
de la petición:
A continuación, se muestra la respuesta y su contenido. Si la solicitud es exitosa, el sistema responde: (200 OK), y
genera un token de autorización, que permitirá al usuario conectarse para realizar posteriores peticiones, dicho token
tendrá una caducidad de 24 horas, contados a partir de que éste sea generado.
29
Nota: El “accessToken” se debe copiar sin las comillas (“ ”), es de vital importancia copiar y guardar el Token de
seguridad porque será utilizado de aquí en adelante cuando se vaya a interactuar con las distintas API´s.
7. API DISPONIBLES
PL-Colab expone las API necesarias para lograr la integración entre la plataforma de colaboración electrónica y el
sistema facturador externo.
Como mensionamos anteriormente las funcionalidades están agrupadas en dos grandes categorías:
• Recepción: Permite realizar los procesos de Recepción y Envío de documentos entre Plataformas de
Colaboración Electrónica. Funcionalidad conocida como un "Inbox".
Mediante éste API se le permite al sistema facturador realizar el mantenimiento de los centros de costo, en caso que
la empresa tenga varios. Los centros de costo, son divisiones dentro de las sucursales, que pueden llegar a emitir
con consecutivos de factura diferente.
Mediante esta API se le permite al sistema facturador realizar el mantenimiento de los compradores en la plataforma
PL-Colab. Cabe anotar que PL-Colab no necesita guardar la información de los compradores o sincronizar ésta
información con el sistema facturador de la empresa. Esta es una opción completamente configurable y tiene alcance
hasta donde lo acuerden Facture y la empresa.
Mediante esta API se exponen las consultas necesarias para que el sistema facturador recolecte la información
relevante de la facturación electrónica y pueda realizar trazabilidad dentro de su propio sistema. Se puede consultar
el envío a la DIAN, el estado de un documento específico, los archivos adjuntos de un documento, binarios XML y
listas de documentos.
Mediante esta API se exponen los servicios que le permiten a PL-Colab obtener la información de las numeraciones
autorizada por la DIAN al OFE (Obligado a Facturar Electrónicamente) para la facturación electrónica de la empresa.
Siempre debe ser enviada por el sistema que genera las facturas, el número de la misma. PL-Colab hará las
validaciones de consistencia de los datos enviados, para garantizar que se envían número validos de la resolución
autorizada.
El envío de los consecutivos de facturas, no debe ser cronológico, pero si debe ser consistente en cuando a fechas,
es decir, es posible enviar el número de factura 11 antes de la 10, pero al enviar la 10, su fecha de emisión debe ser
consistente respecto a la 10 (menor o igual)
31
El API Management muestra los parámetros, tipo de dato, descripción y obligatoriedad de los mismos; ejemplo en
formato JSON y XML del request de la solicitud y ejemplos de código.
Para poder acceder, crear, probar la API, debe utilizar el botón “Try it” señalado en la gráfica anterior.
Lo primero que debe realizarse es adicionar el header para autenticarse tal y como se explica en el capítulo “5.2.7
Sección 7: Try it / Autenticación en la API”
Recuerde que hay que logearse en la API
para poder consumirla:
33
Ejemplo:
Bearer
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ
9.eyJxc2giOiIyMTFmOWI3OC1mYWYzL
TQ3OTUtYWIxMi1hNzkwMDE3OGJkN
………….
34
35
37
7.2.1.2 LISTAR SUCURSALES
PL-Colab permite la creación de sucursales las cuales pueden listarse por medio de API´s como se describen en los
siguientes puntos:
39
43
El API Management muestra los parámetros, tipo de dato, descripción y obligatoriedad de los mismos; ejemplo en
formato JSON y XML del request de la solicitud y ejemplos de código
3. Hacer clic en Add header, digitar Authorization y pegar el token anteponiendo la palabra Bearer.
4. En el cuerpo de la solicitud, se encuentra el siguiente formulario:
{
"description": "some description",
"name": "some name",
"code": "some code"
45
"externalReference":"some externalReference "
}
47
49
51
52
54
55
• Actualizar Folio
• Guardar Folio
• Listar Folio
7.2.3.1 CREAR/EDITAR FOLIOS O NUMERACIÓN
5. Hacer clic en Send. Si la solicitud es exitosa, el sistema responde (200 OK) y actualiza el folio.
60
61
5. Hacemos clic en send. Si la solicitud es exitosa, el sistema responde (200 OK) y lista los folios.
7.2.4 COMPRADORES
El término Compradores en PL-Colab se conoce como Customers y son todos aquellos clientes de la empresa
facturadora o adquirientes como están relacionados en la documentación de la DIAN.
63
64
4. Para registrar una persona como comprador realizar los siguientes pasos:
1. Hacer clic en crear comprador persona.
2. Clic en Try it.
65
3. Hacer clic en Add header, digitar Authorization y pegar el token anteponiendo la palabra Bearer
4. En el cuerpo de la solicitud, se encuentra el siguiente formulario:
{
"identificationType": "CC",
"identificationNumber": "Some_Identification",
"taxCategory": "REGCOM",
66
"firstName": "Some Name",
"middleName": "Some Middlenama",
"firstSurName": "Some Name",
"secondSurName": "Some Second SurName",
"email": "noreply@fakedomain.com",
"principalPhone_Number": 1234567890,
"addressLine": "Some Address Line",
"addressLine2": "Some Address Line 2",
"neighborhood": "Some Neighborhood",
"countryCode": "CO",
"regionCode": "13",
"cityCode": "13001",
"postalCode": "130003",
"externalReference": "Some_External_Reference",
}
5. Digitar la información solicitada y hacer clic en send. Si la solicitud es exitosa, el sistema responde
(200 OK)
7.2.4.2 LISTAR COMPRADORES
El término Compradores en PL-Colab se conoce como Customers y son todos aquellos clientes de la empresa
facturadora o adquirientes como están relacionados en la documentación de la DIAN.
68
7.2.5 EMISIÓN DE DOCUMENTOS
Desde la interface se realiza la emisión de documentos tales como: factura, nota crédito, nota debito atreves de la
API emitir documento
69
El API Management muestra los parámetros, tipo de dato, descripción y obligatoriedad de los mismos; ejemplo en
formato JSON y XML del request de la solicitud y ejemplos de código.
70
2. A través de esta API es posible emitir una factura de venta. Para ello, se debe editar el XML que se
encuentra en el cuerpo de la solicitud, con sus respectivos datos a facturar, adicionalmente, se
envía el tipo de formato como Query Parameter, y, por último, como parámetro de cabecera se
envía:
• X-REF-BRANCH (referencia externa de la sucursal)
• X-REF-PROCESS (referencia externa del proceso)
• Coordenadas de QR y CUFE:
• X-QR-XPOSITION (Ubicación de QR en X)
• X-QR-YPOSITION (Ubicación de QR en Y)
• X-CUFE-XPOSITION (Ubicación de CUFE en X)
• X-CUFE-YPOSITION (Ubicación de CUFE en Y)
• X-CURRENCY (Ubicación del COP)
Nota: El número de la factura debe ser el nombre del PDF.
• X-REF-DOCUMENTTYPE (referencia externa del tipo documento: FACTURA-UBL, NC-UBL o ND-
UBL), y el token de autorización (anteponiendo al token, la palabra “Bearer”); Para ejecutar la
petición, hacer clic en el botón Send.
71
<fe:Invoice>
<cbc:UBLVersionID></cbc:UBLVersionID>
<cbc:ProfileID></cbc:ProfileID>
<cbc:ID></cbc:ID>
<cbc:IssueDate></cbc:IssueDate>
<cbc:IssueTime></cbc:IssueTime>
<cbc:InvoiceTypeCode></cbc:InvoiceTypeCode>
<cbc:Note></cbc:Note>
<cbc:DocumentCurrencyCode></cbc:DocumentCurrencyCode>
<fe:AccountingSupplierParty>
<cbc:AdditionalAccountID></cbc:AdditionalAccountID>
<fe:Party>
<cac:PartyIdentification>
<cbc:ID></cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name></cbc:Name>
</cac:PartyName>
<fe:PhysicalLocation>
72
<fe:Address>
<cbc:Department></cbc:Department>
<cbc:CitySubdivisionName></cbc:CitySubdivisionName>
<cbc:CityName></cbc:CityName>
<cac:AddressLine>
<cbc:Line>
<cbc:Line>
</cac:AddressLine>
<cac:Country>
<cbc:IdentificationCode></cbc:IdentificationCode>
<cbc:Name></cbc:Name>
</cac:Country>
</fe:Address>
</fe:PhysicalLocation>
<fe:PartyTaxScheme>
<cbc:TaxLevelCode></cbc:TaxLevelCode>
<cac:TaxScheme/>
</fe:PartyTaxScheme>
<fe:Person>
<cbc:FirstName> </cbc:FirstName>
<cbc:FamilyName></cbc:FamilyName>
<cbc:MiddleName></cbc:MiddleName>
</fe:Person>
</fe:Party>
</fe:AccountingSupplierParty>
<fe:AccountingCustomerParty>
<cbc:AdditionalAccountID>2</cbc:AdditionalAccountID>
<fe:Party>
<cac:PartyIdentification>
<cbc:ID></cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name></cbc:Name>
</cac:PartyName>
<fe:PhysicalLocation>
<fe:Address>
<cbc:Department></cbc:Department>
<cbc:CitySubdivisionName></cbc:CitySubdivisionName>
<cbc:CityName></cbc:CityName>
<cac:AddressLine>
<cbc:Line>
<cbc:Line>
</cac:AddressLine>
<cac:Country>
<cbc:IdentificationCode></cbc:IdentificationCode>
<cbc:Name></cbc:Name>
73
</cac:Country>
</fe:Address>
</fe:PhysicalLocation>
<fe:PartyTaxScheme>
<cbc:TaxLevelCode></cbc:TaxLevelCode>
<cac:TaxScheme/>
</fe:PartyTaxScheme>
<fe:Person>
<cbc:FirstName> </cbc:FirstName>
<cbc:FamilyName></cbc:FamilyName>
<cbc:MiddleName></cbc:MiddleName>
</fe:Person>
</fe:Party>
</fe:AccountingCustomerParty>
<fe:TaxTotal>
<cbc:TaxAmount currencyID="COP"></cbc:TaxAmount>
<cbc:TaxEvidenceIndicator></cbc:TaxEvidenceIndicator>
<fe:TaxSubtotal>
<cbc:TaxableAmount currencyID="COP"></cbc:TaxableAmount>
<cbc:TaxAmount currencyID="COP"></cbc:TaxAmount>
<cbc:Percent></cbc:Percent>
<cac:TaxCategory>
<cac:TaxScheme>
<cbc:ID></cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</fe:TaxSubtotal>
</fe:TaxTotal>
<fe:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="COP"></cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="COP"></cbc:TaxExclusiveAmount>
<cbc:AllowanceTotalAmount currencyID="COP"></cbc:AllowanceTotalAmount>
<cbc:ChargeTotalAmount currencyID="COP"></cbc:ChargeTotalAmount>
<cbc:PayableAmount currencyID="COP"></cbc:PayableAmount>
</fe:LegalMonetaryTotal>
<fe:InvoiceLine>
<cbc:ID></cbc:ID>
<cbc:InvoicedQuantity></cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="COP"></cbc:LineExtensionAmount>
<fe:Item>
<cbc:Description></cbc:Description>
</fe:Item>
<fe:Price>
<cbc:PriceAmount currencyID="COP"></cbc:PriceAmount>
</fe:Price>
<cac:TaxTotal>
74
<cbc:TaxAmount currencyID="COP"></cbc:TaxAmount>
<cbc:TaxEvidenceIndicator></cbc:TaxEvidenceIndicator>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="COP"></cbc:TaxableAmount>
<cbc:TaxAmount currencyID="COP"></cbc:TaxAmount>
<cbc:Percent></cbc:Percent>
<cac:TaxCategory>
<cac:TaxScheme>
<cbc:ID></cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
</fe:InvoiceLine>
</fe:Invoice>
3. Una vez realizada la emisión, el sistema debe mostrar 200 OK como respuesta exitosa.
Adicionalmente, cuando se emita la factura, como parte de la respuesta se recibe un requestId
que registra la trazabilidad de la emisión, una propiedad llamada UUID que corresponde al CUFE
de la factura, el LDF que es el identificador único del documento, y la URL del visor público, para
visualizar el .PDF de la factura.
7.2.6 ACEPTACIÓN DE DOCUMENTOS
Uno de los requisitos para que la factura constituya título valor, es la aceptación por parte del comprador.
75
7.2.6.1 ACEPTACIÓN DE DOCUMENTO: ACCIÓN ACEPTAR
Después de realizar el paso 1 y 2 descrito en el inicio de éste capítulo (Productos/Emisión/Emisión), se escoge el
método “Emitir documento”.
El API Management muestra los parámetros, tipo de dato, descripción y obligatoriedad de los mismos; ejemplo en
formato JSON y XML del request de la solicitud y ejemplos de código.
76
El API Management muestra los parámetros, tipo de dato, descripción y obligatoriedad de los mismos; ejemplo en
formato JSON y XML del request de la solicitud y ejemplos de código.
77
4. Hacer clic en Add header, digitar Authorization y pegar el token anteponiendo la palabra Bearer.
78
El API Management muestra los parámetros, tipo de dato, descripción y obligatoriedad de los mismos; ejemplo en
formato JSON y XML del request de la solicitud y ejemplos de código.
80
81
82
4. Hacer clic en Add header, digitar Authorization y pegar el token anteponiendo la palabra Bearer.
84
86
1. Si se desea consultar las facturas emitidas, se debe ingresar a la consulta de documentos. En una
nueva pestaña, hacer clic en el módulo PRODUCT y luego en [plcolab-pre] Emisión.
2. Hacer clic en Documents.
87
88
6. Una vez realizada la consulta, el sistema debe mostrar 200 OK como respuesta exitosa, listando el
número de documentos emitidos a mostrar (pageSize).
89
90
5. Hacer clic en Add header, digitar Authorization y pegar el token anteponiendo la palabra Bearer.