confirm_purchase_order

Confirm a purchase order as its supplier

act entity controlled-share since 2026-10-01

For the supplier of an org's purchase order (a guest of the org in the seller seat, or a member of the supplier's own Trade HQ org): confirms the purchase order with the lines you will supply, and optionally your pro forma number and the date the units will be ready. The confirmation lands in the buyer's PO ingest exactly as an emailed confirmation PDF does, as staged rows the buyer previews and applies. A purchase order is confirmed once: the same confirmation again changes nothing, and a different one is refused.

Contract

shape
entity
authority
act
evidence
none
subscription
false
permission
any one of: org.guest (carried by the caller's role template in the org `org_id`, which owns the document `document_kind`/`document_id`); counterparty (org.member carried by the caller's role template in an org that holds a seat on the document; it reads its own seat); a deactivated caller is refused first
idempotency
natural
emits
po.confirmed
MCP tool
confirm_purchase_order
decision_set
approve, reject, edit, request_info
REST
POST https://api.containertradehq.com/v1/cap/confirm_purchase_order

Through MCP this call returns an approval request first; see Approvals.

Idempotency: keyed by the contract's own inputs: the same inputs replay the first call's result

Inputs

nametyperequiredvalidation
org_idorg_idrequiredtradehq-org-id; 1 to 20 characters
The org that owns the purchase order: the buyer.
document_kindone_ofrequiredone of asset_intake, order
asset_intake: a purchase order. An order is refused.
document_idtextrequired1 to 64 characters
The purchase order's id.
linespo_linesrequired1 to 50 items
What you will supply: each line a size, type, condition and optional colour from the estate's lists, a quantity, and optionally a unit price.
vendor_pro_forma_idtextoptional1 to 199 characters
Your pro forma number for this purchase order.
vendor_etadateoptionaldate, YYYY-MM-DD
When the units will be ready for the in-gate, YYYY-MM-DD.

Response

  • post_id · string · The confirmation.
  • org_id · string · The buyer.
  • document_id · string · The purchase order.
  • party_id · string · The supplier party that confirmed it.
  • ingest_document_id · string · The ingest document the confirmation was staged as: what the buyer's PO ingest preview and apply take.
  • ingest_batch_id · string · Its ingest_po_batch.
  • line_count · integer · Lines confirmed.
  • unit_count · integer · Units confirmed.
  • vendor_eta · stringnull · The ready date given, if any.
  • posted_at · string · When.
Full JSON Schema
{
  "type": "object",
  "properties": {
    "post_id": {
      "type": "string",
      "description": "The confirmation.",
      "x-data-class": "operational"
    },
    "org_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 20,
      "pattern": "^[A-Za-z0-9_-]{1,20}$",
      "format": "tradehq-org-id",
      "description": "The buyer.",
      "x-data-class": "operational"
    },
    "document_id": {
      "type": "string",
      "description": "The purchase order.",
      "x-data-class": "operational"
    },
    "party_id": {
      "type": "string",
      "pattern": "^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$",
      "format": "uuid",
      "description": "The supplier party that confirmed it.",
      "x-data-class": "operational"
    },
    "ingest_document_id": {
      "type": "string",
      "description": "The ingest document the confirmation was staged as: what the buyer's PO ingest preview and apply take.",
      "x-data-class": "operational"
    },
    "ingest_batch_id": {
      "type": "string",
      "description": "Its ingest_po_batch.",
      "x-data-class": "operational"
    },
    "line_count": {
      "type": "integer",
      "minimum": 0,
      "description": "Lines confirmed.",
      "x-data-class": "operational"
    },
    "unit_count": {
      "type": "integer",
      "minimum": 0,
      "description": "Units confirmed.",
      "x-data-class": "operational"
    },
    "vendor_eta": {
      "type": [
        "string",
        "null"
      ],
      "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
      "format": "date",
      "description": "The ready date given, if any.",
      "x-data-class": "operational"
    },
    "posted_at": {
      "type": "string",
      "format": "date-time",
      "description": "When.",
      "x-data-class": "operational"
    }
  },
  "required": [
    "post_id",
    "org_id",
    "document_id",
    "party_id",
    "ingest_document_id",
    "ingest_batch_id",
    "line_count",
    "unit_count",
    "vendor_eta",
    "posted_at"
  ],
  "additionalProperties": false
}

Refusals

not yet declared

The platform refusals apply to every call: version, authentication, authority, validation and rate limits, each in the same envelope.

Surfaces

DesktopF
MobileF
APIF
MCPF*
VoiceD2
PushF
OneBoxN
OutboundF
  • MCP: approval required
  • Voice: degraded: confirmation
  • OneBox: the confirmation is what replaces the inbound PDF; nothing inbound originates it

Events

Related

get_supplier_purchase_order, list_supplier_posts, post_production_status, submit_serial_batch