POST
Confirm a purchase pickup
Company space Cannot be undone For: Buyer, Stock keeper · Permission: purchase_pickups.confirm Conditions
  • A reception that is already confirmed is refused with 409; confirmation happens once.
  • The reception must have at least one line; otherwise the call is refused with 422.
  • Every line is checked again at confirmation: its location asset must still be existing, active, available to the company and not restricted for the current member; its purchase line must still exist on the purchase with an active purchase unit; the quantity may not exceed what is still to receive on that purchase line; and the damage rules are re-applied. Errors are returned per line, keyed by the line identifier.
  • The remaining quantity of each purchase line is reduced; if another confirmation already consumed it, the call is refused with 409.
  • The reception can be confirmed from draft. The purchase’s status is not checked at confirmation.
What else happens
  • Adds the accepted quantity of every line whose product is tracked to stock, in the location asset set on the line (asset_id), as a purchase stock entry linked to the purchase, the supplier, the reception and the purchase line. Untracked products add nothing to stock. A line with no accepted quantity (everything damaged) adds nothing.
  • Each stock entry carries the line’s total cost, so the unit cost of the stock includes the spread extra costs.
  • Spreads the extra costs of the reception over the lines, with the reception’s additional_cost_strategy: average splits equally (remainder to the first lines), prorata splits in proportion to each line’s base cost (rounding remainder to the first line). With the purchase’s total cost strategy, the rounding leftover of the purchase not yet allocated by earlier confirmed receptions is also added to the lines and recorded on the reception as purchase_cost_leftover; the purchase’s own leftover is set back to 0.
  • Records the damage cost of each damaged line; with the treatment “expensed” that cost is removed from the cost of the stock added, with “absorbed_by_remaining_stock” it stays in it. Fills base_cost_total, allocated_purchase_leftover, allocated_landed_cost_total, damage_cost_total, accepted_quantity and cost_total on each line.
  • Decrements the remaining quantity of each purchase line by the received quantity (accepted plus damaged).
  • Sets the reception to confirmed and received_at to now.
  • Sets the purchase to pending while some line still has a remaining quantity, otherwise to completed.
  • The reception posts no cash movement and does not use cash_register_id.
Part of Receive purchased goods.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Path Parameters

purchasePickup
string
required

Identifier of the purchase pickup (27-character KSUID).

Query Parameters

response
enum<string>
default:none

Response mode. Default none; none answers 204 No Content.

Available options:
none,
resource
fields
string

Comma-separated JSON keys of the root resource (id is always rendered). Available: id, type, purchase_id, cash_register_id, reference, status, additional_cost_strategy, purchase_cost_leftover, received_at, expected_at, notes, created_at, updated_at.

include
string

Comma-separated include paths, each optionally followed by its fields in parentheses: units(id,sku),units.uomUnit(id,name). Max depth 6, max 40 paths. Available: items, items.item, items.damageStockableUnit, costs.

Response

Resource (only with response=resource).

id

Identifier of the reception (27-character KSUID).

type

Kind of reception: "pickup" here. Set by the server from the route.

purchase_id

Identifier of the purchase this reception brings goods for. Set at creation and not changeable.

cash_register_id

Cash register recorded on the reception, or null. It must belong to the current company and organization and have a cash account. It is only stored.

reference

Optional free reference, unique among the company's receptions (pickups and deliveries together). Null when none.

status

State of the reception: draft (being prepared), in_transit (deliveries only: the supplier's truck is on its way, still editable) or confirmed (goods received, stock added). Set by the server.

additional_cost_strategy

How the extra costs are spread over the lines at confirmation: average (equally) or prorata (in proportion to each line's base cost).

purchase_cost_leftover
number

Rounding leftover of the purchase's cost that was added to this reception's lines at confirmation, in major units. 0 until the reception is confirmed.

received_at

Date and time of confirmation (ISO 8601). Null until the reception is confirmed.

expected_at

Date the goods are expected (YYYY-MM-DD), or null.

notes

Free notes, or null.

created_at

Date and time the record was created (ISO 8601, UTC).

updated_at

Date and time the record was last changed (ISO 8601, UTC).

items
array

Lines of the reception. Present only when requested with include=items.

costs
array

Extra costs of the reception. Present only when requested with include=costs.