Bulk approve invoices
Scope: sales:invoices.write https://api.alladdin.com/api/v2/invoices/bulk/approve
Approve multiple invoices in a single request. Provide either filter — the server resolves and approves every matching invoice still pending approval (use for "approve all pending", optionally narrowed by date range or contact; no need to list ids) — or an explicit list of ids (1–100). Each invoice is approved independently: a failure on one does not block the others. Returns 204 when all succeed, 207 (with the failed ids) when some could not be approved, 422 when none could.
Request body
object filter object | null
Optional scoping filter for the invoices to approve. This endpoint ALREADY targets only invoices pending approval, so for "approve all pending" pass an EMPTY object {} — do NOT add a payment status. Narrow only by date range (start_date/end_date) and/or contact (contact_id). The server resolves and approves every matching unapproved invoice (up to 200 per call). Provide either filter or ids, not both.
start_date string<date-time> end_date string<date-time> contact_id string ids[] string[] | null
Explicit invoice ids to approve (alternative to filter, for a specific selection). Max 100.
Request
import requests
url = "https://api.alladdin.com/api/v2/invoices/bulk/approve"
headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Accept": "application/json",
}
payload = {
"filter": {
"start_date": "2026-05-01",
"end_date": "2026-05-31",
"contact_id": "string"
},
"ids": [
"string"
]
}
response = requests.post(url, headers=headers, json=payload)
print(response.json())Responses
Success responses
204 All matching invoices approved successfully (or none were pending approval) 207 Some invoices could not be approved, or more than the per-call limit matched the filter application/json object message string required
Human-readable summary
errors[] string[] optional
Failed document ids (with any reason produced)
success_count integer optional
Invoices approved (or already approved)
total_count integer optional
Invoices attempted in this request
truncated boolean optional
Present and true when more invoices matched than the per-call limit; narrow the filter to approve the rest
Error responses
400 Bad request application/json 401 Invalid or missing API key application/json 403 Insufficient permissions application/json 422 None of the invoices could be approved application/json 429 Rate limit exceeded application/json
