Submit Vendor Deposit for Approval
POST/api/vendor-deposits/:vendorDepositId/submit-for-approval
Submit a draft deposit for payment approval.
accounting:writeGrant this scope to your token under Settings → Developer → Personal Access Tokens.
Routing precedence: matching approval levels → the configured default payer → the amount threshold → auto-approve.
- Approval levels match — the deposit enters the approval chain (status
pending_approval). - A default payer is configured — the payment request is sent to that payer (status
pending_approval). - The acting user IS the configured payer — there is no one to send a request to, so the deposit is approved immediately (status
approved) and a payment can be recorded right away. - Nothing configured — submission auto-approves without notifying anyone.
Deposits whose payee bank details differ from the supplier profile must have those details verified before submission.
Approval policy:
While the vendor-deposit approval policy is enabled the deposit is routed by amount through the policy's tiers and steps (approval levels and the designated payer no longer decide). If you could approve every step yourself the request completes in the same call; otherwise it waits on the policy's approvers, visible at GET /api/approval-requests/for/vendor_deposit/{id}.
Approval levels are compared with the deposit's home-currency amount (amount_in_tenant_currency), not its document-currency amount; the submit label in the deposit response reads the same home amount.
Request
Responses
- 200
- 401
- 403
- 404
- 422
- 429
Successful response
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.
Not found — no record with the given identifier (or the route does not exist). Verify the ID before retrying.
Validation failed — the body is a field → messages map (Laravel shape) or the platform envelope with a stable machine-readable code. Fix the payload and resubmit.
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.