Submit purchase order records
/api/v2/purchase-ordersGoods In in FuseSend purchase orders (Goods In in Fuse) to announce inbound stock. Accepts an array of records. The whole batch is accepted with a 202, or rejected with a 400 that lists every failing record and field. The mandatory fields listed below must always be present, and the Standard example shows the minimal complete shape. Note: order.type is set by the platform for purchase orders — any value submitted here is ignored.
Examples
Complete, valid payloads for the scenarios we see most. Pick one to load it into the panel.
Values shown like YOUR_SITE are your own configuration, not literals — substitute the values from your onboarding pack. The sandbox checks shape only, so a payload can pass there and still be rejected by the warehouse.
- Order reference
identifiers.id - Business ID
identifiers.businessId - Class
order.class - Warehouse
location.warehouse - Owner
location.ownerId - Expected delivery date
dates.dueIn - SKU ID
lines[].product.skuId - Order quantity
lines[].quantities.ordered - Advised quantity
lines[].quantities.advised
Request schema
The body is an array of records in this shape. Pick a scenario above to see a complete, valid payload.
▶identifiersobjectHow this inbound order is identified.
- idstringmandatoryYour unique reference for this purchase order.
- businessIdstringmandatoryYour Fuse business ID. Must match the businessId you authenticate with.
- businessOrderNumberstringYour purchasing system's order number, carried as an additional reference.
- businessSupplierIdstring
- purchaseOrderstringA further raw PO reference, where you carry more than one.
- primestring
- consignmentIdstring
- asnNumberstring
- grnNumberstring
- manifestNumberstring
- bolstring
- masterBolstring
- pocstring
▶orderobjectOrder-level classification.
- statusstring
- typestring
- classstringmandatoryYour business's goods-in order class, from your onboarding configuration. Not interchangeable with the sales-order class — a different code list applies inbound.
- stagestring
- prioritystring
- maintenanceIndicatorstring
▶supplierobjectWho is delivering the stock.
- idstringYour supplier code.
- groupstring
- namestringSupplier name.
- orderNumberstringThe supplier's own order number.
- referencestringThe supplier's reference for this delivery — what the warehouse books the arrival against.
▶locationobjectWhere the stock is arriving.
- sitestringReceiving site code, from your onboarding configuration.
- warehousestringmandatoryWarehouse code within the site.
- ownerIdstringmandatoryStock owner the receipt books against.
- stockStatusstring
- regionstring
- distributionCenterstring
- storestring
- receiptLanestringReceiving lane, where your site uses lane routing.
▶shippingobject
- methodstring
▶carrierobject
- idstring
- scacstring
- trackingNumberstring
- trackingUrlstring
- routestring
- loadIdstring
- loadSequencestring
▶qualityobject
- qualityAssurancestring
- acceptancestring
- variancestring
- returnReasonstring
- acceptanceCodestring
- ignorestring
▶quantitiesobject
- totalLinesnumber
- totalQuantitynumber
- storeUnitsQuantitynumber
- volumenumber
- weightnumber
- actualWeightnumber
▶tasksobject
- countNewnumber
- countCurrentnumber
- countActionednumber
▶timesobject
- toUnloadnumber
- toInspectnumber
- toPutawaynumber
- othernumber
- toCollectnumber
▶personnelobject
- supervisorstring
- reasonstring
▶datesobjectDelivery dates.
- receiptstringISO 8601 date or date-time
- createdstringISO 8601 date or date-time
- suspendedstringISO 8601 date or date-time
- closedstringISO 8601 date or date-time
- collectedstringISO 8601 date or date-time
- dueInstringmandatoryExpected delivery date. Accepts an ISO 8601 date or date-time.
- arrivalstringISO 8601 date or date-time
▶indicatorsobject
- asnstring
- paperworkstring
- overduestring
▶metadataobjectOrder-level notes. The purchase order carries a single note field — there is no customisations array inbound.
- notesstringFree-text note for the receiving team.
▶linesarray of objectThe expected lines.
▶identifiersobjectLine identification.
- purchaseOrderIdstringThe purchase order this line belongs to — repeat the header id.
- lineNumberstringLine number within the order, as a string.
- levelstring
- idnumber
- consignmentIdstring
▶productobjectWhat is arriving.
- skuIdstringmandatoryThe SKU being delivered — must exist as master data first.
- businessSkuIdstring
- supplierSkustringThe supplier's own code for the product, where it differs.
- upcstring
- upcDescriptionstring
- categorystring
- unitOfMeasurestringA real warehouse unit code — "EA" is the common each/unit code; "EACH" is rejected.
▶locationobjectLine-level placement overrides.
- sitestring
- warehousestring
- ownerstring
- stockStatusstringReceive this line's stock under a non-default stock status code (e.g. quarantine for inspection before release).
- primarySitestring
- primaryWarehousestring
▶quantitiesobjectExpected quantities. Send both ordered and advised — ordered does not default from advised.
- orderednumbermandatoryQuantity originally ordered from the supplier.
- advisednumbermandatoryQuantity the supplier has advised is on this delivery.
- receivednumber
- rejectednumber
- inOrdernumber
- dueInnumber
- spawnnumber
▶qualityobject
- returnReasonstring
- qualityAssurancestring
- acceptancestring
- variancestring
▶datesobject
- receiptstringISO 8601 date or date-time
- primaryReceiptstringISO 8601 date or date-time
▶metadataobject
- valuesstring
- shippingAddressstring
- businessIdstring
- ownerstring
- stockStatusstring
- hasAttachmentstring
- hasSpecialConditionsstring
- stagestring
- backOrderIndicatorstring
- ignorestring
Headers
AuthorizationBasic base64(businessId:apiKey)requiredHTTP Basic. Username is your businessId, password is your API key.
Content-Typeapplication/jsonrequiredx-correlation-idoptionalYour own trace id for this request. Adopted for every log line Fuse writes while processing it, and returned as `correlationId` in the response body. Omitted: Fuse generates one.
Content-Typeapplication/jsonrequiredOn 202.
Content-Typeapplication/problem+jsonrequiredOn 400, 401.
Responses
application/jsonEvery record passed validation and is queued for the warehouse.
{
"success": true,
"recordCount": 1,
"messageIds": [
"11384719623456789"
],
"correlationId": "550e8400-e29b-41d4-a716-446655440000"
}Body fields
- successbooleanIndicates if the request was successfully accepted
- recordCountnumberNumber of records accepted for processing
- messageIdsarray of stringPub/Sub message IDs for tracking
- correlationIdstringCorrelation ID for request tracing
application/problem+jsonNo record was accepted. Every failing record is listed, by its index in the array you sent.
{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "Bad Request",
"status": 400,
"detail": "Validation failed for one or more records",
"instance": "/api/v2/purchase-orders",
"errors": [
{
"index": 0,
"errors": [
"identifiers.businessId: Required",
"shipmentLines.0.quantities.ordered: Expected number, received string"
]
}
]
}Body fields
- typestringA URI reference that identifies the problem type
- titlestringA short, human-readable summary of the problem type
- statusnumberThe HTTP status code generated by the origin server for this occurrence of the problem
- detailstringA human-readable explanation specific to this occurrence of the problem
- instancestringA URI reference that identifies the specific occurrence of the problem
- errorsarray of objectValidation errors (extension field for 400 Bad Request responses). For field-level validation errors (from Zod), this is an array of FieldValidationErrorDto. For batch validation errors, this is an array of RecordValidationErrorDto.
application/problem+jsonCredentials missing, malformed, or not recognised for this business.
{
"type": "https://tools.ietf.org/html/rfc7235#section-3.1",
"title": "Unauthorized",
"status": 401,
"detail": "Unauthorized",
"instance": "/api/v2/purchase-orders"
}Body fields
- typestringA URI reference that identifies the problem type
- titlestringA short, human-readable summary of the problem type
- statusnumberThe HTTP status code generated by the origin server for this occurrence of the problem
- detailstringA human-readable explanation specific to this occurrence of the problem
- instancestringA URI reference that identifies the specific occurrence of the problem
- errorsarray of objectValidation errors (extension field for 400 Bad Request responses). For field-level validation errors (from Zod), this is an array of FieldValidationErrorDto. For batch validation errors, this is an array of RecordValidationErrorDto.