Purchase orders (goods)

Overview
This is where goods purchase orders run — from draft to goods receipt.
A boundary that saves time: this module orders goods for the warehouse. Commissions to service providers and subcontractors run through procurement — that is about cost per project, this is about stock.
Core tasks
Create a purchase order. New purchase order requires an orderable supplier; expected goods receipt, a note and line items follow. The list shows number, status, total, order date and the expected arrival date.
Convert from suggestions. The usual route does not start here but at the reorder suggestions or a purchasing list — from there, draft orders per supplier are created.
Use dropshipping. With dropshipping the goods go straight from the supplier to the customer, without the detour through your own warehouse.
Record a goods receipt. The receipt is recorded on the purchase order — the goods receipt action leads there. The overview of receipts lives under Goods receipts.
Fields in detail
The What it does column answers what changes in the system — not what the field is called. The grey name behind the label is the API field: the same thing runs under that name through automation, import and AI tools.
Creating and editing an order
| Field | Required | Values / format | What it does |
|---|---|---|---|
Supplier supplierRoleUlid | yes | an existing supplier | Who is ordered from. Payment terms, currency, minimum order value and default lead time come along from there. |
Order type orderType | no | standard order (default) or blanket order | A blanket order agrees product, price and a quantity allowance for a period and releases no goods — delivery happens on call-off only. That is the difference to a standard order, which orders right away. If a call-off is cancelled, its quantity goes back to the blanket; the cancelled call-off stays in the list of call-offs. |
Blanket valid from validFrom | with a blanket order | date | From when call-offs against the blanket are allowed. |
Blanket valid to validTo | with a blanket order | date | Until when call-offs are allowed. After that no call-off is possible; open remainders rest until the blanket is extended. |
Items items | yes | articles with quantity and price | What is ordered. The price comes from the supplier list; deviations stay on the document and surface at invoice matching. |
Expected on expectedAt | no | date | When the goods should arrive. Pre-filled from the supplier's lead time. This figure carries the expected column in the stock overview. |
Payment terms paymentTermUlid | no | master data "payment terms" | When you have to pay. Pre-filled from the supplier. |
Delivery address deliveryAddress | no | address | Where it is delivered. Empty means the address of the default warehouse. |
Dropshipping isDropship | no | yes/no | Set to yes the supplier delivers straight to your customer. The goods never touch your warehouse — no stock arises and goods receipt is skipped. |
Brand brandId | no | one of your brands | Which brand orders — determines number range, document template and sender. |
Document template documentTemplateId | no | a configured template | Layout of the order as a PDF. |
Notes notes | no | text | Internal note on the order. |
Releasing and goods receipt
| Field | Values / format | What it does |
|---|---|---|
Release release | yes/no | Turns the draft into a binding order: number, fixed prices, a document ready to send. From here nothing changes quietly any more. |
Delivery note number deliveryNoteNumber | text | The number on the supplier's delivery note. It binds the goods receipt to their paperwork — the document people look for later. |
Blocked stock isBlockedStock | yes/no | Set to yes the goods go into blocked stock instead of free stock: booked, but not sellable. The right route for goods under inspection or suspected of defects. |
Note note | text | Note on the goods receipt, for instance about deviations. |
Interface and automation only
No mask carries these fields; they can be set through the interface, an import or an automation.
| Field | Values / format | What it does |
|---|---|---|
additionalCosts | rows of kind, label, net amount and allocation key | Additional costs of the whole document — freight, customs, insurance, packaging, other. The allocation key decides the landed cost: by value 500 EUR of freight lands on the expensive item, by weight on the heavy one, by quantity on the one with the largest count. Writing replaces the entire list. They only affect stock under the house rule purchasing.receipt.price_source = landed. |
receiptAdditionalCosts | the same rows as above | Additional costs of this one delivery — the freight invoice that arrives with the delivery note. They are spread over the items of this receipt only, not over the whole document. Can only be given on goods receipt. |
deliveredAt | date | The actual delivery date. It is set by the system on a complete goods receipt — unlike Expected on, which holds the plan. |
Settings & permissions
- Module
module.purchasing. purchasing.order.view,.create,.update,purchasing.order.placefor
placing an order bindingly, and .cancel for cancellation.
- Only orderable suppliers appear in the picker. If one is missing, it is not maintained as
orderable.
- Stock changes only on release of the goods receipt, not with the order, see
FAQ & troubleshooting
No supplier to choose from. The message says so explicitly: no orderable suppliers were found. That is a question of supplier master data, not of this page.
Stock does not rise after ordering. By design. An order is an intention; what is booked is the released goods receipt.
I see no purchase order for a suggestion. Suggestions create draft orders. Check the status filter.
Purchasing or procurement? Goods for the warehouse here, services and subcontractors in Procurement.