Skip to content

transfer_order/completed

Overview

PropertyValue
Webhook typetransfer_order/completed
Kafka topictransfer-order.completed
DirectionPlatform → Your endpoint

Description

Fired when a transfer order is marked as completed. This happens once reception is finalized at the warehouse — all lines have been processed (received, restocked, or marked as garbage), and the order state transitions to COMPLETED.

Trigger Conditions

  • Warehouse staff completes reception of all lines on the transfer order
  • The order state transitions from OPENED to COMPLETED

Message Envelope

json
{
  "header": {
    "organizationId": "org_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "messageId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "webhookId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "type": "transfer_order/completed",
    "date": "2024-03-26T15:45:00.000Z"
  },
  "body": { ... }
}

Body — Property Table

TransferOrder Object

FieldTypeNullableDescription
idstring (uuid)NoUnique transfer order identifier
organizationIdstring (uuid)NoOrganization that owns this transfer order
locationIdstring (uuid)NoDestination warehouse/location
supplierIdstring (uuid)YesSupplier who provided the stock
stateenumNoAlways COMPLETED for this event
orderNumberstringNoHuman-readable order reference number
externalReferencestringYesExternal system reference
shippingDatestring (ISO 8601)NoOriginally scheduled shipping date
expectedDatestring (ISO 8601)NoOriginally expected arrival date
carrierstringYesCarrier name
trackingstringYesCarrier tracking number
commentstringYesFree-text comment
emergencybooleanYesEmergency replenishment flag
containerNumberintegerYesNumber of containers/pallets
containerTypeenumNoContainer type: BOX, PALLET, CONTAINER
linesTransferOrderLine[]NoFinal line details with reception quantities
createdAtstring (ISO 8601)NoOriginal creation timestamp
issuedAtstring (ISO 8601)NoIssue timestamp
updatedAtstring (ISO 8601)NoTimestamp of completion

TransferOrderLine Object

FieldTypeNullableDescription
idstring (uuid)NoUnique line identifier
transferOrderIdstring (uuid)NoParent transfer order ID
stockReferenceIdstring (uuid)YesAssociated stock reference
labelstringYesDisplay label
skustringYesStock keeping unit
referencestringYesProduct reference code
limitUsageDatestring (ISO 8601)YesExpiry date
batchNumberstringYesBatch / lot number
expectedQuantityintegerNoDeclared quantity from supplier
receivedQuantityintegerYesTotal quantity received
restockedQuantityintegerYesQuantity placed into available stock
garbageQuantityintegerYesQuantity discarded (damaged/expired)
metaobjectYesArbitrary metadata (JSON)
stateenumNoLine state: ACTIVE or CANCELED

Full JSON Payload Sample

json
{
  "header": {
    "organizationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "messageId": "g8h9i0j1-k2l3-4567-mnop-890123456789",
    "webhookId": "c3d4e5f6-a7b8-9012-cdef-123456789012",
    "type": "transfer_order/completed",
    "date": "2024-03-26T15:45:00.000Z"
  },
  "body": {
    "id": "d4e5f6a7-b8c9-0123-defa-234567890123",
    "organizationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "locationId": "e5f6a7b8-c9d0-1234-efab-345678901234",
    "supplierId": "f6a7b8c9-d0e1-2345-fabc-456789012345",
    "state": "COMPLETED",
    "orderNumber": "TO-2024-001234",
    "externalReference": "SUPP-PO-98765",
    "shippingDate": "2024-03-20T00:00:00.000Z",
    "expectedDate": "2024-03-25T00:00:00.000Z",
    "carrier": "DHL Freight",
    "tracking": "1234567890123456",
    "comment": null,
    "emergency": false,
    "containerNumber": 2,
    "containerType": "PALLET",
    "createdAt": "2024-03-15T10:23:45.000Z",
    "issuedAt": "2024-03-15T10:23:45.000Z",
    "updatedAt": "2024-03-26T15:45:00.000Z",
    "lines": [
      {
        "id": "a7b8c9d0-e1f2-3456-abcd-567890123456",
        "transferOrderId": "d4e5f6a7-b8c9-0123-defa-234567890123",
        "stockReferenceId": "b8c9d0e1-f2a3-4567-bcde-678901234567",
        "label": "T-Shirt Blanc Taille M",
        "sku": "TSHIRT-WHITE-M",
        "reference": "TSH-WH-M-001",
        "limitUsageDate": null,
        "batchNumber": null,
        "expectedQuantity": 100,
        "receivedQuantity": 98,
        "restockedQuantity": 95,
        "garbageQuantity": 3,
        "meta": null,
        "state": "ACTIVE"
      },
      {
        "id": "c9d0e1f2-a3b4-5678-cdef-789012345678",
        "transferOrderId": "d4e5f6a7-b8c9-0123-defa-234567890123",
        "stockReferenceId": null,
        "label": "Pantalon Bleu Taille 38",
        "sku": "PANTS-BLUE-38",
        "reference": "PNT-BL-38-001",
        "limitUsageDate": null,
        "batchNumber": "BATCH-2024-Q1",
        "expectedQuantity": 50,
        "receivedQuantity": 50,
        "restockedQuantity": 50,
        "garbageQuantity": 0,
        "meta": null,
        "state": "ACTIVE"
      }
    ]
  }
}

Notes

  • The lines payload reflects the final reconciliation: expectedQuantity vs receivedQuantity.
  • restockedQuantity + garbageQuantity should equal receivedQuantity when reception is complete.
  • Discrepancies between expectedQuantity and receivedQuantity are normal and should be tracked by your integration.
  • Stock levels at locationId are updated in real-time as reception progresses; the completed event signals the final state.

HappyColis API Documentation