{"id":556,"date":"2021-02-27T15:12:40","date_gmt":"2021-02-27T15:12:40","guid":{"rendered":"https:\/\/35.227.60.207\/?page_id=556"},"modified":"2021-04-08T15:30:23","modified_gmt":"2021-04-08T15:30:23","slug":"documentacion-api","status":"publish","type":"page","link":"https:\/\/izisoluciones.com\/index.php\/documentacion-api\/","title":{"rendered":"Documentaci\u00f3n API"},"content":{"rendered":"[vc_row type=&#8221;full_width_content&#8221; full_screen_row_position=&#8221;middle&#8221; column_margin=&#8221;default&#8221; column_direction=&#8221;default&#8221; column_direction_tablet=&#8221;default&#8221; column_direction_phone=&#8221;default&#8221; bg_image=&#8221;356&#8243; bg_position=&#8221;center bottom&#8221; bg_repeat=&#8221;no-repeat&#8221; scene_position=&#8221;center&#8221; top_padding=&#8221;160&#8243; bottom_padding=&#8221;180&#8243; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; row_border_radius=&#8221;none&#8221; row_border_radius_applies=&#8221;bg&#8221; overlay_strength=&#8221;1&#8243; gradient_direction=&#8221;top_to_bottom&#8221; shape_divider_position=&#8221;bottom&#8221; bg_image_animation=&#8221;none&#8221; shape_type=&#8221;&#8221;][vc_column column_padding=&#8221;padding-8-percent&#8221; column_padding_tablet=&#8221;inherit&#8221; column_padding_phone=&#8221;inherit&#8221; column_padding_position=&#8221;left-right&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; column_shadow=&#8221;none&#8221; column_border_radius=&#8221;none&#8221; column_link_target=&#8221;_self&#8221; gradient_direction=&#8221;left_to_right&#8221; overlay_strength=&#8221;0.3&#8243; width=&#8221;1\/1&#8243; tablet_width_inherit=&#8221;default&#8221; tablet_text_alignment=&#8221;default&#8221; phone_text_alignment=&#8221;default&#8221; column_border_width=&#8221;none&#8221; column_border_style=&#8221;solid&#8221; bg_image_animation=&#8221;none&#8221;][vc_row_inner column_margin=&#8221;default&#8221; column_direction=&#8221;default&#8221; column_direction_tablet=&#8221;default&#8221; column_direction_phone=&#8221;default&#8221; text_align=&#8221;left&#8221;][vc_column_inner column_padding=&#8221;no-extra-padding&#8221; column_padding_tablet=&#8221;inherit&#8221; column_padding_phone=&#8221;inherit&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; column_shadow=&#8221;none&#8221; column_border_radius=&#8221;none&#8221; column_link_target=&#8221;_self&#8221; zindex=&#8221;9999&#8243; el_class=&#8221;botones-index&#8221; gradient_direction=&#8221;left_to_right&#8221; overlay_strength=&#8221;0.3&#8243; width=&#8221;2\/3&#8243; tablet_width_inherit=&#8221;default&#8221; column_border_width=&#8221;none&#8221; column_border_style=&#8221;solid&#8221; bg_image_animation=&#8221;none&#8221;][vc_column_text]\n<h1 class=\"p1\"><span class=\"s1\">Manual de uso<\/span><\/h1>\n[\/vc_column_text][vc_column_text]\n<h4><span style=\"color: #4b545f;\">iZi API v1<\/span><\/h4>\n[\/vc_column_text][vc_column_text max_width=&#8221;550&#8243;]\n<p class=\"p1\"><span class=\"s1\" style=\"color: #4b545f;\">El siguiente documento tiene como fin explicarte en detalle la forma de uso del Rest API de iZi. Al seguirlo, ser\u00e1s capaz de integrar tu software mediante llamadas HTTPS a nuestros servidores. <\/span><\/p>\n[\/vc_column_text][divider line_type=&#8221;No Line&#8221; custom_height=&#8221;20&#8243;][vc_column_text]Si necesitas ayuda, no dudes en <span style=\"color: #5d4bfa;\"><a style=\"color: #5d4bfa;\" href=\"https:\/\/wa.me\/59177536801?text=Hola+quiero+mas+informacion+sobre+iZi\" target=\"_blank\" rel=\"noopener\"><strong>contactarnos<\/strong><\/a><\/span>.[\/vc_column_text][\/vc_column_inner][vc_column_inner column_padding=&#8221;no-extra-padding&#8221; column_padding_tablet=&#8221;inherit&#8221; column_padding_phone=&#8221;inherit&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; column_shadow=&#8221;none&#8221; column_border_radius=&#8221;none&#8221; column_link_target=&#8221;_self&#8221; gradient_direction=&#8221;left_to_right&#8221; overlay_strength=&#8221;0.3&#8243; width=&#8221;1\/3&#8243; tablet_width_inherit=&#8221;default&#8221; column_border_width=&#8221;none&#8221; column_border_style=&#8221;solid&#8221; bg_image_animation=&#8221;none&#8221;][\/vc_column_inner][\/vc_row_inner][\/vc_column][\/vc_row][vc_row type=&#8221;full_width_content&#8221; full_screen_row_position=&#8221;middle&#8221; column_margin=&#8221;default&#8221; column_direction=&#8221;default&#8221; column_direction_tablet=&#8221;default&#8221; column_direction_phone=&#8221;default&#8221; scene_position=&#8221;center&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; row_border_radius=&#8221;none&#8221; row_border_radius_applies=&#8221;bg&#8221; class=&#8221;pagos-main-img&#8221; overlay_strength=&#8221;0.3&#8243; gradient_direction=&#8221;left_to_right&#8221; shape_divider_position=&#8221;bottom&#8221; bg_image_animation=&#8221;none&#8221; shape_type=&#8221;&#8221;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_tablet=&#8221;inherit&#8221; column_padding_phone=&#8221;inherit&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; column_shadow=&#8221;none&#8221; column_border_radius=&#8221;none&#8221; column_link_target=&#8221;_self&#8221; zindex=&#8221;999&#8243; gradient_direction=&#8221;left_to_right&#8221; overlay_strength=&#8221;0.3&#8243; width=&#8221;1\/3&#8243; tablet_width_inherit=&#8221;default&#8221; tablet_text_alignment=&#8221;default&#8221; phone_text_alignment=&#8221;default&#8221; column_border_width=&#8221;none&#8221; column_border_style=&#8221;solid&#8221; bg_image_animation=&#8221;none&#8221;][\/vc_column][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_tablet=&#8221;inherit&#8221; column_padding_phone=&#8221;inherit&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; column_shadow=&#8221;none&#8221; column_border_radius=&#8221;none&#8221; column_link_target=&#8221;_self&#8221; zindex=&#8221;999&#8243; gradient_direction=&#8221;left_to_right&#8221; overlay_strength=&#8221;0.3&#8243; width=&#8221;2\/3&#8243; tablet_width_inherit=&#8221;default&#8221; tablet_text_alignment=&#8221;default&#8221; phone_text_alignment=&#8221;default&#8221; column_border_width=&#8221;none&#8221; column_border_style=&#8221;solid&#8221; bg_image_animation=&#8221;none&#8221;][nectar_cascading_images image_1_offset_x_sign=&#8221;+&#8221; image_1_offset_x=&#8221;5%&#8221; image_1_offset_y_sign=&#8221;-&#8221; image_1_offset_y=&#8221;15%&#8221; image_1_rotate_sign=&#8221;+&#8221; image_1_rotate=&#8221;none&#8221; image_1_scale=&#8221;1&#8243; image_1_animation=&#8221;Fade In&#8221; image_1_box_shadow=&#8221;none&#8221; image_1_padding=&#8221;auto&#8221; image_1_max_width_desktop=&#8221;100%&#8221; image_1_max_width_mobile=&#8221;100%&#8221; image_1_image_width_mobile=&#8221;default&#8221; image_2_url=&#8221;1311&#8243; image_2_offset_x_sign=&#8221;+&#8221; image_2_offset_x=&#8221;10%&#8221; image_2_offset_y_sign=&#8221;+&#8221; image_2_offset_y=&#8221;10%&#8221; image_2_rotate_sign=&#8221;+&#8221; image_2_rotate=&#8221;none&#8221; image_2_scale=&#8221;0.4&#8243; image_2_animation=&#8221;Fade In&#8221; image_2_box_shadow=&#8221;none&#8221; image_2_padding=&#8221;auto&#8221; image_2_max_width_desktop=&#8221;100%&#8221; image_2_max_width_mobile=&#8221;100%&#8221; image_2_image_width_mobile=&#8221;default&#8221; image_3_offset_x_sign=&#8221;+&#8221; image_3_offset_x=&#8221;0%&#8221; image_3_offset_y_sign=&#8221;+&#8221; image_3_offset_y=&#8221;0%&#8221; image_3_rotate_sign=&#8221;+&#8221; image_3_rotate=&#8221;none&#8221; image_3_scale=&#8221;1&#8243; image_3_animation=&#8221;Fade In&#8221; image_3_box_shadow=&#8221;none&#8221; image_3_padding=&#8221;auto&#8221; image_3_max_width_desktop=&#8221;100%&#8221; image_3_max_width_mobile=&#8221;100%&#8221; image_3_image_width_mobile=&#8221;default&#8221; image_4_offset_x_sign=&#8221;+&#8221; image_4_offset_x=&#8221;0%&#8221; image_4_offset_y_sign=&#8221;+&#8221; image_4_offset_y=&#8221;0%&#8221; image_4_rotate_sign=&#8221;+&#8221; image_4_rotate=&#8221;none&#8221; image_4_scale=&#8221;1&#8243; image_4_animation=&#8221;Fade In&#8221; image_4_box_shadow=&#8221;none&#8221; image_4_padding=&#8221;auto&#8221; image_4_max_width_desktop=&#8221;100%&#8221; image_4_max_width_mobile=&#8221;100%&#8221; image_4_image_width_mobile=&#8221;default&#8221; border_radius=&#8221;none&#8221; image_loading=&#8221;default&#8221;][\/vc_column][\/vc_row][vc_row type=&#8221;full_width_background&#8221; full_screen_row_position=&#8221;middle&#8221; column_margin=&#8221;default&#8221; column_direction=&#8221;default&#8221; column_direction_tablet=&#8221;default&#8221; column_direction_phone=&#8221;default&#8221; bg_color=&#8221;#ffffff&#8221; scene_position=&#8221;center&#8221; top_padding=&#8221;100&#8243; bottom_padding=&#8221;160&#8243; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; row_border_radius=&#8221;none&#8221; row_border_radius_applies=&#8221;bg&#8221; overlay_strength=&#8221;0.3&#8243; gradient_direction=&#8221;left_to_right&#8221; shape_divider_position=&#8221;bottom&#8221; bg_image_animation=&#8221;none&#8221; shape_type=&#8221;&#8221;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_tablet=&#8221;inherit&#8221; column_padding_phone=&#8221;inherit&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; column_shadow=&#8221;none&#8221; column_border_radius=&#8221;none&#8221; column_link_target=&#8221;_self&#8221; gradient_direction=&#8221;left_to_right&#8221; overlay_strength=&#8221;0.3&#8243; width=&#8221;1\/1&#8243; tablet_width_inherit=&#8221;default&#8221; tablet_text_alignment=&#8221;default&#8221; phone_text_alignment=&#8221;default&#8221; column_border_width=&#8221;none&#8221; column_border_style=&#8221;solid&#8221; bg_image_animation=&#8221;none&#8221;][tabbed_section style=&#8221;vertical_scrolling&#8221; tab_color=&#8221;Accent-Color&#8221; vs_navigation_width=&#8221;regular&#8221; vs_navigation_spacing=&#8221;45px&#8221; vs_tab_spacing=&#8221;20%&#8221; vs_tab_tag=&#8221;h4&#8243;][tab icon_family=&#8221;none&#8221; title=&#8221;Servidores y acceso&#8221; id=&#8221;1617895744790-4&#8243; sub_desc=&#8221;Sobre servidores de prueba y de producci\u00f3n&#8221; tab_id=&#8221;1617895744792-7&#8243;][vc_row_inner column_margin=&#8221;default&#8221; column_direction=&#8221;default&#8221; column_direction_tablet=&#8221;default&#8221; column_direction_phone=&#8221;default&#8221; text_align=&#8221;left&#8221;][vc_column_inner column_padding=&#8221;no-extra-padding&#8221; column_padding_tablet=&#8221;inherit&#8221; column_padding_phone=&#8221;inherit&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; column_shadow=&#8221;none&#8221; column_border_radius=&#8221;none&#8221; column_link_target=&#8221;_self&#8221; gradient_direction=&#8221;left_to_right&#8221; overlay_strength=&#8221;0.3&#8243; width=&#8221;1\/1&#8243; tablet_width_inherit=&#8221;default&#8221; column_border_width=&#8221;none&#8221; column_border_style=&#8221;solid&#8221; bg_image_animation=&#8221;none&#8221;][vc_column_text]El Rest API de iZi funciona en dos servidores de manera paralela, uno de produccio\u0301n y otro de pruebas. Para acceder a cualquiera de los dos, debes usar estas direcciones:<\/p>\n<p><strong>Servidor de pruebas<\/strong><\/p>\n<p><a href=\"https:\/\/api.test.izifacturacion.com\/v1\">https:\/\/api.test.izifacturacion.com\/v1<\/a><\/p>\n<p><strong>Servidor de producci\u00f3n<\/strong><\/p>\n<p><a href=\"https:\/\/api.app.izifacturacion.com\/v1\">https:\/\/api.app.izifacturacion.com\/v1<\/a><\/p>\n<p>Para acceder a los servicios de iZi, debes realizar llamados HTTPS utilizando las credenciales de tu cuenta. Los datos se intercambiara\u0301n en formato JSON. El API es stateless, lo que significa que no es necesario mantener una sesio\u0301n activa con nuestros servidores.[\/vc_column_text][\/vc_column_inner][\/vc_row_inner][\/tab][tab icon_family=&#8221;none&#8221; title=&#8221;Credenciales&#8221; id=&#8221;1617895744856-7&#8243; sub_desc=&#8221;Acceso y IDs&#8221; tab_id=&#8221;1617895744857-0&#8243;][vc_row_inner column_margin=&#8221;none&#8221; column_direction=&#8221;default&#8221; column_direction_tablet=&#8221;default&#8221; column_direction_phone=&#8221;default&#8221; text_align=&#8221;left&#8221;][vc_column_inner column_padding=&#8221;no-extra-padding&#8221; column_padding_tablet=&#8221;inherit&#8221; column_padding_phone=&#8221;inherit&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; column_shadow=&#8221;none&#8221; column_border_radius=&#8221;none&#8221; column_link_target=&#8221;_self&#8221; gradient_direction=&#8221;left_to_right&#8221; overlay_strength=&#8221;0.3&#8243; width=&#8221;1\/1&#8243; tablet_width_inherit=&#8221;default&#8221; column_border_width=&#8221;none&#8221; column_border_style=&#8221;solid&#8221; bg_image_animation=&#8221;none&#8221;][vc_column_text]Para acceder al API, debes contar con el m\u00f3dulo de \u201cIntegraci\u00f3n a Sistemas\u201d de iZi. Si no cuentas con una suscripcio\u0301n en este momento, puedes ponerte en contacto con nosotros a trave\u0301s de <a href=\"mailto:hola@izifacturacion.com\">hola@izifacturacion.com<\/a>.<\/p>\n<p>Las llaves se componen de 3 elementos: un ClientId, que es un identificador de la cuenta dentro de nuestro sistema; un PrivateKey, que sera\u0301 utilizado para desencriptar datos en nuestros servidores; y un PublicKey, que podra\u0301 ser utilizado para encriptar datos del lado del cliente.[\/vc_column_text][vc_column_text]<strong>ClientId\u200b:<\/strong><\/p>\n<p>Es un identificador de la cuenta del cliente. El ClientId es \u00fanico en todo el sistema.[\/vc_column_text][vc_column_text]<strong>PrivateKey\u200b\u200b:<\/strong><\/p>\n<p>Es parte privada de la llave RSA que sirve para encriptar la comunicacio\u0301n entre el sistema del cliente y los servidores de iZi. Esta llave se guarda en el servidor de iZi y es usada para validar las solicitudes del cliente.[\/vc_column_text][vc_column_text]<strong>PublicKey\u200b\u200b\u200b:<\/strong><\/p>\n<p>Es parte pu\u0301blica de la llave RSA que sirve para encriptar la comunicacio\u0301n entre el sistema del cliente y los servidores de iZi. Esta llave se puede descargar una u\u0301nica vez al momento de generarla y debe ser almacenada de manera segura en los sistemas del cliente.<\/p>\n<p>Las credenciales para el uso de la aplicacio\u0301n pueden obtenerse a trave\u0301s de la web app, en <a href=\"https:\/\/app.izifacturacion.com\">https:\/\/app.izifacturacion.com<\/a>. Ingresa a la aplicaci\u00f3n, selecciona la empresa en cuesti\u00f3n e ingresa a la secci\u00f3n de integraciones. All\u00ed, busca \u201cIntegraci\u00f3n a Sistemas\u201d. Aqu\u00ed encontrar\u00e1s las llaves si estas ya se hubieran generado previamente, o puedes hacer clic en el boto\u0301n \u201cGenerar Llaves\u201d para generar las llaves.<br \/>\nGuarda en un lugar seguro la llave pu\u0301blica, ya que es la u\u0301nica copia. Si se pierde, tendra\u0301s que volver a generar las credenciales.[\/vc_column_text][\/vc_column_inner][\/vc_row_inner][\/tab][tab icon_family=&#8221;none&#8221; title=&#8221;Facturaci\u00f3n por Terceros&#8221; id=&#8221;1617895744925-2&#8243; sub_desc=&#8221;Para emitir facturas para diferentes clientes y empresas&#8221; tab_id=&#8221;1617895744926-8&#8243;][vc_row_inner column_margin=&#8221;none&#8221; column_direction=&#8221;default&#8221; column_direction_tablet=&#8221;default&#8221; column_direction_phone=&#8221;default&#8221; text_align=&#8221;left&#8221;][vc_column_inner column_padding=&#8221;no-extra-padding&#8221; column_padding_tablet=&#8221;inherit&#8221; column_padding_phone=&#8221;inherit&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; column_shadow=&#8221;none&#8221; column_border_radius=&#8221;none&#8221; column_link_target=&#8221;_self&#8221; gradient_direction=&#8221;left_to_right&#8221; overlay_strength=&#8221;0.3&#8243; width=&#8221;1\/1&#8243; tablet_width_inherit=&#8221;default&#8221; column_border_width=&#8221;none&#8221; column_border_style=&#8221;solid&#8221; bg_image_animation=&#8221;none&#8221;][vc_column_text el_class=&#8221;api-notas&#8221;]Nota: \u200beste servicio solo est\u00e1 disponible si contrataste el m\u00f3dulo adicional de \u201cFacturaci\u00f3n por Terceros\u201d, que te permite emitir facturas para diferentes clientes y empresas.[\/vc_column_text][vc_column_text]Cada cliente que tenga acceso al API de iZi, tendra\u0301 la posibilidad de restringir para que\u0301 NIT (uno o varios) se podra\u0301 emitir facturas a trave\u0301s de su cuenta. Esto cumple una doble funcio\u0301n de seguridad: por un lado, el cliente podra\u0301 limitar la emisio\u0301n de facturas a contribuyentes no autorizados y, por otro lado, le permitira\u0301 configurar la dosificacio\u0301n de facturacio\u0301n una u\u0301nica vez, sin necesidad de enviar estos datos con cada solicitud.<\/p>\n<p>Dentro de la plataforma, en la configuracio\u0301n del cliente se puede definir una lista de contribuyentes asociados para los que podra\u0301s emitir facturas. Los datos a registrar son los siguientes:<\/p>\n<p><strong>Raz\u00f3n social:<\/strong> del contribuyente asociado.<\/p>\n<p><strong>NIT:<\/strong> del contribuyente asociado.<\/p>\n<p><strong>Logo:<\/strong> del contribuyente asociado.<\/p>\n<p><strong>Correo electr\u00f3nico:<\/strong> del contribuyente asociado.<\/p>\n<p><strong>Actividad econ\u00f3mica:<\/strong> con la cual el contribuyente asociado emitir\u00e1 facturas.<\/p>\n<p><strong>Sucursal:<\/strong> nombre de la sucursal con la cual el contribuyente asociado emitir\u00e1 facturas, por defecto \u201cCasa Matriz\u201d.<\/p>\n<p><strong>Direcci\u00f3n:<\/strong> de la Sucursal\/Casa Matriz.<\/p>\n<p><strong>Zona:<\/strong> de la Sucursal\/Casa Matriz.<\/p>\n<p><strong>Ciudad:<\/strong> de la Sucursal\/Casa Matriz.<\/p>\n<p><strong>Tel\u00e9fono:<\/strong> de la Sucursal\/Casa Matriz.<\/p>\n<p><strong>Autorizaci\u00f3n de facturaci\u00f3n:<\/strong> obtenida en el portal web de Impuestos, en la cuenta del cliente.<\/p>\n<p><strong>Llave de facturaci\u00f3n:<\/strong> obtenida en el portal web de Impuestos, en la cuenta del cliente.<\/p>\n<p><strong>\u00daltimo n\u00famero de factura:<\/strong> el n\u00famero de la \u00faltima factura emitida por el cliente (de otra autorizaci\u00f3n u otro sistema de facturaci\u00f3n).<\/p>\n<p><strong>Fecha l\u00edmite de emisi\u00f3n:<\/strong> obtenida en el portal web de Impuestos, en la cuenta del cliente.<\/p>\n<p><strong>Leyenda de facturaci\u00f3n:<\/strong> obtenida en el portal web de Impuestos, en la cuenta del cliente.<\/p>\n<p><strong>Estado:<\/strong> Permite deshabilitar a un contribuyente sin eliminarlo.<\/p>\n<p>Cada vez que utilices el API para emitir una factura, nuestro sistema validar\u00e1 que el NIT emisor est\u00e9 dentro de la lista de los contribuyentes autorizados y utilizar\u00e1 la informaci\u00f3n configurada all\u00ed para generar la factura.[\/vc_column_text][\/vc_column_inner][\/vc_row_inner][\/tab][tab icon_family=&#8221;none&#8221; title=&#8221;Autorizaci\u00f3n&#8221; id=&#8221;1617895744969-8&#8243; tab_id=&#8221;1617895744970-0&#8243; sub_desc=&#8221;Endpoints y autorizaciones&#8221;][vc_row_inner column_margin=&#8221;default&#8221; column_direction=&#8221;default&#8221; column_direction_tablet=&#8221;default&#8221; column_direction_phone=&#8221;default&#8221; text_align=&#8221;left&#8221;][vc_column_inner column_padding=&#8221;no-extra-padding&#8221; column_padding_tablet=&#8221;inherit&#8221; column_padding_phone=&#8221;inherit&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; column_shadow=&#8221;none&#8221; column_border_radius=&#8221;none&#8221; column_link_target=&#8221;_self&#8221; gradient_direction=&#8221;left_to_right&#8221; overlay_strength=&#8221;0.3&#8243; width=&#8221;1\/1&#8243; tablet_width_inherit=&#8221;default&#8221; column_border_width=&#8221;none&#8221; column_border_style=&#8221;solid&#8221; bg_image_animation=&#8221;none&#8221;][vc_column_text]Los endpoints del API de iZi utilizan un sistema de encriptaci\u00f3n h\u00edbrida para asegurar la entrada al sistema, donde se utilizar\u00e1n diferentes m\u00e9todos para encriptar el contenido que se enviar\u00e1 mediante un header HTTP.<\/p>\n<p>El API recibe esta validaci\u00f3n con cada uno de los llamados que se realizan para validar que los datos enviados sean efectivamente generados por el due\u00f1o de la cuenta. Estos datos vienen encriptados en un header Authorization.<\/p>\n<p>El header Authorization de los llamados al API se compone de 3 partes:[\/vc_column_text][image_with_animation image_url=&#8221;568&#8243; animation=&#8221;Fade In&#8221; hover_animation=&#8221;none&#8221; alignment=&#8221;&#8221; border_radius=&#8221;none&#8221; box_shadow=&#8221;none&#8221; image_loading=&#8221;default&#8221; max_width=&#8221;75%&#8221; max_width_mobile=&#8221;default&#8221;][vc_column_text]<strong>ClientId:<\/strong><\/p>\n<p>El primer elemento del header, el clientId, se consigue a trav\u00e9s del portal web de iZi, accediendo a la configuraci\u00f3n de la cuenta.<\/p>\n<p><strong>Llave encriptada con RSA:<\/strong><\/p>\n<p>Esta es una llave definida por el cliente (se recomienda un valor aleatorio) que ha sido encriptada usando su publicKey.<\/p>\n<p><strong>Contenido encriptado con AES:<\/strong><\/p>\n<p>El contenido que se enviar\u00e1 en el body de la solicitud, encriptado con la llave definida por el cliente.<\/p>\n<p>Un ejemplo de este header podr\u00eda ser:[\/vc_column_text][vc_column_text]\n<pre><code>8abbe332-8b73-45bf-b6df-bkk3364420a6:GP9HjUDcpUH087V0fGIIAs\r\nAMTouFYEOTmy1bNe8GOi90k39zUnEBpkseiyr10Sfmx0\/eez1e2P52G53M7z\r\nYw7wo6arfSOtLlwJKmcA3gDLYD1sZPenmekREgVVbBu8wsRnRb9DwC7w+chU\r\nCsf8RXrV2MC+TRYh3mDWAAjxh7qsQ=:\/jkFYcLeSZsZu5EV4KaNlyvvnpumi\r\nftqh0KF8oZ8ntSWmuRXF1+Sd2SNJpmRjllfZFF3J+GlQOiDXsbuNtgqcVKsc\r\neVz9S6N8qxhlP8pTMjiOjp3h+KcAXsXYVdYgKa0v\/Dt0QC+IXscVtKjgcBZtI\r\ncXTbZ\/Y\/arnrWdaAZxK2TsCx9N24HDF+BMJ\/mq9IUokj\/kBek2r13+05t6KvB\r\nJQ===<\/code><\/pre>\n[\/vc_column_text][\/vc_column_inner][\/vc_row_inner][\/tab][tab icon_family=&#8221;none&#8221; title=&#8221;Construyendo el header de Authorization&#8221; id=&#8221;1617895745034-5&#8243; tab_id=&#8221;1617895745034-7&#8243; sub_desc=&#8221;Creaci\u00f3n de Solicitud en formato JSON, Llave AES\/Vector de Inicializaci\u00f3n y encriptaci\u00f3n de Contenido&#8221;][vc_row_inner column_margin=&#8221;default&#8221; column_direction=&#8221;default&#8221; column_direction_tablet=&#8221;default&#8221; column_direction_phone=&#8221;default&#8221; text_align=&#8221;left&#8221;][vc_column_inner column_padding=&#8221;no-extra-padding&#8221; column_padding_tablet=&#8221;inherit&#8221; column_padding_phone=&#8221;inherit&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; column_shadow=&#8221;none&#8221; column_border_radius=&#8221;none&#8221; column_link_target=&#8221;_self&#8221; gradient_direction=&#8221;left_to_right&#8221; overlay_strength=&#8221;0.3&#8243; width=&#8221;1\/1&#8243; tablet_width_inherit=&#8221;default&#8221; column_border_width=&#8221;none&#8221; column_border_style=&#8221;solid&#8221; bg_image_animation=&#8221;none&#8221;][vc_column_text]El proceso de construcci\u00f3n de un header de autorizaci\u00f3n comienza cuando el cliente desea mandar una solicitud al API de iZi y sigue los siguientes pasos:[\/vc_column_text][image_with_animation image_url=&#8221;590&#8243; animation=&#8221;Fade In&#8221; hover_animation=&#8221;none&#8221; alignment=&#8221;&#8221; border_radius=&#8221;none&#8221; box_shadow=&#8221;none&#8221; image_loading=&#8221;default&#8221; max_width=&#8221;75%&#8221; max_width_mobile=&#8221;default&#8221;][vc_column_text]<strong>Creaci\u00f3n de solicitud en formato JSON<\/strong><\/p>\n<p>Debes armar un objeto JSON en el formato descrito en la secci\u00f3n de endpoints, dependiendo del endpoint que desees consultar.<\/p>\n<p>Una vez armado el objeto, se debe convertir en un buffer para poder utilizarlo en el resto del flujo en encriptaci\u00f3n.[\/vc_column_text][vc_column_text]\n<h5>NodeJS<\/h5>\n<pre><code>var data = { ... };\r\nvar bufferData = Buffer.from(data, \"utf8\");<\/code><\/pre>\n[\/vc_column_text][vc_column_text]<strong>Creaci\u00f3n de llave AES y vector de inicializaci\u00f3n<\/strong><\/p>\n<p>La llave AES se compone de una cadena de 16 bytes. Se utiliza, al igual que el vector de inicializaci\u00f3n (IV por sus siglas en ingl\u00e9s), para la encriptaci\u00f3n del contenido en el token.<\/p>\n<p>El IV tambi\u00e9n es una cadena de texto de 8 caracteres, que debe ser generada de manera aleatoria en cada solicitud.<\/p>\n<p>Se recomienda que en cada solicitud se genere una llave AES y un IV, de manera aleatoria para mayor seguridad.[\/vc_column_text][vc_column_text]\n<h5>NodeJS<\/h5>\n<pre><code>var key = crypto.randomBytes(32);\r\nvar iv = crypto.randomBytes(16);<\/code><\/pre>\n[\/vc_column_text][vc_column_text]<strong>Encriptaci\u00f3n de contenido<\/strong><\/p>\n<p>Utilizando las llaves reci\u00e9n generadas, se procede a encriptar el contenido mediante AES, teniendo en cuenta el vector de inicializaci\u00f3n. El contenido encriptado se utilizar\u00e1 en el header de autorizaci\u00f3n y, posteriormente, servir\u00e1 para validar que los datos de la solicitud sean correctos.[\/vc_column_text][vc_column_text]\n<h5>NodeJS<\/h5>\n<pre><code>var cypher = crypto.createCipheriv('aes-256-cbc', key, iv);\r\nvar cryptedAES = Buffer.concat([cypher.update(bufferData), cypher.final()]);<\/code><\/pre>\n[\/vc_column_text][vc_column_text]<strong>Encriptaci\u00f3n de la llave AES<\/strong><\/p>\n<p>Con el fin de transferir la llave AES de manera segura al servidor (y poder utilizarla, as\u00ed, para desencriptar los datos y validarlos) se debe encriptar la llave AES sobre RSA. Para esto, se usar\u00e1 la llave p\u00fablica descargada del sitio web de iZi.[\/vc_column_text][vc_column_text]\n<h5>NodeJS<\/h5>\n<pre><code>var constants = require(\"constants\");\r\nvar encryptedKey = crypto.publicEncrypt({\"key\" : publicKey, padding : constants.RSA_PKCS1_PADDING}, key);<\/code><\/pre>\n[\/vc_column_text][vc_column_text]<strong>Armado de header<\/strong><\/p>\n<p>Finalmente, se debe armar el string que se enviar\u00e1 como header en la solicitud, utilizando las credenciales generadas, as\u00ed como el clientId obtenido del sitio web de iZi.[\/vc_column_text][vc_column_text]\n<h5>NodeJS<\/h5>\n<pre><code>var auth = clientId + \":\" + key.toString('base64') + \":\" + iv.toString('hex') + cryptedAES.toString('base64');<\/code><\/pre>\n[\/vc_column_text][vc_column_text]<strong>Env\u00edo de solicitud<\/strong><\/p>\n<p>Como paso final debes enviar la solicitud al API, organizada de la siguiente manera:<\/p>\n<ul>\n<li>Header Authorization con el string generado en el anterior paso<\/li>\n<li>Body de la solicitud con el contenido de la factura<\/li>\n<\/ul>\n<p>Los servidores de iZi usar\u00e1n la llave privada asociada a la cuenta para verificar que los valores enviados en el body correspondan a los desencriptados del header.[\/vc_column_text][vc_column_text]\n<h5>NodeJS<\/h5>\n<pre><code>var request = require('request');\r\n\r\nrequest({\r\n    method: 'POST',\r\n    uri: 'https:\/\/api.app.izifacturacion.com\/v1\/facturas',\r\n    body: data,\r\n    headers: {\r\n        'Authorization': auth,\r\n        'Content-Type': 'application\/json'\r\n    }\r\n}, callback);<\/code><\/pre>\n[\/vc_column_text][\/vc_column_inner][\/vc_row_inner][\/tab][tab icon_family=&#8221;none&#8221; title=&#8221;Endpoints&#8221; id=&#8221;1617895745202-1&#8243; tab_id=&#8221;1617895745203-2&#8243; sub_desc=&#8221;La lista de endpoints disponibles&#8221;][vc_row_inner column_margin=&#8221;default&#8221; column_direction=&#8221;default&#8221; column_direction_tablet=&#8221;default&#8221; column_direction_phone=&#8221;default&#8221; text_align=&#8221;left&#8221;][vc_column_inner column_padding=&#8221;no-extra-padding&#8221; column_padding_tablet=&#8221;inherit&#8221; column_padding_phone=&#8221;inherit&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; column_shadow=&#8221;none&#8221; column_border_radius=&#8221;none&#8221; column_link_target=&#8221;_self&#8221; gradient_direction=&#8221;left_to_right&#8221; overlay_strength=&#8221;0.3&#8243; width=&#8221;1\/1&#8243; tablet_width_inherit=&#8221;default&#8221; column_border_width=&#8221;none&#8221; column_border_style=&#8221;solid&#8221; bg_image_animation=&#8221;none&#8221;][vc_column_text]La lista de endpoints disponibles se presenta a continuaci\u00f3n.[\/vc_column_text][vc_column_text]\n<h6><strong><span style=\"color: #6fcf97;\">POST<\/span> \/v1\/facturas<\/strong><\/h6>\n<p>Este endpoint sirve para crear nuevas facturas. Las solicitudes se validan contra la lista de contribuyentes asociados para evitar facturaci\u00f3n no autorizada.<\/p>\n<p><strong>Propiedades (par\u00e1metros POST)<\/strong><\/p>\n<pre><code>emisor*  ( type: string , pattern: ^[0-9]*$ ) <\/code><\/pre>\n<p>El NIT emisor (debe estar registrado en el portal web). Campo requerido.<\/p>\n<pre><code>comprador* ( type: string , pattern: ^[0-9]+ ) <\/code><\/pre>\n<p>El NIT de quien realiza la compra. Campo requerido.<\/p>\n<pre><code>razonSocial* ( type: string )<\/code><\/pre>\n<p>El nombre completo o la raz\u00f3n social del comprador.<\/p>\n<pre><code>sucursal ( type: number )<\/code><\/pre>\n<p>El c\u00f3digo de sucursal a utilizar, en caso de que se tenga m\u00e1s de una.<\/p>\n<pre><code>actividadEconomica ( type: number )<\/code><\/pre>\n<p>El c\u00f3digo de actividad econ\u00f3mica a utilizar, en caso de que se tenga m\u00e1s de una.<\/p>\n<pre><code>listaItems* ( type: array )<\/code><\/pre>\n<p>La lista de los art\u00edculos con sus precios y cantidades se describen en este campo. La forma de cada posici\u00f3n del arreglo es la siguiente:<\/p>\n<pre><code>{\r\narticulo ( type: string ), \r\ncantidad ( type: number ),\r\nprecioUnitario ( type: number )\r\n}\r\n<\/code><\/pre>\n<pre><code>descuentos ( type: number )<\/code><\/pre>\n<p>Descuento sobre el valor total de la factura.<\/p>\n<pre><code>camposExtra ( type: object )<\/code><\/pre>\n<p>Los campos extra son la manera de enviar contenido extra para la factura. Estos campos deben ser configurados de manera previa en la cuenta de iZi y referenciados a trav\u00e9s de su ID, que puede ser consultado en la secci\u00f3n de integraciones. El objeto enviado en este par\u00e1metro tiene la siguiente forma:<\/p>\n<pre><code>{\r\n: \u201cvalor 1\u201d, \r\n: \u201cvalor 2\u201d \r\n}\r\n<\/code><\/pre>\n<p>Un ejemplo de los datos JSON a enviarse ser\u00eda:<\/p>\n<pre><code>{\r\n     \"emisor\": \"7777777\",\r\n    \t\"razonSocial\": \"Empresa Prueba\",\r\n   \t\"comprador\": \"4346405\",\r\n    \t\"listaItems\": [{\r\n         \"articulo\": \"Art\u00edculo de prueba\",\r\n         \"cantidad\": 13,\r\n         \"precioUnitario\": 13\r\n     }]\r\n}\r\n<\/code><\/pre>\n[\/vc_column_text][vc_column_text]<strong>Respuesta<\/strong><\/p>\n<h6><strong><span style=\"color: #6fcf97;\">200<\/span> &#8211; OK<\/strong><\/h6>\n<p>Si la solicitud se proces\u00f3 sin errores, se responder\u00e1 con un objeto de la factura creada y el c\u00f3digo 200. La respuesta llegar\u00e1 compuesta de la siguiente manera:<\/p>\n<pre><code>{\r\n    \"factura\": {\r\n        \"id\": 9999,\r\n        \"timestamp\": \"2026-06-06T00:18:00.000Z\",\r\n        \"link\": \"https:\/\/izi-content.s3-us-west-1.amazonaws.com\/facturas\/factura-9999.pdf\",\r\n        \"pdfRollo\": \"https:\/\/izi-content.s3-us-west-1.amazonaws.com\/facturas\/facturaR80-9999.pdf\",\r\n        \"numero\": 99,\r\n        \"comprador\": \"1234567890\",\r\n        \"razonSocial\": \"Test\",\r\n        \"listaItems\": [\r\n            {\r\n                \"articulo\": \"Articulo de prueba\",\r\n                \"cantidad\": 13,\r\n                \"precioTotal\": 169,\r\n                \"precioUnitario\": 13\r\n            }\r\n        ],\r\n        \"autorizacion\": \"123123123123123\",\r\n        \"montoTotal\": 169,\r\n        \"descuentos\": 0,\r\n        \"sinCredito\": 0,\r\n        \"control\": \"FF-EE-EE-80\",\r\n        \"tipoCompra\": 1,\r\n        \"terminosPago\": null\r\n    }\r\n}<\/code><\/pre>\n[\/vc_column_text][vc_column_text]<strong>Errores<\/strong><\/p>\n<p>Los errores a la solicitud se devuelven como texto plano.<\/p>\n<h6><strong><span style=\"color: #ff6c63;\">401<\/span> &#8211; Unauthorized<\/strong><\/h6>\n<p><span style=\"color: #a39dc5;\"><strong>Cliente no Encontrado<\/strong><\/span> &#8211; Cuando el clientId no corresponde a ning\u00fan cliente.<\/p>\n<p><strong><span style=\"color: #a39dc5;\">Token inv\u00e1lido<\/span><\/strong> &#8211; Si el header Authorization no se encuentra bien encriptado o no corresponde a la solicitud.<\/p>\n<p><strong><span style=\"color: #a39dc5;\">No existen llaves para el cliente<\/span><\/strong> &#8211; Cuando el cliente no ha generado sus credenciales a trav\u00e9s de la p\u00e1gina de iZi.<\/p>\n<h6><strong><span style=\"color: #ff6c63;\">404<\/span> &#8211; Not Found<\/strong><\/h6>\n<p><strong><span style=\"color: #a39dc5;\">Cliente no Encontrado<\/span> <\/strong>&#8211; Cuando el clientId no corresponde a ning\u00fan cliente.<\/p>\n<p><strong><span style=\"color: #a39dc5;\">No existen llaves para el cliente<\/span><\/strong> &#8211; Cuando el cliente no ha generado sus credenciales a trav\u00e9s de la p\u00e1gina de iZi.<\/p>\n<p><span style=\"color: #a39dc5;\"><strong>Contribuyente autorizado no encontrado<\/strong><\/span> &#8211; Si no es posible encontrar a un contribuyente asociado.<\/p>\n<h6><strong><span style=\"color: #ff6c63;\">406<\/span> &#8211; Not Acceptable<\/strong><\/h6>\n<p><span style=\"color: #a39dc5;\"><strong>Contribuyente desactivado<\/strong><\/span> &#8211; Si se desactiv\u00f3 al contribuyente autorizado.<\/p>\n<p><strong><span style=\"color: #a39dc5;\">Autorizaci\u00f3n de facturaci\u00f3n vencida<\/span><\/strong> &#8211; Si la autorizaci\u00f3n de facturaci\u00f3n ya expir\u00f3 (su fecha l\u00edmite de emisi\u00f3n ya pas\u00f3).<\/p>\n<p><span style=\"color: #a39dc5;\"><strong>Sucursal de Facturaci\u00f3n Inv\u00e1lida<\/strong><\/span> &#8211; En el caso de que est\u00e9 facturando con su propio NIT como emisor, puede ocurrir este error si tiene configurada m\u00e1s de una sucursal. En este caso, puede enviar el c\u00f3digo de sucursal como par\u00e1metro o configurarlo en la pesta\u00f1a de API dentro de la aplicaci\u00f3n de iZi. Para obtener el c\u00f3digo de sucursal puede acceder a esta misma pesta\u00f1a dentro de iZi.<\/p>\n<p><strong><span style=\"color: #a39dc5;\">Actividad Econ\u00f3mica de Facturaci\u00f3n Inv\u00e1lida<\/span><\/strong> &#8211; En el caso de que est\u00e9 facturando con su propio NIT como emisor, puede ocurrir este error si tiene configurada m\u00e1s de una actividad econ\u00f3mica. En este caso, puede enviar el c\u00f3digo de actividad econ\u00f3mica como par\u00e1metro o configurarlo en la pesta\u00f1a de API dentro de la aplicaci\u00f3n de iZi. Para obtener el c\u00f3digo de sucursal puede acceder a esta misma pesta\u00f1a dentro de iZi.<\/p>\n<p><strong><span style=\"color: #a39dc5;\">No existe una autorizaci\u00f3n de facturaci\u00f3n v\u00e1lida<\/span><\/strong> &#8211; En el caso de que est\u00e9 facturando con su propio NIT como emisor, puede ocurrir este error si no tiene configurada una autorizaci\u00f3n de facturaci\u00f3n (dosificaci\u00f3n) para sucursal y actividad econ\u00f3mica especificados.<\/p>\n<h6><strong><span style=\"color: #ff6c63;\">500<\/span> &#8211; Internal Server Error<\/strong><\/h6>\n<p>En caso de ocurrir un error interno de procesamiento, se enviar\u00e1 el detalle del fallo.[\/vc_column_text][vc_column_text]\n<h6><strong><span style=\"color: #6fcf97;\">POST<\/span> &#8211; \/v1\/cobros <\/strong><\/h6>\n<p>Este endpoint sirve para crear nuevos cobros que, a su vez, generan una prefactura asociada al cobro. Tambi\u00e9n es posible realizar la factura de manera previa y mandarla como par\u00e1metro, en este caso, algunos valores de la solicitud no son necesarios y ser\u00e1n sobreescritos.<\/p>\n<p><strong>Propiedades (Par\u00e1metros POST)<\/strong><\/p>\n<pre><code>descripcion* ( type: string )<\/code><\/pre>\n<p>Una descripci\u00f3n corta para el cobro.<\/p>\n<pre><code>monto* ( type: number )<\/code><\/pre>\n<p>El monto en Bs para el cobro.<\/p>\n<pre><code>pasarela ( type: string, default: CYBERSOURCE )<\/code><\/pre>\n<p>Pasarela por la cual se realizar\u00e1 el cobro. Puede ser:<\/p>\n<ul>\n<li>CYBERSOURCE &#8211; Pago con tarjetas de cr\u00e9dito y d\u00e9bito<\/li>\n<li>SIP &#8211; Pago con c\u00f3digos QR<\/li>\n<li>Khipu &#8211; Pago con tarjetas de cr\u00e9dito y d\u00e9bito (deprecated)<\/li>\n<\/ul>\n<p>Es posible mandar m\u00e1s de una pasarela de la siguiente manera: \u201cCYBERSOURCE,SIP\u201d.<\/p>\n<pre><code>correoElectronico* ( type: string )<\/code><\/pre>\n<p>El correo electr\u00f3nico del pagador. Se enviar\u00e1 el cobro a menos que se especifique lo contrario en notificarPagador.<\/p>\n<pre><code>notificarPagador* ( type: boolean, default: true )<\/code><\/pre>\n<p>Booleano para determinar si se notifica o no al pagador v\u00eda correo electr\u00f3nico una vez generado el cobro.<\/p>\n<pre><code>nitFactura*  ( type: string , pattern: ^[0-9]*$ )<\/code><\/pre>\n<p>El NIT al cual se emitir\u00e1 la factura una vez realizado el pago. Requerido si no se especifica una factura.<\/p>\n<pre><code>razonSocialFactura* ( type: string ) <\/code><\/pre>\n<p>La raz\u00f3n social a la cual se emitir\u00e1 la factura una vez realizado el pago. Requerido si no se especifica una factura.<\/p>\n<pre><code>sucursal ( type: number )<\/code><\/pre>\n<p>El c\u00f3digo de sucursal a utilizar para la factura, en caso de que se tenga m\u00e1s de una.<\/p>\n<pre><code>actividadEconomica ( type: number )<\/code><\/pre>\n<p>El c\u00f3digo de actividad econ\u00f3mica a utilizar para la factura, en caso de que se tenga m\u00e1s de una.<\/p>\n<pre><code>prefactura (type: boolean, default: false)<\/code><\/pre>\n<p>Mandar en true si se desea que el cobro no se convierta en factura autom\u00e1ticamente.<\/p>\n<pre><code>order (type: string)<\/code><\/pre>\n<p>N\u00famero de orden del cliente, puede ser el id del cobro en el sistema integrador.<\/p>\n<pre><code>notificacionUrl (type: string )<\/code><\/pre>\n<p>La URL a la que se realiza la notificaci\u00f3n una vez realizado el pago. Se realiza un request tipo GET con los par\u00e1metros \u201cresult\u201d como resultado de la operaci\u00f3n (con valores \u201csuccess\u201d o \u201cfailed\u201d), y \u201corder\u201d en caso de que haya sido llenado. Un ejemplo ser\u00eda:<\/p>\n<pre><code>notificacionUrl\/?order=178&amp;result=success<\/code><\/pre>\n<p>Un ejemplo de los datos JSON a enviarse para realizar un cobro ser\u00eda:<\/p>\n<pre><code>{   \t\r\n     \"descripcion\": \"Una compra electr\u00f3nica\",\r\n     \"monto\": 66.20,\r\n     \"pasarela\": \"CYBERSOURCE\",\r\n     \"correoElectronico\": \"algun@mail.com\",\r\n     \"notificarPagador\": false,\r\n     \"pasarela\": \"CYBERSOURCE\",\r\n     \"nitFactura\": \"7777777\",\r\n    \t\"razonSocial\": \"Juan Perez\",\r\n    \t\"notificacionUrl\": \"https:\/\/misitio.com\/pago\",\r\n}<\/code><\/pre>\n[\/vc_column_text][vc_column_text]<strong>Respuesta<\/strong><\/p>\n<h6><strong><span style=\"color: #6fcf97;\">200<\/span> &#8211; OK <\/strong><\/h6>\n<p><span style=\"font-weight: 300;\">Si la solicitud se proces\u00f3 sin errores, se responder\u00e1 con un objeto de la factura creada y el c\u00f3digo 200.<\/span>[\/vc_column_text][vc_column_text]<strong>Errores<\/strong><\/p>\n<p>Los errores a la solicitud se devuelven como texto plano.<\/p>\n<h6><strong><span style=\"color: #ff6c63;\">401<\/span> &#8211; Unauthorized<\/strong><\/h6>\n<p><span style=\"color: #a39dc5;\"><strong>Cliente no Encontrado<\/strong> <\/span>&#8211; Cuando el clientId no corresponde a ning\u00fan cliente.<\/p>\n<p><span style=\"color: #a39dc5;\"><strong>Token inv\u00e1lido<\/strong><\/span> &#8211; Si el header Authorization no se encuentra bien encriptado o no corresponde a la solicitud.<\/p>\n<p><span style=\"color: #a39dc5;\"><strong>No existen llaves para el cliente<\/strong><\/span> &#8211; Cuando el cliente no ha generado sus credenciales a trav\u00e9s de la p\u00e1gina de iZi.<\/p>\n<h6><strong><span style=\"color: #ff6c63;\">404<\/span> &#8211; Not Found<\/strong><\/h6>\n<p><span style=\"color: #a39dc5;\"><strong>Cliente no Encontrado<\/strong><\/span> &#8211; Cuando el clientId no corresponde a ning\u00fan cliente.<\/p>\n<p><span style=\"color: #a39dc5;\"><strong>No existen llaves para el cliente<\/strong><\/span> &#8211; Cuando el cliente no ha generado sus credenciales a trav\u00e9s de la p\u00e1gina de iZi.<\/p>\n<p><strong><span style=\"color: #a39dc5;\">Contribuyente autorizado no encontrado<\/span><\/strong> &#8211; Si no es posible encontrar a un contribuyente asociado.<\/p>\n<h6><strong><span style=\"color: #ff6c63;\">406<\/span> &#8211; Not Acceptable<\/strong><\/h6>\n<p><span style=\"color: #6fcf97;\"><strong>POST <\/strong><\/span><br \/>\n<a href=\"https:\/\/test.izi.noujau.io\/v1\/encript-test\">https:\/\/test.izi.noujau.io\/v1\/encript-test<\/a><br \/>\nEste endpoint est\u00e1 solo disponible en el ambiente de pruebas y, adem\u00e1s, tiene la particularidad de que es el \u00fanico endpoint que no recibe un token de autorizaci\u00f3n.<br \/>\n<strong>Propiedades<\/strong><\/p>\n<pre><code>data*  ( type: object ) <\/code><\/pre>\n<p>El objeto que se usar\u00e1 para cualquier otro endpoint, tal como se enviar\u00eda.<\/p>\n<pre><code>clientId* ( type: string ) <\/code><\/pre>\n<p>El clientId del cliente que realiza la prueba.<\/p>\n<pre><code>key* ( type: string )<\/code><\/pre>\n<p>La llave generada con la cual se espera encriptar los contenidos. Un string utf-8 de 32 caracteres.<\/p>\n<pre><code>iv* ( type: string )<\/code><\/pre>\n<p>El vector de inicializaci\u00f3n generado con la cual se espera encriptar los contenidos. Un string utf-8 de 16 caracteres.<\/p>\n<p><strong>Respuesta<\/strong><\/p>\n<h6><strong><span style=\"color: #ff6c63;\">200<\/span> &#8211; OK<\/strong><\/h6>\n<p>Si la solicitud se proces\u00f3 sin errores, la respuesta ser\u00e1 la siguiente:<\/p>\n<pre><code>{\r\n    header: El token generado\r\n}\r\n<\/code><\/pre>\n<p><strong>Errores<\/strong><\/p>\n<p>Los errores a la solicitud se devuelven como texto plano.<\/p>\n<h6><strong><span style=\"color: #ff6c63;\">401<\/span> &#8211; Unauthorized<\/strong><\/h6>\n<p><span style=\"color: #a39dc5;\"><strong>Cliente no Encontrado<\/strong><\/span> &#8211; Cuando el clientId no corresponde a ning\u00fan cliente.<\/p>\n<p><span style=\"color: #a39dc5;\"><strong>No existen llaves para el cliente<\/strong><\/span> &#8211; Cuando el cliente no ha generado sus credenciales a trav\u00e9s de la p\u00e1gina de iZi.[\/vc_column_text][\/vc_column_inner][\/vc_row_inner][\/tab][tab icon_family=&#8221;none&#8221; title=&#8221;Ejemplos de Implementaci\u00f3n&#8221; id=&#8221;1617895745331-10&#8243; tab_id=&#8221;1617895745332-7&#8243; sub_desc=&#8221;Generaci\u00f3n de llaves y solicitaci\u00f3n&#8221;][vc_column_text]<strong>PHP &#8211; Generaci\u00f3n de llaves<\/strong><\/p>\n<pre><code>$public_key = \"-----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDC49KFfNzrCG5DKAdP8dFthNXi hISCxP89X2pi8Z1EpYpv\/msz345csQNNRM\/t\/NlwGTf7wErPkfRXjL5yYeVrbHAp xXHKiBE7Y4yuY5ToO\/lq70QzhfsbUMLE8spvWN0qcHyszoWUoJX1pVpnbj3TqS4o w+Jm2uloNl4xL\/MGUwIDAQEB -----END PUBLIC KEY-----\"; $factura_obj = [ \"emisor\" =&gt; \"321\", \"comprador\" =&gt; \"123\", \"razonSocial\" =&gt; \"razon_social_test\", \"listaItems\" =&gt; [[ \"articulo\" =&gt; \"Art\u00edculo 1\", \"cantidad\" =&gt; 5, \"precioUnitario\" =&gt; 98 ], [ \"articulo\" =&gt; \"Art\u00edculo 2\", \"cantidad\" =&gt; 4, \"precioUnitario\" =&gt; 76 ], [ \"articulo\" =&gt; \"Art\u00edculo 3\", \"cantidad\" =&gt; 3, \"precioUnitario\" =&gt; 54 ]], \"descuentos\" =&gt; 0, \"tipoCompra\" =&gt; 1 ]; $json_factura = json_encode($factura_obj); $encryption_method = \"aes-256-cbc\"; \/\/ use this line to generate a 32 characters random string $secret_key = bin2hex(openssl_random_pseudo_bytes(16)); \/\/ use this line as constant secret key \/\/$secret_key = \"secret0key0to0encrypt0under0aes0\"; $iv_size = openssl_cipher_iv_length($encryption_method); $iv = openssl_random_pseudo_bytes($iv_size); $encrypted_json_factura = @openssl_encrypt ($json_factura, $encryption_method, $secret_key, 0, $iv); $encrypted_json_factura = bin2hex($iv) . $encrypted_json_factura; openssl_public_encrypt($secret_key, $encrypted_secret_key, $public_key); $encrypted_secret_key = base64_encode($encrypted_secret_key); echo \"--&gt; Expected output\" . PHP_EOL; echo \"--&gt; user_id:encrypted_secret_key:encrypted_json\" . PHP_EOL; echo \"clientId\" . \":\" . $encrypted_secret_key . \":\" . $encrypted_json_factura . PHP_EOL;<\/code><\/pre>\n[\/vc_column_text][vc_column_text]<strong>NodeJS &#8211; Generaci\u00f3n de llaves<\/strong><\/p>\n<pre><code>function getAuthorizationHeader (data, IZI_CLIENT_ID, IZI_PUBLIC_KEY) {\r\n  \r\n  const bufferData = Buffer.from(JSON.stringify(data), 'utf8')\r\n\r\n  const key = crypto.randomBytes(32)\r\n  const iv = crypto.randomBytes(16)\r\n  \r\n  const cypher = crypto.createCipheriv('aes-256-cbc', key, iv)\r\n  const cryptedAES = Buffer.concat([cypher.update(bufferData), cypher.final()])\r\n  \r\n  const encryptedKey = crypto.publicEncrypt({\r\n    'key': IZI_PUBLIC_KEY,\r\n    padding: constants.RSA_PKCS1_PADDING\r\n  }, key);\r\n\r\n  return IZI_CLIENT_ID + ':' + encryptedKey.toString('base64') + ':' + iv.toString('hex') + cryptedAES.toString('base64')\r\n}<\/code><\/pre>\n[\/vc_column_text][vc_column_text]<strong>Ejemplo de la solicitud en Curl<\/strong><\/p>\n<pre><code>curl --header \"Content-Type: application\/json\" \\\r\n  --header \"Authorization: 8abbe332-8b73-45bf-b6df-bkk3364420a6:GP9HjUDcpUH087V0fGIIAsAMTouFYEOTmy1bNe8GOi90k39zUnEBpkseiyr10Sfmx0\/eez1e2P52G53M7zYw7wo6arfSOtLlwJKmcA3gDLYD1sZPenmekREgVVbBu8wsRnRb9DwC7w+chUCsf8RXrV2MC+TRYh3mDWAAjxh7qsQ=:\/jkFYcLeSZsZu5EV4KaNlyvvnpumiftqh0KF8oZ8ntSWmuRXF1+Sd2SNJpmRjllfZFF3J+GlQOiDXsbuNtgqcVKsceVz9S6N8qxhlP8pTMjiOjp3h+KcAXsXYVdYgKa0v\/Dt0QC+IXscVtKjgcBZtIcXTbZ\/Y\/arnrWdaAZxK2TsCx9N24HDF+BMJ\/mq9IUokj\/kBek2r13+05t6KvBJQ===\" \\\r\n  --request POST \\\r\n  --data '{\"emisor\": \"7777777\",\"razonSocial\": \"Empresa Prueba\",\"comprador\": \"4346405\",\"listaItems\": [{\"articulo\": \"Art\u00edculo de prueba\",\"cantidad\": 13,\"precioUnitario\": 13}]}' \\\r\n  https:\/\/test.izi.noujau.io\/v1\/facturas<\/code><\/pre>\n[\/vc_column_text][\/tab][\/tabbed_section][\/vc_column][\/vc_row]\n","protected":false},"excerpt":{"rendered":"<p>[vc_row type=&#8221;full_width_content&#8221; full_screen_row_position=&#8221;middle&#8221; column_margin=&#8221;default&#8221; column_direction=&#8221;default&#8221; column_direction_tablet=&#8221;default&#8221; column_direction_phone=&#8221;default&#8221; bg_image=&#8221;356&#8243; bg_position=&#8221;center bottom&#8221; bg_repeat=&#8221;no-repeat&#8221; scene_position=&#8221;center&#8221; top_padding=&#8221;160&#8243; bottom_padding=&#8221;180&#8243; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; row_border_radius=&#8221;none&#8221; row_border_radius_applies=&#8221;bg&#8221; overlay_strength=&#8221;1&#8243; gradient_direction=&#8221;top_to_bottom&#8221; shape_divider_position=&#8221;bottom&#8221; bg_image_animation=&#8221;none&#8221; shape_type=&#8221;&#8221;][vc_column column_padding=&#8221;padding-8-percent&#8221; column_padding_tablet=&#8221;inherit&#8221; column_padding_phone=&#8221;inherit&#8221; column_padding_position=&#8221;left-right&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; column_shadow=&#8221;none&#8221;&#8230;<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"content-type":"","footnotes":""},"class_list":["post-556","page","type-page","status-publish"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Documentaci\u00f3n API - iZi Soluciones<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/izisoluciones.com\/index.php\/documentacion-api\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Documentaci\u00f3n API - iZi Soluciones\" \/>\n<meta property=\"og:description\" content=\"[vc_row type=&#8221;full_width_content&#8221; full_screen_row_position=&#8221;middle&#8221; column_margin=&#8221;default&#8221; column_direction=&#8221;default&#8221; column_direction_tablet=&#8221;default&#8221; column_direction_phone=&#8221;default&#8221; bg_image=&#8221;356&#8243; bg_position=&#8221;center bottom&#8221; bg_repeat=&#8221;no-repeat&#8221; scene_position=&#8221;center&#8221; top_padding=&#8221;160&#8243; bottom_padding=&#8221;180&#8243; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; row_border_radius=&#8221;none&#8221; row_border_radius_applies=&#8221;bg&#8221; overlay_strength=&#8221;1&#8243; gradient_direction=&#8221;top_to_bottom&#8221; shape_divider_position=&#8221;bottom&#8221; bg_image_animation=&#8221;none&#8221; shape_type=&#8221;&#8221;][vc_column column_padding=&#8221;padding-8-percent&#8221; column_padding_tablet=&#8221;inherit&#8221; column_padding_phone=&#8221;inherit&#8221; column_padding_position=&#8221;left-right&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; column_shadow=&#8221;none&#8221;...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/izisoluciones.com\/index.php\/documentacion-api\/\" \/>\n<meta property=\"og:site_name\" content=\"iZi Soluciones\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/izisoluciones\" \/>\n<meta property=\"article:modified_time\" content=\"2021-04-08T15:30:23+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"26 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/izisoluciones.com\\\/index.php\\\/documentacion-api\\\/\",\"url\":\"https:\\\/\\\/izisoluciones.com\\\/index.php\\\/documentacion-api\\\/\",\"name\":\"Documentaci\u00f3n API - iZi Soluciones\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/izisoluciones.com\\\/#website\"},\"datePublished\":\"2021-02-27T15:12:40+00:00\",\"dateModified\":\"2021-04-08T15:30:23+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/izisoluciones.com\\\/index.php\\\/documentacion-api\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/izisoluciones.com\\\/index.php\\\/documentacion-api\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/izisoluciones.com\\\/index.php\\\/documentacion-api\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/izisoluciones.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Documentaci\u00f3n API\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/izisoluciones.com\\\/#website\",\"url\":\"https:\\\/\\\/izisoluciones.com\\\/\",\"name\":\"iZi Soluciones\",\"description\":\"Es f\u00e1cil, es iZi\",\"publisher\":{\"@id\":\"https:\\\/\\\/izisoluciones.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/izisoluciones.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/izisoluciones.com\\\/#organization\",\"name\":\"iZi soluciones digitales\",\"url\":\"https:\\\/\\\/izisoluciones.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/izisoluciones.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"http:\\\/\\\/35.227.60.207\\\/wp-content\\\/uploads\\\/2021\\\/07\\\/cropped-favicon.png\",\"contentUrl\":\"http:\\\/\\\/35.227.60.207\\\/wp-content\\\/uploads\\\/2021\\\/07\\\/cropped-favicon.png\",\"width\":512,\"height\":512,\"caption\":\"iZi soluciones digitales\"},\"image\":{\"@id\":\"https:\\\/\\\/izisoluciones.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/izisoluciones\",\"https:\\\/\\\/www.instagram.com\\\/izi_soluciones\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/69293316\\\/\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCOrr2Cq8XWkKvdRiVSaG1gw\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Documentaci\u00f3n API - iZi Soluciones","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/izisoluciones.com\/index.php\/documentacion-api\/","og_locale":"en_US","og_type":"article","og_title":"Documentaci\u00f3n API - iZi Soluciones","og_description":"[vc_row type=&#8221;full_width_content&#8221; full_screen_row_position=&#8221;middle&#8221; column_margin=&#8221;default&#8221; column_direction=&#8221;default&#8221; column_direction_tablet=&#8221;default&#8221; column_direction_phone=&#8221;default&#8221; bg_image=&#8221;356&#8243; bg_position=&#8221;center bottom&#8221; bg_repeat=&#8221;no-repeat&#8221; scene_position=&#8221;center&#8221; top_padding=&#8221;160&#8243; bottom_padding=&#8221;180&#8243; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; row_border_radius=&#8221;none&#8221; row_border_radius_applies=&#8221;bg&#8221; overlay_strength=&#8221;1&#8243; gradient_direction=&#8221;top_to_bottom&#8221; shape_divider_position=&#8221;bottom&#8221; bg_image_animation=&#8221;none&#8221; shape_type=&#8221;&#8221;][vc_column column_padding=&#8221;padding-8-percent&#8221; column_padding_tablet=&#8221;inherit&#8221; column_padding_phone=&#8221;inherit&#8221; column_padding_position=&#8221;left-right&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; column_shadow=&#8221;none&#8221;...","og_url":"https:\/\/izisoluciones.com\/index.php\/documentacion-api\/","og_site_name":"iZi Soluciones","article_publisher":"https:\/\/www.facebook.com\/izisoluciones","article_modified_time":"2021-04-08T15:30:23+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"26 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/izisoluciones.com\/index.php\/documentacion-api\/","url":"https:\/\/izisoluciones.com\/index.php\/documentacion-api\/","name":"Documentaci\u00f3n API - iZi Soluciones","isPartOf":{"@id":"https:\/\/izisoluciones.com\/#website"},"datePublished":"2021-02-27T15:12:40+00:00","dateModified":"2021-04-08T15:30:23+00:00","breadcrumb":{"@id":"https:\/\/izisoluciones.com\/index.php\/documentacion-api\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/izisoluciones.com\/index.php\/documentacion-api\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/izisoluciones.com\/index.php\/documentacion-api\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/izisoluciones.com\/"},{"@type":"ListItem","position":2,"name":"Documentaci\u00f3n API"}]},{"@type":"WebSite","@id":"https:\/\/izisoluciones.com\/#website","url":"https:\/\/izisoluciones.com\/","name":"iZi Soluciones","description":"Es f\u00e1cil, es iZi","publisher":{"@id":"https:\/\/izisoluciones.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/izisoluciones.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/izisoluciones.com\/#organization","name":"iZi soluciones digitales","url":"https:\/\/izisoluciones.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/izisoluciones.com\/#\/schema\/logo\/image\/","url":"http:\/\/35.227.60.207\/wp-content\/uploads\/2021\/07\/cropped-favicon.png","contentUrl":"http:\/\/35.227.60.207\/wp-content\/uploads\/2021\/07\/cropped-favicon.png","width":512,"height":512,"caption":"iZi soluciones digitales"},"image":{"@id":"https:\/\/izisoluciones.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/izisoluciones","https:\/\/www.instagram.com\/izi_soluciones\/","https:\/\/www.linkedin.com\/company\/69293316\/","https:\/\/www.youtube.com\/channel\/UCOrr2Cq8XWkKvdRiVSaG1gw"]}]}},"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/izisoluciones.com\/index.php\/wp-json\/wp\/v2\/pages\/556","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/izisoluciones.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/izisoluciones.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/izisoluciones.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/izisoluciones.com\/index.php\/wp-json\/wp\/v2\/comments?post=556"}],"version-history":[{"count":53,"href":"https:\/\/izisoluciones.com\/index.php\/wp-json\/wp\/v2\/pages\/556\/revisions"}],"predecessor-version":[{"id":756,"href":"https:\/\/izisoluciones.com\/index.php\/wp-json\/wp\/v2\/pages\/556\/revisions\/756"}],"wp:attachment":[{"href":"https:\/\/izisoluciones.com\/index.php\/wp-json\/wp\/v2\/media?parent=556"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}