Ir al contenido

Integraciones Sigero - Business Central

Flujos de Inserción vía Service Bus + Logic Apps

Sección titulada «Flujos de Inserción vía Service Bus + Logic Apps»

Garantía de Entrega Asíncrona: Sigero depositará las transacciones en colas de mensajería independientes de la disponibilidad inmediata de Business Central. Esto asegura que la operación nunca se pierda por saturación del ERP.

Confirmación de Recepción en Cola: El servicio de mensajería emitirá un acuse de recibo inmediato cada vez que una inserción sea depositada correctamente en la cola. Esta notificación actúa como una garantía de persistencia, permitiendo que el sistema externo confirme el envío y libere la transacción.

Identificación Única de Mensajes y Trazabilidad: Cada mensaje depositado en la cola recibirá un identificador único global generado por la infraestructura de mensajería. Este ID servirá como la referencia de seguimiento compartida entre ambos sistemas, permitiendo realizar consultas posteriores sobre el estado de la integración (En espera, Procesado o Fallido).

Gestión de Bloqueos y Resiliencia: Ante bloqueos temporales de tablas en Business Central, la lógica de integración aplicará ciclos de reintento automático con tiempos de espera exponenciales. El proceso solo se dará por fallido tras agotar los intentos configurados, protegiendo la continuidad operativa.

Aislamiento y Trazabilidad de Errores: Aquellas transacciones que contengan errores lógicos o de datos serán desviadas a una cola de mensajes fallidos para su inspección. Esto permite que el resto del flujo continúe operando sin interrupciones.

La interacción con el bus de servicio debe realizarse obligatoriamente a través del SDK oficial de Azure, descartando el uso de llamadas REST genéricas.

  • Se recibe una solicitud desde Service Bus.
  • Si la recepción se procesa correctamente se envía una respuesta 201 al remitente.
  • En paralelo los datos recibidos son procesados por la lógica del flujo en Logic App para derivarlo a Business Central. Cada proceso tiene definida una cola para evitar que los mensajes se solapen o un flujo elevado afecte una única cola.

Es un mecanismo que envía una notificación HTTP automática a una URL cada vez que ocurre un cambio (Crear, Modificar o Eliminar) en una tabla de Business Central. Business Central avisa proactivamente al ecosistema en el segundo exacto en que se crea o modifica un registro, eliminando la necesidad de consultas constantes (polling) que ralentizan el ERP.

Entidades a utilizar

  • Artículos.
  • Unidades de Medida.
  • Clientes.
  • Proveedores.
  • Almacenes.
  • Transportistas.
  • Códigos de motivo.

Notificación de Eventos en Business Central: En el momento en que se produzca una creación o modificación en Business Central, el Webhook disparará una notificación hacia Sigero. Vinculación de Identidades (ID Único): Todo registro guardado en Sigero (Clientes, Artículos, Proveedores, etc.) debe contener obligatoriamente el ID del registro original de Business Central (SystemId/GUID) Suscripción por Entidad: Se configurará un Webhook independiente por cada entidad maestra (por compañía y ambiente). Renovación de suscripción: El sistema debe enviar una petición a la API de suscripciones de Business Central para actualizar la fecha y hora de expiración de cada Webhook activo. Gestión de Seguridad: Sigero debe validar el token o Client State incluido en el Webhook para confirmar que la petición proviene exclusivamente de nuestra instancia de Business Central.

Complementando la arquitectura de eventos, habilitaremos el consumo manual de datos a través de las APIs estándar de Business Central (v2.0). El acceso está protegido mediante el protocolo de autorización moderno de Microsoft, garantizando que solo aplicaciones registradas en Azure AD puedan consumir los datos.

Herramientas de Consumo: El acceso podrá realizarse mediante herramientas de prueba de APIs (como Postman), scripts de administración o desde la propia interfaz de consulta de Sigero, siempre bajo intervención humana. Autenticación Individual: Cada consulta debe estar respaldada por un token de acceso seguro (OAuth 2.0), asegurando que solo personal autorizado pueda “leer” los datos del ERP. Restricción de Operaciones: Por seguridad, el acceso manual vía API se configurará preferentemente en modo “Solo Lectura” (GET) para las entidades maestras. Cualquier inserción de datos deberá seguir el canal oficial del Service Bus para mantener la trazabilidad.

Configuración de credenciales de Business Central

Sección titulada «Configuración de credenciales de Business Central»

Antes de poder utilizar las APIs, Webhooks e integrar aplicaciones externas con Business Central, es fundamental contar con las credenciales de acceso necesarias.

  1. URL del ambiente de Business Central
  2. Credenciales OAuth 2.0
    • Client ID (Aplicación ID): Identificador de la aplicación registrada
    • Client Secret: Clave secreta de la aplicación.
  3. Credenciales de Azure AD
    • Shared Access Signature (SAS) o certificado para autenticación segura.
  4. Permisos y alcances (Scopes)

Para facilitar la integración y pruebas de los Webhook de Business Central, está disponible un espacio de trabajo en Postman. Esto permite interactuar con la API sin necesidad de desarrollar código de cliente de manera inmediata.

Antes de trabajar con cualquier entidad en Business Central, es necesario conocer el Company ID de la compañía con la que se desea interactuar. Este es un paso fundamental ya que todas las operaciones posteriores requieren este identificador.

GET
https://api.businesscentral.dynamics.com/v2.0/{tenantId}/{environmentName}/api/v2.0/companies
Content-Type: application/json
Authorization: Bearer {access_token}
{
"@odata.context": "{{https://api.businesscentral.dynamics.com/v2.0/{tenantId}/{environmentName}/api/v2.0/$metadata#companies}}",
"value": [
{
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"systemVersion": "25000",
"timestamp": 45887,
"name": "CRONUS",
"displayName": "CRONUS International Ltd.",
"businessProfileId": "",
"systemCreatedAt": "2023-01-15T10:30:00Z",
"systemCreatedBy": "a25fcdd5-5d7d-4986-b6da-2e09aa08c17f",
"systemModifiedAt": "2024-06-20T14:45:00Z",
"systemModifiedBy": "a25fcdd5-5d7d-4986-b6da-2e09aa08c17f",
},
{
"id": "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy",
"systemVersion": "25000",
"timestamp": 45887,
"name": "CRONUS",
"displayName": "Mi Empresa S.A.",
"businessProfileId": "",
"systemCreatedAt": "2023-01-15T10:30:00Z",
"systemCreatedBy": "a25fcdd5-5d7d-4986-b6da-2e09aa08c17f",
"systemModifiedAt": "2024-06-20T14:45:00Z",
"systemModifiedBy": "a25fcdd5-5d7d-4986-b6da-2e09aa08c17f",
}
]
}

Campos de la respuesta

Nombre Tipo de dato Descripción
@odata.context La URL que define el esquema y el origen de los datos
id Guid ID único de la compañia
systemVersion Integer Versión del sistema
timestamp Integer segundos del sistema
name Text[30] Nombre interno de la compañía.
displayName Text[250] Nombre para mostrar de la compañía.
businessProfileId Guid ID del perfil de negocio (si aplica).
systemCreatedAt Datetime Fecha de creación de la compañía en el sistema.
systemCreatedBy Guid ID del usuario cuando se creó
systemModifiedBy Guid ID del usuario cuando se modificó.
systemModifiedAt Datetime Fecha de última modificación.

Para interactuar con una API de Business Central, normalmente sigues estos pasos:

Configuración en Azure: Debes registrar una aplicación en el portal de Azure para obtener un Client ID y un Secret. • Identificar el Endpoint:

Business Central utiliza un sistema de cuotas basado en el tiempo. Si se exceden, la API devolverá un error HTTP 429 (Demasiadas Solicitudes).

ConceptoLímite (SaaS) Solicitudes Concurrentes
Máximo solicitudes simultaneas 100 solicitudes simultáneas por entorno.
Solicitudes por Minuto Máximo 6,000 por minuto.

Business Central puede un máximo de 20,000 registros por petición. Si tu consulta supera ese número, Business Central cortará la respuesta.

Al realizar consultas directas vía API, el sistema emisor es el responsable único de gestionar la saturación del ERP. Para prevenir errores 429 (Demasiadas Solicitudes), el cliente debe implementar una cola local de reintentos que respete el encabezado Retry-After de Business Central. Esta propiedad indica el tiempo recomendado que el cliente debe esperar antes de volver a intentar la solicitud.

Por defecto, si llamas a un endpoint como /customers, Business central te devuelve todos los campos (nombre, dirección, saldo, correos, etc.). Si solo quieres el nombre y el saldo, añades el parámetro a la URL:

.../api/v2.0/companies(id)/customers?$select=number,displayName,balance

deben escribirse exactamente como aparecen en la definición de la API. Usa comas para separar los campos, sin espacios.

es una propiedad de control que contiene una URL de continuación. Representa un curso de estado en el servidor que permite al cliente recuperar el siguiente subconjunto de resultados (página) de una consulta masiva. Se genera automáticamente cuando el volumen de datos excede el límite de registros por respuesta.

Ejemplo de Petición

GET
https://api.businesscentral.dynamics.com/v2.0/.../items?$select=number,displayName&$top=2

Ejemplo de JSON de Respuesta

{
"@odata.context":"https://api.businesscentral.dynamics.com/v2.0/.../$metadata#items(number,displayName)",
"value": [
{
"@odata.etag": "W/\"JzQ0OzE2MTI5ODc1NDI2MzI0ODExOzAwOyc=\"",
"number": "1896-S",
"displayName": "Escritorio ATHENS"
},
{
"@odata.etag": "W/\"JzQ0OzE5MDU2ODc1NDI2MzI0ODExOzAwOyc=\"",
"number": "1900-S",
"displayName": "Silla PARIS"
}
],
"@odata.nextLink": "https://api.businesscentral.dynamics.com/v2.0/.../items?$select=number,displayName&$skiptoken=X'08100000005349500000'"
}

Define el límite superior de registros que el servidor debe retornar en el cuerpo de la respuesta.

ejemplo: Obtener los primeros 5 registros de los artículos.

/items?$top=5

Se utiliza para omitir un número específico de registros de una colección antes de devolver los resultados restantes. Es el complemento directo de $top y es fundamental para implementar la lógica de paginación

GET .../items?$top=10&$skip=0
GET .../items?$top=10&$skip=10

Especifica los criterios de clasificación de los recursos de una colección. Si no se incluye, Business Central devuelve los datos basándose en la Clave Primaria (Primary Key) de la tabla por defecto.

GET .../salesOrders?$orderby=orderDate desc, customerName asc

Los Webhooks son mecanismos de comunicación que permiten la integración en tiempo real entre Business Central y aplicaciones externas.

Para implementar Webhooks con Business Central, es necesario seguir un proceso de configuración que incluye la creación del endpoint y la suscripción a eventos. Pasos para la configuración:

  1. Creación de la Suscripción mediante API
POST
https://api.businesscentral.dynamics.com/v2.0/{tenantId}/{environmentName}/api/v2.0/subscriptions
Content-Type: application/json
Authorization: Bearer {access_token}
body: {
"notificationUrl": "https://tu-servidor.com/webhook/endpoint",
"resource": "companies(companyid) /purchaseOrders",
"clientState": "OptionalSecretToken123",
}

Parámetros de la suscripción:

  • notificationUrl: URL de tu endpoint que recibirá las notificaciones.
  • resource: Entidad a la que te suscribes. Ejemplo:
    • companies(companyId)/purchaseOrders - Órdenes de compra.
  • clientState: Token secreto opcional para validar que las notificaciones vienen de BC.

Respuesta esperada (JSON)

{
"@odata.context": "https://api.businesscentral.dynamics.com/v2.0/30eb258d-51a4-4f58-9c88-bf72d4d3325a/TEST/api/v2.0/$metadata#subscriptions/$entity",
"@odata.etag": "W/\"JzE5Ozg3OTQ1NDA5NjgxOTE4MzYyOTMxOzAwOyc=\"",
"subscriptionId": "a10b670ba93149c98c89fa574762ab2b",
"notificationUrl": "https://funcionesdesarrollovog-b7aaazc5dmgzctbx.canadacentral-01.azurewebsites.net/api/FunctionHttpTrigger?code=C2u",
"resource": "api/v2.0/companies(9c2a3721-0c80-ef11-ac21-0022483842ea)/customers",
"timestamp": 6465970,
"userId": "79d10a1b-ea16-483b-964d-5d547971cf47",
"lastModifiedDateTime": "2026-02-05T18:37:57Z",
"clientState": "optionalValueOf2048",
"expirationDateTime": "2026-02-08T18:37:57Z",
"systemCreatedAt": "2026-02-05T18:38:01.4Z",
"systemCreatedBy": "79d10a1b-ea16-483b-964d-5d547971cf47",
"systemModifiedAt": "2026-02-05T18:38:01.4Z",
"systemModifiedBy": "79d10a1b-ea16-483b-964d-5d547971cf47"
}

Campos de la respuesta

Nombre Tipo de dato Descripción
@odata.context String (URL) La URL que define el esquema y el origen de los datos.
@odata.etag String Identificador de versión del registro para el control de concurrencia optimista.
subscriptionId GUID Identificador único de la suscripción de Webhook creada.
notificationUrl Text[250] Dirección URL donde Business Central enviará las notificaciones.
resource Text[250] Ruta de la API que define el recurso monitoreado.
timestamp bigint Número interno de control de versiones de la base de datos SQL.
userId GUID Identificador único del usuario de Business Central que originó la suscripción.
lastModifiedDateTime DateTime Fecha y hora de la última modificación de los parámetros de suscripción.
clientState Text[250] Secreto compartido para validar la autenticidad de las notificaciones.
expirationDateTime DateTime Fecha y hora exacta en la que el Webhook dejará de estar activo.
systemCreatedAt DateTime Marca de tiempo exacta de la creación del registro en el sistema.
systemCreatedBy GUID Identificador del usuario o servicio que creó el registro.
systemModifiedAt DateTime Marca de tiempo de la última modificación registrada por el sistema.
systemModifiedBy DateTime Identificador del usuario o servicio que realizó la última modificación en el sistema.

Las suscripciones expiran máximo en 3 días, por lo que debes renovarlas periódicamente. Para renovar, debes enviar una solicitud PATCH al endpoint de la suscripción específica. No es necesario esperar a que venza; puedes hacerlo de forma proactiva.

PATCH
https://api.businesscentral.dynamics.com/v2.0/{tenantId}/{environmentName}/api/v2.0/subscriptions({subscriptionId})
Content-Type: application/json
If-Match: @odata.etag (o el ETag específico de la suscripción)
Authorization: Bearer {access_token}

Respuesta esperada (JSON)

{
"@odata.context": "https://api.businesscentral.dynamics.com/v2.0/30eb258d-51a4-4f58-9c88-bf72d4d3325a/TEST/api/v2.0/$metadata#subscriptions/$entity",
"@odata.etag": "W/\"JzE5Ozg3NjQ5MTcyMDMyMDAwODMwNjcxOzAwOyc=\"",
"subscriptionId": "a10b670ba93149c98c89fa574762ab2b",
"notificationUrl": "https://funcionesdesarrollovog-b7aaazc5dmgzctbx.canadacentral-01.azurewebsites.net/api/FunctionHttpTrigger?code=",
"resource": "api/v2.0/companies(9c2a3721-0c80-ef11-ac21-0022483842ea)/customers",
"timestamp": 6466168,
"userId": "79d10a1b-ea16-483b-964d-5d547971cf47",
"lastModifiedDateTime": "2026-02-05T19:09:46Z",
"clientState": "optionalValueOf2048",
"expirationDateTime": "2026-02-08T19:09:46Z",
"systemCreatedAt": "2026-02-05T18:38:01.4Z",
"systemCreatedBy": "79d10a1b-ea16-483b-964d-5d547971cf47",
"systemModifiedAt": "2026-02-05T19:09:48.653Z",
"systemModifiedBy": "79d10a1b-ea16-483b-964d-5d547971cf47"
}

Campos de la respuesta

Nombre Tipo de dato Descripción
@odata.context String (URL) URL que define el esquema y el origen de los datos.
@odata.etag String Identificador de versión del registro para control de concurrencia optimista (usar en If-Match).
subscriptionId GUID Identificador único de la suscripción de Webhook.
notificationUrl String (URL) Dirección URL donde Business Central enviará las notificaciones.
resource String Ruta de la API que define el recurso monitoreado.
timestamp BigInt / Integer Valor interno de control de versiones de la base de datos.
userId GUID Identificador del usuario que creó o autorizó la suscripción.
lastModifiedDateTime DateTime Fecha y hora de la última modificación de la suscripción.
clientState String Secreto compartido definido por el cliente para validar notificaciones.
expirationDateTime DateTime Fecha y hora en la que la suscripción expirará.
systemCreatedAt DateTime Marca temporal de creación del registro en el sistema.
systemCreatedBy GUID Identificador del usuario o servicio que creó el registro.
systemModifiedAt DateTime Marca temporal de la última modificación técnica registrada.
systemModifiedBy GUID Identificador del usuario o servicio que realizó la última modificación.

Para listar las suscripciones activas en el entorno de Business Central realiza una petición GET al recurso de subscriptions.

GET {{https://api.businesscentral.dynamics.com/v2.0/{tenantId}/{environmentName}/api/v2.0/subscriptions}}
Authorization: Bearer {access_token}

Respuesta esperada (JSON)

{
"@odata.context": "https://api.businesscentral.dynamics.com/v2.0/30eb258d-51a4-4f58-9c88-bf72d4d3325a/TEST/api/v2.0/$metadata#subscriptions",
"value": [
{
"@odata.etag": "W/\"JzE5Ozg3NjQ5MTcyMDMyMDAwODMwNjcxOzAwOyc=\"",
"subscriptionId": "a10b670ba93149c98c89fa574762ab2b",
"notificationUrl": "https://funcionesdesarrollovog-b7aaazc5dmgzctbx.canadacentral-01.azurewebsites.net/api/FunctionHttpTrigger?code=",
"resource": "api/v2.0/companies(9c2a3721-0c80-ef11-ac21-0022483842ea)/customers",
"timestamp": 6466168,
"userId": "79d10a1b-ea16-483b-964d-5d547971cf47",
"lastModifiedDateTime": "2026-02-05T19:09:46Z",
"clientState": "optionalValueOf2048",
"expirationDateTime": "2026-02-08T19:09:46Z",
"systemCreatedAt": "2026-02-05T18:38:01.4Z",
"systemCreatedBy": "79d10a1b-ea16-483b-964d-5d547971cf47",
"systemModifiedAt": "2026-02-05T19:09:48.653Z",
"systemModifiedBy": "79d10a1b-ea16-483b-964d-5d547971cf47"
}
]
}

Campos de la respuesta

Nombre Tipo de dato Descripción
@odata.context String (URL) Indica el origen de los metadatos y el esquema de la respuesta.
value Array Contenedor con las suscripciones encontradas.
@odata.etag String Sello de versión del registro; usar para If-Match en actualizaciones.
subscriptionId GUID Identificador único de la suscripción (usado para PATCH/DELETE).
notificationUrl String (URL) URL que recibirá las notificaciones de cambios.
resource String Entidad o ruta de la API que se está monitoreando.
timestamp BigInt / Integer Valor interno de control de versiones en la base de datos.
userId GUID ID del usuario que creó o autorizó la suscripción.
lastModifiedDateTime DateTime Fecha y hora de la última modificación de la suscripción.
clientState String Valor secreto definido por el cliente para validar notificaciones.
expirationDateTime DateTime Fecha y hora en la que la suscripción expirará.
systemCreatedAt DateTime Marca temporal de creación del registro en el sistema.
systemCreatedBy GUID Identificador del usuario o servicio que creó el registro.
systemModifiedAt DateTime Marca temporal de la última modificación técnica registrada.
systemModifiedBy GUID Identificador del usuario o servicio que realizó la última modificación.

Para eliminar la suscripción que tienes activa, debes realizar una petición DELETE apuntando específicamente al subscriptionId que tienes en tu JSON.

DELETE
https://api.businesscentral.dynamics.com/v2.0/{tenantId}/{environmentName}/api/v2.0/subscriptions({subscriptionId})
Authorization: Bearer {access_token}
Content-Type: application/json
If-Match: @odata.etag (o el ETag específico de la suscripción)

Cuando lanzas el DELETE con éxito, la respuesta de Business Central no contiene texto, solo un código de estado:

  • Código HTTP: 204 No Content
  • Significado: La operación se realizó correctamente y la suscripción ha sido borrada permanentemente. No hay cuerpo (body) en la respuesta porque el recurso ya no existe.

Cada notificación enviada al suscriptor (notificationUrl) puede contener múltiples notificaciones de diferentes suscripciones. Aquí tienes un ejemplo de carga útil de notificación:

{
"value": [
{
"subscriptionId": "webhookItemsId",
"clientState": "someClientState",
"expirationDateTime": "2018-10-29T07:52:31Z",
"resource": "api/v2.0/companies(b18aed47-c385-49d2-b954-dbdf8ad71780)/items(26814998-936a-401c-81c1-0e848a64971d)",
"changeType": "updated",
"lastModifiedDateTime": "2018-10-26T12:54:20.467Z"
},
{
"subscriptionId": "webhookCustomersId",
"clientState": "someClientState",
"expirationDateTime": "2018-10-29T12:50:30Z",
"resource": "api/v2.0/companies(b18aed47-c385-49d2-b954-dbdf8ad71780)/customers(130bbd17-dbb9-4790-9b12-2b0e9c9d22c3)",
"changeType": "created",
"lastModifiedDateTime": "2018-10-26T12:54:26.057Z"
},
{
"subscriptionId": "webhookCustomersId",
"clientState": "someClientState",
"expirationDateTime": "2018-10-29T12:50:30Z",
"resource": "api/v2.0/companies(b18aed47-c385-49d2-b954-dbdf8ad71780)/customers(4b4f31f0-dc1c-4033-b2aa-ab03ca1d6ebc)",
"changeType": "deleted",
"lastModifiedDateTime": "2018-10-26T12:54:30.503Z"
},
{
"subscriptionId": "salesInvoice",
"clientState": "someClientState",
"expirationDateTime": "2018-10-20T10:55:01Z",
"resource": "/api/v2.0/companies(7dbba574-5f69-4167-a43e-fb975045de15)/salesInvoices?$filter=lastDateTimeModified%20gt%202018-10-15T11:00:00Z",
"changeType": "collection",
"lastModifiedDateTime": "2018-10-26T12:54:30.503Z"
}
]
}

El parámetro “changeType” indica el tipo de cambio:

  • Created: Se creo un nuevo registro
  • Updated: Se modifico el registro.
  • Deleted: Se elimino el registro.
  • Collection: Significa que Business Central envía una notificación de que se han creado o cambiado muchos registros. Se aplica un filtro al recurso, lo que permite al suscriptor solicitar a todas las entidades que cumplan con el filtro.
{
"type": 1,
"code": "2232326E3",
"DocumentNo": "C-PDA0000258",
"sessionID": 0,
"locationCode":"ALMACEN 1",
"destinationLocation": "",
"shippingAgentCode": "CDGD",
"shippingVehicleCode": "PRUEBA",
"originalDatetime": "2026-07-17T14:20:00Z",
"ticketsLines":[
{
"itemNo": "1000",
"unitMeasure":"PCS",
"reasonCode": "PRUEBA",
"locationCode": "EAST",
"DestinationLocation":"",
"quantity": 1,
"netWeight": 56.9,
"tareWeight": 0,
"totalCost": 123.56,
"originCompany": "",
"DestinationCompany": "",
"lots":[
{
"lot": "gdgdgdg",
"quantity": 2
},
{
"lot": "gdgdgdgdsd",
"quantity": 3
}
]
},
{
"itemNo": "1000",
"unitMeasure":"PCS",
"quantity": 1,
"locationCode": "EAST",
"destinationLocation":"",
"reasonCode": "PRUEBA",
"netWeight": 56.9,
"totalCost": 123.56,
"originCompany": "",
"destinationCompany": ""
}
]
}
Campo Tipo de dato Descripción
type Integer Tipo de movimiento.
code Text[255] Código único del ticket.
sessionID Integer Identificador del lote de produccion.
locationCode Text[20] Código del almacén de origen.
destinationLocation Text[20] Código del almacén de destino.
shippingAgentCode Text[10] Código del transportista.
shippingVehicleCode Text[15] Código del vehículo de transporte.
originalDatetime DateTime Fecha y hora original del ticket.
Campo Tipo de dato Descripción
itemNo Text[20] Número de artículo.
unitMeasure Text[10] Unidad de medida del artículo.
reasonCode Text[50] Código de razón para el movimiento.
locationCode Text[20] Código del almacén de origen para la línea.
destinationLocation Text[20] Código del almacén de destino para la línea.
quantity Decimal Cantidad de artículos en la línea.
newWeight Decimal Peso neto de los artículos en la línea.
tareWeight Decimal Peso tara de los artículos en la línea.
totalCost Decimal Costo total de los artículos en la línea.
originCompany Text[30] Código de la compañía de origen para la línea.
destinationCompany Text[30] Código de la compañía de destino para la línea.
  1. Transferencia
  2. Recepción de compra
  3. Transferencia entrante
  4. Despacho de venta
  5. Transferencia intercompañia
  6. Entrada - Prestamo recibidos
  7. Salida - Prestamo recibidos
  8. Devolución de ventas
  9. Recibo de producción
  10. Registro de merma

Para la integración de tickets, se dividirán los procesos por tipo de movimiento; para cada uno se tendrá un endpoint específico que será consumido por el sistema externo.

Los tipos de movimiento son los siguientes:

Las transferencias simples o en tránsito son aquellas que se realizan entre almacenes de la misma compañía, sin involucrar a terceros. Este tipo de movimiento permite trasladar inventario de un lugar a otro dentro de la misma organización.

Campo Tipo de dato Descripción
type Integer Tipo de movimiento. Debe ser 1 para transferencias simples.
code Text[255] Código único del ticket.
locationCode Text[20] Código del almacén de origen.
destinationLocation Text[20] Código del almacén de destino. (opcional)
shippingAgentCode Text[10] Código del transportista
shippingVehicleCode Text[15] Código del vehículo de transporte
originalDatetime DateTime Fecha y hora original del ticket. (opcional)
Campo Tipo de dato Descripción
itemNo Text[20] Número de artículo.
unitMeasure Text[10] Unidad de medida del artículo.
reasonCode Text[50] Código de razón para el movimiento. (opcional)
locationCode Text[20] Código del almacén de origen para la línea.
quantity Decimal Cantidad de artículos en la línea.
newWeight Decimal Peso neto de los artículos en la línea.
tareWeight Decimal Peso tara de los artículos en la línea. (opcional)
POST
https://devnamespacevog.servicebus.windows.net
Header{
Content-Type: application/json
Authorization: Bearer {SharedAccessSignature}
companyID: {companyID} // Id de la compañía en Business Central
environment: {environment} // Nombre del ambiente en Business Central
operationType: "POST" // Tipo de operacion
requestId: {requestId} // Id de mensaje
}
body
{
"type": 1,
"code": "223232E3",
"locationCode":"ALMACEN 1",
"destinationLocation": "",
"shippingAgentCode": "CDGD",
"shippingVehicleCode": "",
"originalDatetime": "2026-07-17T14:20:00Z",
"ticketsLines":[
{
"itemNo": "1000",
"unitMeasure":"PCS",
"reasonCode": "PRUEBA",
"quantity": 1,
"netWeight": 56.9,
"tareWeight": 0
},
{
"itemNo": "1000",
"unitMeasure":"PCS",
"quantity": 1,
"reasonCode": "PRUEBA",
"netWeight": 56.9,
"tareWeight": 0
}
]
}

las recepciones de compra son los movimientos de inventario que se generan al recibir productos adquiridos a través de órdenes de compra. Este proceso implica registrar la entrada de mercancía en el sistema, asegurando que el inventario se actualice correctamente y que los productos estén disponibles para su uso o venta.

Campo Tipo de dato Descripción
type Integer Tipo de movimiento.
code Text[255] Código único del ticket.
DocumentNo Text[20] Número del documento de compra asociado.
LocationCode Text[20] Código del almacén de origen.
OriginalDatetime DateTime Fecha y hora original del ticket.
Campo Tipo de dato Descripción
itemNo Text[20] Número de artículo.
unitMeasure Text[10] Unidad de medida del artículo.
reasonCode Text[50] Código de razón para el movimiento. (opcional)
locationCode Text[20] Código del almacén de origen para la línea.
quantity Decimal Cantidad de artículos en la línea.
netWeight Decimal Peso neto de los artículos en la línea.
tareWeight Decimal Peso tara de los artículos en la línea. (opcional)
POST
https://devnamespacevog.servicebus.windows.net
Header{
Content-Type: application/json
Authorization: Bearer {SharedAccessSignature}
companyId: {companyID} // Id de la compañía en Business Central
environment: {environment} // Nombre del ambiente en Business Central
operationType: "POST" // Tipo de operacion
requestId: {requestId} // Id de mensaje
}
body
{
"type": 2,
"code": "223232E3",
"DocumentNo": "C-PDA0000258",
"locationCode":"ALMACEN 1",
"originalDatetime": "2026-07-17T14:20:00Z",
"ticketsLines":[
{
"itemNo": "1000",
"unitMeasure":"PCS",
"reasonCode": "PRUEBA",
"locationCode":"ALMACEN 1",
"quantity": 1,
"netWeight": 56.9,
"tareWeight": 0
},
{
"itemNo": "1000",
"unitMeasure":"PCS",
"quantity": 1,
"locationCode":"ALMACEN 1",
"reasonCode": "PRUEBA",
"netWeight": 56.9,
"tareWeight": 0
}
]
}

las transferencias entrantes son movimientos de inventario que se producen cuando los productos se reciben desde otra ubicación o almacén, ya sea dentro de la misma compañía o desde un proveedor externo. Este tipo de movimiento asegura que el inventario se actualice correctamente al recibir mercancía en el sistema.

Campo Tipo de dato Descripción
type Integer Tipo de movimiento.
code Text[255] Código único del ticket.
DocumentNo Text[20] Número del documento de transferencia asociado.
locationCode Text[20] Código del almacén de origen.
shippingAgentCode Text[10] Código del transportista.
shippingVehicleCode Text[15] Código del vehículo de transporte.
OriginalDatetime DateTime Fecha y hora original del ticket.
Campo Tipo de dato Descripción
itemNo Text[20] Número de artículo.
unitMeasure Text[10] Unidad de medida del artículo.
reasonCode Text[50] Código de razón para el movimiento. (opcional)
quantity Decimal Cantidad de artículos en la línea.
netWeight Decimal Peso neto de los artículos en la línea.
tareWeight Decimal Peso tara de los artículos en la línea. (opcional)
POST
https://devnamespacevog.servicebus.windows.net
Header{
Content-Type: application/json
Authorization: Bearer {SharedAccessSignature}
companyID: {companyID} // Id de la compañía en Business Central
environment: {environment} // Nombre del ambiente en Business Central
operationType: "POST" // Tipo de operacion
requestId: {requestId} // Id de mensaje
}
body
{
"type": 3,
"code": "223232E3",
"DocumentNo": "1006",
"locationCode":"ALMACEN 1",
"shippingAgentCode": "CDGD",
"shippingVehicleCode": "DR4356",
"originalDatetime": "2026-07-17T14:20:00Z",
"ticketsLines":[
{
"itemNo": "1000",
"unitMeasure":"PCS",
"reasonCode": "PRUEBA",
"quantity": 1,
"netWeight": 56.9,
"tareWeight": 0
},
{
"itemNo": "1000",
"unitMeasure":"PCS",
"quantity": 1,
"reasonCode": "PRUEBA",
"netWeight": 56.9,
"tareWeight": 0
}
]
}

El despacho de venta es el proceso mediante el cual los productos se envían desde el almacén o centro de distribución hacia el cliente final. Este movimiento implica la preparación, embalaje y transporte de los artículos vendidos, asegurando que lleguen en buen estado y dentro del plazo acordado. Los despachos de venta debe reflejar los lotes de los productos que se están enviando.

Campo Tipo de dato Descripción
type Integer Tipo de movimiento.
code Text[255] Código único del ticket.
DocumentNo Text[20] Número del documento de venta asociado.
ShippingAgentCode Text[10] Código del transportista.
ShippingVehicleCode Text[15] Código del vehículo de transporte.
OriginalDatetime Date Fecha y hora original del ticket.
Campo Tipo de dato Descripción
itemNo Text[20] Número de artículo.
unitMeasure Text[10] Unidad de medida del artículo.
reasonCode Text[50] Código de razón para el movimiento. (opcional)
locationCode Text[20] Código del almacén de origen para la línea.
quantity Decimal Cantidad de artículos en la línea.
netWeight Decimal Peso neto de los artículos en la línea.
tareWeight Decimal Peso tara de los artículos en la línea. (opcional)
Campo Tipo de dato Descripción
lot Text[20] Número de lote del artículo. (opciona)
quantity Decimal Cantidad de artículos en el lote. (opcional)
POST
https://devnamespacevog.servicebus.windows.net
Header{
Content-Type: application/json
Authorization: Bearer {SharedAccessSignature}
companyID: {companyID} // Id de la compañía en Business Central
environment: {environment} // Nombre del ambiente en Business Central
operationType: "POST" // Tipo de operacion
requestId: {requestId} // Id de mensaje
}
body
{
"type": 4,
"code": "223232E3",
"DocumentNo": "101002",
"shippingAgentCode": "CDGD",
"shippingVehicleCode": "DR4356",
"originalDatetime": "2026-07-17T14:20:00Z",
"ticketsLines":[
{
"itemNo": "1000",
"unitMeasure":"PCS",
"locationCode":"ALMACEN 1",
"reasonCode": "PRUEBA",
"quantity": 3,
"netWeight": 56.9,
"tareWeight": 0,
"ticketLinelots":[
{
"lot": "gdgdgdg",
"quantity": 1
},
{
"lot": "gdgdgdgdsd",
"quantity": 2
}
]
},
{
"itemNo": "1000",
"unitMeasure":"PCS",
"locationCode":"ALMACEN 1",
"reasonCode": "PRUEBA",
"quantity": 1,
"netWeight": 56.9,
"tareWeight": 0,
"lots":[
{
"lot": "gdgdgdg",
"quantity": 1
}
]
}
]
}

Las transferencias intercompañía son movimientos de inventario que se realizan entre diferentes entidades legales dentro de la misma organización. Este tipo de movimiento permite trasladar productos de un almacén o ubicación de una compañía a otra.

Campo Tipo de dato Descripción
type Integer Tipo de movimiento.
code Text[255] Código único del ticket.
OriginalDatetime Date Fecha y hora original del ticket.
Campo Tipo de dato Descripción
itemNo Text[20] Número de artículo.
unitMeasure Text[10] Unidad de medida del artículo.
locationCode Text[20] Código del almacén de origen para la línea.
destinationLocation Text[20] Código del almacén de destino para la línea.
originCompany Text[30] Código de la compañía de origen para la línea.
destinationCompany Text[30] Código de la compañía de destino para la línea.
quantity Decimal Cantidad de artículos en la línea.
netWeight Decimal Peso neto de los artículos en la línea.
tareWeight Decimal Peso tara de los artículos en la línea. (opcional)
totalCost Decimal Costo total de los artículos en la línea.
POST
https://devnamespacevog.servicebus.windows.net
Header{
Content-Type: application/json
Authorization: Bearer {SharedAccessSignature}
companyID: {companyID} // Id de la compañía en Business Central
environment: {environment} // Nombre del ambiente en Business Central
operationType: "POST" // Tipo de operacion
requestId: {requestId} // Id de mensaje
}
body
{
"type": 5,
"code": "223232E3",
"originalDatetime": "2026-07-17T14:20:00Z",
"ticketsLines":[
{
"itemNo": "1000",
"unitMeasure":"PCS",
"locationCode":"ALMACEN 1",
"DestinationLocation": "ALMACEN 2",
"originCompany": "ALIB5",
"DestinationCompany": "IDTE3",
"quantity": 3,
"netWeight": 56.9,
"tareWeight": 0,
"totalCost": 0,
},
{
"itemNo": "1000",
"unitMeasure":"PCS",
"locationCode":"ALMACEN 1",
"DestinationLocation": "ALMACEN 2",
"originCompany": "ALIB5",
"DestinationCompany": "IDTE3",
"quantity": 1,
"netWeight": 56.9,
"tareWeight": 0,
"totalCost": 0,
}
]
}

Las entrada - prestamo recibidos son movimientos de inventario que se generan cuando se reciben productos prestados de otra compañía o entidad. Este tipo de movimiento permite registrar la entrada temporal de mercancía en el sistema. Los prestamos recibido se registrara como un ajuste de inventario.

Campo Tipo de dato Descripción
type Integer Tipo de movimiento.
code Text[255] Código único del ticket.
OriginalDatetime Date Fecha y hora original del ticket.
Campo Tipo de dato Descripción
itemNo Text[20] Número de artículo.
unitMeasure Text[10] Unidad de medida del artículo.
locationCode Text[10] Código de ubicación del artículo.
quantity Decimal Cantidad de artículos en la línea.
netWeight Decimal Peso neto de los artículos en la línea.
tareWeight Decimal Peso tara de los artículos en la línea. (opcional)
totalCost Decimal Costo total de los artículos en la línea.
POST
https://devnamespacevog.servicebus.windows.net
Header{
Content-Type: application/json
Authorization: Bearer {SharedAccessSignature}
companyID: {companyID} // Id de la compañía en Business Central
environment: {environment} // Nombre del ambiente en Business Central
operationType: "POST" // Tipo de operacion
requestId: {requestId} // Id de mensaje
}
body
{
"type": 6,
"code": "223232E3",
"originalDatetime": "2026-07-17T14:20:00Z",
"ticketsLines":[
{
"itemNo": "1000",
"unitMeasure":"PCS",
"locationCode":"ALMACEN 1",
"quantity": 1,
"netWeight": 56.9,
"tareWeight": 0,
"totalCost": 0,
},
{
"itemNo": "1000",
"unitMeasure":"PCS",
"locationCode":"ALMACEN PTO",
"quantity": 1,
"netWeight": 56.9,
"tareWeight": 0,
"totalCost": 0,
}
]
}

Las salida - prestamo recibidos son movimientos de inventario que se generan cuando se devuelven productos prestados a otra compañía o entidad. Este tipo de movimiento permite registrar la salida de inventario del almacen del prestamo recibido. Los prestamos recibido se registrara como un ajuste de inventario.

Campo Tipo de dato Descripción
type Integer Tipo de movimiento.
code Text[255] Código único del ticket.
OriginalDatetime Date Fecha y hora original del ticket.

| Campo | Tipo de dato | Descripción | | : — | :— | :— | | itemNo | Text[20] | Número de artículo. | | unitMeasure | Text[10] | Unidad de medida del artículo. | | locationCode | Text[10] | Código de ubicación del artículo. | | quantity | Decimal | Cantidad de artículos en la línea. | | netWeight | Decimal | Peso neto de los artículos en la línea. | | tareWeight | Decimal | Peso tara de los artículos en la línea. (opcional) | | totalCost | Decimal | Costo total de los artículos en la línea. (opcional) |

POST
https://devnamespacevog.servicebus.windows.net
Header{
Content-Type: application/json
Authorization: Bearer {SharedAccessSignature}
companyID: {companyID} // Id de la compañía en Business Central
environment: {environment} // Nombre del ambiente en Business Central
operationType: "POST" // Tipo de operacion
requestId: {requestId} // Id de mensajes
}
body
{
"type": 7,
"code": "223232E3",
"originalDatetime": "2026-07-17T14:20:00Z",
"ticketsLines":[
{
"itemNo": "1000",
"unitMeasure":"PCS",
"locationCode":"ALMACEN 1",
"quantity": 1,
"netWeight": 56.9,
"tareWeight": 0,
"totalCost": 0,
},
{
"itemNo": "1000",
"unitMeasure":"PCS",
"locationCode":"ALMACEN PTO",
"quantity": 1,
"netWeight": 56.9,
"tareWeight": 0,
"totalCost": 0,
}
]
}

La entrada - prestamo otorgados son movimientos de inventario que se generan cuando se reciben productos prestados a otra compañía o entidad. Este tipo de movimiento permite registrar la entrada de mercancía en el sistema. Los prestamos otorgados se registrara como un ajuste de inventario.

Campo Tipo de dato Descripción
type Integer Tipo de movimiento.
code Text[255] Código único del ticket.
locationCode Text[20] Código del almacén de origen.
destinationLocation Text[20] Código del almacén de destino.
shippingAgentCode Text[10] Código del transportista.
shippingVehicleCode Text[15] Código del vehículo de transporte.
OriginalDatetime Date Fecha y hora original del ticket.
Campo Tipo de dato Descripción
itemNo Text[20] Número de artículo.
unitMeasure Text[10] Unidad de medida del artículo.
reasonCode Text[50] Código de razón para el movimiento. (opcional)
quantity Decimal Cantidad de artículos en la línea.
netWeight Decimal Peso neto de los artículos en la línea.
tareWeight Decimal Peso tara de los artículos en la línea. (opcional)
POST
https://devnamespacevog.servicebus.windows.net
Header{
Content-Type: application/json
Authorization: Bearer {SharedAccessSignature}
companyID: {companyID} // Id de la compañía en Business Central
environment: {environment} // Nombre del ambiente en Business Central
operationType: "POST" // Tipo de operacion
requestId: {requestId} // Id de mensaje
}
body
{
"type": 1,
"code": "223232E3",
"locationCode":"ALMACEN PTO",
"destinationLocation": "ALMACEN 1",
"shippingAgentCode": "CDGD",
"shippingVehicleCode": "",
"originalDatetime": "2026-07-17T14:20:00Z",
"ticketsLines":[
{
"itemNo": "1000",
"unitMeasure":"PCS",
"reasonCode": "PRUEBA",
"quantity": 1,
"netWeight": 56.9,
"tareWeight": 0
},
{
"itemNo": "1000",
"unitMeasure":"PCS",
"quantity": 1,
"reasonCode": "PRUEBA",
"netWeight": 56.9,
"tareWeight": 0
}
]
}

La Salida - prestamo otorgados son movimientos de inventario que se generan cuando se entragan productos prestados a otra compañía o entidad. Este tipo de movimiento permite registrar la salida de inventario del almacen al almacen de prestamo otorgado. Los prestamos otorgados se registrara como un ajuste de inventario.

Campo Tipo de dato Descripción
type Integer Tipo de movimiento.
code Text[255] Código único del ticket.
locationCode Text[20] Código del almacén de origen.
destinationLocation Text[20] Código del almacén de destino.
shippingAgentCode Text[10] Código del transportista.
shippingVehicleCode Text[15] Código del vehículo de transporte.
OriginalDatetime Date Fecha y hora original del ticket.
Campo Tipo de dato Descripción
type Integer Tipo de movimiento.
code Text[255] Código único del ticket.
itemNo Text[20] Número de artículo.
unitMeasure Text[10] Unidad de medida del artículo.
reasonCode Text[50] Código de razón para el movimiento. (opcional)
quantity Decimal Cantidad de artículos en la línea.
netWeight Decimal Peso neto de los artículos en la línea.
tareWeight Decimal Peso tara de los artículos en la línea. (opcional)
POST
https://devnamespacevog.servicebus.windows.net
Header{
Content-Type: application/json
Authorization: Bearer {SharedAccessSignature}
companyID: {companyID} // Id de la compañía en Business Central
environment: {environment} // Nombre del ambiente en Business Central
operationType: "POST" // Tipo de operacion
requestId: {requestId} // Id de mensaje
}
body
{
"type": 1,
"code": "223232E3",
"locationCode":"ALMACEN 1",
"destinationLocation": "ALMACEN PTO",
"shippingAgentCode": "CDGD",
"shippingVehicleCode": "",
"originalDatetime": "2026-07-17T14:20:00Z",
"ticketsLines":[
{
"itemNo": "1000",
"unitMeasure":"PCS",
"reasonCode": "PRUEBA",
"quantity": 1,
"netWeight": 56.9,
"tareWeight": 0
},
{
"itemNo": "1000",
"unitMeasure":"PCS",
"quantity": 1,
"reasonCode": "PRUEBA",
"netWeight": 56.9,
"tareWeight": 0
}
]
}

La devolucion de ventas es el proceso mediante el cual los productos vendidos son devueltos por el cliente al almacén o centro de distribución. Este movimiento implica registrar la entrada de mercancía devuelta en el sistema.

Campo Tipo de dato Descripción
type Integer Tipo de movimiento.
code Text[255] Código único del ticket.
DocumentNo Text[20] Número del documento de venta asociado.
OriginalDatetime Date Fecha y hora original del ticket.
Campo Tipo de dato Descripción
itemNo Text[20] Número de artículo.
unitMeasure Text[10] Unidad de medida del artículo.
reasonCode Text[50] Código de razón para el movimiento. (opcional)
locationCode Text[20] Código del almacén de origen para la línea.
quantity Decimal Cantidad de artículos en la línea.
netWeight Decimal Peso neto de los artículos en la línea.
tareWeight Decimal Peso tara de los artículos en la línea. (opcional)
POST
https://devnamespacevog.servicebus.windows.net
Header{
Content-Type: application/json
Authorization: Bearer {SharedAccessSignature}
companyID: {companyID} // Id de la compañía en Business Central
environment: {environment} // Nombre del ambiente en Business Central
operationType: "POST" // Tipo de operacion
requestId: {requestId} // Id de mensaje
}
body
{
"type": 8,
"code": "223232E3",
"DocumentNo": "1006",
"originalDatetime": "2026-07-17T14:20:00Z",
"ticketsLines":[
{
"itemNo": "1000",
"unitMeasure":"PCS",
"reasonCode": "PRUEBA",
"locationCode":"ALMACEN 1",
"quantity": 1,
"netWeight": 56.9,
"tareWeight": 0
},
{
"itemNo": "1000",
"unitMeasure":"PCS",
"locationCode":"ALMACEN 1",
"quantity": 1,
"reasonCode": "PRUEBA",
"netWeight": 56.9,
"tareWeight": 0
}
]
}

El recibo de producción es el proceso mediante el cual los productos fabricados o ensamblados se registran como entrada de inventario de productos terminados en el sistema. Este movimiento asegura que el inventario refleje correctamente la cantidad de productos terminados en las ordenes de produccion.

Campo Tipo de dato Descripción
type Integer Tipo de movimiento.
code Text[255] Código único del ticket.
documentNo Text[20] Número del documento de producción asociado.
locationCode Text[20] Código del almacén de origen.
OriginalDatetime Date Fecha y hora original del ticket.
Campo Tipo de dato Descripción
itemNo Text[20] Número de artículo.
unitMeasure Text[10] Unidad de medida del artículo.
quantity Decimal Cantidad de artículos en la línea.
netWeight Decimal Peso neto de los artículos en la línea.
tareWeight Decimal Peso tara de los artículos en la línea. (opcional)
POST
https://devnamespacevog.servicebus.windows.net
Header{
Content-Type: application/json
Authorization: Bearer {SharedAccessSignature}
companyID: {companyID} // Id de la compañía en Business Central
environment: {environment} // Nombre del ambiente en Business Central
operationType: "POST" // Tipo de operacion
requestId: {requestId} // Id de mensaje
}
body
{
"type": 9,
"code": "223232E3",
"documentNo": "1006",
"locationCode":"ALMACEN 1",
"originalDatetime": "2026-07-17T14:20:00Z",
"ticketsLines":[
{
"itemNo": "1000",
"unitMeasure":"PCS",
"quantity": 1,
"netWeight": 56.9,
"tareWeight": 0
},
{
"itemNo": "1000",
"unitMeasure":"PCS",
"quantity": 1,
"netWeight": 56.9,
"tareWeight": 0
}
]
}

EL registro de merma es el proceso mediante el cual se documenta la pérdida de inventario debido a factores como deterioro, caducidad, daños o errores en el manejo de los productos. Este movimiento permite ajustar el inventario para reflejar con precisión la cantidad disponible de productos.

Campo Tipo de dato Descripción
type Integer Tipo de movimiento.
code Text[255] Código único del ticket.
OriginalDatetime Date Fecha y hora original del ticket.
Campo Tipo de dato Descripción
itemNo Text[20] Número de artículo.
unitMeasure Text[10] Unidad de medida del artículo.
locationCode Text[20] Código del almacén de origen para la línea.
quantity Decimal Cantidad de artículos en la línea.
netWeight Decimal Peso neto de los artículos en la línea.
tareWeight Decimal Peso tara de los artículos en la línea. (opcional)
POST
https://devnamespacevog.servicebus.windows.net
Header{
Content-Type: application/json
Authorization: Bearer {SharedAccessSignature}
companyID: {companyID} // Id de la compañía en Business Central
environment: {environment} // Nombre del ambiente en Business Central
operationType: "POST" // Tipo de operacion
requestId: {requestId} // Id de mensaje
}
body
{
"type": 10,
"code": "223232E3",
"originalDatetime": "2026-07-17T14:20:00Z",
"ticketsLines":[
{
"itemNo": "1000",
"unitMeasure":"PCS",
"locationCode":"ALMACEN 1",
"quantity": 1,
"netWeight": 56.9,
"tareWeight": 0
},
{
"itemNo": "1000",
"unitMeasure":"PCS",
"locationCode":"ALMACEN 1",
"quantity": 1,
"netWeight": 56.9,
"tareWeight": 0
}
]
}

Consumir Endpoints

Para consultar manualmente las órdenes de compra, puedes consumir el endpoint estándar de Business Central.

GET
https://api.businesscentral.dynamics.com/v2.0/{{TenantID}}/{{enviromentName}}/api/virtualOfficeGroup/integration/v1.0/companies({{companyId}})/outboundTransfers?$expand=outboundTransferLines
Content-Type: application/json
Authorization: Bearer {access_token}

Datos obtenidos

{
"@odata.etag": "W/\"JzIwOzE3NTc3MDU2MzU1NDI0MDgwMDU3MTswMDsn\"",
"id": "4635d57c-171e-f111-8405-7ced8da8a20f",
"documentNo": "1006",
"locationCode": "ALMACEN 1",
"lastModifiedDateTime": "2026-07-23T13:04:36.757Z",
"outboundTransferLines": [
{
"@odata.etag": "W/\"JzE5OzYxMTAyMTk0Mzg4NjUwMzk4MTMxOzAwOyc=\"",
"id": "8750226e-171e-f111-8405-7ced8da8a20f",
"documentNo": 10000,
"locationCode": "MPPA01090",
"variantCode": "",
"description": "Alimento para Pollos",
"quantity": 100,
"netWeight": 0,
"quantityReceived": 50,
"quantityOutstanding": 50,
"quantityShipped": 50,
"lastModifiedDateTime": "2026-07-23T13:04:36.587Z"
}
]
},

Campos de la respuesta (Encabezado)

Nombre Tipo Descripción
@odata.etag Identificador de versión para control de concurrencia.
id GUID Identificador único universal del registro.
documentNo Text[20] Número del documento de transferencia entrante.
locationCode Text[20] Código del almacén.
lastModifiedDateTime DateTime Fecha y hora de la última modificación del registro.

Campos de la respuesta (Lineas)

Nombre Tipo Descripción
@odata.etag String Identificador de versión para control de concurrencia.
id GUID Identificador único de la línea de documento.
documentNo GUID ID del documento principal (cabecera) al que pertenece.
locationCode String Código del almacén.
variantCode String Código de variante del producto.
description String Descripción del producto.
quantity Decimal Cantidad total solicitada.
netWeight Decimal Peso neto del producto.
quantityReceived Decimal Cantidad recibida.
quantityOutstanding Decimal Cantidad pendiente de recibir.
quantityShipped Decimal Cantidad enviada
lastModifiedDateTime DateTime Fecha y hora de la última modificación del registro.

Suscripción de webhook

El consumo de pedidos de compra puede integrarse mediante webhook para detectar cambios sobre el recurso en Business Central.

POST https://api.businesscentral.dynamics.com/v2.0/{{TenantID}}/{{enviromentName}}/api/v2.0/subscriptions
Content-Type: application/json
Authorization: Bearer {access_token}
{
"notificationUrl": "%UrlNotificationId%",
"resource": "api/v2.0/companies({{companyId}})/purchaseOrders",
"clientState": ""
}

Consumir Endpoints

Para consultar manualmente las órdenes de compra, puedes consumir el endpoint estándar de Business Central.

GET
https://api.businesscentral.dynamics.com/v2.0/{{TenantID}}/{{enviromentName}}/api/virtualOfficeGroup/integration/v1.0/companies({{companyId}})/ShippingAgents?$expand=shippingAgentsPlates
Content-Type: application/json
Authorization: Bearer {access_token}

Datos obtenidos

{
"@odata.etag": "W/\"JzE5OzIzNzg3NTQxMzQ1MDAzNzUwODExOzAwOyc=\"",
"id": "78741a08-9f86-f111-8072-002248360983",
"documentNo": "106012",
"locationCode": "ALMACEN 2",
"lastModifiedDateTime": "2026-07-23T14:01:42.917Z",
"purchaseOrderLines": [
{
"@odata.etag": "W/\"JzE5OzU5NDQxNzUyNzM1ODMwMTQ0ODcxOzAwOyc=\"",
"id": "1c4f18fd-9e86-f111-8072-002248360983",
"documentId": "106012",
"sequence": 10000,
"lineType": "Item",
"lineObjectNumber": "1000",
"description": "MORTADELA TIPO 1",
"description2": "",
"unitOfMeasureCode": "PCS",
"locationCode": "ALMACEN 2",
"quantity": 10,
"directUnitCost": 65.391,
"receivedQuantity": 0,
"invoicedQuantity": 0,
"invoiceQuantity": 0,
"receiveQuantity": 0
}
]
}

Campos de la respuesta (Encabezado)

Nombre Tipo Descripción
@odata.etag Identificador de versión para control de concurrencia.
id GUID Identificador único universal del registro.
documentNo Text[20] Número del documento de compra.
locationCode Text[20] Código del almacén.
lastModifiedDateTime DateTime Fecha y hora de la última modificación del registro.

Campos de la respuesta (Lineas)

Nombre Tipo Descripción
@odata.etag String Identificador de versión para control de concurrencia.
id GUID Identificador único de la línea de documento.
documentId GUID ID del documento principal (cabecera) al que pertenece.
sequence Integer Orden de aparición de la línea en el documento (10000).
itemId GUID Identificador único del producto en el sistema.
lineType String Tipo de línea (ej. Item/Producto).
lineObjectNumber String Código de referencia del producto (PROD007).
description String Descripción del producto (SULFATO DE SODIO).
description2 String Información adicional o secundaria del producto.
unitOfMeasureCode String Código de la unidad de medida (KG).
quantity Decimal Cantidad total solicitada (300).
directUnitCost Decimal Costo unitario directo del producto.
receivedQuantity Decimal Cantidad física ya recibida (295).
invoicedQuantity Decimal Cantidad que ya ha sido facturada.
invoiceQuantity Decimal Cantidad pendiente o lista para facturar (295).
receiveQuantity Decimal Cantidad pendiente por recibir físicamente.

Suscripción de webhook

El consumo de pedidos de venta puede integrarse mediante webhook para detectar cambios sobre el recurso en Business Central.

POST
https://api.businesscentral.dynamics.com/v2.0/{{TenantID}}/{{enviromentName}}/api/virtualOfficeGroup/integration/v1.0/subscriptions
Content-Type: application/json
Authorization: Bearer {access_token}
{
"notificationUrl": "UrlNotificationId",
"resource": "/virtualOfficeGroup/vog/v1.0/companies({{companyId}})/salesOrders",
"clientState": ""
}

Consumir Endpoints

Para consultar manualmente las órdenes de venta, puedes consumir el endpoint estándar de Business Central.

GET
https://api.businesscentral.dynamics.com/v2.0/{{TenantID}}/{{enviromentName}}/api/virtualOfficeGroup/integration/v1.0/companies({{companyId}})/salesOrder?$expand=salesOrderLines
Content-Type: application/json
Authorization: Bearer {access_token}

Datos obtenidos

{
"@odata.context": "https://api.businesscentral.dynamics.com/v2.0/30eb258d-51a4-4f58-9c88-bf72d4d3325a/DEMO/api/virtualOfficeGroup/integration/v1.0/$metadata#companies(db22931c-25f2-f011-8405-000d3a88d306)/salesOrders",
"value": [
{
"@odata.etag": "W/\"JzE5OzI4NTEyNDcwNjYxOTg5MjE5ODExOzAwOyc=\"",
"id": "e44d1923-4f60-f111-ab09-7ced8da80af9",
"number": "101015",
"orderDate": "2025-11-15",
"postingDate": "2025-11-15",
"customerNumber": "10000",
"customerName": "Adatum Corporation",
"currencyCode": "",
"priceIncludeTax": false,
"status": "Released",
"lastModifiedDateTime": "2026-07-23T13:44:41.733Z",
"salesOrderLines": [
{
"@odata.etag": "W/\"JzE5Ozk1ODEzNDIxMDAxNjM0NzAwNTYxOzAwOyc=\"",
"id": "f5893329-4f60-f111-ab09-7ced8da80af9",
"documentId": "101015",
"sequence": 10000,
"lineType": "Item",
"lineObjectNumber": "PTCM01001",
"description": "Pollo Beneficiado Grado A Embolsado F",
"description2": "",
"unitOfMeasureCode": "KG",
"locationCode": "ALMACEN 2",
"quantity": 10,
"shippedQuantity": 0,
"invoicedQuantity": 0
}
]
},
{
"@odata.etag": "W/\"JzE4Ozg1NDI1NDg5MTM0ODk0NTg3NTE7MDA7Jw==\"",
"id": "8559d70f-a186-f111-8072-002248360983",
"number": "101016",
"orderDate": "2025-11-15",
"postingDate": "2025-11-15",
"customerNumber": "10000",
"customerName": "Adatum Corporation",
"currencyCode": "",
"priceIncludeTax": false,
"status": "Released",
"lastModifiedDateTime": "2026-07-23T14:16:55.747Z",
"salesOrderLines": [
{
"@odata.etag": "W/\"JzE5OzUwNjU3NDA3NDEwMTM0NzMyNTExOzAwOyc=\"",
"id": "14b21b18-a186-f111-8072-002248360983",
"documentId": "101016",
"sequence": 10000,
"lineType": "Item",
"lineObjectNumber": "1000",
"description": "MORTADELA TIPO 1",
"description2": "",
"unitOfMeasureCode": "PCS",
"locationCode": "ALMACEN 2",
"quantity": 100,
"shippedQuantity": 0,
"invoicedQuantity": 0
}
]
}
]
}

Campos de la respuesta (Encabezado)

Nombre Tipo Descripción
@odata.context String (URL) La URL que define el esquema y el origen de los datos.
@odata.etag String Un identificador de versión del registro (concurrencia).
id Guid El GUID (Identificador Único Global) interno de Business Central.
number Text[20] Es el código de pedido de venta.
orderDate Date Fecha de emisión del documento.
postingDate Date Fecha contable del registro.
customerNumber Text[20] Código del cliente.
customerName Text[100] Nombre o razón social del cliente.
currencyCode Text[10] Código ISO de la moneda.
priceIncludeTax Boolean precios incluyen impuestos
status Text[30] Estado del documento
lastModifiedDateTime DateTime Sello de tiempo de la última edición.

Campos de la respuesta (Lineas)

Nombre Tipo Descripción
id Guid El GUID (Identificador Único Global) interno de Business Central.
documentId Guid ID del documento principal (cabecera) al que pertenece.
sequence Integer Orden de aparición de la línea en el documento.
lineType Text[20] Tipo de línea (ej. Item/Producto).
lineObjectNumber Text[20] Código de referencia del producto.
description Text[100] Descripción del producto.
description2 Text[50] Descripción del producto 2.
unitOfMeasureCode Text[10] Código de la unidad de medida.
locationCode Text[20] Código del almacén.
quantity Decimal Cantidad solicitada.
shippedQuantity Decimal Cantidad ya enviada.
invoicedQuantity Decimal Cantidad facturada.

Obtener lista de Pedidos Devoluciones de Venta

Sección titulada «Obtener lista de Pedidos Devoluciones de Venta»

Consumir Endpoints

Para consultar manualmente las órdenes de devolucion de venta, puedes consumir el endpoint estándar de Business Central.

GET
https://api.businesscentral.dynamics.com/v2.0/{{TenantID}}/{{enviromentName}}/api/virtualOfficeGroup/integration/v1.0/companies({{companyId}})/salesReturnOrders?$expand=salesReturnOrderLines
Content-Type: application/json
Authorization: Bearer {access_token}

Datos obtenidos

{
"@odata.etag": "W/\"JzIwOzE2NzU5MTI1NzE2MTQzMjk1Mzc5MTswMDsn\"",
"id": "2208fd50-9886-f111-8072-7ced8db0e8e8",
"documentNo": "1001",
"locationCode": "ALMACEN 2",
"systemModifiedAt": "2026-07-23T13:13:41.187Z",
"salesReturnOrderLines": [
{
"@odata.etag": "W/\"JzE5OzMwNjU3NjYzNTI0OTY0NTc3NjMxOzAwOyc=\"",
"id": "ff24dcf5-c860-ef11-a672-000d3ac04166",
"documentId": "1001",
"sequence": 10000,
"lineType": "Item",
"lineObjectNumber": "1936-S",
"description": "BERLIN Guest Chair, yellow",
"description2": "",
"unitOfMeasureCode": "PCS",
"locationCode": "",
"quantity": 10,
"shippedQuantity": 0,
"invoicedQuantity": 0
}
]
}

Campos de la respuesta (Encabezado)

Nombre Tipo Descripción
@odata.etag String Un identificador de versión del registro (concurrencia).
id Guid El GUID (Identificador Único Global) interno de Business Central.
documentNo Text[20] codigo del numero de pedido de devolucion
locationCode Text[20] codigo del almacen
lastModifiedDateTime DateTime Sello de tiempo de la última edición.

Campos de la respuesta (Lineas)

Datos Tipo Descripción
id Guid El GUID (Identificador Único Global) interno de Business Central.
documentId Text[20] codigo del numero de pedido de devolucion
sequence Integer Orden de aparición de la línea en el documento.
lineType Text[20] Tipo de línea (ej. Item/Producto).
lineObjectNumber Text[20] Código de referencia del producto.
description Text[100] Descripción del producto.
description2 Text[50] Descripción del producto 2.
unitOfMeasureCode Text[10] Código de la unidad de medida.
locationCode Text[20] Codigo del almacen
quantity decimal Cantidad solicitada.
shippedQuantity decimal Cantidad ya enviada.
invoicedQuantity decimal Cantidad facturada.

Consumir Endpoints

Para consultar manualmente las órdenes de producción, puedes consumir el endpoint estándar de Business Central.

GET
https://api.businesscentral.dynamics.com/v2.0/{{TenantID}}/{{enviromentName}}/api/virtualOfficeGroup/integration/v1.0/companies({{companyId}})/prodOrders?$expand=prodOrderLines
Content-Type: application/json
Authorization: Bearer {access_token}

Datos obtenidos

{
"@odata.etag": "W/\"JzE5OzM3MDAwNDA0MTM0NjI1MDI1NjAxOzAwOyc=\"",
"id": "0f5b4ba5-9074-f111-8070-002248360983",
"status": "Released",
"code": "F-OPL0237",
"description": "Pechuga de Pollo Punta de Monte 1Und * 800gr",
"description2": "",
"sourceType": "Item",
"sourceNo": "PTCM10021",
"dueDate": "2026-07-01",
"systemModifiedAt": "2026-06-30T14:33:25.2Z",
"prodOrderLines": [
{
"@odata.etag": "W/\"JzIwOzEzMDkzODA3OTgyNTU5MTYzMzE4MTswMDsn\"",
"id": "105b4ba5-9074-f111-8070-002248360983",
"lineNo": 10000,
"itermNo": "PTCM10021",
"description": "Pechuga de Pollo Punta de Monte 1Und * 800gr",
"description2": "",
"unitMeasureCode": "UND",
"quantity": 100,
"remainingQuantity": 100,
"finishedQuantity": 0,
"systemModifiedAt": "2026-06-30T14:33:24.58Z"
}
]
}

Campos de la respuesta (Encabezado)

Nombre Tipo Descripción
@odata.etag String Un identificador de versión del registro (concurrencia).
id Guid El GUID (Identificador Único Global) interno de Business Central.
status Text[20] Estado del documento.
code Text[20] Código de la orden de producción.
description Text[100] Descripción de la orden de producción.
description2 Text[50] Descripción secundaria de la orden de producción.
sourceType Text[20] Tipo de fuente de la orden de producción.
sourceNo Text[20] Número de fuente de la orden de producción.
dueDate Date Fecha límite de entrega de
systemModifiedAt DateTime Sello de tiempo de la última edición.

Campos de la respuesta (Lineas)

Nombre Tipo Descripción
@odata.etag String Un identificador de versión del registro (concurrencia).
id Guid El GUID (Identificador Único Global) interno de Business Central.
lineNo Integer Número de línea de la orden de producción.
itermNo Text[20] Número de artículo de la orden de producción.
description Text[100] Descripción del artículo de la orden de producción.
description2 Text[50] Descripción secundaria del artículo de la orden de producción.
unitMeasureCode Text[10] Código de la unidad de medida del artículo.
quantity Decimal Cantidad solicitada del artículo.
remainingQuantity Decimal Cantidad restante del artículo.
finishedQuantity Decimal Cantidad finalizada del artículo.
systemModifiedAt DateTime Sello de tiempo de la última edición.

El maestro de artículos contiene toda la información relacionada con los productos que maneja la empresa.

Suscripción del recurso por webhook

POST
https://api.businesscentral.dynamics.com/v2.0/{tenantId}/{environmentName}/api/v2.0/subscriptions
Content-Type: application/json
Authorization: Bearer {access_token}
body
{
"notificationUrl": "%UrlNotificationId%",
"resource": "/api/v2.0/companies({{companyId}})/Items",
"clientState": ""
}

Endpoint para Listado de Articulos (Sincronización Manual)

GET
https://api.businesscentral.dynamics.com/v2.0/{{TenantID}}/{{enviromentName}}/api/v2.0/companies({{companyId}})/items
Content-Type: application/json
Authorization: Bearer {access_token}

Datos obtenidos

{
"@odata.context": "https://api.businesscentral.dynamics.com/v2.0/30eb258d-51a4-4f58-9c88-bf72d4d3325a/TEST/api/v2.0/$metadata#companies(41cc1c74-5021-f011-9af7-000d3ac04986)/items",
"value": [
{
"@odata.etag": "W/\"JzE5OzE3Mzg5MzEwMDE1NjQyNjE0OTExOzAwOyc=\"",
"id": "1ea0551c-7378-f011-8eef-002248de9fb5",
"number": "ALQUILER",
"displayName": "Alquiler de inmueble",
"displayName2": "",
"type": "Service",
"itemCategoryId": "00000000-0000-0000-0000-000000000000",
"itemCategoryCode": "",
"blocked": false,
"gtin": "",
"inventory": 0,
"unitPrice": 0,
"priceIncludesTax": false,
"unitCost": 0,
"taxGroupId": "00000000-0000-0000-0000-000000000000",
"taxGroupCode": "",
"baseUnitOfMeasureId": "5bcfdbef-5021-f011-9af7-002248dfda48",
"baseUnitOfMeasureCode": "UND",
"generalProductPostingGroupId": "6dcfdbef-5021-f011-9af7-002248dfda48",
"generalProductPostingGroupCode": "SERVICIOS",
"inventoryPostingGroupId": "00000000-0000-0000-0000-000000000000",
"inventoryPostingGroupCode": "",
"lastModifiedDateTime": "2025-08-13T18:28:16.41Z"
}
]}

Campos de la respuesta

Nombre Tipo de dato Descripción
@odata.context String (URL) La URL que define el esquema y el origen de los datos.
@odata.etag String Un identificador de versión del registro (concurrencia).
id Guid El GUID (Identificador Único Global) interno de Business Central.
number Text[20] Es el código de producto (No. de artículo).
displayName Text[100] El nombre principal del artículo que aparecerá en los documentos.
displayName2 Text[50] Descripción secundaria o extendida para nombres en otros idiomas o detalles técnicos.
type Enum/Text[20] Define el tipo de productos (Inventory, Service o Non-Inventory).
itemCategoryId Guid ID de la categoría del producto.
itemCategoryCode text[20] Código de la categoría asignada.
blocked Boolean Si es true, el ítem está deshabilitado para transacciones.
gtin Text[14] Código de barras estándar internacional.
inventory Decimal Cantidad física actual en existencias.
unitPrice Decimal Precio de venta unitario antes de impuestos.
priceIncludesTax Boolean Indica si el valor en unitPrice ya contiene el impuesto (IVA/VAT).
unitCost Decimal Costo unitario del producto.
taxGroupId Guid ID del grupo de impuestos.
taxGroupCode Text[20] Código que vincula el producto con una configuración de impuestos específica.
baseUnitOfMeasureId Guid ID de la unidad de medida base.
baseUnitOfMeasureCode Text[10] Código de la unidad de medida (ej. PZ, UND, KG).
generalProductPostingGroupId Guid ID del grupo de registro de producto (General).
generalProductPostingGroupCode Text[20] Determina las cuentas de ingresos y gastos en el Libro Mayor.
inventoryPostingGroupId Guid ID del grupo de registro de inventario.
inventoryPostingGroupCode Text[20] Determina la cuenta de activos (Inventario) en el balance.
lastModifiedDateTime Datetime Marca de tiempo (UTC) de la última modificación del registro.

El maestro de clientes contiene toda la información relacionada con los clientes registrados en la empresa.

Suscripción del recurso por webhook

POST
https://api.businesscentral.dynamics.com/v2.0/{tenantId}/{environmentName}/api/v2.0/subscriptions
Content-Type: application/json
Authorization: Bearer {access_token}
body
{
"notificationUrl": "UrlNotificationId",
"resource": "/api/v2.0/companies({{companyId}})/customers",
"clientState": ""
}

Endpoint para Listado de clientes (Sincronización Manual)

GET
https://api.businesscentral.dynamics.com/v2.0/{{TenantID}}/{{enviromentName}}/api/v2.0/companies({{companyId}})/customers
Content-Type: application/json
Authorization: Bearer {access_token}

Datos obtenidos

{
"@odata.context": "https://api.businesscentral.dynamics.com/v2.0/30eb258d-51a4-4f58-9c88-bf72d4d3325a/TEST/api/v2.0/$metadata#companies(41cc1c74-5021-f011-9af7-000d3ac04986)/customers",
"value": [
{
"@odata.etag": "W/\"JzE5OzQyMzIwNDQ4NTc1OTY5Njg3ODkxOzAwOyc=\"",
"id": "edceedac-2825-f011-9af7-6045bd39528a",
"number": "V-CLI0000025",
"displayName": "CLIENTE MODIFICADO",
"type": "Company",
"addressLine1": "",
"addressLine2": "",
"city": "",
"state": "",
"country": "",
"postalCode": "",
"phoneNumber": "",
"email": "",
"website": "",
"salespersonCode": "",
"balanceDue": 0,
"creditLimit": 0,
"taxLiable": false,
"taxAreaId": "e9cfdbef-5021-f011-9af7-002248dfda48",
"taxAreaDisplayName": "Clientes Nacionales",
"taxRegistrationNumber": "",
"currencyId": "7d2ee4e9-5021-f011-9af7-002248dfda48",
"currencyCode": "USD",
"paymentTermsId": "6f2ee4e9-5021-f011-9af7-002248dfda48",
"shipmentMethodId": "00000000-0000-0000-0000-000000000000",
"paymentMethodId": "00000000-0000-0000-0000-000000000000",
"blocked": "_x0020_",
"lastModifiedDateTime": "2026-02-03T14:31:47.067Z"
}

Campos de la respuesta

Nombre Tipo de dato Descripción
@odata.context String (URL) La URL que define el esquema y el origen de los datos.
@odata.etag String Un identificador de versión del registro (control de concurrencia).
id Guid El GUID (Identificador Único Global) interno del cliente.
number Text[20] Es el código de cliente (No. de cliente).
displayName Text[100] El nombre principal del cliente que aparecerá en los documentos.
type Enum Define el tipo de cliente (Person o Company).
addressLine1 Text[100] Campo para la dirección principal.
addressLine2 Text[50] Campo para información adicional de la dirección.
city Text[30] Nombre de la ciudad de residencia o de despacho del cliente.
state Text[30] Estado, provincia, departamento o región administrativa.
country Text[10] Código ISO del país.
postalCode Text[20] Código o zona postal.
phoneNumber Text[30] Número telefónico de contacto del cliente.
email Text[80] Dirección de correo electrónico principal.
website Text[255] Dirección URL del portal web del cliente.
salespersonCode Text[20] Código del vendedor o asesor comercial responsable.
balanceDue Decimal Monto total de las facturas vencidas e impagadas.
creditLimit Decimal Límite de crédito financiero otorgado al cliente.
taxLiable Boolean Si es true, el sistema calcula impuestos en sus ventas.
taxAreaId Guid ID del área de impuestos asociada al cliente.
taxAreaDisplayName Text[100] Nombre legible de la configuración de impuestos.
taxRegistrationNumber Text[20] Número de identificación tributaria legal (RUC/NIT/RIF).
currencyId Guid Identificador técnico (GUID) de la moneda del cliente.
currencyCode Text[10] Código internacional de la moneda (ej. USD, EUR).
paymentTermsId Guid ID que define las condiciones y días de crédito.
shipmentMethodId Guid ID que define la logística o método de entrega.
paymentMethodId Guid ID que indica la forma de pago habitual del cliente.
blocked Text[10] Estado de bloqueo administrativo (ej. Blank, Ship, Invoice, All).
lastModifiedDateTime Datetime Marca de tiempo (UTC) de la última modificación del registro.

El maestro de almacenes contiene toda la información relacionada con los sitios registrados en la empresa.

Suscripción del recurso por webhook

POST
https://api.businesscentral.dynamics.com/v2.0/{{TenantID}}/{{enviromentName}}/api/virtualOfficeGroup/integration/v1.0/subscriptions
Content-Type: application/json
Authorization: Bearer {access_token}
body
{
"notificationUrl": "UrlNotificationId",
"resource": "/api/v2.0/companies({{companyId}})/customers",
"clientState": ""
}

Endpoint para Listado de almacenes (Sincronización Manual)

GET
https://api.businesscentral.dynamics.com/v2.0/{{TenantID}}/{{enviromentName}}/api/v2.0/companies({{companyId}})/Locations
Content-Type: application/json
Authorization: Bearer {access_token}

Datos obtenidos

{
"@odata.context": "https://api.businesscentral.dynamics.com/v2.0/30eb258d-51a4-4f58-9c88-bf72d4d3325a/DEMO/api/v2.0/$metadata#companies(eceb62c5-e5e3-ef11-9345-000d3ac0ed1a)/locations/$entity",
"@odata.etag": "W/\"JzE4OzQ4MjAwODI0MzQ3MTA3NDI1ODE7MDA7Jw==\"",
"id": "a0fd5182-c860-ef11-a672-000d3ac04166",
"code": "EAST",
"displayName": "East Warehouse",
"contact": "Jack Potter",
"addressLine1": "Great Eastern Street, 80",
"addressLine2": "",
"city": "London",
"state": "",
"country": "GB",
"postalCode": "EC2A 3JL",
"phoneNumber": "+44-(0)30 9874 1299",
"email": "",
"website": "",
"lastModifiedDateTime": "2024-08-25T22:49:58.143Z"
}

Campos de la respuesta

Nombre Tipo de dato Descripción
@odata.context String (URL) La URL que define el esquema y el origen de los datos
@odata.etag String Un identificador de versión del registro.
id Guid ID del almacén.
code Text[10] Es el código del almacén.
displayName Text[100] Nombre descriptivo del almacén.
contact Text[100] Nombre del contacto.
addressLine1 Text[100] Campo para la dirección principal.
addressLine2 Text[50] Campo para información adicional de la dirección.
city Text[30] Nombre de la ciudad de residencia o de despacho.
state Text[30] Estado, provincia, departamento o región administrativa.
country Text[30] Código del país.
postalCode Text[20] Código o zona postal.
phoneNumber Text[30] Número telefónico de contacto.
email Text[80] Dirección de correo electrónico.
website Text[255] Dirección URL del almacén.
lastModifiedDateTime Datetime Marca de tiempo (UTC) de la última vez que se realizó un cambio en cualquier campo de este registro.

El maestro de proveedores contiene toda la información relacionada con todos los proveedores registrados en la empresa.

Suscripción del recurso por webhook

POST
https://api.businesscentral.dynamics.com/v2.0/{tenantId}/{environmentName}/api/v2.0/subscriptions
Content-Type: application/json
Authorization: Bearer {access_token}
body
{
"notificationUrl": "UrlNotificationId",
"resource": "/api/v2.0/companies({{companyId}})/vendors",
"clientState": ""
}

Endpoint para Listado de proveedores (Sincronización Manual)

GET
https://api.businesscentral.dynamics.com/v2.0/%TenantID%/%enviromentName%/api/v2.0/companies(%companyId%)/vendors
Content-Type: application/json
Authorization: Bearer {access_token}

Datos obtenidos

{
"@odata.context": "https://api.businesscentral.dynamics.com/v2.0/30eb258d-51a4-4f58-9c88-bf72d4d3325a/TEST/api/v2.0/$metadata#companies(41cc1c74-5021-f011-9af7-000d3ac04986)/vendors/$entity",
"@odata.etag": "W/\"JzIwOzEyNDExOTE4NjY5ODI1NDc2OTA2MTswMDsn\"",
"id": "8797deb4-5121-f011-9af7-002248dfda48",
"number": "C-PROV0000008",
"displayName": "PROVEEDOR 1",
"addressLine1": "",
"addressLine2": "",
"city": "Caracas",
"state": "Distrito Capital",
"country": "VE",
"postalCode": "1010",
"phoneNumber": "",
"email": "",
"website": "",
"taxRegistrationNumber": "",
"currencyId": "7d2ee4e9-5021-f011-9af7-002248dfda48",
"currencyCode": "USD",
"irs1099Code": "",
"paymentTermsId": "00000000-0000-0000-0000-000000000000",
"paymentMethodId": "00000000-0000-0000-0000-000000000000",
"taxLiable": false,
"blocked": "_x0020_",
"balance": 3840813.19,
"lastModifiedDateTime": "2026-02-05T00:00:07.777Z"
}

Campos de la respuesta

Nombre Tipo de dato Descripción
@odata.context String (URL) La URL que define el esquema y el origen de los datos.
@odata.etag String Un identificador de versión del registro.
id Guid ID de unidad.
number Text[20] Es el código del proveedor.
displayName Text[100] Nombre descriptivo del proveedor.
addressLine1 Text[100] Campo para la dirección principal.
addressLine2 Text[50] Campo para información adicional de la dirección.
city Text[30] Nombre de la ciudad de residencia o de despacho del cliente.
state Text[30] Estado, provincia, departamento o región administrativa.
country Text[10] Código del país.
postalCode Text[20] Código o zona postal.
phoneNumber Text[30] Número telefónico de contacto.
email Text[80] Dirección de correo electrónico.
website Text[255] Dirección URL del almacén.
taxRegistrationNumber Text[50] Es el identificador fiscal.
taxLiable Boolean Define si el proveedor está sujeto a impuestos.
currencyId Guid Identificador técnico (GUID) de la moneda que el cliente.
currencyCode Text[10] Código internacional de la moneda.
balance Decimal Es la suma de todos los movimientos contables abiertos.
blocked Boolean Estado de bloqueo administrativo.
paymentTermsId Guid Identificador técnico (GUID) que define los días de crédito.
paymentMethodId Guid Identificador (GUID) que indica cómo suele pagar el proveedor.
irs1099Code Text[50] Específico para la localización de EE. UU.
lastModifiedDateTime Datetime Marca de tiempo (UTC) de la última vez que se realizó un cambio en cualquier campo de este registro.

El maestro de unidades contiene toda la información relacionada con todas las unidades de medidas utilizadas en los artículos registrados en la empresa.

Suscripción del recurso por webhook

POST
https://api.businesscentral.dynamics.com/v2.0/{tenantId}/{environmentName}/api/v2.0/subscriptions
Content-Type: application/json
Authorization: Bearer {access_token}
{
"notificationUrl": "UrlNotificationId",
"resource": "/api/v2.0/companies({companyId})/unitsOfMeasure",
"clientState": ""
}

Endpoint para Listado de unidades de medida (Sincronización Manual)

GET
https://api.businesscentral.dynamics.com/v2.0/{TenantID}/{enviromentName}/api/v2.0/companies({companyId})/unitsOfMeasure
Content-Type: application/json
Authorization: Bearer {access_token}

Datos obtenidos

{
"@odata.context": "https://api.businesscentral.dynamics.com/v2.0/30eb258d-51a4-4f58-9c88-bf72d4d3325a/TEST/api/v2.0/$metadata#companies(41cc1c74-5021-f011-9af7-000d3ac04986)/unitsOfMeasure/$entity",
"@odata.etag": "W/\"JzIwOzExODk2NTgyNjA1MDcwOTE1NjE4MTswMDsn\"",
"id": "4acfdbef-5021-f011-9af7-002248dfda48",
"code": "BOTELLA",
"displayName": "Botella",
"internationalStandardCode": "BOTELLA",
"symbol": "",
"lastModifiedDateTime": "2025-04-24T21:13:43.817Z"
}

Campos de la respuesta

Nombre Tipo de dato Descripción
@odata.context String (URL) La URL que define el esquema y el origen de los datos
@odata.etag String Un identificador de versión del registro.
id Guid ID de unidad.
code Text[10] Es el identificador que el usuario ve y utiliza.
displayName Text[50] El nombre descriptivo de la unidad.
internationalStandardCode Text[50] Código estándar internacional de la unidad.
symbol Text[10] El símbolo gráfico de la unidad.
lastModifiedDateTime Datetime Marca de tiempo (UTC) de la última vez que se realizó un cambio en cualquier campo de este registro.

El maestro de transportistas contiene toda la información relacionada con el listado de transportistas registrados en la empresa.

Suscripción del recurso por webhook

POST
https://api.businesscentral.dynamics.com/v2.0/{{TenantID}}/{{enviromentName}}/api/virtualOfficeGroup/integration/v1.0/subscriptions
Content-Type: application/json
Authorization: Bearer {access_token}
{
"notificationUrl": UrlNotificationId,
"resource": "/virtualOfficeGroup/vog/v1.0/companies({{companyId}})/shippingAgents",
"clientState": ""
}

Endpoint para Listado de transportistas (Sincronización Manual)

Sección titulada «Endpoint para Listado de transportistas (Sincronización Manual)»
GET
https://api.businesscentral.dynamics.com/v2.0/{{TenantID}}/{{enviromentName}}/api/virtualOfficeGroup/integration/v1.0/companies({{companyId}})/shippingAgents?$expand=shippingAgentsVehicles
Content-Type: application/json
Authorization: Bearer {access_token}

Datos obtenidos

{
"@odata.context": "https://api.businesscentral.dynamics.com/v2.0/30eb258d-51a4-4f58-9c88-bf72d4d3325a/TEST/api/virtualOfficeGroup/integration/v1.0/$metadata#companies(41cc1c74-5021-f011-9af7-000d3ac04986)/shippingAgents",
"value": [
{
"@odata.etag": "W/\"JzE5OzkxODk1OTg3MzM5OTY4NDE4NzUxOzAwOyc=\"",
"id": "b057d38a-c006-f111-8405-7ced8da9239b",
"code": "CM3SRL",
"name": "Camiones",
"vendor": "C-PROV0000008",
"vendorName": "",
"lastModifiedDateTime": "2026-06-11T19:18:00.637Z",
"shippingAgentsVehicles": [
{
"@odata.etag": "W/\"JzE5Ozk2NzIyNDU0NDUwMzUyMDQxODkxOzAwOyc=\"",
"id": "5eec9a56-ca65-f111-ab09-7ced8da8a516",
"code": "AD543ED",
"description": "CAMION",
"systemModifiedAt": "2026-06-11T19:18:35.167Z"
},
]
}
]
}

Campos de la respuesta (encabezado)

Nombre Tipo de dato Descripción
@odata.context La URL que define el esquema y el origen de los datos
@odata.etag Un identificador de versión del registro.
id Guid ID del Transportista.
code Code[10] Es el código del transportista.
name Text[50] Nombre del transportista.
vendor Text[100] codigo de proveedor
vendorName Text[100] Nombre del proveedor
lastModifiedDateTime Datetime Marca de tiempo (UTC) de la última vez que se realizó un cambio en cualquier campo de este registro.

Campos de la respuesta (placas)

Nombre Tipo de dato Descripción
@odata.context La URL que define el esquema y el origen de los datos
id Guid ID del vehiculo.
code Text[15] codigo del vehiculo
description Text[100] descripcion del vehiculo
lastModifiedDateTime Datetime Fecha de la ultima modificacion

El maestro de código motivo contiene toda la información relacionada con el listado de códigos de motivo utilizados en ajustes de inventario y transferencia de pedidos.

Suscripción del recurso por webhook

{
"notificationUrl": "UrlNotificationId",
"resource": "/virtualOfficeGroup/vog/v1.0/companies({{companyId}})/reasonCodes",
"clientState": ""
}

Endpoint para Listado (Sincronización Manual)

GET

https://api.businesscentral.dynamics.com/v2.0/{{TenantID}}/{{enviromentName}}/ODataV4/Company('{{companyId}}')/ReasonCodes

Content-Type: application/json Authorization: Bearer {access_token}

Datos obtenidos

{
"@odata.context": "https://api.businesscentral.dynamics.com/v2.0/30eb258d-51a4-4f58-9c88-bf72d4d3325a/TEST/ODataV4/$metadata#Company('41cc1c74-5021-f011-9af7-000d3ac04986')/ReasonCodes",
"value": [
{
"@odata.etag": "W/\"JzE4OzU4Nzk3ODU4NjA2OTE2OTgyNTE7MDA7Jw==\"",
"code": "ACTIVO",
"description": "CODIGO ACTIVO",
"status": true,
"adjustment": false,
"accountNo": "",
"itemTransfer": true,
"inTransit": false,
"id": "3a0342ee-4013-f111-8341-002248d31bd2",
"systemCreatedAt": "2026-02-26T18:28:31.28Z",
"systemModifiedAt": "2026-02-26T18:38:34.72Z"
}
]
}

Campos de la respuesta

Nombre Tipo de dato Descripción
@odata.context La URL que define el esquema y el origen de los datos
@odata.etag Un identificador de versión del registro.
id Guid ID del recurso.
code Text[10] Código de motivo
description Text[50] Descripción del motivo.
status Boolean Estado del código de motivo
adjustment Boolean Si está activo para ajuste de inventario
accountNo Text[20] Cuenta contable asociada
itemTransfer Boolean Si está activo para artículos en transferencias
inTransit Boolean Si está activo para transferencia en tránsito
systemCreatedAt Datetime Marca de tiempo (UTC) de la fecha en que se registró el código de motivo
systemModifiedAt Datetime Marca de tiempo (UTC) de la última vez que se realizó un cambio en cualquier campo de este registro.