Saltar al contenido principal

Overview técnico

:::info Guía de lectura recomendada Este documento está organizado por pasos del flujo técnico de extremo a extremo. Para revisión ejecutiva, priorizar: Paso 2 (Extracción), Paso 4 (Envío), Paso 8 (Webhook) y sección de manejo de errores. :::

:::tip Glosario rápido

  • DTE: Documento Tributario Electrónico.
  • XSLT: Transformación estructural de XML.
  • Webhook: Notificación automática de estado hacia sistemas externos. :::

1. Flujo Técnico Detallado

Paso 1 – Generación del XML en Oracle

  • Evento disparador: Emisión de documento electrónico.
  • Oracle genera XML personalizado.
  • Archivo almacenado en:
[RUTA_SERVIDOR_ORACLE]
/Localhos/:ERP/

Formato:

01-M001P001-00000031.xml

Ver XML completo
<?xml version = '1.0' encoding = 'UTF-8'?>
<DATA_DS><Invoice><Header><InvoiceId>300019211574190</InvoiceId><InvoiceNumber>01-M001P001-00000031</InvoiceNumber><InvoiceDate>2026-02-13T00:00:00.000+00:00</InvoiceDate><InvoiceCreationDate>13-02-2026 09:16:12</InvoiceCreationDate><InvoiceLastUpdateDate>13-02-2026 14:55:13</InvoiceLastUpdateDate><CurrencyCode>USD</CurrencyCode><TrxClass>INV</TrxClass><ExchangeRateType/><ExchangeDate/><ExchangeRate/><TrxTypeId>300019201710011</TrxTypeId><TrxType>FE_VTA_BARRE_SVBES</TrxType><BatchSourcesId>300019201738376</BatchSourcesId><BatchSourcesName>SVBES_MANUAL_26</BatchSourcesName><PaymentTermId>300000003664010</PaymentTermId><PaymentTerm>0</PaymentTerm><SequenceId/><SequenceName/><SalesRepId/><SalesRepName/><BusinessUnitId>300001708031442</BusinessUnitId><BusinessUnit>SVBES</BusinessUnit><PurchaseOrder/><PurchaseOrderRevision/><PurchaseOrderDate/><CrossReference/><DocumentNumber/><Comments/><SpecialInstructions/><StructuredPaymentReference/><AmountInWords>Ciento Setenta con Veinte y Nueve Dolares</AmountInWords><Installment><DueDate>2026-02-13T00:00:00.000+00:00</DueDate><NumberOfDueDates>1</NumberOfDueDates><TotalLinesAmount>150.7</TotalLinesAmount><TotalTaxAmount>19.59</TotalTaxAmount><TransactionTotal>170.29</TransactionTotal></Installment><AdditionalLocalInformation><DocumentType>01</DocumentType><Serie>P001</Serie><InternalControlNumber/><EstablishmentCode>M001</EstablishmentCode><EstablishmentType>02</EstablishmentType><DeliveryConditions/><DeliveryConditionsDesc/><ExporRegimen/><ExporRegimenDesc/><DeliveryPort/><RefDte/><PaymentForms>1</PaymentForms><PaymentMethods>05</PaymentMethods><PeriodType>01</PeriodType><PeriodValue>1</PeriodValue><Environment>Test</Environment><EnvironmenCode>00</EnvironmenCode><OperationType>1</OperationType><ModelType>1</ModelType></AdditionalLocalInformation><AdditionalInformation><AttributeCategory>El Salvador</AttributeCategory><GlobalAttribute30>N</GlobalAttribute30></AdditionalInformation><Issuer><Party><PartyId>300001708943887</PartyId><Id>06141610921080</Id><Name>Bimbo de El Salvador, S.A. de C.V.</Name><RegistrationNumber>06141610921080</RegistrationNumber><AdditionalLocalInformation><Nit>06141610921080</Nit><Nrc>714321</Nrc><DocumentType>36</DocumentType><EconomyActivity>10712</EconomyActivity><PhoneNumber>22393400</PhoneNumber><CountryGeoCode>9300</CountryGeoCode><StateGeoCode>05</StateGeoCode><CountyGeoCode>09</CountyGeoCode><CityGeoCode>09</CityGeoCode></AdditionalLocalInformation><PhysicalLocalInformation><Address><LocationId>300001708943858</LocationId><PartySiteId>300001708943889</PartySiteId><PartySiteName/><AddressLine1>BLVD ACERO POLIG A, LOTE 6 Y 7 ANTES BOLEVARD PYNSA</AddressLine1><AddressLine2>CIUDAD MERLIOT</AddressLine2><AddressLine3/><AddressLine4/><City>Antiguo Cuscatlan</City><State>LA LIBERTAD</State><Province/><PostalCode/><County>Antiguo Cuscatlan</County><Country>Antiguo Cuscatlan</Country><CountryCode>SV</CountryCode><Mail>facturacion.bes@gbsupport.net</Mail><Geocoding>,</Geocoding><AdditionalInformation><AttributeCategory>El Salvador</AttributeCategory><Attribute3>10712</Attribute3></AdditionalInformation></Address></PhysicalLocalInformation></Party></Issuer><Customer><Party><PartyId>300001811988379</PartyId><Id>027943562</Id><RegistrationTypeCode>SV_NIT</RegistrationTypeCode><RegistrationType>SV_NIT</RegistrationType><RegistrationStatusCode>SV_PC</RegistrationStatusCode><RegistrationStatus>SV Pequeño Contribuyente</RegistrationStatus><Name>REINALDO ROMEO ARGUETA</Name><AdditionalLocalInformation><DocumentNumber>027943562</DocumentNumber><DocumentType>36</DocumentType><Nrc>2640490</Nrc><EconomyActivity>01619</EconomyActivity><TaxpayerType>1</TaxpayerType><TaxpayerTypeDesc>Persona Natural</TaxpayerTypeDesc><CountryGeoCode>9300</CountryGeoCode><StateGeoCode>06</StateGeoCode><CountyGeoCode>20</CountyGeoCode><CityGeoCode>5</CityGeoCode></AdditionalLocalInformation><ShipTo><Address><LocationId>300013758310471</LocationId><PartySiteId>300013758310470</PartySiteId><PartySiteName/><AddressLine1>BO. EL CALVARIO, FRENTE A UNIDAD DE SALUD. EL PAISNAL</AddressLine1><AddressLine2/><AddressLine3/><AddressLine4/><City>EL PAISNAL</City><State>SAN SALVADOR</State><Province/><County>SAN SALVADOR NORTE</County><PostalCode/><CountryCode>SV</CountryCode><Country>El Salvador</Country><Mail/><AdditionalInformation><AttributeCategory>El Salvador</AttributeCategory><Attribute1>2640490</Attribute1><Attribute3>01619</Attribute3><Attribute4>05</Attribute4></AdditionalInformation></Address></ShipTo><BillTo><Address><LocationId>300013758310471</LocationId><PartySiteId>300013758310470</PartySiteId><PartySiteName/><AddressLine1>BO. EL CALVARIO, FRENTE A UNIDAD DE SALUD. EL PAISNAL</AddressLine1><AddressLine2/><AddressLine3/><AddressLine4/><City>EL PAISNAL</City><State>SAN SALVADOR</State><Province/><County>SAN SALVADOR NORTE</County><PostalCode/><CountryCode>SV</CountryCode><Country>El Salvador</Country><Mail/><AdditionalInformation><AttributeCategory>El Salvador</AttributeCategory><Attribute1>2640490</Attribute1><Attribute3>01619</Attribute3><Attribute4>05</Attribute4></AdditionalInformation></Address></BillTo><Contact><Name>Reinaldo Romeo</Name><Phone>22393400</Phone><Mail>facturacion.bes@gbsupport.net</Mail></Contact></Party></Customer><Integration><DefaultAttributeCategory>El Salvador</DefaultAttributeCategory><EfdStatus>ATTRIBUTE10</EfdStatus><EfdKeyNumber>ATTRIBUTE6</EfdKeyNumber><EfdKeyDate>ATTRIBUTE7</EfdKeyDate><EfdMessage>ATTRIBUTE11</EfdMessage><EfdInternalControlNumber>ATTRIBUTE4</EfdInternalControlNumber></Integration></Header><Detail><Lines><LineId>300019211574191</LineId><LineNumber>1</LineNumber><UnitMeasure>zzy</UnitMeasure><ItemQuantity>1004.65</ItemQuantity><Description>BARREDURA SIN ENVOLTURA</Description><UnitSellingPrice>0.15</UnitSellingPrice><GrossUnitSellingPrice/><LineSellingPrice>150.7</LineSellingPrice><GrossExtendedAmount/><AdditionalLocalInformation><ProductType>1</ProductType><UnitOfMeasure>34</UnitOfMeasure><UnitOfMeasureDesc>Kilogramo</UnitOfMeasureDesc></AdditionalLocalInformation><AdditionalInformation/><Item><InventoryItemId>300000010711684</InventoryItemId><ItemCode>100235</ItemCode><ItemDescription>BARREDURA SIN ENVOLTURA</ItemDescription><PrimaryUnitMeasure/><UnitWeight/><WeightUnitMeasure/><AdditionalInformation><AttributeCategory>México</AttributeCategory><Attribute1>10121500</Attribute1></AdditionalInformation><ItemRelationships><ItemRelationshipType>ITEM_XREF</ItemRelationshipType><ItemRelationshipId>300000015524335</ItemRelationshipId><OrganizationId>300000001531404</OrganizationId><CrossReferenceType>GB BAR CODE</CrossReferenceType><CrossReference>7790001001153_100235</CrossReference><CrossReferenceDesc>BARREDURA SIN ENVOLTURA</CrossReferenceDesc><UomCode/><CrossReferenceId>300000015524335</CrossReferenceId><EpcGtinSerial/></ItemRelationships></Item><Taxes><LineId>3483249183</LineId><TransactionHeaderId>300019211574190</TransactionHeaderId><TransactionLineId>300019211574191</TransactionLineId><TransactionLineNumber>1</TransactionLineNumber><TaxLineNumber>1</TaxLineNumber><TaxRegimeCode>SV_TAX_REG</TaxRegimeCode><TaxId>300001721017151</TaxId><Tax>SV_IVA_AR</Tax><TaxCode/><TaxStatusId>300001721017158</TaxStatusId><TaxStatusCode>STANDARD</TaxStatusCode><TaxRateId>300001721017160</TaxRateId><TaxRateCode>SV_IVA_GRAL_BIENES_AR</TaxRateCode><TaxRate>13</TaxRate><TaxCurrencyCode>USD</TaxCurrencyCode><TaxAmountTransac>19.59</TaxAmountTransac><TaxAmountFunCurr/><TaxableAmountTransac>150.7</TaxableAmountTransac><TaxableAmountFunCurr/><AdditionalLocalInformation><Type><RateCodeType>LACLS_SV_TAX_TYPE</RateCodeType><RateCode>IVA</RateCode><RateCodeDesc>IVA</RateCodeDesc></Type><Type><RateCodeType>LACLS_SV_PRODUCT_TYPE</RateCodeType><RateCode>GOODS</RateCode><RateCodeDesc>GOODS</RateCodeDesc></Type><Type><RateCodeType>LACLS_SV_RATE_CODE</RateCodeType><RateCode>20</RateCode><RateCodeDesc>Impuesto al Valor Agregado 13%</RateCodeDesc></Type></AdditionalLocalInformation></Taxes></Lines></Detail></Invoice></DATA_DS>

03-M001P001-10000030.xml

Ver XML completo
<?xml version = '1.0' encoding = 'UTF-8'?>
<DATA_DS><Invoice><Header><InvoiceId>300019211574200</InvoiceId><InvoiceNumber>03-M001P001-00000030</InvoiceNumber><InvoiceDate>2026-02-13T00:00:00.000+00:00</InvoiceDate><InvoiceCreationDate>13-02-2026 09:45:21</InvoiceCreationDate><InvoiceLastUpdateDate>13-02-2026 14:18:25</InvoiceLastUpdateDate><CurrencyCode>USD</CurrencyCode><TrxClass>INV</TrxClass><ExchangeRateType/><ExchangeDate/><ExchangeRate/><TrxTypeId>300019201710084</TrxTypeId><TrxType>CCF_VTA_BARRE_SVBES</TrxType><BatchSourcesId>300019201738376</BatchSourcesId><BatchSourcesName>SVBES_MANUAL_26</BatchSourcesName><PaymentTermId>300000003664010</PaymentTermId><PaymentTerm>0</PaymentTerm><SequenceId/><SequenceName/><SalesRepId/><SalesRepName/><BusinessUnitId>300001708031442</BusinessUnitId><BusinessUnit>SVBES</BusinessUnit><PurchaseOrder/><PurchaseOrderRevision/><PurchaseOrderDate/><CrossReference/><DocumentNumber/><Comments/><SpecialInstructions/><StructuredPaymentReference/><AmountInWords/><AdditionalLocalInformation><DocumentType>03</DocumentType><Serie>P001</Serie><InternalControlNumber/><EstablishmentCode>M001</EstablishmentCode><EstablishmentType>02</EstablishmentType><DeliveryConditions/><DeliveryConditionsDesc/><ExporRegimen/><ExporRegimenDesc/><DeliveryPort/><RefDte/><PaymentForms>1</PaymentForms><PaymentMethods>05</PaymentMethods><PeriodType>01</PeriodType><PeriodValue>1</PeriodValue><Environment>Test</Environment><EnvironmenCode>00</EnvironmenCode><OperationType>1</OperationType><ModelType>1</ModelType></AdditionalLocalInformation><AdditionalInformation><AttributeCategory>El Salvador</AttributeCategory><GlobalAttribute30>N</GlobalAttribute30></AdditionalInformation><Issuer><Party><PartyId>300001708943887</PartyId><Id>06141610921080</Id><Name>Bimbo de El Salvador, S.A. de C.V.</Name><RegistrationNumber>06141610921080</RegistrationNumber><AdditionalLocalInformation><Nit>06141610921080</Nit><Nrc>714321</Nrc><DocumentType>36</DocumentType><EconomyActivity>10712</EconomyActivity><PhoneNumber>22393400</PhoneNumber><CountryGeoCode>9300</CountryGeoCode><StateGeoCode>05</StateGeoCode><CountyGeoCode>09</CountyGeoCode><CityGeoCode>09</CityGeoCode></AdditionalLocalInformation><PhysicalLocalInformation><Address><LocationId>300001708943858</LocationId><PartySiteId>300001708943889</PartySiteId><PartySiteName/><AddressLine1>BLVD ACERO POLIG A, LOTE 6 Y 7 ANTES BOLEVARD PYNSA</AddressLine1><AddressLine2>CIUDAD MERLIOT</AddressLine2><AddressLine3/><AddressLine4/><City>Antiguo Cuscatlan</City><State>LA LIBERTAD</State><Province/><PostalCode/><County>Antiguo Cuscatlan</County><Country>Antiguo Cuscatlan</Country><CountryCode>SV</CountryCode><Mail>facturacion.bes@gbsupport.net</Mail><Geocoding>,</Geocoding><AdditionalInformation><AttributeCategory>El Salvador</AttributeCategory><Attribute3>10712</Attribute3></AdditionalInformation></Address></PhysicalLocalInformation></Party></Issuer><Customer><Party><PartyId>300001811988379</PartyId><Id>027943562</Id><RegistrationTypeCode>SV_NIT</RegistrationTypeCode><RegistrationType>SV_NIT</RegistrationType><RegistrationStatusCode>SV_PC</RegistrationStatusCode><RegistrationStatus>SV Pequeño Contribuyente</RegistrationStatus><Name>REINALDO ROMEO ARGUETA</Name><AdditionalLocalInformation><DocumentNumber>027943562</DocumentNumber><DocumentType>36</DocumentType><Nrc>2640490</Nrc><EconomyActivity>01619</EconomyActivity><TaxpayerType>1</TaxpayerType><TaxpayerTypeDesc>Persona Natural</TaxpayerTypeDesc><CountryGeoCode>9300</CountryGeoCode><StateGeoCode>06</StateGeoCode><CountyGeoCode>20</CountyGeoCode><CityGeoCode>5</CityGeoCode></AdditionalLocalInformation><ShipTo><Address><LocationId>300013758310471</LocationId><PartySiteId>300013758310470</PartySiteId><PartySiteName/><AddressLine1>BO. EL CALVARIO, FRENTE A UNIDAD DE SALUD. EL PAISNAL</AddressLine1><AddressLine2/><AddressLine3/><AddressLine4/><City>EL PAISNAL</City><State>SAN SALVADOR</State><Province/><County>SAN SALVADOR NORTE</County><PostalCode/><CountryCode>SV</CountryCode><Country>El Salvador</Country><Mail/><AdditionalInformation><AttributeCategory>El Salvador</AttributeCategory><Attribute1>2640490</Attribute1><Attribute3>01619</Attribute3><Attribute4>05</Attribute4></AdditionalInformation></Address></ShipTo><BillTo><Address><LocationId>300013758310471</LocationId><PartySiteId>300013758310470</PartySiteId><PartySiteName/><AddressLine1>BO. EL CALVARIO, FRENTE A UNIDAD DE SALUD. EL PAISNAL</AddressLine1><AddressLine2/><AddressLine3/><AddressLine4/><City>EL PAISNAL</City><State>SAN SALVADOR</State><Province/><County>SAN SALVADOR NORTE</County><PostalCode/><CountryCode>SV</CountryCode><Country>El Salvador</Country><Mail/><AdditionalInformation><AttributeCategory>El Salvador</AttributeCategory><Attribute1>2640490</Attribute1><Attribute3>01619</Attribute3><Attribute4>05</Attribute4></AdditionalInformation></Address></BillTo><Contact><Name>Reinaldo Romeo</Name><Phone>22393400</Phone><Mail>facturacion.bes@gbsupport.net</Mail></Contact></Party></Customer><Integration><DefaultAttributeCategory>El Salvador</DefaultAttributeCategory><EfdStatus>ATTRIBUTE10</EfdStatus><EfdKeyNumber>ATTRIBUTE6</EfdKeyNumber><EfdKeyDate>ATTRIBUTE7</EfdKeyDate><EfdMessage>ATTRIBUTE11</EfdMessage><EfdInternalControlNumber>ATTRIBUTE4</EfdInternalControlNumber></Integration></Header><Detail><Lines><LineId>300019211574201</LineId><LineNumber>1</LineNumber><UnitMeasure>zzy</UnitMeasure><ItemQuantity>1003.65</ItemQuantity><Description>BARREDURA CON ENVOLTURA</Description><UnitSellingPrice>0.15</UnitSellingPrice><GrossUnitSellingPrice/><LineSellingPrice>150.55</LineSellingPrice><GrossExtendedAmount/><AdditionalLocalInformation><ProductType>1</ProductType><UnitOfMeasure>34</UnitOfMeasure><UnitOfMeasureDesc>Kilogramo</UnitOfMeasureDesc></AdditionalLocalInformation><AdditionalInformation/><Item><InventoryItemId>300000010711680</InventoryItemId><ItemCode>100234</ItemCode><ItemDescription>BARREDURA CON ENVOLTURA</ItemDescription><PrimaryUnitMeasure/><UnitWeight/><WeightUnitMeasure/><AdditionalInformation/><ItemRelationships><ItemRelationshipType>ITEM_XREF</ItemRelationshipType><ItemRelationshipId>300000015524336</ItemRelationshipId><OrganizationId>300001717420775</OrganizationId><CrossReferenceType>GB BAR CODE</CrossReferenceType><CrossReference>7790001001153_100234</CrossReference><CrossReferenceDesc>BARREDURA CON ENVOLTURA</CrossReferenceDesc><UomCode/><CrossReferenceId>300000015524336</CrossReferenceId><EpcGtinSerial/></ItemRelationships></Item><Taxes><LineId>3483261240</LineId><TransactionHeaderId>300019211574200</TransactionHeaderId><TransactionLineId>300019211574201</TransactionLineId><TransactionLineNumber>1</TransactionLineNumber><TaxLineNumber>1</TaxLineNumber><TaxRegimeCode>SV_TAX_REG</TaxRegimeCode><TaxId>300001721017151</TaxId><Tax>SV_IVA_AR</Tax><TaxCode/><TaxStatusId>300001721017158</TaxStatusId><TaxStatusCode>STANDARD</TaxStatusCode><TaxRateId>300001721017160</TaxRateId><TaxRateCode>SV_IVA_GRAL_BIENES_AR</TaxRateCode><TaxRate>13</TaxRate><TaxCurrencyCode>USD</TaxCurrencyCode><TaxAmountTransac>19.57</TaxAmountTransac><TaxAmountFunCurr/><TaxableAmountTransac>150.55</TaxableAmountTransac><TaxableAmountFunCurr/><AdditionalLocalInformation><Type><RateCodeType>LACLS_SV_TAX_TYPE</RateCodeType><RateCode>IVA</RateCode><RateCodeDesc>IVA</RateCodeDesc></Type><Type><RateCodeType>LACLS_SV_PRODUCT_TYPE</RateCodeType><RateCode>GOODS</RateCode><RateCodeDesc>GOODS</RateCodeDesc></Type><Type><RateCodeType>LACLS_SV_RATE_CODE</RateCodeType><RateCode>20</RateCode><RateCodeDesc>Impuesto al Valor Agregado 13%</RateCodeDesc></Type></AdditionalLocalInformation></Taxes><Taxes><LineId>3483261241</LineId><TransactionHeaderId>300019211574200</TransactionHeaderId><TransactionLineId>300019211574201</TransactionLineId><TransactionLineNumber>1</TransactionLineNumber><TaxLineNumber>2</TaxLineNumber><TaxRegimeCode>SV_TAX_REG</TaxRegimeCode><TaxId>300001721017167</TaxId><Tax>SV_PERCEPCION_AR</Tax><TaxCode/><TaxStatusId>300001721017174</TaxStatusId><TaxStatusCode>STANDARD</TaxStatusCode><TaxRateId>300001721017176</TaxRateId><TaxRateCode>SV_PERCEPCION_AR</TaxRateCode><TaxRate>1</TaxRate><TaxCurrencyCode>USD</TaxCurrencyCode><TaxAmountTransac>1.51</TaxAmountTransac><TaxAmountFunCurr/><TaxableAmountTransac>150.55</TaxableAmountTransac><TaxableAmountFunCurr/><AdditionalLocalInformation><Type><RateCodeType>LACLS_SV_TAX_TYPE</RateCodeType><RateCode>PERC</RateCode><RateCodeDesc>PERCEPCION</RateCodeDesc></Type><Type><RateCodeType>LACLS_SV_PRODUCT_TYPE</RateCodeType><RateCode>BOTH</RateCode><RateCodeDesc>BOTH (BIENES Y SERVICIOS)</RateCodeDesc></Type></AdditionalLocalInformation></Taxes></Lines></Detail></Invoice></DATA_DS>

11-M001P001-00000002.xml

Ver XML completo
<?xml version = '1.0' encoding = 'UTF-8'?>
<DATA_DS><Invoice><Header><InvoiceId>300016514993752</InvoiceId><InvoiceNumber>11-M001P001-00000002</InvoiceNumber><InvoiceDate>2026-01-09T00:00:00.000+00:00</InvoiceDate><InvoiceCreationDate>09-01-2026 09:53:10</InvoiceCreationDate><InvoiceLastUpdateDate>09-01-2026 11:51:23</InvoiceLastUpdateDate><CurrencyCode>USD</CurrencyCode><TrxClass>INV</TrxClass><ExchangeRateType/><ExchangeDate/><ExchangeRate/><TrxTypeId>300016437241127</TrxTypeId><TrxType>FEXE_SERV_CORP_FI_SV</TrxType><BatchSourcesId>300016515021307</BatchSourcesId><BatchSourcesName>SVBLES_MANUAL_2026</BatchSourcesName><PaymentTermId>300000011022841</PaymentTermId><PaymentTerm>30</PaymentTerm><SequenceId/><SequenceName/><SalesRepId/><SalesRepName/><BusinessUnitId>300008039669821</BusinessUnitId><BusinessUnit>SVBLES</BusinessUnit><PurchaseOrder>269475943</PurchaseOrder><PurchaseOrderRevision/><PurchaseOrderDate/><CrossReference/><DocumentNumber/><Comments>Servicios</Comments><SpecialInstructions/><StructuredPaymentReference/><AmountInWords>Dieciséis mil Dolares</AmountInWords><Installment><DueDate>2026-02-08T00:00:00.000+00:00</DueDate><NumberOfDueDates>1</NumberOfDueDates><TotalLinesAmount>16000</TotalLinesAmount><TotalTaxAmount>0</TotalTaxAmount><TransactionTotal>16000</TransactionTotal></Installment><AdditionalLocalInformation><DocumentType>11</DocumentType><Serie>P001</Serie><InternalControlNumber>85C11B71-DF3E-4960-918E-18AE3260117F</InternalControlNumber><EstablishmentCode>M001</EstablishmentCode><EstablishmentType>02</EstablishmentType><DeliveryConditions/><DeliveryConditionsDesc/><ExporRegimen/><ExporRegimenDesc/><DeliveryPort/><RefDte>2026710C09412D064A07BBBF03135D8D9D2A6OOI</RefDte><PaymentForms>2</PaymentForms><PaymentMethods>05</PaymentMethods><PeriodType>02</PeriodType><PeriodValue>30</PeriodValue><Environment>Test</Environment><EnvironmenCode>00</EnvironmenCode><OperationType>1</OperationType><ModelType>1</ModelType></AdditionalLocalInformation><AdditionalInformation><AttributeCategory>El Salvador</AttributeCategory><Attribute4>85C11B71-DF3E-4960-918E-18AE3260117F</Attribute4><Attribute6>2026710C09412D064A07BBBF03135D8D9D2A6OOI</Attribute6><Attribute7>2026-01-09 10:29:21</Attribute7><Attribute11>RECIBIDO CON OBSERVACIONES</Attribute11><GlobalAttribute30>N</GlobalAttribute30></AdditionalInformation><Issuer><Party><PartyId>300008038827295</PartyId><Id>5011602231011</Id><Name>Barcel De El Salvador, S.A. de C.V.</Name><RegistrationNumber>05011602231011</RegistrationNumber><AdditionalLocalInformation><Nit>5011602231011</Nit><Nrc>3251454</Nrc><DocumentType>36</DocumentType><EconomyActivity>10794</EconomyActivity><PhoneNumber>22393400</PhoneNumber><CountryGeoCode>9300</CountryGeoCode><StateGeoCode>05</StateGeoCode><CountyGeoCode>26</CountyGeoCode><CityGeoCode>01</CityGeoCode></AdditionalLocalInformation><PhysicalLocalInformation><Address><LocationId>300008038827291</LocationId><PartySiteId>300008038827297</PartySiteId><PartySiteName/><AddressLine1>Boulevar Acero, Poligono A Lote 5</AddressLine1><AddressLine2>Ciudad Merliot, Antiguo Cuscatlan</AddressLine2><AddressLine3/><AddressLine4/><City>ANTIGUO CUSCATLAN</City><State>LA LIBERTAD</State><Province/><PostalCode/><County>LA LIBERTAD ESTE</County><Country>ANTIGUO CUSCATLAN</Country><CountryCode>SV</CountryCode><Mail>nelson.montano@grupobimbo.com</Mail><Geocoding>,</Geocoding><AdditionalInformation><AttributeCategory>El Salvador</AttributeCategory><Attribute1>3251454</Attribute1><Attribute3>10794</Attribute3></AdditionalInformation></Address></PhysicalLocalInformation></Party></Issuer><Customer><Party><PartyId>300008197978104</PartyId><Id>923842744</Id><RegistrationTypeCode>SV_EXT</RegistrationTypeCode><RegistrationType>SV - Otro(extranjero)</RegistrationType><RegistrationStatusCode/><RegistrationStatus/><Name>CELBAR SNACKS INTERNATIONAL, LLC</Name><AdditionalLocalInformation><DocumentNumber>923842744</DocumentNumber><DocumentType>37</DocumentType><Nrc/><EconomyActivity>10005</EconomyActivity><TaxpayerType>2</TaxpayerType><TaxpayerTypeDesc>Persona Jurídica</TaxpayerTypeDesc><CountryGeoCode>9450</CountryGeoCode><StateGeoCode/><CountyGeoCode/><CityGeoCode/></AdditionalLocalInformation><ShipTo><Address><LocationId>300008197978236</LocationId><PartySiteId>300008197978234</PartySiteId><PartySiteName>SVBLES15686555</PartySiteName><AddressLine1>301 Northpoint Dr. Suite 100</AddressLine1><AddressLine2/><AddressLine3/><AddressLine4/><City>Coppell</City><State>TX</State><Province/><County/><PostalCode>75019</PostalCode><CountryCode>US</CountryCode><Country>United States</Country><Mail/><AdditionalInformation><AttributeCategory>El Salvador</AttributeCategory><Attribute4>05</Attribute4><Attribute5>02</Attribute5></AdditionalInformation></Address></ShipTo><BillTo><Address><LocationId>300008197978109</LocationId><PartySiteId>300008197978108</PartySiteId><PartySiteName>SVBLES15686554</PartySiteName><AddressLine1>301 Northpoint Dr. Suite 100</AddressLine1><AddressLine2/><AddressLine3/><AddressLine4/><City>Coppell</City><State>TX</State><Province/><County/><PostalCode>75019</PostalCode><CountryCode>US</CountryCode><Country>United States</Country><Mail/><AdditionalInformation><AttributeCategory>El Salvador</AttributeCategory><Attribute3>10005</Attribute3><Attribute4>05</Attribute4><Attribute5>02</Attribute5></AdditionalInformation></Address></BillTo><Contact><Name>Mirian Coronado</Name><Phone>52685300</Phone><Mail>miriam.coronado@grupobimbo.com</Mail></Contact></Party></Customer><Integration><DefaultAttributeCategory>El Salvador</DefaultAttributeCategory><EfdStatus>ATTRIBUTE10</EfdStatus><EfdKeyNumber>ATTRIBUTE6</EfdKeyNumber><EfdKeyDate>ATTRIBUTE7</EfdKeyDate><EfdMessage>ATTRIBUTE11</EfdMessage><EfdInternalControlNumber>ATTRIBUTE4</EfdInternalControlNumber></Integration></Header><Detail><Lines><LineId>300016514993753</LineId><LineNumber>1</LineNumber><UnitMeasure>zzs</UnitMeasure><ItemQuantity>4</ItemQuantity><Description>CASTIGO DE CARTERA</Description><UnitSellingPrice>4000</UnitSellingPrice><GrossUnitSellingPrice/><LineSellingPrice>16000</LineSellingPrice><GrossExtendedAmount/><AdditionalLocalInformation><ProductType>1</ProductType><UnitOfMeasure>99</UnitOfMeasure><UnitOfMeasureDesc>Otros</UnitOfMeasureDesc></AdditionalLocalInformation><AdditionalInformation/><Item><InventoryItemId>100000215076396</InventoryItemId><ItemCode>F-120</ItemCode><ItemDescription>CASTIGO DE CARTERA</ItemDescription><PrimaryUnitMeasure/><UnitWeight>1</UnitWeight><WeightUnitMeasure>zzy</WeightUnitMeasure><AdditionalInformation><AttributeCategory>México</AttributeCategory></AdditionalInformation></Item><Taxes><LineId>3007942120</LineId><TransactionHeaderId>300016514993752</TransactionHeaderId><TransactionLineId>300016514993753</TransactionLineId><TransactionLineNumber>1</TransactionLineNumber><TaxLineNumber>1</TaxLineNumber><TaxRegimeCode>SV_TAX_REG</TaxRegimeCode><TaxId>300001721017151</TaxId><Tax>SV_IVA_AR</Tax><TaxCode/><TaxStatusId>300001721017158</TaxStatusId><TaxStatusCode>STANDARD</TaxStatusCode><TaxRateId>100000823971577</TaxRateId><TaxRateCode>SV_IVA_EXENTO_AR</TaxRateCode><TaxRate>0</TaxRate><TaxCurrencyCode>USD</TaxCurrencyCode><TaxAmountTransac>0</TaxAmountTransac><TaxAmountFunCurr>0</TaxAmountFunCurr><TaxableAmountTransac>16000</TaxableAmountTransac><TaxableAmountFunCurr/><AdditionalLocalInformation><Type><RateCodeType>LACLS_SV_TAX_TYPE</RateCodeType><RateCode>EXENTO</RateCode><RateCodeDesc>EXENTO</RateCodeDesc></Type><Type><RateCodeType>LACLS_SV_PRODUCT_TYPE</RateCodeType><RateCode>GOODS</RateCode><RateCodeDesc>GOODS</RateCodeDesc></Type><Type><RateCodeType>LACLS_SV_RATE_CODE</RateCodeType><RateCode>C3</RateCode><RateCodeDesc>Impuesto al Valor Agregado (exportaciones) 0%</RateCodeDesc></Type></AdditionalLocalInformation></Taxes></Lines></Detail></Invoice></DATA_DS>

Paso 2 – Extracción Canónica

Servicio: Extractor Canónico GoSocket

Frecuencia:

Cada 5 minutos (configurable)

Método de conexión:

[Tipo de Conexión API]
End point: Varía según tipo de documento. Se detalla en el recuadro más abajo
Protocolo: HTTPS

Los end points para la extracción están sectorizados por tipo de documento y por ambiente según el siguiente cuadro:

FlowDescriptionDocument TypeEndpoints
AR 📤Accounts ReceivableAll, except 07 & 14200 QA
300 UAT
AP 📥Accounts PayableOnly 07200 QA
300 UAT
AP 📥Accounts PayableOnly 14200 QA
300 UAT

Proceso:

  • Consulta existencia de archivos.
  • Descarga archivo.
  • Marca archivo como procesado.

Paso 3 – Transformación XSLT #1

Entrada:

XML Oracle (Ejemplos adjunos en el paso 1)

Transformación:

Archivo: 94d3b021-88f3-447c-8c9c-330aeadcfc73.xslt
<?xml version="1.0" encoding="UTF-8"?>
<!--Extractor Canónico Bimbo Oracle
Author : Ricardo Carretero
Last Update: David Llique
Date: 20-01-2026
Version: 2025-12-15_001
Description: Ajuste en el mapeo del campo fecha de referencia.
-->
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" version="2.0">
<xsl:output method="xml" encoding="UTF-8" indent="yes" omit-xml-declaration="no" />
<xsl:key name="tiposdeimpuesto" match="/Invoice/Detail/Lines/Taxes/AdditionalLocalInformation/Type" use="RateCode" />
<xsl:template match="/">
<xsl:variable name="currentdate" select="current-dateTime()" />
<xsl:variable name="Invoicenumber" select="number(substring(/Invoice/Header/InvoiceNumber, 13, 20))" />
<!-- ... Contenido completo del XSLT (~850 líneas de transformación) ... -->
<!--
Este XSLT transforma datos de Oracle ERP a formato DTE GoSocket para El Salvador.
Características principales:
- Soporta múltiples tipos de documentos: 01, 03, 05, 06, 07, 11, 14, INV
- Maneja conversión de montos a letras (español)
- Procesa impuestos, retenciones y percepciones
- Gestiona contingencias y referencias a documentos previos
- Mapeo de códigos de actividad económica

Estructura completa disponible con el equipo de implementación.
-->
</xsl:template>

<!-- Templates de conversión numérica a letras -->
<xsl:template name="convertir-numero-a-letra-principal">
<xsl:param name="numero" as="xs:string" />
<!-- ... implementación completa ... -->
</xsl:template>

<xsl:template name="convertir-unidades">
<xsl:param name="unidades" />
<!-- ... implementación completa ... -->
</xsl:template>

<xsl:template name="convertir-decenas">
<xsl:param name="decenas" />
<xsl:param name="unidades" />
<!-- ... implementación completa ... -->
</xsl:template>

<xsl:template name="convertir-centenas">
<xsl:param name="numero" />
<!-- ... implementación completa ... -->
</xsl:template>

<xsl:template name="convertir-miles">
<xsl:param name="miles" />
<xsl:param name="resto" />
<!-- ... implementación completa ... -->
</xsl:template>

<xsl:template name="convertir-millones">
<xsl:param name="millones" />
<xsl:param name="resto" />
<!-- ... implementación completa ... -->
</xsl:template>
</xsl:stylesheet>

Nota: Este XSLT contiene más de 850 líneas de lógica de transformación compleja. Por razones de brevedad y seguridad, se muestra una versión resumida con el encabezado y estructura. El archivo completo incluye:

  • Templates principales: Procesamiento de todos los tipos de documentos DTE (facturas, créditos fiscales, retenciones, anulaciones, etc.)
  • Conversión numérica: Sistema completo de conversión de números a letras en español (hasta millones con decimales)
  • Mapeo de impuestos: Identificación y cálculo de IVA, retenciones, percepciones y tributos especiales
  • Gestión de datos: Emisor, receptor, totales, referencias, contingencias y campos personalizados

El archivo completo está disponible a través del equipo de integración de Bimbo/GoSocket.

Salida:

XML DTE (Formato GoSocket)

Ver XML completo
<?xml version="1.0" encoding="UTF-8"?>
<DTE>
<Documento>
<Encabezado>
<IdDoc>
<Ambiente>00</Ambiente>
<Tipo>11</Tipo>
<Numero>000000000000002</Numero>
<FechaEmis>2026-01-09T00:00:00</FechaEmis>
<horEmi>00:00:00</horEmi>
<TipoServicio>1</TipoServicio>
<TipoOperacion>1</TipoOperacion>
<NatOperacion>1</NatOperacion>
<PtoEmis/>
<CondPago>2</CondPago>
<Observaciones>Servicios</Observaciones>
<Pagos>
<FormaPago>05</FormaPago>
<CondPago>02</CondPago>
<TermPagoDias>30</TermPagoDias>
<Monto>16000</Monto>
</Pagos>
<Incoterms>
<CodIncoterms/>
<IncotermDs/>
</Incoterms>
<Contingencia>
<TipoCont/>
<MotivoCont/>
</Contingencia>
<ExtraInfoDoc name="regimen"/>
</IdDoc>
<Emisor>
<RegimenContable>3251454</RegimenContable>
<DocEmisor>
<TipoDocEmisor>36</TipoDocEmisor>
<NroDocEmisor>5011602231011</NroDocEmisor>
</DocEmisor>
<IDEmisor>05011602231011</IDEmisor>
<NmbEmisor>Barcel De El Salvador, S.A. de C.V.</NmbEmisor>
<NombreEmisor>
<PrimerNombre>Barcel De El Salvador, S.A. de C.V.</PrimerNombre>
</NombreEmisor>
<CodigoEmisor>
<TpoCdgIntEmisor>actividad</TpoCdgIntEmisor>
<CdgIntEmisor>10794</CdgIntEmisor>
</CodigoEmisor>
<TipoSucursal>02</TipoSucursal>
<CdgSucursal>M001</CdgSucursal>
<CdgVendedor>P001</CdgVendedor>
<DomFiscal>
<Calle>Boulevar Acero, Poligono A Lote 5</Calle>
<Departamento>05</Departamento>
<Municipio>26</Municipio>
</DomFiscal>
<ContactoEmisor>
<Tipo>Matriz</Tipo>
<eMail>nelson.montano@grupobimbo.com</eMail>
<Telefono>22393400</Telefono>
</ContactoEmisor>
<ExtraInfoEmisor name="codPuntoVenta">P001</ExtraInfoEmisor>
<ExtraInfoEmisor name="nomEstablecimiento">M001</ExtraInfoEmisor>
</Emisor>
<Receptor>
<RegimenContableR/>
<TipoContribuyenteR>2</TipoContribuyenteR>
<DocRecep>
<TipoDocRecep>37</TipoDocRecep>
<NroDocRecep>923842744</NroDocRecep>
</DocRecep>
<NmbRecep>CELBAR SNACKS INTERNATIONAL, LLC</NmbRecep>
<CodigoReceptor>
<TpoCdgIntRecep>actividad</TpoCdgIntRecep>
<CdgIntRecep>10005</CdgIntRecep>
</CodigoReceptor>
<DomFiscalRcp>
<Calle>301 Northpoint Dr. Suite 100</Calle>
<Departamento/>
<CodigoPais>US</CodigoPais>
<Municipio/>
<Pais>United States</Pais>
</DomFiscalRcp>
<ContactoReceptor>
<eMail>miriam.coronado@grupobimbo.com</eMail>
<Telefono>52685300</Telefono>
</ContactoReceptor>
</Receptor>
<Totales>
<Moneda>USD</Moneda>
<MntRet>0.00</MntRet>
<FctConv/>
<SubTotal>16000</SubTotal>
<MntDcto>0</MntDcto>
<MntBase>16000</MntBase>
<ImporteOtrosTributos>16000.00</ImporteOtrosTributos>
<MntImp>0.00</MntImp>
<MontoTotal>16000</MontoTotal>
<VlrPagar>16000</VlrPagar>
<VlrPalabras>Dieciséis mil Dolares</VlrPalabras>
</Totales>
<Impuestos>
<CodTasaImp>C3</CodTasaImp>
<MontoImp>0.00</MontoImp>
<Descripcion>Impuesto al Valor Agregado (exportaciones) 0%</Descripcion>
</Impuestos>
</Encabezado>
<Detalle>
<NroLinDet>1</NroLinDet>
<CdgItem>
<VlrCodigo>F-120</VlrCodigo>
</CdgItem>
<TpoListaItem>1</TpoListaItem>
<DscItem>CASTIGO DE CARTERA</DscItem>
<QtyItem>4</QtyItem>
<UnmdItem>99</UnmdItem>
<PrcNetoItem>4000</PrcNetoItem>
<ImpuestosDet>
<CodTasaImp>C3</CodTasaImp>
</ImpuestosDet>
<SubMonto>
<Tipo>ventaGravada</Tipo>
<MontoConcepto>16000</MontoConcepto>
</SubMonto>
<ExtraInfoDetalle name="numeroDocumento"/>
</Detalle>
<TimeStamp>25-02-2026 15:45:13</TimeStamp>
</Documento>
<Personalizados>
<DocPersonalizado>
<campoString name="DGII_WMOC">269475943</campoString>
</DocPersonalizado>
</Personalizados>
</DTE>

Validaciones:

  • Estructura XML
  • Campos obligatorios
  • Formato tributario
  • Totales

Escenarios:

EscenarioResultado
ÉxitoContinúa flujo
ErrorRegistro de error + Log técnico

Paso 4 – Envío DTE a API GoSocket

Endpoint:

https://developers-sbx.gosocket.net/api/v1/Document/SendDocumentToAuthority

Método:

POST

Headers:

Authorization: Basic auth
Content-Type: application/xml

Proceso interno:

  • Recepción
  • Validación estructural
  • Transformación XSLT #2

Paso 5 – Transformación XSLT #2 (DTE → DGI)

Entrada:

XML DTE (Ejemplo adjunto en el paso 3)

Transformación:

Archivo: f6deb258-6dd1-4d2a-89d1-dccd2495904d.xslt
<?xml version="1.0" encoding="UTF-8"?>
<!-- DTE_v1.9.xsd to JSON el Salvador :: By Eric Van Boxsom :: Version 0.0.8:: Last Update: 26-04-2023 - Paula Bustos

:::::::::::::::::::::::::::::::::::::
:::::::::Release Notes 0.0.8:::::::::
:::::::::::::::::::::::::::::::::::::
:::::::::SANDBOX ENVIRONMENT:::::::::
:::::::::::::::::::::::::::::::::::::

Control de Cambios: Paula Bustos 25 de Agosto de 2023 - Unificación cambios API y xDoc
Control de Cambios: Paula Bustos 25 de Septiembre de 2023 - Tomar UUID del cliente y manejo de etiqueta personalizada de la DGII
Control de Cambios: Paula Bustos 30 de Octubre de 2023 - Actualización URL de actividades comerciales
Control de Cambios: Paula Bustos 23 de Noviembre de 2023 - mapeo descripción de la actividad economica
Control de Cambios: Paula Bustos 29 de Noviembre de 2023 - Notas de Crédito con varios documentos relacionados
Control de Cambios: Ricardo Carretero 24 de Octubre de 2024 - Se dejan opcionales los campos receptor.tipoDocumento y receptor.numDocumento para la factura (decreto Ejecutivo No. 94)
Control de Cambios: Adriana Jaramillo 8 de agosto de 2025 - Se permite llevar como NIT el documento para el tipo de identificacion 13-DUI
Control de Cambios: Ricardo Carretero 07012026 se agrega nodo compraTercero para factura de exportación
-->
<xsl:stylesheet version="3.0" xmlns="http://www.w3.org/2005/xpath-functions" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="UTF-8" indent="true" media-type="application/json"/>
<xsl:param name="uuid"/>
<xsl:template match="DTE">
<xsl:variable name="xml">
<xsl:choose>
<xsl:when test="Documento/Encabezado/IdDoc/Tipo = 'INV'">
<map>
<map key="identificacion">
<number key="version">
<xsl:choose>
<xsl:when test="Documento/Encabezado/IdDoc/Tipo = 'INV'">
<xsl:value-of select="2"/>
</xsl:when>
</xsl:choose>
</number>
<string key="ambiente">
<xsl:value-of select="Documento/Encabezado/IdDoc/Ambiente"/>
</string>
<string key="codigoGeneracion">
<xsl:choose>
<xsl:when test="Documento/Encabezado/IdDoc/ContenidoTC">
<xsl:value-of select="normalize-space(Documento/Encabezado/IdDoc/ContenidoTC)"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="upper-case($uuid)"/>
</xsl:otherwise>
</xsl:choose>
</string>
<string key="fecAnula">
<xsl:value-of select="substring(Documento/Encabezado/IdDoc/FechaEmis, 1, 10)"/>
</string>
<string key="horAnula">
<xsl:value-of select="substring(Documento/Encabezado/IdDoc/FechaEmis, 12, 8)"/>
</string>
</map>
<map key="emisor">
<string key="nit">
<xsl:value-of select="Documento/Encabezado/Emisor/IDEmisor"/>
</string>
<string key="nombre">
<xsl:value-of select="Documento/Encabezado/Emisor/NmbEmisor"/>
</string>
<string key="tipoEstablecimiento">
<xsl:value-of select="Documento/Encabezado/Emisor/TipoSucursal"/>
</string>
<xsl:choose>
<xsl:when test="Documento/Encabezado/Emisor/ExtraInfoEmisor[@name = 'nomEstablecimiento'] != ''">
<string key="nomEstablecimiento">
<xsl:value-of select="Documento/Encabezado/Emisor/ExtraInfoEmisor[@name = 'nomEstablecimiento']"/>
</string>
</xsl:when>
<xsl:otherwise>
<null key="nomEstablecimiento"/>
</xsl:otherwise>
</xsl:choose>
<xsl:choose>
<xsl:when test="Documento/Encabezado/Emisor/CdgSucursal != ''">
<string key="codEstableMH">
<xsl:value-of select="Documento/Encabezado/Emisor/CdgSucursal"/>
</string>
</xsl:when>
<xsl:otherwise>
<null key="codEstableMH"/>
</xsl:otherwise>
</xsl:choose>
<xsl:choose>
<xsl:when test="Documento/Encabezado/Emisor/Sucursal != ''">
<string key="codEstable">
<xsl:value-of select="Documento/Encabezado/Emisor/Sucursal"/>
</string>
</xsl:when>
<xsl:otherwise>
<null key="codEstable"/>
</xsl:otherwise>
</xsl:choose>
<xsl:choose>
<xsl:when test="Documento/Encabezado/Emisor/CdgVendedor != ''">
<string key="codPuntoVentaMH">
<xsl:value-of select="Documento/Encabezado/Emisor/CdgVendedor"/>
</string>
</xsl:when>
<xsl:otherwise>
<null key="codPuntoVentaMH"/>
</xsl:otherwise>
</xsl:choose>
<xsl:choose>
<xsl:when test="Documento/Encabezado/Emisor/ExtraInfoEmisor[@name = 'codPuntoVenta'] != ''">
<string key="codPuntoVenta">
<xsl:value-of select="Documento/Encabezado/Emisor/ExtraInfoEmisor[@name = 'codPuntoVenta']"/>
</string>
</xsl:when>
<xsl:otherwise>
<null key="codPuntoVenta"/>
</xsl:otherwise>
</xsl:choose>
<string key="telefono">
<xsl:value-of select="Documento/Encabezado/Emisor/ContactoEmisor/Telefono"/>
</string>
<string key="correo">
<xsl:value-of select="Documento/Encabezado/Emisor/ContactoEmisor/eMail"/>
</string>
</map>
<map key="documento">
<string key="tipoDte">
<xsl:value-of select="Documento/Referencia/TpoDocRef"/>
</string>
<string key="codigoGeneracion">
<xsl:value-of select="Documento/Referencia/NumeroRef"/>
</string>
<string key="selloRecibido">
<xsl:value-of select="Documento/Referencia/ECB01"/>
</string>
<string key="numeroControl">
<xsl:value-of select="Documento/Referencia/ECB02"/>
</string>
<string key="fecEmi">
<xsl:value-of select="substring(Documento/Referencia/FechaRef, 1, 10)"/>
</string>
<number key="montoIva">
<xsl:value-of select="Documento/Referencia/MontosRef/Monto"/>
</number>
<xsl:choose>
<xsl:when test="string-length(Documento/Referencia/ECB03) gt 0">
<string key="codigoGeneracionR">
<xsl:value-of select="Documento/Referencia/ECB03"/>
</string>
</xsl:when>
<xsl:otherwise>
<null key="codigoGeneracionR"/>
</xsl:otherwise>
</xsl:choose>
<string key="tipoDocumento">
<xsl:value-of select="Documento/Encabezado/Receptor/DocRecep/TipoDocRecep"/>
</string>
<string key="numDocumento">
<xsl:value-of select="Documento/Encabezado/Receptor/DocRecep/NroDocRecep"/>
</string>
<string key="nombre">
<xsl:value-of select="Documento/Encabezado/Receptor/NmbRecep"/>
</string>
<string key="telefono">
<xsl:value-of select="Documento/Encabezado/Receptor/ContactoReceptor/Telefono"/>
</string>
<string key="correo">
<xsl:value-of select="Documento/Encabezado/Receptor/ContactoReceptor/eMail"/>
</string>
</map>
<map key="motivo">
<number key="tipoAnulacion">
<xsl:value-of select="Documento/Referencia/ECB04"/>
</number>
<string key="motivoAnulacion">
<xsl:value-of select="Documento/Referencia/ECB05"/>
</string>
<string key="nombreResponsable">
<xsl:value-of select="Documento/Referencia/ECB06"/>
</string>
<string key="tipDocResponsable">
<xsl:value-of select="Documento/Referencia/ECB07"/>
</string>
<string key="numDocResponsable">
<xsl:value-of select="Documento/Referencia/ECB08"/>
</string>
<string key="nombreSolicita">
<xsl:value-of select="Documento/Referencia/ECB09"/>
</string>
<string key="tipDocSolicita">
<xsl:value-of select="Documento/Referencia/ECB10"/>
</string>
<string key="numDocSolicita">
<xsl:value-of select="Documento/Referencia/ECB11"/>
</string>
</map>
</map>
</xsl:when>
<xsl:when test="Documento/Encabezado/IdDoc/Tipo = 'CTG'">
<map>
<map key="identificacion">
<number key="version">
<xsl:choose>
<xsl:when test="Documento/Encabezado/IdDoc/Tipo = 'CTG'">
<xsl:value-of select="3"/>
</xsl:when>
</xsl:choose>
</number>
<string key="ambiente">
<xsl:value-of select="Documento/Encabezado/IdDoc/Ambiente"/>
</string>
<string key="codigoGeneracion">
<xsl:choose>
<xsl:when test="Documento/Encabezado/IdDoc/ContenidoTC">
<xsl:value-of select="normalize-space(Documento/Encabezado/IdDoc/ContenidoTC)"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="upper-case($uuid)"/>
</xsl:otherwise>
</xsl:choose>
</string>
<string key="fTransmision">
<xsl:value-of select="substring(Documento/Encabezado/IdDoc/FechaEmis, 1, 10)"/>
</string>
<string key="hTransmision">
<xsl:value-of select="substring(Documento/Encabezado/IdDoc/FechaEmis, 12, 8)"/>
</string>
</map>
<map key="emisor">
<string key="nit">
<xsl:value-of select="Documento/Encabezado/Emisor/IDEmisor"/>
</string>
<string key="nombre">
<xsl:value-of select="Documento/Encabezado/Emisor/NmbEmisor"/>
</string>
<string key="tipoEstablecimiento">
<xsl:value-of select="Documento/Encabezado/Emisor/TipoSucursal"/>
</string>
<xsl:choose>
<xsl:when test="Documento/Encabezado/Emisor/CdgSucursal != ''">
<string key="codEstableMH">
<xsl:value-of select="Documento/Encabezado/Emisor/CdgSucursal"/>
</string>
</xsl:when>
<xsl:otherwise>
<null key="codEstableMH"/>
</xsl:otherwise>
</xsl:choose>
<string key="nombreResponsable">
<xsl:value-of select="Documento/Encabezado/Emisor/ContactoEmisor/Nombre"/>
</string>
<string key="correo">
<xsl:value-of select="Documento/Encabezado/Emisor/ContactoEmisor/eMail"/>
</string>
<string key="telefono">
<xsl:value-of select="Documento/Encabezado/Emisor/ContactoEmisor/Telefono"/>
</string>
<xsl:choose>
<xsl:when test="Documento/Encabezado/Emisor/ExtraInfoEmisor[@name = 'codPuntoVenta'] != ''">
<string key="codPuntoVenta">
<xsl:value-of select="Documento/Encabezado/Emisor/ExtraInfoEmisor[@name = 'codPuntoVenta']"/>
</string>
</xsl:when>
<xsl:otherwise>
<null key="codPuntoVenta"/>
</xsl:otherwise>
</xsl:choose>
<string key="tipoDocResponsable">
<xsl:value-of select="Documento/Encabezado/Emisor/ExtraInfoEmisor[@name = 'tipoDocResponsable']"/>
</string>
<string key="numeroDocResponsable">
<xsl:value-of select="Documento/Encabezado/Emisor/ExtraInfoEmisor[@name = 'numeroDocResponsable']"/>
</string>
</map>
<array key="detalleDTE">
<xsl:for-each select="Documento/Referencia">
<map>
<number key="noItem">
<xsl:value-of select="position()"/>
</number>
<string key="tipoDoc">
<xsl:value-of select="TpoDocRef"/>
</string>
<string key="codigoGeneracion">
<xsl:value-of select="NumeroRef"/>
</string>
</map>
</xsl:for-each>
</array>
<map key="motivo">
<string key="fInicio">
<xsl:value-of select="Documento/Referencia/ECB01"/>
</string>
<string key="fFin">
<xsl:value-of select="Documento/Referencia/ECB02"/>
</string>
<string key="hInicio">
<xsl:value-of select="Documento/Referencia/ECB03"/>
</string>
<string key="hFin">
<xsl:value-of select="Documento/Referencia/ECB04"/>
</string>
<number key="tipoContingencia">
<xsl:value-of select="Documento/Referencia/ECB05"/>
</number>
<string key="motivoContingencia">
<xsl:value-of select="Documento/Referencia/ECB05"/>
</string>
</map>
</map>
</xsl:when>
<xsl:otherwise>
<!-- ... Contenido completo del XSLT con más de 4000 líneas ... -->
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:value-of select="xml-to-json($xml)"/>
</xsl:template>
<xsl:template name="UseGC">
<xsl:param name="Code"/>
<xsl:value-of select="normalize-space(document('https://globallistgc.blob.core.windows.net/globallistgc/listas/pais/sv/gc/v1/ActividadEconomica-SV.gc')/*//Row[Value/SimpleValue = $Code][1]/Value[2]/SimpleValue/text())"/>
</xsl:template>
</xsl:stylesheet>

Nota: Este XSLT transforma documentos DTE (formato GoSocket) a JSON para consumo de la DGI de El Salvador. El archivo completo contiene más de 4000 líneas con soporte completo para todos los tipos de documentos electrónicos (01-15, INV, CTG), incluyendo:

  • Anulaciones (INV): Gestión de anulaciones con motivos y responsables
  • Contingencias (CTG): Transmisión de lotes de documentos emitidos durante contingencias
  • Facturas (01, 03, 04, 05, 06): Con soporte completo para IVA, percepciones, retenciones
  • Comprobantes de retención (07): Cálculo de retenciones de IVA
  • Comprobantes de liquidación (08, 09): Gestión de percepciones y comisiones
  • Facturas de exportación (11): Con Incoterms, países destino, compradores terceros
  • Sujetos excluidos (14): Contribuyentes sin obligación de IVA
  • Comprobantes de donación (15): Donatarios y valoraciones

El XSLT incluye consulta dinámica al catálogo oficial de actividades económicas de El Salvador vía URL: https://globallistgc.blob.core.windows.net/globallistgc/listas/pais/sv/gc/v1/ActividadEconomica-SV.gc

Versión original: Eric Van Boxsom 0.0.8 (26-04-2023)
Última actualización: Ricardo Carretero (07-01-2026) - Nodo compraTercero para factura exportación

Salida:

XML Formato Oficial DGI
CódigoDescripción
200Documento Aprobado
4XXError validación
5XXError sistema

Paso 7 – Registro en Inbox

Independiente del resultado:

Se registra en:

Portal Inbox GoSocket

Datos almacenados:

  • XML original
  • XML DTE
  • XML DGI
  • Estado
  • Fecha envío
  • Código generación
  • Sello recepción

Paso 8 – Webhook de Notificación

Los end points para la notificación están sectorizados por tipo de documento y por ambiente según el siguiente cuadro:

FlowDescriptionDocument TypeEndpoints
AR 📤Accounts ReceivableAll, except 07 & 14DEV
300
AP 📥Accounts PayableOnly 07DEV
300
AP 📥Accounts PayableOnly 14DEV
300

Método:

POST

Payload ejemplo:

{"BusinessUnit":"SVBES","InvoiceID":"300019211990748","InvoiceNumber":"03-M001P001-00000040","Attribute1":"2","Attribute2":"2026E0F0B5B2B3314E79A11582898879A354J6HY","Attribute3":"RECIBIDO","Attribute4":"2026-02-18 08:41:07","Attribute5":"3D00A159-EE5A-43F5-AF03-E011A7620AF9","Attribute6":"","Attribute7":"","Attribute8":"","Attribute9":"","Attribute10":"","Attribute11":"","Attribute12":"","Attribute13":"","Attribute14":"","Attribute15":""}

Seguridad:

[Token validación]
[IP whitelist]
[Certificado SSL]

Paso 9 – Actualización en Oracle ERP

Oracle:

  • Consume webhook.
  • Actualiza estado del documento.
  • Marca como:AprobadoRechazadoError técnico

2. Componentes Técnicos

  • Oracle ERP
  • File Storage (Carpeta XML origen)
  • Servicio Extractor Canónico (GoSocket)
  • Motor de Transformación XSLT #1 (Oracle XML → DTE GoSocket)
  • API de Recepción DTE GoSocket
  • Motor de Transformación XSLT #2 (DTE → XML DGI)
  • API de Envío DGI
  • Portal Inbox GoSocket
  • API Webhook de Notificación
  • Listener / Endpoint Oracle ERP

3. Requisitos técnicos

Infraestructura

  • Servidor Oracle accesible.
  • Conectividad HTTPS.
  • Firewall configurado.

Seguridad

  • Certificado digital tributario.
  • Encriptación TLS 1.2 o superior.
  • Firma digital del DTE.

Performance

  • Frecuencia trigger configurable.
  • Soporte para procesamiento masivo.
  • Logs centralizados.

4. Manejo de errores

Errores posibles

  1. Error de transformación XSLT
  2. Error validación DTE
  3. Error comunicación API
  4. Error DGI
  5. Timeout
  6. Webhook no recibido

Se recomienda:

  • Retry automático configurable
  • Logs auditables
  • Monitoreo activo

5. Consideraciones finales

Arquitectura asincrónica.

  • Procesamiento desacoplado.
  • Alta trazabilidad.
  • Cumplimiento regulatorio garantizado.
  • Escalable a otros países con modificación de XSLT.