We are using Acumatica 2025 R2 and the contract-based REST API.
We created a custom endpoint exposing:
Shipment → ShipmentDetail → Allocations
We need to split one component of a non-stock kit across two warehouse locations while keeping everything on one shipment line.
Example:
- Shipment line: KIT-001, Shipped Qty. 2
- COMPONENT-A requirement: 4 units at BIN-A
- COMPONENT-B requirement: 2 units at BIN-B
Desired result:
- COMPONENT-A: 2 units at BIN-A and 2 units at BIN-C
- COMPONENT-B: 2 units at BIN-B, either as one allocation or two allocations of 1 each
- Kit shipment line remains at Shipped Qty. 2
The equivalent operation works manually on the Shipments screen.
Non-kit control test
Using the custom endpoint, we successfully split a regular stock-item shipment line by:
- Reducing the existing allocation quantity.
- Inserting a second allocation.
- Updating the newly assigned SplitLineNbr to the desired location in a second PUT.
The request uses:
PUT /entity/WMS/24.200.001/Shipment?$expand=ShipmentDetail/Allocations
Therefore, the endpoint can update and insert shipment allocations successfully.
Kit test
For the kit line, we reduced COMPONENT-A from quantity 4 to 2 and inserted another COMPONENT-A allocation for quantity 2 at BIN-C.
During processing, Acumatica correctly created these temporary results:
- COMPONENT-A: 2 at BIN-A
- COMPONENT-A: 2 at BIN-C
- Existing COMPONENT-B allocation reduced from 2 to 1
- New COMPONENT-B allocation created for quantity 1
However, the automatically generated COMPONENT-B allocation has a blank Location field. The request fails with:
Inserting 'Shipment Line Split' record raised at least one error.
and:
'Location' cannot be empty.
The entire transaction then rolls back.
We cannot update the generated component allocation in a second request because it is never committed. We also cannot address it in the original request because its SplitLineNbr does not exist before the PUT. Including another unkeyed COMPONENT-B row causes Acumatica to treat it as additional kit demand and generate more component allocations.
Questions
- Is there a supported contract-based REST API method for completing the automatically generated kit-component allocation before the transaction is committed?
- Is there another entity, action, PATCH operation, or endpoint configuration intended for this scenario?
- If customization is required, would the recommended solution be a custom action on
SOShipmentEntrythat performs the split and assigns locations to all generated component splits within the same graph session?
The final allocation structure is valid because the same operation can be completed and confirmed through the Shipments screen. The problem appears to be that the REST import process cannot address the component split created during the current request.