List Approval Policies
GET/api/approval-policies
List the approval policy for every document type an approval policy can govern — purchase orders, vendor deposits and bill payments. A document type that was never configured is returned as an unsaved, disabled default (id: null, no tiers), so the response always has three entries.
purchase-orders:readGrant this scope to your token under Settings → Developer → Personal Access Tokens.
Authentication: Requires Bearer token with the purchase-orders scope (read for GET, write for POST/PUT/DELETE).
Requires permission: approval_policies.view
Response fields (per policy):
document_type—purchase_order|vendor_deposit|bill_payment;document_type_labelis its plural display labelenabled— when false, documents of this type follow their pre-policy approval behaviourseparation_of_duties—allow_if_sole_approver(a requester may approve their own request only when nobody else is eligible for that step; flaggedself_approved),strict(never — the step escalates to administrators instead),off(the requester is eligible like anyone else)reminder_interval_hours/reminder_max— automatic reminders to the current step's approvers every N weekday hours, at mostreminder_maxtimes, then administrators are alerted once (null interval = no automatic reminders)reapproval_tolerance_percent— an approved document whose total later rises by more than this percentage needs re-approvalapplies_to_sources— purchase orders only: which creation sources the policy governs (available_sourceslists every source withgovernableandlocked—manualis always governed)base_currency— amounts are routed in this currencypending_count— open requests under this policytiers[]— amount bands, smallest first.up_to_amountis the inclusive upper limit in base currency (null on the last tier = no limit).requires_approval: falseauto-approves the band. Each tier has up to 3 sequentialsteps[]; each step needsrequired_approvalsapprovals from itsapprovers[](typeuserorrole;missing: truewhen the user left the account or the role was deleted).distinct_from_previous_stepsstops someone who approved an earlier step from also approving this one.
Request
Responses
- 200
- 401
- 403
- 429
OK
Response Headers
Unauthenticated — the bearer token is missing, revoked, expired, or malformed. Never retry automatically; fix the credential. See the Errors guide.
Forbidden — the token lacks a required scope, the endpoint is not available to API tokens, or the user behind the token lacks the permission. A human must adjust the token scopes or user permissions; do not retry.
Rate limited — platform limit is 1,000 requests/min; individual tokens may carry lower limits. Honor the Retry-After header before retrying. See the Rate Limits guide.