> ## 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. # /public/accounting/v1/accounts-payable/credit-memos > Creates one or more AP credit memos in bulk ## OpenAPI ````json POST /public/accounting/v1/accounts-payable/credit-memos { "openapi": "3.0.1", "info": { "title": "R365.PublicApi", "contact": { "name": "R365 Services Team", "email": "r365@restaurant365.com" }, "version": "1.0" }, "security": [ { "Bearer": [] } ], "paths": { "/public/accounting/v1/accounts-payable/credit-memos": { "post": { "tags": [ "accounting" ], "description": "Creates one or more AP credit memos in bulk", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/R365.Accounting.Public.Contracts.AccountsPayable.Models.CreateCreditMemosRequest" } } }, "required": true }, "responses": { "200": { "description": "Credit memos created successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/R365.Accounting.Public.Contracts.AccountsPayable.Models.CreateCreditMemosResponse" } } } }, "207": { "description": "207 Multi-Status – per-item processing outcomes for the credit memos in the request. Inspect the per-item Status to identify successes and failures.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/R365.Accounting.Public.Contracts.AccountsPayable.Models.CreateCreditMemosResponse" } } } }, "400": { "description": "Bad request – one or more validation errors occurred.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/R365.Accounting.Public.Contracts.AccountsPayable.Models.CreateCreditMemosResponse" } } } }, "404": { "description": "Not Found – one or more referenced resources (e.g., vendor, location, GL account) could not be located. When only some items fail, a 207 is returned instead with per-item errors.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/R365.Accounting.Public.Contracts.AccountsPayable.Models.CreateCreditMemosResponse" } } } }, "422": { "description": "Unprocessable Entity – the request was well-formed but contains semantic errors and could not be processed.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/R365.Accounting.Public.Contracts.AccountsPayable.Models.CreateCreditMemosResponse" } } } } } } } }, "components": { "schemas": { "R365.Accounting.Public.Contracts.AccountsPayable.Models.CreateCreditMemosRequest": { "required": [ "creditMemos" ], "type": "object", "properties": { "creditMemos": { "minItems": 1, "type": "array", "items": { "$ref": "#/components/schemas/R365.Accounting.Public.Contracts.AccountsPayable.Models.CreateCreditMemoItem" } } }, "additionalProperties": false }, "R365.Accounting.Public.Contracts.AccountsPayable.Models.CreateCreditMemosResponse": { "required": [ "results" ], "type": "object", "properties": { "results": { "type": "array", "items": { "$ref": "#/components/schemas/R365.Accounting.Public.Contracts.AccountsPayable.Models.CreditMemoCreateResult" }, "description": "Per-item processing outcomes, one entry per credit memo in the original request (same order, matched by requestIndex)." } }, "additionalProperties": false }, "R365.Accounting.Public.Contracts.AccountsPayable.Models.CreateCreditMemoItem": { "required": [ "creditMemoNumber", "vendorId", "locationId", "documentDate", "documentAmount", "details" ], "type": "object", "properties": { "creditMemoNumber": { "type": "string", "description": "The credit memo number (business identifier)." }, "vendorId": { "type": "string", "description": "The vendor identifier.", "format": "uuid" }, "locationId": { "type": "string", "description": "The header location identifier.", "format": "uuid" }, "documentDate": { "type": "string", "description": "The document date (ISO 8601 calendar date, no time component).", "format": "date" }, "documentAmount": { "type": "number", "description": "The document amount." }, "comment": { "type": "string", "description": "Optional header-level comment.", "nullable": true }, "details": { "minItems": 1, "type": "array", "items": { "$ref": "#/components/schemas/R365.Accounting.Public.Contracts.AccountsPayable.Models.CreateCreditMemoDetailItem" }, "description": "The list of credit memo detail line items." } }, "additionalProperties": false }, "R365.Accounting.Public.Contracts.AccountsPayable.Models.CreditMemoCreateResult": { "required": [ "requestIndex", "creditMemoNumber", "status" ], "type": "object", "properties": { "requestIndex": { "type": "integer", "description": "Zero-based index of this item in the original request's creditMemos array." }, "creditMemoNumber": { "type": "string", "description": "The credit memo number echoed from the request, so callers can match the result back to the input." }, "status": { "enum": [ "Succeeded", "Failed" ], "type": "string", "description": "Processing outcome for this item." }, "creditMemoId": { "type": "string", "description": "Identifier of the created credit memo. Populated when status is Succeeded.", "format": "uuid", "nullable": true }, "errorCode": { "type": "string", "description": "Machine-readable error code. Populated when status is Failed (e.g. urn:r365:accounts-payable:credit-memo:create-failed).", "nullable": true }, "errorMessage": { "type": "string", "description": "Human-readable error description. Populated when status is Failed.", "nullable": true } }, "additionalProperties": false }, "R365.Accounting.Public.Contracts.AccountsPayable.Models.CreateCreditMemoDetailItem": { "required": [ "totalAmount" ], "type": "object", "properties": { "glAccountId": { "type": "string", "description": "Optional GL account identifier. Required for GL-account rows and for by-account vendors.", "format": "uuid", "nullable": true }, "locationId": { "type": "string", "description": "Optional location identifier for this line. Falls back to the header location when omitted.", "format": "uuid", "nullable": true }, "vendorItemNumber": { "type": "string", "description": "Optional vendor item number. Required for item rows on by-item vendors when glAccountId is not provided.", "nullable": true }, "quantity": { "type": "number", "description": "Optional quantity. Required for item rows on by-item vendors.", "nullable": true }, "eachAmount": { "type": "number", "description": "Optional unit price. Derived from totalAmount / quantity when omitted on item rows.", "nullable": true }, "totalAmount": { "type": "number", "description": "The line total amount." }, "unitOfMeasureId": { "type": "string", "description": "Optional unit of measure identifier.", "format": "uuid", "nullable": true }, "comment": { "type": "string", "description": "Optional line-level comment.", "nullable": true } }, "additionalProperties": false } }, "securitySchemes": { "Bearer": { "type": "http", "description": "Put **_ONLY_** your JWT Bearer token on textbox below!", "scheme": "Bearer", "bearerFormat": "JWT" } } } } ````