> ## Documentation Index > Fetch the complete documentation index at: https://docs.restaurant365.com/llms.txt > Use this file to discover all available pages before exploring further. # AP Payments > Partial update AP Payments in batch **Security** The requesting user must have the following permission to approve AP payments: - Accounts Payable → AP Payments → Approve AP Payments Approve and create are separate permissions — this permission does not grant create rights. ## OpenAPI ````json PATCH /public/v1/accounting/accounts-payable/payments { "openapi": "3.0.1", "info": { "title": "R365 Public API", "contact": { "name": "R365 Services Team", "email": "r365@restaurant365.com" }, "version": "1.0" }, "security": [ { "Bearer": [] } ], "paths": { "/public/v1/accounting/accounts-payable/payments": { "patch": { "tags": [ "accounting" ], "summary": "AP Payments", "description": "Partial update AP Payments in batch\n\n**Security**\n\nThe requesting user must have the following permission to approve AP payments:\n\n- Accounts Payable → AP Payments → Approve AP Payments\n\nApprove and create are separate permissions — this permission does not grant create rights.", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchPaymentsRequest" } } } }, "responses": { "207": { "description": "Multi-Status – Batch operation result containing status for each payment in the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchPaymentsResponse" } } } }, "400": { "description": "Bad Request — a parameter value is malformed, of the wrong type, or outside its allowed range." }, "401": { "description": "Unauthorized — the bearer token is missing, invalid or expired, or is not valid for the specified tenant." }, "403": { "description": "Forbidden — the caller lacks the permission required for this operation." }, "404": { "description": "Not Found — the requested resource does not exist, or the supplied continuation token is unknown or has expired." }, "409": { "description": "Conflict — the request conflicts with the current state of the resource and cannot be applied." }, "422": { "description": "Unprocessable Entity — a required parameter is missing, or a supplied parameter value is invalid." }, "429": { "description": "Too Many Requests — the caller has exceeded the rate limit; retry after a short delay." }, "500": { "description": "Internal Server Error — an unexpected error occurred while processing the request." } }, "parameters": [ { "$ref": "#/components/parameters/TenantId" } ] } } }, "components": { "schemas": { "PatchPaymentsRequest": { "type": "object", "properties": { "payments": { "type": "array", "items": { "$ref": "#/components/schemas/PaymentPatchItem" }, "description": "The collection of AP payments to approve or reject." } }, "additionalProperties": false }, "PatchPaymentsResponse": { "type": "object", "properties": { "results": { "type": "array", "items": { "$ref": "#/components/schemas/PaymentPatchResult" }, "description": "The result for each payment in the request." } }, "additionalProperties": false }, "PaymentPatchItem": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid", "description": "Payment identifier to approve or reject." }, "approvalStatus": { "type": "string", "description": "Approval status to set on the payment. Valid values: Approved, Rejected." }, "invoiceIds": { "type": "array", "items": { "type": "string", "format": "uuid" }, "description": "Invoices to associate with this payment." }, "creditMemoIds": { "type": "array", "items": { "type": "string", "format": "uuid" }, "description": "Credit memos to associate with this payment." } }, "additionalProperties": false }, "PaymentPatchResult": { "type": "object", "properties": { "requestIndex": { "type": "integer", "format": "int32", "description": "Zero-based index of the payment in the original request." }, "id": { "type": "string", "format": "uuid", "description": "Payment identifier." }, "status": { "type": "string", "description": "Result status of the operation. Valid values: Unknown, Succeeded, Failed." }, "errorCode": { "type": "string", "nullable": true, "description": "Error code if the operation failed, otherwise null." }, "errorMessage": { "type": "string", "nullable": true, "description": "Error message if the operation failed, otherwise null." } }, "additionalProperties": false } }, "parameters": { "TenantId": { "name": "x-r365-context-tenant-id", "in": "header", "required": true, "description": "Identifies the R365 tenant the request applies to. Required on every request.", "schema": { "type": "string" } } }, "securitySchemes": { "Bearer": { "type": "http", "scheme": "Bearer" } } } } ````