Skip to main content

Create Bill

POST 

/api/inbound-shipments/:inbound_shipment/bills

Creates a landed cost bill attached to this inbound shipment. Cannot be added to cancelled shipments.

Required scope: purchase-orders:write

Grant this scope to your token under Settings → Developer → Personal Access Tokens.

Authentication: Requires Bearer token.

Fields:

  • vendor_id (required): Vendor/supplier ID
  • invoice_number (required, unique): Invoice number
  • invoice_date (required): Invoice date
  • currency_id (optional): Currency ID
  • currency_rate (optional): Exchange rate
  • proration_strategy (required): One of: cost_based, quantity_based, weight_based, manual
  • lines (required): Array of bill line items — each requires description, quantity, amount; nominal_code_id optional
  • allocations (optional): Array of allocations to PO lines or warehouse transfer lines — allocation amounts must not exceed bill total

Line descriptions must be unique within a bill. Two lines on the same bill cannot share a description, and the comparison ignores letter case — "Freight" and "freight" collide. A duplicate is rejected with 422 before anything is saved.

Allowed proration_strategy values: cost_based, quantity_based, weight_based, volume_based, specific_line, revenue_based, manual, duty_estimate_based. duty_estimate_based ("By estimated duty") splits the bill across purchase order lines in proportion to each line's estimated customs duty — the duty frozen at receipt, or the shipment-stage estimate for units not yet received. If every covered line's estimated duty is zero it falls back to cost_based and the bill response carries an allocation_warnings entry with code duty_estimates_zero_fallback. A weight_based, volume_based or cost_based bill whose basis is zero on every line it covers (no weights, no dimensions, no cost) is split by cost (or by quantity when cost is zero too); each allocation's proration_strategy records the basis actually used, and the bill carries an allocation_warnings entry with code proration_basis_fallback.

Requires permission: purchase_orders.update

Request​

Responses​

OK

Response Headers
    Content-Type