Buying Policies — Troubleshooting & FAQs
This page lists common symptoms, root causes, and fixes for Buying Policies, plus short FAQs and operator checklists.
Quick orientation
- Policies are independent: Credit Control and Quotas can be toggled separately.
- Blocks always expose reason codes retrievable via API.
- Operator unblock creates an audit trail.
- Prefer filters over ad hoc statuses on admin lists.
🚨 Common issues and fixes
A) No orders appear as blocked
Symptom: your list shows zero results.
Checks
- Filters missing: use
blockedByBuyingPolicy=true. - Too narrow
blockingPolicyTypes: try removing it. - Policy toggles are off: enable Credit or Quotas as needed.
Actions
- List with filters: GET /v1/logistic-orders - ADM-ORDER-551
B) Credit Hold seems ignored
Symptom: an account under hold still places orders.
Checks
- Hold exists and is active for the correct account set.
- Credit Control toggle is enabled.
Actions
- Review holds: GET /v1/buying-policies/credit-control/holds - ADM-BUYING-POLICY-550
C) Grace Amount not applied
Symptom: slightly over limit orders are blocked.
Checks
- A Grace Amount exists for the account and value is sufficient.
- Exposure calculation and currency context match your setup.
Actions
- Review grace items: GET /v1/buying-policies/credit-control/grace-amounts - ADM-BUYING-POLICY-551
D) Default credit limit not used
Symptom: exposure check acts as if no baseline exists.
Checks
- Credit Control toggle is enabled.
- Default limit set at tenant level.
Actions
- Read and patch settings:
- GET /v1/buying-policies/credit-control - ADM-BUYING-POLICY-500
- PATCH /v1/buying-policies/credit-control/credit-limit - ADM-BUYING-POLICY-201
E) Quotas block when a rule should override
Symptom: order blocked by default minimum though a specific rule exists.
Checks
- Rule scope keys exactly match Account and Supplier and optional Store.
- No typo in identifiers; rule is active.
Actions
- List rules and verify scope: GET /v1/buying-policies/quotas/rules - ADM-BUYING-POLICY-553
F) Group co-validation does not trigger
Symptom: order evaluated by individual precedence, not by group.
Checks
- Group membership references the correct rules.
- Group minimum is set when intended.
Actions
- Inspect groups: GET /v1/buying-policies/quotas/groups - ADM-BUYING-POLICY-554
G) Blocking reasons are empty
Symptom: a blocked order has no reasons in UI.
Checks
- You are calling the reasons endpoint with the correct order identifiers.
- The order is actually blocked by policy, not another process.
Actions
- Fetch reasons: GET /v1/buying-policies/blocking-reasons - ADM-BUYING-POLICY-552
H) Unblock rejected
Symptom: operator cannot force validation.
Checks
- Proper rights for the operator role.
- Mandatory comment provided.
Actions
- Unblock and read history:
- POST /v1/logistic-orders/unblock - ADM-ORDER-150
- GET /v1/logistic-orders/:logisticOrderId/unblock-history - ADM-ORDER-550
🔎 Triage flow
graph LR
IN[Start investigation] --> L[GET logistic orders<br>ADM-ORDER-551]
L --> F{Use filters}
F --> B1[blockedByBuyingPolicy true]
F --> B2[blockingPolicyTypes optional]
L --> PICK{Select an order}
PICK --> R[GET blocking reasons<br>ADM-BUYING-POLICY-552]
R --> DEC{Unblock needed}
DEC -->|Yes| U[POST unblock<br>ADM-ORDER-150]
U --> H[GET unblock history<br>ADM-ORDER-550]
DEC -->|No| FIX[Adjust settings or rules]
%% ---------- Styles ----------
classDef total fill:#e8f1ff,stroke:#2f6feb,stroke-width:2px,color:#0b3d91;
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;
classDef resp fill:#f2f4f7,stroke:#475569,stroke-width:2px,color:#111827;
class IN total
class L diff
class F,B1,B2 resp
class PICK resp
class R visible
class DEC diff
class U,H visible
class FIX resp
style IN rx:8,ry:8
style L rx:8,ry:8
style F rx:8,ry:8
style B1 rx:8,ry:8
style B2 rx:8,ry:8
style PICK rx:8,ry:8
style R rx:8,ry:8
style DEC rx:8,ry:8
style U rx:8,ry:8
style H rx:8,ry:8
style FIX rx:8,ry:8
✅ Checklists
Credit Control
- Toggle enabled: GET /v1/buying-policies/credit-control - ADM-BUYING-POLICY-500
- Default limit set: PATCH /v1/buying-policies/credit-control/credit-limit - ADM-BUYING-POLICY-201
- Holds and grace reviewed:
- Holds list: GET /v1/buying-policies/credit-control/holds - ADM-BUYING-POLICY-550
- Grace list: GET /v1/buying-policies/credit-control/grace-amounts - ADM-BUYING-POLICY-551
Quotas
- Toggle and default minimum set:
- GET /v1/buying-policies/quotas - ADM-BUYING-POLICY-501
- PATCH /v1/buying-policies/quotas/min-value - ADM-BUYING-POLICY-205
- Rules verified: GET /v1/buying-policies/quotas/rules - ADM-BUYING-POLICY-553
- Groups verified: GET /v1/buying-policies/quotas/groups - ADM-BUYING-POLICY-554
❓ FAQs
Can I enable only Credit Control or only Quotas Yes. Each policy family has its own toggle.
Do group rules always override individual rules If a matching group exists, the engine uses the group effective minimum. If no group matches, individual precedence applies.
Do Credit Holds take precedence over exposure and grace Yes. A hold blocks before any exposure or grace calculation.
Are reason codes stable over time Yes, codes are meant for routing and analytics. Labels can evolve in UI.
Does unblock bypass other validations Unblock removes the policy block and records an audit entry. Downstream validations and processes still apply.
🔗 API quicklinks
- Orders list: GET /v1/logistic-orders - ADM-ORDER-551
- Blocking reasons: GET /v1/buying-policies/blocking-reasons - ADM-BUYING-POLICY-552
- Unblock: POST /v1/logistic-orders/unblock - ADM-ORDER-150
- Unblock history: GET /v1/logistic-orders/:logisticOrderId/unblock-history - ADM-ORDER-550
- Credit Control settings and lists:
- GET /v1/buying-policies/credit-control - ADM-BUYING-POLICY-500
- GET /v1/buying-policies/credit-control/holds - ADM-BUYING-POLICY-550
- GET /v1/buying-policies/credit-control/grace-amounts - ADM-BUYING-POLICY-551
- Quotas settings and lists:
- GET /v1/buying-policies/quotas - ADM-BUYING-POLICY-501
- GET /v1/buying-policies/quotas/rules - ADM-BUYING-POLICY-553
- GET /v1/buying-policies/quotas/groups - ADM-BUYING-POLICY-554
Updated 21 days ago
