diff --git a/examples/habilitacion/N000001.py b/examples/habilitacion/N000001.py
new file mode 100644
index 0000000..6216063
--- /dev/null
+++ b/examples/habilitacion/N000001.py
@@ -0,0 +1,123 @@
+
+from facho import fe
+
+SOFTWARE_PIN='20234'
+SOFTWARE_ID='100b0d10-0ca0-4ad4-a894-b704a568cbf3'
+NIT='901575528'
+DV='2'
+
+def extensions(nomina):
+ return []
+
+def nomina():
+ nomina = fe.nomina.DIANNominaIndividual()
+
+ nomina.asignar_fecha_pago('2024-04-30')
+
+ nomina.asignar_metadata(fe.nomina.Metadata(
+ novedad=fe.nomina.Novedad(value='false'),
+ secuencia=fe.nomina.NumeroSecuencia(
+ prefijo='N',
+ consecutivo='000001'
+ ),
+ lugar_generacion=fe.nomina.Lugar(
+ pais = fe.nomina.Pais(
+ code = 'CO'
+ ),
+ departamento = fe.nomina.Departamento(
+ code = '05'
+ ),
+ municipio = fe.nomina.Municipio(
+ code = '05001'
+ ),
+ ),
+ proveedor=fe.nomina.Proveedor(
+ razon_social='BICI PIZZA S.A.S',
+ nit=NIT,
+ dv=DV,
+ software_id=SOFTWARE_ID,
+ software_pin=SOFTWARE_PIN
+ )
+ ))
+
+ nomina.asignar_periodo(fe.nomina.Periodo(
+ fecha_ingreso= '2022-01-05',
+ fecha_liquidacion_inicio='2024-04-01',
+ fecha_liquidacion_fin='2024-04-30',
+ fecha_generacion='2024-04-30'
+ ))
+
+ nomina.asignar_informacion_general(fe.nomina.InformacionGeneral(
+ fecha_generacion = '2024-04-30',
+ hora_generacion = '08:01:00-05:00',
+ tipo_ambiente = fe.nomina.InformacionGeneral.AMBIENTE_PRUEBAS,
+ software_pin = SOFTWARE_PIN,
+ periodo_nomina = fe.nomina.PeriodoNomina(code='1'),
+ tipo_moneda = fe.nomina.TipoMoneda(code='COP')
+ ))
+
+ nomina.asignar_pago(fe.nomina.Pago(
+ forma=fe.nomina.FormaPago(
+ code='1',
+ ),
+ metodo=fe.nomina.MetodoPago(
+ code='10'
+ )
+ ))
+ nomina.asignar_empleador(fe.nomina.Empleador(
+ razon_social='BICI PIZZA S.A.S',
+ nit = NIT,
+ dv = DV,
+ pais = fe.nomina.Pais(
+ code = 'CO'
+ ),
+ departamento = fe.nomina.Departamento(
+ code = '05'
+ ),
+ municipio = fe.nomina.Municipio(
+ code = '05001'
+ ),
+ direccion = 'calle etrivial'
+ ))
+
+ nomina.asignar_trabajador(fe.nomina.Trabajador(
+ tipo_contrato = fe.nomina.TipoContrato(
+ code = '1'
+ ),
+ alto_riesgo = False,
+ tipo_documento = fe.nomina.TipoDocumento(
+ code = '11'
+ ),
+ primer_apellido = 'GONZALEZ',
+ segundo_apellido = '',
+ primer_nombre = 'JUAN',
+ lugar_trabajo = fe.nomina.LugarTrabajo(
+ pais = fe.nomina.Pais(code='CO'),
+ departamento = fe.nomina.Departamento(code='05'),
+ municipio = fe.nomina.Municipio(code='05001'),
+ direccion = 'CL 35C 102-17 BL 7 AP 101'
+ ),
+ numero_documento = NIT,
+ tipo = fe.nomina.TipoTrabajador(
+ code = '01'
+ ),
+ salario_integral = False,
+ sueldo = fe.nomina.Amount(2400000)
+ ))
+
+ nomina.adicionar_devengado(fe.nomina.DevengadoBasico(
+ dias_trabajados = 30,
+ sueldo_trabajado = fe.nomina.Amount(2400000)
+ ))
+
+ nomina.adicionar_deduccion(fe.nomina.DeduccionSalud(
+ porcentaje = fe.nomina.Amount(4),
+ deduccion = fe.nomina.Amount(96000)
+ ))
+
+ nomina.adicionar_deduccion(fe.nomina.DeduccionFondoPension(
+ porcentaje=fe.nomina.Amount(4),
+ deduccion = fe.nomina.Amount(96000)
+ ))
+ return nomina
+
diff --git a/examples/habilitacion/N000001.xml b/examples/habilitacion/N000001.xml
new file mode 100644
index 0000000..548deac
--- /dev/null
+++ b/examples/habilitacion/N000001.xml
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+
+
+
+
+HS3rmJgPKyCNLNO3TXfP0s1zIGvJTjq40JfMm/muHLA=
+
+
+
+88R+0zjb6NIUiHhT8EE1ale8bO+TR6SSQBtVQUYkZ6c=
+
+
+
+
+
+
+QF0d+RznylwnbFaGclqPWLndUo35HVDouEYoS1wfVO8=
+
+
+0JBFsBhyo4r/9m5vuBXbKirHOgniDNeGW3RNXpCE/sgXvrV3E4K8/M4HeO0VYtM0
+G4bHvvkP2NCkdrKgZ9gB+XG8E/rEmJnwKpHm2kaNnpM1pYGoqBNWpqCa5FnUsEk4
+c4BmBaKjmBSUrz+2JoOg1RKaaJumqGWm83IjWWJq9b4l40imL0XIgoTmWUtIGOA0
+swm5rokLFldHv9T9CQvuYqCQIb6GAb2HB/GzNcPVO6quCqNVI6K9+Zh6vNpWpnCW
+crP8iCn4T3jo2PxU56dwA63xOtkTdYWphaGL4J63flsZysPQ817uuHV/XLu1VwHE
+cBpcTWyXL9LB7rgqrVSIzw==
+
+
+MIIH8TCCBdmgAwIBAgIIQxaPJd4YTlMwDQYJKoZIhvcNAQELBQAwgbYxIzAhBgkq
+hkiG9w0BCQEWFGluZm9AYW5kZXNzY2QuY29tLmNvMSYwJAYDVQQDEx1DQSBBTkRF
+UyBTQ0QgUy5BLiBDbGFzZSBJSSB2MzEwMC4GA1UECxMnRGl2aXNpb24gZGUgY2Vy
+dGlmaWNhY2lvbiBlbnRpZGFkIGZpbmFsMRIwEAYDVQQKEwlBbmRlcyBTQ0QxFDAS
+BgNVBAcTC0JvZ290YSBELkMuMQswCQYDVQQGEwJDTzAeFw0yNDA1MTYwNTAwMDBa
+Fw0yNTA1MTYwNDU5MDBaMIIBQDEtMCsGA1UECRMkVFYgNDYgQyA0MiBFU1RFIDc4
+OSBDT1JSIFNBTlRBIEVMRU5BMSIwIAYJKoZIhvcNAQkBFhNiaWNpcGl6emFAZ21h
+aWwuY29tMRowGAYDVQQDExFCSUNJIFBJWlpBIFMuQS5TLjETMBEGA1UEBRMKOTAx
+NTc1NTI4MjE2MDQGA1UEDBMtRW1pc29yIEZhY3R1cmEgRWxlY3Ryb25pY2EgLSBQ
+ZXJzb25hIEp1cmlkaWNhMTswOQYDVQQLEzJFbWl0aWRvIHBvciBBbmRlcyBTQ0Qg
+QWMgMjYgNjkgQyAwMyBUb3JyZSBCIE9mIDcwMTEQMA4GA1UEChMHR0VSRU5URTES
+MBAGA1UEBwwJTUVERUxMw41OMRIwEAYDVQQIEwlBTlRJT1FVSUExCzAJBgNVBAYT
+AkNPMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5J1O+4ZedrSBUsb+
+9tjNPHI9RGeIJcJl3Wc/208OqMYcCwGLUkrYBgH78E7IayD5/wra04OU57cS1/+/
+yBUWYR60oqkaH2/8OXkJMqmjisVM/b58m7zyMw4TAF8N/PbswnrKukFU2acxISwT
+Lu36HC4hshWw8bEGP54szvv1xnwqcOAWNBCxcBuc9k1JD+SIiqqPwHKh+6EDIoou
+jo0H15w3rAxkHQRvYe6/IrpvH2sqJl1I3dLv0iqy9+d2l891KBA9Yebdw7m/+ufu
++eqs+0zKrwV6QLhRFmceHzEkPMTFepc2COGf80OUNbI6WWnspvDK97D8YG0MeifP
+YveIPwIDAQABo4ICdDCCAnAwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBRA/iZp
+RzInMtGsIcgu7M+N1TVo6DBvBggrBgEFBQcBAQRjMGEwNgYIKwYBBQUHMAKGKmh0
+dHA6Ly9jZXJ0cy5hbmRlc3NjZC5jb20uY28vQ2xhc2VJSXYzLmNydDAnBggrBgEF
+BQcwAYYbaHR0cDovL29jc3AuYW5kZXNzY2QuY29tLmNvMB4GA1UdEQQXMBWBE2Jp
+Y2lwaXp6YUBnbWFpbC5jb20wggEjBgNVHSAEggEaMIIBFjCBwQYNKwYBBAGB9EgB
+AgYIADCBrzCBrAYIKwYBBQUHAgIwgZ8MgZxMYSB1dGlsaXphY2nDs24gZGUgZXN0
+ZSBjZXJ0aWZpY2FkbyBlc3TDoSBzdWpldGEgYSBsYSBQQyBkZSBGYWN0dXJhY2nD
+s24gRWxlY3Ryw7NuaWNhIHkgRFBDIGVzdGFibGVjaWRhcyBwb3IgQW5kZXMgU0NE
+LiBDw7NkaWdvIGRlIEFjcmVkaXRhY2nDs246IDE2LUVDRC0wMDQwUAYNKwYBBAGB
+9EgBAQEKADA/MD0GCCsGAQUFBwIBFjFodHRwczovL3d3dy5hbmRlc3NjZC5jb20u
+Y28vZG9jcy9EUENfQW5kZXNTQ0QucGRmMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggr
+BgEFBQcDBDA5BgNVHR8EMjAwMC6gLKAqhihodHRwOi8vY3JsLmFuZGVzc2NkLmNv
+bS5jby9DbGFzZUlJdjMuY3JsMB0GA1UdDgQWBBRKPoh3BJM7SxEL0UXkSne2MyFO
+jjAOBgNVHQ8BAf8EBAMCBeAwDQYJKoZIhvcNAQELBQADggIBAA6Zzor3kpJ6vNKv
+TAeHaMfmJ/PaghQ1+Lab7Pwk+lsPsMETFu/IpEK5qij2bV54UNnqyLYOZtIbnWTG
+qgT7QxQvy+/of/I3zzF+kH4/Lp2TSlHaDEb/airCZ3I2G23M9iaZzSwYuOsOaGwp
+4ovkXlYwQ7FVNfIIoAq95m9cBAigb06bRIlVBVTQq44hQFQQG6aSIT7SSPtCwPhB
+5CJzG09pmgbxizqN/yxdjWdfW6Av79dh6K4uQT++Vtyp5DuAkmfn0ehayrUbDLkH
+9jQFF128U5pnOPfKWf22acXqQBapesUSV/HZUZ3PXoWeHWXcMdz0azxOEunS4+px
+fs5UzInRAmEcYwJHqJT3irFz+J2RsZ0WnJHrTGqFoXniQQH8QbCHehDTGN7/v/v1
+LQBr5PQBnSEWhmrQ9uFrwPyMMg3yd+L75TaHLZ0MTSVezAG52oM9jBiU5tYXkSio
+EfPdIsGlG74BybULGSG2OlTINlblj/lj7pL67V+gY9EGN1zzNKL5sW4YXlXewa6K
+dTpLmmzWzI8Cm+tOuuJDSHSwMjn525O+Z/oyKLjdQdyfg1KnZYwNZFpMmCwfP5nd
+cm4F7Anzb9HX9ciluAxc6as9TsNoDDTSAGPuUr0QvXqXd9ZCgXdNzdFeiaYknLP5
+hT4f5CoO2M8qcG+CH7HnkaOHrSuK
+
+
+
+5J1O+4ZedrSBUsb+9tjNPHI9RGeIJcJl3Wc/208OqMYcCwGLUkrYBgH78E7IayD5
+/wra04OU57cS1/+/yBUWYR60oqkaH2/8OXkJMqmjisVM/b58m7zyMw4TAF8N/Pbs
+wnrKukFU2acxISwTLu36HC4hshWw8bEGP54szvv1xnwqcOAWNBCxcBuc9k1JD+SI
+iqqPwHKh+6EDIooujo0H15w3rAxkHQRvYe6/IrpvH2sqJl1I3dLv0iqy9+d2l891
+KBA9Yebdw7m/+ufu+eqs+0zKrwV6QLhRFmceHzEkPMTFepc2COGf80OUNbI6WWns
+pvDK97D8YG0MeifPYveIPw==
+AQAB
+
+
+
+2025-03-16T16:49:57.777363YcIPspAVFcNg+B/galYrdCLYvLIEwFI4KWdSzcuupPY=C=CO, L=Bogota D.C., O=Andes SCD, OU=Division de certificacion entidad final, CN=CA ANDES SCD S.A. Clase II v3, OID.1.2.840.113549.1.9.1=info@andesscd.com.co4834208642831502931https://facturaelectronica.dian.gov.co/politicadefirma/v2/politicadefirmav2.pdfPolítica de firma para facturas electrónicas de la República de Colombia.dMoMvtcG5aIzgYo0tIsSQeVJBDnUnfSOfBpxXrmor0Y=supplierfalsehttps://catalogo-vpfe-hab.dian.gov.co/document/searchqr?documentkey=f498037db4d2f7c42224fbdc958d031927f17f0ad4e4c1f4a3e85d6363d68f3f951860873e6899937c080f03b0bd0ceb2024-04-3002400000.00192000.002208000.00
\ No newline at end of file
diff --git a/examples/habilitacion/N000001.zip b/examples/habilitacion/N000001.zip
new file mode 100644
index 0000000..267f89f
Binary files /dev/null and b/examples/habilitacion/N000001.zip differ
diff --git a/examples/habilitacion/N000002.py b/examples/habilitacion/N000002.py
new file mode 100644
index 0000000..17bedf4
--- /dev/null
+++ b/examples/habilitacion/N000002.py
@@ -0,0 +1,123 @@
+
+from facho import fe
+
+SOFTWARE_PIN='20234'
+SOFTWARE_ID='100b0d10-0ca0-4ad4-a894-b704a568cbf3'
+NIT='901575528'
+DV='2'
+
+def extensions(nomina):
+ return []
+
+def nomina():
+ nomina = fe.nomina.DIANNominaIndividual()
+
+ nomina.asignar_fecha_pago('2024-04-30')
+
+ nomina.asignar_metadata(fe.nomina.Metadata(
+ novedad=fe.nomina.Novedad(value='false'),
+ secuencia=fe.nomina.NumeroSecuencia(
+ prefijo='N',
+ consecutivo='000002'
+ ),
+ lugar_generacion=fe.nomina.Lugar(
+ pais = fe.nomina.Pais(
+ code = 'CO'
+ ),
+ departamento = fe.nomina.Departamento(
+ code = '05'
+ ),
+ municipio = fe.nomina.Municipio(
+ code = '05001'
+ ),
+ ),
+ proveedor=fe.nomina.Proveedor(
+ razon_social='BICI PIZZA S.A.S',
+ nit=NIT,
+ dv=DV,
+ software_id=SOFTWARE_ID,
+ software_pin=SOFTWARE_PIN
+ )
+ ))
+
+ nomina.asignar_periodo(fe.nomina.Periodo(
+ fecha_ingreso= '2022-09-05',
+ fecha_liquidacion_inicio='2024-04-01',
+ fecha_liquidacion_fin='2024-04-30',
+ fecha_generacion='2024-04-30'
+ ))
+
+ nomina.asignar_informacion_general(fe.nomina.InformacionGeneral(
+ fecha_generacion = '2024-04-30',
+ hora_generacion = '08:01:00-05:00',
+ tipo_ambiente = fe.nomina.InformacionGeneral.AMBIENTE_PRUEBAS,
+ software_pin = SOFTWARE_PIN,
+ periodo_nomina = fe.nomina.PeriodoNomina(code='1'),
+ tipo_moneda = fe.nomina.TipoMoneda(code='COP')
+ ))
+
+ nomina.asignar_pago(fe.nomina.Pago(
+ forma=fe.nomina.FormaPago(
+ code='1',
+ ),
+ metodo=fe.nomina.MetodoPago(
+ code='10'
+ )
+ ))
+ nomina.asignar_empleador(fe.nomina.Empleador(
+ razon_social='BICI PIZZA S.A.S',
+ nit = NIT,
+ dv = DV,
+ pais = fe.nomina.Pais(
+ code = 'CO'
+ ),
+ departamento = fe.nomina.Departamento(
+ code = '05'
+ ),
+ municipio = fe.nomina.Municipio(
+ code = '05001'
+ ),
+ direccion = 'calle etrivial'
+ ))
+
+ nomina.asignar_trabajador(fe.nomina.Trabajador(
+ tipo_contrato = fe.nomina.TipoContrato(
+ code = '1'
+ ),
+ alto_riesgo = False,
+ tipo_documento = fe.nomina.TipoDocumento(
+ code = '11'
+ ),
+ primer_apellido = 'GIRALDO',
+ segundo_apellido = '',
+ primer_nombre = 'VIVIANA',
+ lugar_trabajo = fe.nomina.LugarTrabajo(
+ pais = fe.nomina.Pais(code='CO'),
+ departamento = fe.nomina.Departamento(code='05'),
+ municipio = fe.nomina.Municipio(code='05001'),
+ direccion = 'CL 35C 102-17 BL 7 AP 101'
+ ),
+ numero_documento = NIT,
+ tipo = fe.nomina.TipoTrabajador(
+ code = '01'
+ ),
+ salario_integral = False,
+ sueldo = fe.nomina.Amount(1160000)
+ ))
+
+ nomina.adicionar_devengado(fe.nomina.DevengadoBasico(
+ dias_trabajados = 30,
+ sueldo_trabajado = fe.nomina.Amount(1160000)
+ ))
+
+ nomina.adicionar_deduccion(fe.nomina.DeduccionSalud(
+ porcentaje = fe.nomina.Amount(4),
+ deduccion = fe.nomina.Amount(46400)
+ ))
+
+ nomina.adicionar_deduccion(fe.nomina.DeduccionFondoPension(
+ porcentaje=fe.nomina.Amount(4),
+ deduccion = fe.nomina.Amount(46400)
+ ))
+ return nomina
+
diff --git a/examples/habilitacion/N000002.xml b/examples/habilitacion/N000002.xml
new file mode 100644
index 0000000..db7742d
--- /dev/null
+++ b/examples/habilitacion/N000002.xml
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+
+
+
+
+OZ66ZARE1QPKfYYk+BdiEnO0675e7p00fGwhb/Iyd5s=
+
+
+
+jZRqaYdQrLDYoqJmrKrLoO2ZHlGX1Xo5IpGFAznaQnI=
+
+
+
+
+
+
+XNMT1fgTLgeuUDfYH//8aY/TqzhsRcScSySL/6nKwxE=
+
+
+fHBH/GVqHYi8iFbtTUwLUaVerZjfoj64Toq5jE+qi/HLmwhtDCAK2V/ISn0VDxpJ
+3QrAqWw/VjTFEqWmRV7mCxybM98A/+5yeWbvDkG2eY5fUOUHin9+oomysY8cwLjA
+joXsvjEJlM1YIndzWG/Dryr14Hcax6ItVSaopA+1BpUoFn/5jWwZXsbmq0jHDjsI
+Vyk1WpZzYwmM/aGZg7gj/pR7kZZOnv4d3L/MnFP6vJRdRNtRwO73wBd5lYGU1KaB
+iTimrV2gBwg0+o5bqloSaQEtqV87adJG0h3eosSiIhrG9rc9rOpvqqq7tG2nAxRx
+NyPM8gwuKoaoU9ogvRsqHQ==
+
+
+MIIH8TCCBdmgAwIBAgIIQxaPJd4YTlMwDQYJKoZIhvcNAQELBQAwgbYxIzAhBgkq
+hkiG9w0BCQEWFGluZm9AYW5kZXNzY2QuY29tLmNvMSYwJAYDVQQDEx1DQSBBTkRF
+UyBTQ0QgUy5BLiBDbGFzZSBJSSB2MzEwMC4GA1UECxMnRGl2aXNpb24gZGUgY2Vy
+dGlmaWNhY2lvbiBlbnRpZGFkIGZpbmFsMRIwEAYDVQQKEwlBbmRlcyBTQ0QxFDAS
+BgNVBAcTC0JvZ290YSBELkMuMQswCQYDVQQGEwJDTzAeFw0yNDA1MTYwNTAwMDBa
+Fw0yNTA1MTYwNDU5MDBaMIIBQDEtMCsGA1UECRMkVFYgNDYgQyA0MiBFU1RFIDc4
+OSBDT1JSIFNBTlRBIEVMRU5BMSIwIAYJKoZIhvcNAQkBFhNiaWNpcGl6emFAZ21h
+aWwuY29tMRowGAYDVQQDExFCSUNJIFBJWlpBIFMuQS5TLjETMBEGA1UEBRMKOTAx
+NTc1NTI4MjE2MDQGA1UEDBMtRW1pc29yIEZhY3R1cmEgRWxlY3Ryb25pY2EgLSBQ
+ZXJzb25hIEp1cmlkaWNhMTswOQYDVQQLEzJFbWl0aWRvIHBvciBBbmRlcyBTQ0Qg
+QWMgMjYgNjkgQyAwMyBUb3JyZSBCIE9mIDcwMTEQMA4GA1UEChMHR0VSRU5URTES
+MBAGA1UEBwwJTUVERUxMw41OMRIwEAYDVQQIEwlBTlRJT1FVSUExCzAJBgNVBAYT
+AkNPMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5J1O+4ZedrSBUsb+
+9tjNPHI9RGeIJcJl3Wc/208OqMYcCwGLUkrYBgH78E7IayD5/wra04OU57cS1/+/
+yBUWYR60oqkaH2/8OXkJMqmjisVM/b58m7zyMw4TAF8N/PbswnrKukFU2acxISwT
+Lu36HC4hshWw8bEGP54szvv1xnwqcOAWNBCxcBuc9k1JD+SIiqqPwHKh+6EDIoou
+jo0H15w3rAxkHQRvYe6/IrpvH2sqJl1I3dLv0iqy9+d2l891KBA9Yebdw7m/+ufu
++eqs+0zKrwV6QLhRFmceHzEkPMTFepc2COGf80OUNbI6WWnspvDK97D8YG0MeifP
+YveIPwIDAQABo4ICdDCCAnAwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBRA/iZp
+RzInMtGsIcgu7M+N1TVo6DBvBggrBgEFBQcBAQRjMGEwNgYIKwYBBQUHMAKGKmh0
+dHA6Ly9jZXJ0cy5hbmRlc3NjZC5jb20uY28vQ2xhc2VJSXYzLmNydDAnBggrBgEF
+BQcwAYYbaHR0cDovL29jc3AuYW5kZXNzY2QuY29tLmNvMB4GA1UdEQQXMBWBE2Jp
+Y2lwaXp6YUBnbWFpbC5jb20wggEjBgNVHSAEggEaMIIBFjCBwQYNKwYBBAGB9EgB
+AgYIADCBrzCBrAYIKwYBBQUHAgIwgZ8MgZxMYSB1dGlsaXphY2nDs24gZGUgZXN0
+ZSBjZXJ0aWZpY2FkbyBlc3TDoSBzdWpldGEgYSBsYSBQQyBkZSBGYWN0dXJhY2nD
+s24gRWxlY3Ryw7NuaWNhIHkgRFBDIGVzdGFibGVjaWRhcyBwb3IgQW5kZXMgU0NE
+LiBDw7NkaWdvIGRlIEFjcmVkaXRhY2nDs246IDE2LUVDRC0wMDQwUAYNKwYBBAGB
+9EgBAQEKADA/MD0GCCsGAQUFBwIBFjFodHRwczovL3d3dy5hbmRlc3NjZC5jb20u
+Y28vZG9jcy9EUENfQW5kZXNTQ0QucGRmMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggr
+BgEFBQcDBDA5BgNVHR8EMjAwMC6gLKAqhihodHRwOi8vY3JsLmFuZGVzc2NkLmNv
+bS5jby9DbGFzZUlJdjMuY3JsMB0GA1UdDgQWBBRKPoh3BJM7SxEL0UXkSne2MyFO
+jjAOBgNVHQ8BAf8EBAMCBeAwDQYJKoZIhvcNAQELBQADggIBAA6Zzor3kpJ6vNKv
+TAeHaMfmJ/PaghQ1+Lab7Pwk+lsPsMETFu/IpEK5qij2bV54UNnqyLYOZtIbnWTG
+qgT7QxQvy+/of/I3zzF+kH4/Lp2TSlHaDEb/airCZ3I2G23M9iaZzSwYuOsOaGwp
+4ovkXlYwQ7FVNfIIoAq95m9cBAigb06bRIlVBVTQq44hQFQQG6aSIT7SSPtCwPhB
+5CJzG09pmgbxizqN/yxdjWdfW6Av79dh6K4uQT++Vtyp5DuAkmfn0ehayrUbDLkH
+9jQFF128U5pnOPfKWf22acXqQBapesUSV/HZUZ3PXoWeHWXcMdz0azxOEunS4+px
+fs5UzInRAmEcYwJHqJT3irFz+J2RsZ0WnJHrTGqFoXniQQH8QbCHehDTGN7/v/v1
+LQBr5PQBnSEWhmrQ9uFrwPyMMg3yd+L75TaHLZ0MTSVezAG52oM9jBiU5tYXkSio
+EfPdIsGlG74BybULGSG2OlTINlblj/lj7pL67V+gY9EGN1zzNKL5sW4YXlXewa6K
+dTpLmmzWzI8Cm+tOuuJDSHSwMjn525O+Z/oyKLjdQdyfg1KnZYwNZFpMmCwfP5nd
+cm4F7Anzb9HX9ciluAxc6as9TsNoDDTSAGPuUr0QvXqXd9ZCgXdNzdFeiaYknLP5
+hT4f5CoO2M8qcG+CH7HnkaOHrSuK
+
+
+
+5J1O+4ZedrSBUsb+9tjNPHI9RGeIJcJl3Wc/208OqMYcCwGLUkrYBgH78E7IayD5
+/wra04OU57cS1/+/yBUWYR60oqkaH2/8OXkJMqmjisVM/b58m7zyMw4TAF8N/Pbs
+wnrKukFU2acxISwTLu36HC4hshWw8bEGP54szvv1xnwqcOAWNBCxcBuc9k1JD+SI
+iqqPwHKh+6EDIooujo0H15w3rAxkHQRvYe6/IrpvH2sqJl1I3dLv0iqy9+d2l891
+KBA9Yebdw7m/+ufu+eqs+0zKrwV6QLhRFmceHzEkPMTFepc2COGf80OUNbI6WWns
+pvDK97D8YG0MeifPYveIPw==
+AQAB
+
+
+
+2025-03-16T16:50:01.250573YcIPspAVFcNg+B/galYrdCLYvLIEwFI4KWdSzcuupPY=C=CO, L=Bogota D.C., O=Andes SCD, OU=Division de certificacion entidad final, CN=CA ANDES SCD S.A. Clase II v3, OID.1.2.840.113549.1.9.1=info@andesscd.com.co4834208642831502931https://facturaelectronica.dian.gov.co/politicadefirma/v2/politicadefirmav2.pdfPolítica de firma para facturas electrónicas de la República de Colombia.dMoMvtcG5aIzgYo0tIsSQeVJBDnUnfSOfBpxXrmor0Y=supplierfalsehttps://catalogo-vpfe-hab.dian.gov.co/document/searchqr?documentkey=cb2e6968a811c661ebdc8b8cd19a323ca05471c2fe3c3b1cfb5275379d7df94d6c22f9405d732295e805095e366a99fa2024-04-3001160000.0092800.001067200.00
\ No newline at end of file
diff --git a/examples/habilitacion/N000002.zip b/examples/habilitacion/N000002.zip
new file mode 100644
index 0000000..c2bb6f2
Binary files /dev/null and b/examples/habilitacion/N000002.zip differ
diff --git a/examples/habilitacion/N000003.py b/examples/habilitacion/N000003.py
new file mode 100644
index 0000000..fc8a1ab
--- /dev/null
+++ b/examples/habilitacion/N000003.py
@@ -0,0 +1,123 @@
+
+from facho import fe
+
+SOFTWARE_PIN='20234'
+SOFTWARE_ID='100b0d10-0ca0-4ad4-a894-b704a568cbf3'
+NIT='901575528'
+DV='2'
+
+def extensions(nomina):
+ return []
+
+def nomina():
+ nomina = fe.nomina.DIANNominaIndividual()
+
+ nomina.asignar_fecha_pago('2024-04-30')
+
+ nomina.asignar_metadata(fe.nomina.Metadata(
+ novedad=fe.nomina.Novedad(value='false'),
+ secuencia=fe.nomina.NumeroSecuencia(
+ prefijo='N',
+ consecutivo='000003'
+ ),
+ lugar_generacion=fe.nomina.Lugar(
+ pais = fe.nomina.Pais(
+ code = 'CO'
+ ),
+ departamento = fe.nomina.Departamento(
+ code = '05'
+ ),
+ municipio = fe.nomina.Municipio(
+ code = '05001'
+ ),
+ ),
+ proveedor=fe.nomina.Proveedor(
+ razon_social='BICI PIZZA S.A.S',
+ nit=NIT,
+ dv=DV,
+ software_id=SOFTWARE_ID,
+ software_pin=SOFTWARE_PIN
+ )
+ ))
+
+ nomina.asignar_periodo(fe.nomina.Periodo(
+ fecha_ingreso= '2022-01-05',
+ fecha_liquidacion_inicio='2024-04-01',
+ fecha_liquidacion_fin='2024-04-30',
+ fecha_generacion='2024-04-30'
+ ))
+
+ nomina.asignar_informacion_general(fe.nomina.InformacionGeneral(
+ fecha_generacion = '2024-04-30',
+ hora_generacion = '08:01:00-05:00',
+ tipo_ambiente = fe.nomina.InformacionGeneral.AMBIENTE_PRUEBAS,
+ software_pin = SOFTWARE_PIN,
+ periodo_nomina = fe.nomina.PeriodoNomina(code='1'),
+ tipo_moneda = fe.nomina.TipoMoneda(code='COP')
+ ))
+
+ nomina.asignar_pago(fe.nomina.Pago(
+ forma=fe.nomina.FormaPago(
+ code='1',
+ ),
+ metodo=fe.nomina.MetodoPago(
+ code='10'
+ )
+ ))
+ nomina.asignar_empleador(fe.nomina.Empleador(
+ razon_social='BICI PIZZA S.A.S',
+ nit = NIT,
+ dv = DV,
+ pais = fe.nomina.Pais(
+ code = 'CO'
+ ),
+ departamento = fe.nomina.Departamento(
+ code = '05'
+ ),
+ municipio = fe.nomina.Municipio(
+ code = '05001'
+ ),
+ direccion = 'calle etrivial'
+ ))
+
+ nomina.asignar_trabajador(fe.nomina.Trabajador(
+ tipo_contrato = fe.nomina.TipoContrato(
+ code = '1'
+ ),
+ alto_riesgo = False,
+ tipo_documento = fe.nomina.TipoDocumento(
+ code = '11'
+ ),
+ primer_apellido = 'GONZALEZ',
+ segundo_apellido = '',
+ primer_nombre = 'JUAN',
+ lugar_trabajo = fe.nomina.LugarTrabajo(
+ pais = fe.nomina.Pais(code='CO'),
+ departamento = fe.nomina.Departamento(code='05'),
+ municipio = fe.nomina.Municipio(code='05001'),
+ direccion = 'CL 35C 102-17 BL 7 AP 101'
+ ),
+ numero_documento = NIT,
+ tipo = fe.nomina.TipoTrabajador(
+ code = '01'
+ ),
+ salario_integral = False,
+ sueldo = fe.nomina.Amount(2400000)
+ ))
+
+ nomina.adicionar_devengado(fe.nomina.DevengadoBasico(
+ dias_trabajados = 30,
+ sueldo_trabajado = fe.nomina.Amount(2400000)
+ ))
+
+ nomina.adicionar_deduccion(fe.nomina.DeduccionSalud(
+ porcentaje = fe.nomina.Amount(4),
+ deduccion = fe.nomina.Amount(96000)
+ ))
+
+ nomina.adicionar_deduccion(fe.nomina.DeduccionFondoPension(
+ porcentaje=fe.nomina.Amount(4),
+ deduccion = fe.nomina.Amount(96000)
+ ))
+ return nomina
+
diff --git a/examples/habilitacion/N000003.xml b/examples/habilitacion/N000003.xml
new file mode 100644
index 0000000..101fd1d
--- /dev/null
+++ b/examples/habilitacion/N000003.xml
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+
+
+
+
+mf3prH7SIB1Df0Z/nOPdRGG0DKXP8oCra41918zaCyg=
+
+
+
+H3dF/siCNdG6iSy15jUQct1k4qswXBZToWJH6tsptpk=
+
+
+
+
+
+
+IqiqJKHTI0OAWva1xZ+ZOk9ooGkzEa4hReQCr4/W778=
+
+
+Nv0nFvZ4Y3KIaPODEiOFgThDYb+DNKlJrRUAOrIxcNvtotpK7Y91JnYbUgFvl28b
+Z5V/catUMyOclGDjPzslTBcHXExleb5eIgUB8URdNvdrB78iXFUOfPc+ESFomru8
+jyPX9cZw24ZYBmQqqusvqIkf/tIARFGZ+7AzXkp28dBRFyWtgjESn60DIrFjm9x5
+Pthv1K95gytjrrpwvdk77KN4uumlCbGoc2Pizbj+ufijbnxEPDS7fS7RR0Qv9uz/
+2X7znR10TK8+gwMz7AVRYQi90ZbhOadxf3j+HVAlHtw+JHbrPSC+7xBOiPPStY6o
+6TkQU+ZMpz2IUovjqREXow==
+
+
+MIIH8TCCBdmgAwIBAgIIQxaPJd4YTlMwDQYJKoZIhvcNAQELBQAwgbYxIzAhBgkq
+hkiG9w0BCQEWFGluZm9AYW5kZXNzY2QuY29tLmNvMSYwJAYDVQQDEx1DQSBBTkRF
+UyBTQ0QgUy5BLiBDbGFzZSBJSSB2MzEwMC4GA1UECxMnRGl2aXNpb24gZGUgY2Vy
+dGlmaWNhY2lvbiBlbnRpZGFkIGZpbmFsMRIwEAYDVQQKEwlBbmRlcyBTQ0QxFDAS
+BgNVBAcTC0JvZ290YSBELkMuMQswCQYDVQQGEwJDTzAeFw0yNDA1MTYwNTAwMDBa
+Fw0yNTA1MTYwNDU5MDBaMIIBQDEtMCsGA1UECRMkVFYgNDYgQyA0MiBFU1RFIDc4
+OSBDT1JSIFNBTlRBIEVMRU5BMSIwIAYJKoZIhvcNAQkBFhNiaWNpcGl6emFAZ21h
+aWwuY29tMRowGAYDVQQDExFCSUNJIFBJWlpBIFMuQS5TLjETMBEGA1UEBRMKOTAx
+NTc1NTI4MjE2MDQGA1UEDBMtRW1pc29yIEZhY3R1cmEgRWxlY3Ryb25pY2EgLSBQ
+ZXJzb25hIEp1cmlkaWNhMTswOQYDVQQLEzJFbWl0aWRvIHBvciBBbmRlcyBTQ0Qg
+QWMgMjYgNjkgQyAwMyBUb3JyZSBCIE9mIDcwMTEQMA4GA1UEChMHR0VSRU5URTES
+MBAGA1UEBwwJTUVERUxMw41OMRIwEAYDVQQIEwlBTlRJT1FVSUExCzAJBgNVBAYT
+AkNPMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5J1O+4ZedrSBUsb+
+9tjNPHI9RGeIJcJl3Wc/208OqMYcCwGLUkrYBgH78E7IayD5/wra04OU57cS1/+/
+yBUWYR60oqkaH2/8OXkJMqmjisVM/b58m7zyMw4TAF8N/PbswnrKukFU2acxISwT
+Lu36HC4hshWw8bEGP54szvv1xnwqcOAWNBCxcBuc9k1JD+SIiqqPwHKh+6EDIoou
+jo0H15w3rAxkHQRvYe6/IrpvH2sqJl1I3dLv0iqy9+d2l891KBA9Yebdw7m/+ufu
++eqs+0zKrwV6QLhRFmceHzEkPMTFepc2COGf80OUNbI6WWnspvDK97D8YG0MeifP
+YveIPwIDAQABo4ICdDCCAnAwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBRA/iZp
+RzInMtGsIcgu7M+N1TVo6DBvBggrBgEFBQcBAQRjMGEwNgYIKwYBBQUHMAKGKmh0
+dHA6Ly9jZXJ0cy5hbmRlc3NjZC5jb20uY28vQ2xhc2VJSXYzLmNydDAnBggrBgEF
+BQcwAYYbaHR0cDovL29jc3AuYW5kZXNzY2QuY29tLmNvMB4GA1UdEQQXMBWBE2Jp
+Y2lwaXp6YUBnbWFpbC5jb20wggEjBgNVHSAEggEaMIIBFjCBwQYNKwYBBAGB9EgB
+AgYIADCBrzCBrAYIKwYBBQUHAgIwgZ8MgZxMYSB1dGlsaXphY2nDs24gZGUgZXN0
+ZSBjZXJ0aWZpY2FkbyBlc3TDoSBzdWpldGEgYSBsYSBQQyBkZSBGYWN0dXJhY2nD
+s24gRWxlY3Ryw7NuaWNhIHkgRFBDIGVzdGFibGVjaWRhcyBwb3IgQW5kZXMgU0NE
+LiBDw7NkaWdvIGRlIEFjcmVkaXRhY2nDs246IDE2LUVDRC0wMDQwUAYNKwYBBAGB
+9EgBAQEKADA/MD0GCCsGAQUFBwIBFjFodHRwczovL3d3dy5hbmRlc3NjZC5jb20u
+Y28vZG9jcy9EUENfQW5kZXNTQ0QucGRmMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggr
+BgEFBQcDBDA5BgNVHR8EMjAwMC6gLKAqhihodHRwOi8vY3JsLmFuZGVzc2NkLmNv
+bS5jby9DbGFzZUlJdjMuY3JsMB0GA1UdDgQWBBRKPoh3BJM7SxEL0UXkSne2MyFO
+jjAOBgNVHQ8BAf8EBAMCBeAwDQYJKoZIhvcNAQELBQADggIBAA6Zzor3kpJ6vNKv
+TAeHaMfmJ/PaghQ1+Lab7Pwk+lsPsMETFu/IpEK5qij2bV54UNnqyLYOZtIbnWTG
+qgT7QxQvy+/of/I3zzF+kH4/Lp2TSlHaDEb/airCZ3I2G23M9iaZzSwYuOsOaGwp
+4ovkXlYwQ7FVNfIIoAq95m9cBAigb06bRIlVBVTQq44hQFQQG6aSIT7SSPtCwPhB
+5CJzG09pmgbxizqN/yxdjWdfW6Av79dh6K4uQT++Vtyp5DuAkmfn0ehayrUbDLkH
+9jQFF128U5pnOPfKWf22acXqQBapesUSV/HZUZ3PXoWeHWXcMdz0azxOEunS4+px
+fs5UzInRAmEcYwJHqJT3irFz+J2RsZ0WnJHrTGqFoXniQQH8QbCHehDTGN7/v/v1
+LQBr5PQBnSEWhmrQ9uFrwPyMMg3yd+L75TaHLZ0MTSVezAG52oM9jBiU5tYXkSio
+EfPdIsGlG74BybULGSG2OlTINlblj/lj7pL67V+gY9EGN1zzNKL5sW4YXlXewa6K
+dTpLmmzWzI8Cm+tOuuJDSHSwMjn525O+Z/oyKLjdQdyfg1KnZYwNZFpMmCwfP5nd
+cm4F7Anzb9HX9ciluAxc6as9TsNoDDTSAGPuUr0QvXqXd9ZCgXdNzdFeiaYknLP5
+hT4f5CoO2M8qcG+CH7HnkaOHrSuK
+
+
+
+5J1O+4ZedrSBUsb+9tjNPHI9RGeIJcJl3Wc/208OqMYcCwGLUkrYBgH78E7IayD5
+/wra04OU57cS1/+/yBUWYR60oqkaH2/8OXkJMqmjisVM/b58m7zyMw4TAF8N/Pbs
+wnrKukFU2acxISwTLu36HC4hshWw8bEGP54szvv1xnwqcOAWNBCxcBuc9k1JD+SI
+iqqPwHKh+6EDIooujo0H15w3rAxkHQRvYe6/IrpvH2sqJl1I3dLv0iqy9+d2l891
+KBA9Yebdw7m/+ufu+eqs+0zKrwV6QLhRFmceHzEkPMTFepc2COGf80OUNbI6WWns
+pvDK97D8YG0MeifPYveIPw==
+AQAB
+
+
+
+2025-03-16T16:51:23.354553YcIPspAVFcNg+B/galYrdCLYvLIEwFI4KWdSzcuupPY=C=CO, L=Bogota D.C., O=Andes SCD, OU=Division de certificacion entidad final, CN=CA ANDES SCD S.A. Clase II v3, OID.1.2.840.113549.1.9.1=info@andesscd.com.co4834208642831502931https://facturaelectronica.dian.gov.co/politicadefirma/v2/politicadefirmav2.pdfPolítica de firma para facturas electrónicas de la República de Colombia.dMoMvtcG5aIzgYo0tIsSQeVJBDnUnfSOfBpxXrmor0Y=supplierfalsehttps://catalogo-vpfe-hab.dian.gov.co/document/searchqr?documentkey=beae68d136b80593b01b5cd7594bc86cc2f6ffd17d0238e5842e29ef6dfde62d26cb959764b6bf0943e73149596bfec02024-04-3002400000.00192000.002208000.00
\ No newline at end of file
diff --git a/examples/habilitacion/N000003.zip b/examples/habilitacion/N000003.zip
new file mode 100644
index 0000000..ce288a8
Binary files /dev/null and b/examples/habilitacion/N000003.zip differ
diff --git a/examples/habilitacion/N000004.py b/examples/habilitacion/N000004.py
new file mode 100644
index 0000000..c06ffe7
--- /dev/null
+++ b/examples/habilitacion/N000004.py
@@ -0,0 +1,123 @@
+
+from facho import fe
+
+SOFTWARE_PIN='20234'
+SOFTWARE_ID='100b0d10-0ca0-4ad4-a894-b704a568cbf3'
+NIT='901575528'
+DV='2'
+
+def extensions(nomina):
+ return []
+
+def nomina():
+ nomina = fe.nomina.DIANNominaIndividual()
+
+ nomina.asignar_fecha_pago('2024-04-30')
+
+ nomina.asignar_metadata(fe.nomina.Metadata(
+ novedad=fe.nomina.Novedad(value='false'),
+ secuencia=fe.nomina.NumeroSecuencia(
+ prefijo='N',
+ consecutivo='000004'
+ ),
+ lugar_generacion=fe.nomina.Lugar(
+ pais = fe.nomina.Pais(
+ code = 'CO'
+ ),
+ departamento = fe.nomina.Departamento(
+ code = '05'
+ ),
+ municipio = fe.nomina.Municipio(
+ code = '05001'
+ ),
+ ),
+ proveedor=fe.nomina.Proveedor(
+ razon_social='BICI PIZZA S.A.S',
+ nit=NIT,
+ dv=DV,
+ software_id=SOFTWARE_ID,
+ software_pin=SOFTWARE_PIN
+ )
+ ))
+
+ nomina.asignar_periodo(fe.nomina.Periodo(
+ fecha_ingreso= '2022-09-05',
+ fecha_liquidacion_inicio='2024-04-01',
+ fecha_liquidacion_fin='2024-04-30',
+ fecha_generacion='2024-04-30'
+ ))
+
+ nomina.asignar_informacion_general(fe.nomina.InformacionGeneral(
+ fecha_generacion = '2024-04-30',
+ hora_generacion = '08:01:00-05:00',
+ tipo_ambiente = fe.nomina.InformacionGeneral.AMBIENTE_PRUEBAS,
+ software_pin = SOFTWARE_PIN,
+ periodo_nomina = fe.nomina.PeriodoNomina(code='1'),
+ tipo_moneda = fe.nomina.TipoMoneda(code='COP')
+ ))
+
+ nomina.asignar_pago(fe.nomina.Pago(
+ forma=fe.nomina.FormaPago(
+ code='1',
+ ),
+ metodo=fe.nomina.MetodoPago(
+ code='10'
+ )
+ ))
+ nomina.asignar_empleador(fe.nomina.Empleador(
+ razon_social='BICI PIZZA S.A.S',
+ nit = NIT,
+ dv = DV,
+ pais = fe.nomina.Pais(
+ code = 'CO'
+ ),
+ departamento = fe.nomina.Departamento(
+ code = '05'
+ ),
+ municipio = fe.nomina.Municipio(
+ code = '05001'
+ ),
+ direccion = 'calle etrivial'
+ ))
+
+ nomina.asignar_trabajador(fe.nomina.Trabajador(
+ tipo_contrato = fe.nomina.TipoContrato(
+ code = '1'
+ ),
+ alto_riesgo = False,
+ tipo_documento = fe.nomina.TipoDocumento(
+ code = '11'
+ ),
+ primer_apellido = 'GIRALDO',
+ segundo_apellido = '',
+ primer_nombre = 'VIVIANA',
+ lugar_trabajo = fe.nomina.LugarTrabajo(
+ pais = fe.nomina.Pais(code='CO'),
+ departamento = fe.nomina.Departamento(code='05'),
+ municipio = fe.nomina.Municipio(code='05001'),
+ direccion = 'CL 35C 102-17 BL 7 AP 101'
+ ),
+ numero_documento = NIT,
+ tipo = fe.nomina.TipoTrabajador(
+ code = '01'
+ ),
+ salario_integral = False,
+ sueldo = fe.nomina.Amount(1160000)
+ ))
+
+ nomina.adicionar_devengado(fe.nomina.DevengadoBasico(
+ dias_trabajados = 30,
+ sueldo_trabajado = fe.nomina.Amount(1160000)
+ ))
+
+ nomina.adicionar_deduccion(fe.nomina.DeduccionSalud(
+ porcentaje = fe.nomina.Amount(4),
+ deduccion = fe.nomina.Amount(46400)
+ ))
+
+ nomina.adicionar_deduccion(fe.nomina.DeduccionFondoPension(
+ porcentaje=fe.nomina.Amount(4),
+ deduccion = fe.nomina.Amount(46400)
+ ))
+ return nomina
+
diff --git a/examples/habilitacion/N000004.xml b/examples/habilitacion/N000004.xml
new file mode 100644
index 0000000..eed617f
--- /dev/null
+++ b/examples/habilitacion/N000004.xml
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+
+
+
+
+ZAE71pLQXXnN5+540pnkxH5ALNBQcecMdLWFKTKby0g=
+
+
+
+kNyh65TH4KfF6wqRoy1duEawgkvOlr2rYLCNfdTfK1c=
+
+
+
+
+
+
+BoPBi5C0tXfV04cf74M4jktBxf9eVsXk5IWqGdeOSHw=
+
+
+pw5WDlbd4GhnSAJKlTEDjsb1+VAVtyyXWA/isvGz4LHY5n1Fm4hiN7fD3JIrfOBj
+z/tUfROLzbbywUnVklfaDri6txZlFFwa9SY8MO38bgE0HUxGq5khb/4uzktGRInp
+H3i0TG5i42YB83PQItSLiEgPWqGVolj5sWfUqD81Ck4CvgtKuZgnn9JPLgP0sjjT
+BUjKcMt4K+ZLvXumehKKCzEbtoaa5DHKUrpuCU2giGMMPElwaTulFA5kNLBnAk2n
+HBCiIq+YZ2C3BqE+WQptcQDIObmEnRURvvUTB64gCh4Tigmq6vnv/dMPWmQvohmp
+ETIZDwU0/xdGcUK7Ujyl4g==
+
+
+MIIH8TCCBdmgAwIBAgIIQxaPJd4YTlMwDQYJKoZIhvcNAQELBQAwgbYxIzAhBgkq
+hkiG9w0BCQEWFGluZm9AYW5kZXNzY2QuY29tLmNvMSYwJAYDVQQDEx1DQSBBTkRF
+UyBTQ0QgUy5BLiBDbGFzZSBJSSB2MzEwMC4GA1UECxMnRGl2aXNpb24gZGUgY2Vy
+dGlmaWNhY2lvbiBlbnRpZGFkIGZpbmFsMRIwEAYDVQQKEwlBbmRlcyBTQ0QxFDAS
+BgNVBAcTC0JvZ290YSBELkMuMQswCQYDVQQGEwJDTzAeFw0yNDA1MTYwNTAwMDBa
+Fw0yNTA1MTYwNDU5MDBaMIIBQDEtMCsGA1UECRMkVFYgNDYgQyA0MiBFU1RFIDc4
+OSBDT1JSIFNBTlRBIEVMRU5BMSIwIAYJKoZIhvcNAQkBFhNiaWNpcGl6emFAZ21h
+aWwuY29tMRowGAYDVQQDExFCSUNJIFBJWlpBIFMuQS5TLjETMBEGA1UEBRMKOTAx
+NTc1NTI4MjE2MDQGA1UEDBMtRW1pc29yIEZhY3R1cmEgRWxlY3Ryb25pY2EgLSBQ
+ZXJzb25hIEp1cmlkaWNhMTswOQYDVQQLEzJFbWl0aWRvIHBvciBBbmRlcyBTQ0Qg
+QWMgMjYgNjkgQyAwMyBUb3JyZSBCIE9mIDcwMTEQMA4GA1UEChMHR0VSRU5URTES
+MBAGA1UEBwwJTUVERUxMw41OMRIwEAYDVQQIEwlBTlRJT1FVSUExCzAJBgNVBAYT
+AkNPMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5J1O+4ZedrSBUsb+
+9tjNPHI9RGeIJcJl3Wc/208OqMYcCwGLUkrYBgH78E7IayD5/wra04OU57cS1/+/
+yBUWYR60oqkaH2/8OXkJMqmjisVM/b58m7zyMw4TAF8N/PbswnrKukFU2acxISwT
+Lu36HC4hshWw8bEGP54szvv1xnwqcOAWNBCxcBuc9k1JD+SIiqqPwHKh+6EDIoou
+jo0H15w3rAxkHQRvYe6/IrpvH2sqJl1I3dLv0iqy9+d2l891KBA9Yebdw7m/+ufu
++eqs+0zKrwV6QLhRFmceHzEkPMTFepc2COGf80OUNbI6WWnspvDK97D8YG0MeifP
+YveIPwIDAQABo4ICdDCCAnAwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBRA/iZp
+RzInMtGsIcgu7M+N1TVo6DBvBggrBgEFBQcBAQRjMGEwNgYIKwYBBQUHMAKGKmh0
+dHA6Ly9jZXJ0cy5hbmRlc3NjZC5jb20uY28vQ2xhc2VJSXYzLmNydDAnBggrBgEF
+BQcwAYYbaHR0cDovL29jc3AuYW5kZXNzY2QuY29tLmNvMB4GA1UdEQQXMBWBE2Jp
+Y2lwaXp6YUBnbWFpbC5jb20wggEjBgNVHSAEggEaMIIBFjCBwQYNKwYBBAGB9EgB
+AgYIADCBrzCBrAYIKwYBBQUHAgIwgZ8MgZxMYSB1dGlsaXphY2nDs24gZGUgZXN0
+ZSBjZXJ0aWZpY2FkbyBlc3TDoSBzdWpldGEgYSBsYSBQQyBkZSBGYWN0dXJhY2nD
+s24gRWxlY3Ryw7NuaWNhIHkgRFBDIGVzdGFibGVjaWRhcyBwb3IgQW5kZXMgU0NE
+LiBDw7NkaWdvIGRlIEFjcmVkaXRhY2nDs246IDE2LUVDRC0wMDQwUAYNKwYBBAGB
+9EgBAQEKADA/MD0GCCsGAQUFBwIBFjFodHRwczovL3d3dy5hbmRlc3NjZC5jb20u
+Y28vZG9jcy9EUENfQW5kZXNTQ0QucGRmMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggr
+BgEFBQcDBDA5BgNVHR8EMjAwMC6gLKAqhihodHRwOi8vY3JsLmFuZGVzc2NkLmNv
+bS5jby9DbGFzZUlJdjMuY3JsMB0GA1UdDgQWBBRKPoh3BJM7SxEL0UXkSne2MyFO
+jjAOBgNVHQ8BAf8EBAMCBeAwDQYJKoZIhvcNAQELBQADggIBAA6Zzor3kpJ6vNKv
+TAeHaMfmJ/PaghQ1+Lab7Pwk+lsPsMETFu/IpEK5qij2bV54UNnqyLYOZtIbnWTG
+qgT7QxQvy+/of/I3zzF+kH4/Lp2TSlHaDEb/airCZ3I2G23M9iaZzSwYuOsOaGwp
+4ovkXlYwQ7FVNfIIoAq95m9cBAigb06bRIlVBVTQq44hQFQQG6aSIT7SSPtCwPhB
+5CJzG09pmgbxizqN/yxdjWdfW6Av79dh6K4uQT++Vtyp5DuAkmfn0ehayrUbDLkH
+9jQFF128U5pnOPfKWf22acXqQBapesUSV/HZUZ3PXoWeHWXcMdz0azxOEunS4+px
+fs5UzInRAmEcYwJHqJT3irFz+J2RsZ0WnJHrTGqFoXniQQH8QbCHehDTGN7/v/v1
+LQBr5PQBnSEWhmrQ9uFrwPyMMg3yd+L75TaHLZ0MTSVezAG52oM9jBiU5tYXkSio
+EfPdIsGlG74BybULGSG2OlTINlblj/lj7pL67V+gY9EGN1zzNKL5sW4YXlXewa6K
+dTpLmmzWzI8Cm+tOuuJDSHSwMjn525O+Z/oyKLjdQdyfg1KnZYwNZFpMmCwfP5nd
+cm4F7Anzb9HX9ciluAxc6as9TsNoDDTSAGPuUr0QvXqXd9ZCgXdNzdFeiaYknLP5
+hT4f5CoO2M8qcG+CH7HnkaOHrSuK
+
+
+
+5J1O+4ZedrSBUsb+9tjNPHI9RGeIJcJl3Wc/208OqMYcCwGLUkrYBgH78E7IayD5
+/wra04OU57cS1/+/yBUWYR60oqkaH2/8OXkJMqmjisVM/b58m7zyMw4TAF8N/Pbs
+wnrKukFU2acxISwTLu36HC4hshWw8bEGP54szvv1xnwqcOAWNBCxcBuc9k1JD+SI
+iqqPwHKh+6EDIooujo0H15w3rAxkHQRvYe6/IrpvH2sqJl1I3dLv0iqy9+d2l891
+KBA9Yebdw7m/+ufu+eqs+0zKrwV6QLhRFmceHzEkPMTFepc2COGf80OUNbI6WWns
+pvDK97D8YG0MeifPYveIPw==
+AQAB
+
+
+
+2025-03-16T16:51:26.699846YcIPspAVFcNg+B/galYrdCLYvLIEwFI4KWdSzcuupPY=C=CO, L=Bogota D.C., O=Andes SCD, OU=Division de certificacion entidad final, CN=CA ANDES SCD S.A. Clase II v3, OID.1.2.840.113549.1.9.1=info@andesscd.com.co4834208642831502931https://facturaelectronica.dian.gov.co/politicadefirma/v2/politicadefirmav2.pdfPolítica de firma para facturas electrónicas de la República de Colombia.dMoMvtcG5aIzgYo0tIsSQeVJBDnUnfSOfBpxXrmor0Y=supplierfalsehttps://catalogo-vpfe-hab.dian.gov.co/document/searchqr?documentkey=40d20d7af2d7ee471909e62fcb4beef7de82494e6c8df4e8349ca33a1246dea601b4cc9035e18972e853ecd435799eaa2024-04-3001160000.0092800.001067200.00
\ No newline at end of file
diff --git a/examples/habilitacion/N000004.zip b/examples/habilitacion/N000004.zip
new file mode 100644
index 0000000..9dcd2c2
Binary files /dev/null and b/examples/habilitacion/N000004.zip differ
diff --git a/facho/fe/data/dian/codelist/TarifaImpuestoReteFuente-2.1.gc b/facho/fe/data/dian/codelist/TarifaImpuestoReteFuente-2.1.gc
new file mode 100644
index 0000000..2ff8d6f
--- /dev/null
+++ b/facho/fe/data/dian/codelist/TarifaImpuestoReteFuente-2.1.gc
@@ -0,0 +1,479 @@
+
+
+
+
+ TarifaImpuestoReteFuente
+ Tarifas por Impuesto
+ 1
+ urn:dian:names:especificacion:ubl:listacodigos:gc:TarifaImpuestos
+ urn:dian:names:especificacion:ubl:listacodigos:gc:TarifaImpuestos-2.1
+ http://dian.gov.co/ubl/os-ubl-2.0/cl/gc/default/TarifaImpuestos-2.1.gc
+
+ DIAN (Dirección de Impuestos y Aduanas Nacionales)
+ 195
+
+
+
+
+ Code
+ Codigo Comun
+
+
+
+ Name
+ Nombre
+
+
+
+ Description
+ Descripcion
+
+
+
+ CodeKey
+
+
+
+
+
+
+ 2.50
+
+
+ ReteFuente
+
+
+ Compras generales (declarantes)
+
+
+
+
+ 3.50
+
+
+ ReteFuente
+
+
+ Compras generales (no declarantes)
+
+
+
+
+ 1.50
+
+
+ ReteFuente
+
+
+ Compras con tarjeta débito o crédito
+
+
+
+
+ 1.50
+
+
+ ReteFuente
+
+
+ Compras de bienes o productos agrícolas o pecuarios sin procesamiento industrial
+
+
+
+
+ 2.50
+
+
+ ReteFuente
+
+
+ Compras de bienes o productos agrícolas o pecuarios con procesamiento industrial (declarantes)
+
+
+
+
+ 3.50
+
+
+ ReteFuente
+
+
+ Compras de bienes o productos agrícolas o pecuarios con procesamiento industrial declarantes (no declarantes)
+
+
+
+
+ 0.50
+
+
+ ReteFuente
+
+
+ Compras de café pergamino o cereza
+
+
+
+
+ 0.10
+
+
+ ReteFuente
+
+
+ Compras de combustibles derivados del petróleo
+
+
+
+
+ 1.00
+
+
+ ReteFuente
+
+
+ Enajenación de activos fijos de personas naturales (notarías y tránsito son agentes retenedores)
+
+
+
+
+ 1.00
+
+
+ ReteFuente
+
+
+ Compras de vehículos
+
+
+
+
+ 1.00
+
+
+ ReteFuente
+
+
+ Compras de bienes raíces cuya destinación y uso sea vivienda de habitación (por las primeras 20.000 UVT, es decir hasta $637.780.000)
+
+
+
+
+ 2.50
+
+
+ ReteFuente
+
+
+ Compras de bienes raíces cuya destinación y uso sea vivienda de habitación (exceso de las primeras 20.000 UVT, es decir superior a $637.780.000)
+
+
+
+
+ 2.50
+
+
+ ReteFuente
+
+
+ Compras de bienes raíces cuya destinación y uso sea distinto a vivienda de habitación
+
+
+
+
+ 4.00
+
+
+ ReteFuente
+
+
+ Servicios generales (declarantes)
+
+
+
+
+ 6.00
+
+
+ ReteFuente
+
+
+ Servicios generales (no declarantes)
+
+
+
+
+ 4.00
+
+
+ ReteFuente
+
+
+ Por emolumentos eclesiásticos (declarantes)
+
+
+
+
+ 3.50
+
+
+ ReteFuente
+
+
+ Por emolumentos eclesiásticos (no declarantes)
+
+
+
+
+ 1.00
+
+
+ ReteFuente
+
+
+ Servicios de transporte de carga
+
+
+
+
+ 3.50
+
+
+ ReteFuente
+
+
+ Servicios de transporte nacional de pasajeros por vía terrestre (declarantes)
+
+
+
+
+ 3.50
+
+
+ ReteFuente
+
+
+ Servicios de transporte nacional de pasajeros por vía terrestre (no declarantes)
+
+
+
+
+ 1.00
+
+
+ ReteFuente
+
+
+ Servicios de transporte nacional de pasajeros por vía aérea o marítima
+
+
+
+
+ 1.00
+
+
+ ReteFuente
+
+
+ Servicios prestados por empresas de servicios temporales (sobre AIU)
+
+
+
+
+ 2.00
+
+
+ ReteFuente
+
+
+ Servicios prestados por empresas de vigilancia y aseo (sobre AIU)
+
+
+
+
+ 2.00
+
+
+ ReteFuente
+
+
+ Servicios integrales de salud prestados por IPS
+
+
+
+
+ 3.50
+
+
+ ReteFuente
+
+
+ Servicios de hoteles y restaurantes (declarantes)
+
+
+
+
+ 3.50
+
+
+ ReteFuente
+
+
+ Servicios de hoteles y restaurantes (no declarantes)
+
+
+
+
+ 4.00
+
+
+ ReteFuente
+
+
+ Arrendamiento de bienes muebles
+
+
+
+
+ 3.50
+
+
+ ReteFuente
+
+
+ Arrendamiento de bienes inmuebles (declarantes)
+
+
+
+
+ 3.50
+
+
+ ReteFuente
+
+
+ Arrendamiento de bienes inmuebles (no declarantes)
+
+
+
+
+ 2.50
+
+
+ ReteFuente
+
+
+ Otros ingresos tributarios (declarantes)
+
+
+
+
+ 3.50
+
+
+ ReteFuente
+
+
+ Otros ingresos tributarios (no declarantes)
+
+
+
+
+ 11.00
+
+
+ ReteFuente
+
+
+ Honorarios y comisiones (personas jurídicas)
+
+
+
+
+ 11.00
+
+
+ ReteFuente
+
+
+ Honorarios y comisiones personas naturales que suscriban contrato o cuya sumatoria de los pagos o abonos en cuenta superen las 3.300 UVT ($105.135.000)
+
+
+
+
+ 10.00
+
+
+ ReteFuente
+
+
+ Honorarios y comisiones (no declarantes)
+
+
+
+
+ 3.50
+
+
+ ReteFuente
+
+
+ Servicios de licenciamiento o derecho de uso de software
+
+
+
+
+ 7.00
+
+
+ ReteFuente
+
+
+ Intereses o rendimientos financieros
+
+
+
+
+ 4.00
+
+
+ ReteFuente
+
+
+ Rendimientos financieros provenientes de títulos de renta fija
+
+
+
+
+ 20.00
+
+
+ ReteFuente
+
+
+ Loterías, rifas, apuestas y similares
+
+
+
+
+ 3.00
+
+
+ ReteFuente
+
+
+ Retención en colocación independiente de juegos de suerte y azar
+
+
+
+
+ 2.00
+
+
+ ReteFuente
+
+
+ Contratos de construcción y urbanización
+
+
+
+