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
Updated 21 days ago
