Creación de movimientos
En esta página encontrarás una explicación sobre la creación de movimientos en la API de Koncili.
El proceso completo de conciliación financiera implica 3 etapas principales que garantizan la trazabilidad y la precisión de los movimientos:
1. Envío del pedido
Envío inicial de la transacción con todos los detalles financieros. Esta etapa registra los componentes financieros extracts (tipos aceptados: COMISSION, SHIP, RETURN_COMISSION, RETURN_SHIP y SALE) que se conciliarán después.
2. Envío de la liquidación
Agrupación lógica de múltiples pedidos para procesamiento por lotes. Define el período financiero y prepara el sistema para recibir los movimientos.
3. Ejecución de los movimientos
Todos los componentes financieros de un pedido deben enviarse en una única solicitud. No es posible agregar movimientos parciales o complementarios después.
Regla fundamental:
Los movimientos financieros (releases) deben reproducir exactamente los valores y tipos prerregistrados en el pedido (extracts), manteniendo el identificador único (marketplaceCode).
Tipos de movimientos admitidos
Los tipos de movimientos admitidos se detallan en la lista completa de tipos de movimientos. Los tipos principales incluyen:
- SALE: Monto bruto de las ventas (siempre positivo)
- COMISSION: Tarifas de comisión (siempre negativo)
- SHIP: Costos de envío (positivo o negativo)
- RETURN_COMISSION: Reversión de comisiones (siempre positivo)
Flujo completo: Pedido → Conciliación → Movimientos
1. Envío del pedido
El pedido contiene la estructura financiera completa a través del array extracts. Cada ítem representa un componente financiero distinto:
{
"marketplaceCode": "701-2798273-4005859",
"channelName": "CHANNEL_NAME",
"accountId": "19055",
"status": "PAID_WAITING_DELIVERY",
"createdDate": "2025-05-09T12:00:00Z",
"approvedDate": "2025-05-09T12:00:00Z",
"sendDate": "2025-05-09T12:00:00Z",
"estimatedDeliveryDate": "2025-05-15T12:00:00Z",
"deliveryDate": "2025-05-15T12:00:00Z",
"cancelDate": null,
"totalGrossValue": 203.63,
// ... (se omitieron otros campos)
"extracts": [
{
"marketplaceCode": "701-2798273-4005859",
"type": "SALE", // Venta bruta
"value": 203.63, // Siempre positivo
"expectedDate": "2025-06-05T12:00:00Z"
},
{
"marketplaceCode": "701-2798273-4005859",
"type": "COMISSION", // Tarifa de comisión
"value": -24.44, // Siempre negativo
"percentage": 12 // 12% de comisión
},
{
"marketplaceCode": "701-2798273-4005859",
"type": "SHIP", // Costo de envío
"value": -27.95 // Negativo (costo)
}
]
}
2. Envío de la liquidación
La conciliación agrupa pedidos para procesamiento por lotes. El campo releasesQtd debe corresponder exactamente al número total de movimientos financieros de todos los pedidos incluidos:
{
"channelName": "CHANNEL_NAME",
"accountId": 19055,
"periodInitDate": "2024-02-14T01:00:01Z", // Inicio del período
"periodEndDate": "2024-02-15T01:00:01Z", // Fin del período
"releasesQtd": 3, // Cantidad de movimientos financieros incluidos
"totalNetValue": 203.63 // Monto neto total de la conciliación
}
El envío de la liquidación debe devolver un JSON similar a este (el id devuelto es el reconciliationId):
{
"id": 237 // ID único de la conciliación
}
Se envía la cantidad de releases para un solo movimiento a la vez.
- El
reconciliationIddevuelto es obligatorio para los movimientos - El período debe cubrir todas las fechas de
releasedDatede los movimientos - El
releasesQtddebe ser la suma exacta de todos los movimientos que se enviarán
3. Envío de movimiento
{
"reconciliationId": 237,
"channelName": "CHANNEL_NAME",
"accountId": 19055,
"marketplaceCode": "701-2798273-4005859",
"status": "CONCLUDED",
"createdDate": "2024-02-10T12:12:12Z",
"releasedDate": "2024-02-10T13:13:13Z",
"releaseType": "IN_CASH",
"installment": 1,
"installmentQuantity": 1,
"releases": [
{
"marketplaceCode": "701-2798273-4005859",
"type": "SALE",
"value": 203.63
},
{
"marketplaceCode": "701-2798273-4005859",
"type": "COMISSION",
"value": -24.44
},
{
"marketplaceCode": "701-2798273-4005859",
"type": "SHIP",
"value": -27.95
}
]
}
Principio de reproducción de los movimientos
- Correspondencia exacta de tipos: Los tipos en releases deben ser idénticos a los registrados en
extracts - Consistencia de valores: Los valores deben ser idénticos a los del prerregistro
- Misma cantidad: El número de ítems en releases debe ser igual al número de
extracts - Mismo
marketplaceCode: El identificador único debe mantenerse en todos los niveles
Validación de errores comunes
Validaciones automáticas
Los campos mal formados en el payload de cualquier solicitud de los procesos mencionados se presentarán en la respuesta, con mensajes de error específicos y estado HTTP 400 (Bad Request).
Buenas prácticas de implementación
-
Mantén los valores originales:
Nunca recalcules valores: usa exactamente los mismos valores del pedido original. -
Conserva el orden:
Mantén la misma secuencia de movimientos entre el pedido y la conciliación. -
Valida con anticipación:
Verifica los tipos de movimientos admitidos por el marketplace antes del envío. -
Gestiona los períodos:
Asegúrate de que todas las fechas de los movimientos estén dentro del período definido en la conciliación.