Blocking Reasons — Retrieval API

Use this endpoint to retrieve the reasons why one or more orders were blocked by Buying Policies. Reasons are produced by the Credit Control and Quotas checks, and they are consumable by back-office UIs and integrations.

Key points

  • Reasons exist when an order is blocked by policy.
  • The endpoint supports single or multiple orders.
  • Reasons contain stable codes plus human-readable context for operators.
  • Reasons can be fetched at any time to drive dashboards, queues, and notifications.

🔎 When to call it

  • From a blocked orders list, to present reason chips inline.
  • From an order detail page, to show the complete reason set.
  • In ops tools, to build queues by specific reason codes.

Admin endpoint

  • GET /v1/buying-policies/blocking-reasons - ADM-BUYING-POLICY-552

See the API Reference for the exact request parameters and pagination behavior.


🧭 Where reasons come from

graph LR
  %% ---------- Flow ----------
  IN[Order enters evaluation] --> CC[Credit Control<br>exposure holds grace]
  CC -->|Block| R1[Add reason<br>credit control]
  CC -->|OK| QQ[Quotas<br>default or rules]
  QQ -->|Block| R2[Add reason<br>quotas]
  QQ -->|OK| PASS[Order allowed]
  R1 --> OUT[Blocked with reasons]
  R2 --> OUT

  %% ---------- Styles ----------
  classDef total fill:#e8f1ff,stroke:#2f6feb,stroke-width:2px,color:#0b3d1;
  classDef diff fill:#fff4e5,stroke:#f59e0b,stroke-width:2px,color:#7a3e00;
  classDef inter fill:#fee2e2,stroke:#ef4444,stroke-width:2px,color:#7f1d1d;
  classDef visible fill:#ecfdf5,stroke:#10b981,stroke-width:2px,color:#064e3b;

  class IN total; class CC,QQ diff; class R1,R2,OUT inter; class PASS visible;
  style IN rx:8,ry:8; style CC rx:8,ry:8; style QQ rx:8,ry:8; style R1 rx:8,ry:8; style R2 rx:8,ry:8; style OUT rx:8,ry:8; style PASS rx:8,ry:8
  linkStyle 1 stroke:#ef4444,stroke-width:2px
  linkStyle 3 stroke:#ef4444,stroke-width:2px

📦 Typical retrieval patterns

A) From a list page

graph LR
  UI[List of blocked orders] --> LO[GET logistic orders<br>ADM-ORDER-551]
  UI --> BR[GET blocking reasons<br>ADM-BUYING-POLICY-552]
  BR --> MERGE[Merge by order id<br>decorate rows]
  LO --> MERGE
  MERGE --> VIEW[Render reason badges]

  %% ---------- Styles ----------
  classDef total fill:#e8f1ff,stroke:#2f6feb,stroke-width:2px,color:#0b3d91;
  classDef diff fill:#fff4e5,stroke:#f59e0b,stroke-width:2px,color:#7a3e00;
  classDef resp fill:#f2f4f7,stroke:#475569,stroke-width:2px,color:#111827;
  classDef visible fill:#ecfdf5,stroke:#10b981,stroke-width:2px,color:#064e3b;

  class UI total
  class LO diff
  class BR diff
  class MERGE resp
  class VIEW visible

  style UI rx:8,ry:8
  style LO rx:8,ry:8
  style BR rx:8,ry:8
  style MERGE rx:8,ry:8
  style VIEW rx:8,ry:8

B) From an order details page

graph LR
  O[Open order detail] --> R[GET blocking reasons<br>ADM-BUYING-POLICY-552]
  R --> SHOW[Show reason list<br>with codes and messages]

  classDef total fill:#e8f1ff,stroke:#2f6feb,stroke-width:2px,color:#0b3d91;
  classDef visible fill:#ecfdf5,stroke:#10b981,stroke-width:2px,color:#064e3b;

  class O total; class R,SHOW visible;
  style O rx:8,ry:8; style R rx:8,ry:8; style SHOW rx:8,ry:8

🏷️ Reason categories and examples

Your reason set typically includes, at minimum:

  • Credit control reasons such as CREDIT_CONTROL.
  • Quotas reasons such as QUOTA.

Use codes for routing and analytics, and user-friendly labels for operator UI. Keep your code list stable over time.


🔄 With unblock and audit

Combine Blocking Reasons with Unblock and Audit History to manage the lifecycle after a block:

  • Unblock: POST /v1/logistic-orders/unblock - ADM-ORDER-150
  • History: GET /v1/logistic-orders/:logisticOrderId/unblock-history - ADM-ORDER-550
graph LR
  B[Blocked order] --> REAS[GET reasons<br>ADM-BUYING-POLICY-552]
  B --> UNB[POST unblock<br>ADM-ORDER-150]
  UNB --> HIST[GET history<br>ADM-ORDER-550]
  REAS --> HIST

  classDef inter fill:#fee2e2,stroke:#ef4444,stroke-width:2px,color:#7f1d1d;
  classDef visible fill:#ecfdf5,stroke:#10b981,stroke-width:2px,color:#064e3b;

  class B inter; class REAS,UNB,HIST visible;
  style B rx:8,ry:8; style REAS rx:8,ry:8; style UNB rx:8,ry:8; style HIST rx:8,ry:8

✅ Operator checklist

  • Use list filters to identify blocked orders first, then fetch reasons.
  • Surface codes in UI to power quick filters and bulk actions.
  • For escalations, apply unblock and verify audit history.

🔗 API quicklinks

  • Reasons: GET /v1/buying-policies/blocking-reasons - ADM-BUYING-POLICY-552
  • Orders list: GET /v1/logistic-orders - ADM-ORDER-551
  • Unblock: POST /v1/logistic-orders/unblock - ADM-ORDER-150
  • Unblock history: GET /v1/logistic-orders/:logisticOrderId/unblock-history - ADM-ORDER-550