[Cotlet](https://cotlet.dev/index.md) · [Integrations](https://cotlet.dev/integrations.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Use cases](https://cotlet.dev/use-cases.md) · [Security](https://cotlet.dev/security.md) · [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md) · [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [Contact](https://cotlet.dev/contact.md) · [Pricing](https://cotlet.dev/pricing.md) · [Sign up](https://cotlet.dev/signup)

# Create and release Acumatica customer invoices from a billing sheet

> Create Acumatica AR invoices from a billing sheet, check the totals while they are On Hold and release only the invoices you confirm.

Source: https://cotlet.dev/integrations/acumatica-api-mcp-server/create-and-release-customer-invoices

Month-end billing starts as a spreadsheet of customers and amounts, and someone keys each row into Invoices and Memos, then releases the whole batch once the numbers look right.

Cotlet does it in your own Acumatica account with list\_customers, create\_ar\_invoice, get\_invoice and release\_ar\_invoice, called by your AI agent, an n8n workflow or a script.

[Sign up free](https://cotlet.dev/app/signup?app=acumatica) [All Acumatica tools](https://cotlet.dev/integrations/acumatica-api-mcp-server.md)

Hosted · nothing to install or maintain

## Can Acumatica do this on its own?

Acumatica has no import that turns a billing sheet into released invoices on a schedule (checked 14 Oct 2026). The contract-based REST API can create an invoice and run its Release action, with an OAuth Connected Application registered on your tenant and your own code. The official MCP server added in 2026 R2 is read-only.

## How you do it in Acumatica today

1. An AR clerk opens Invoices and Memos (AR301000), picks the document type and the customer, and sets the date.
2. Each billable item becomes a row in the document details with its description, quantity and unit price.
3. Acumatica starts the invoice On Hold when Hold Documents on Entry is on, otherwise Balanced; an invoice On Hold is edited and the clerk clicks Remove Hold to make it Balanced.
4. Only a Balanced invoice can be released. The clerk clicks Release on the form, or selects many in Release AR Documents (AR501000).
5. Release makes the invoice Open, raises the customer balance and creates a general ledger batch, so it is the step that is hard to take back.

## How to create and release Acumatica customer invoices from a billing sheet

Prompt

```
Create an AR invoice for every customer in this billing sheet, one line per row, and keep them On Hold. Show me the totals, then remove the hold and release the ones I confirm.
```

1. 01  
### Resolve every customer  
list\_customers matches each sheet row to a Customer ID. A row with no match or two matches is set aside and listed, because creating an invoice for the wrong customer is the costly mistake.
2. 02  
### Create each invoice On Hold  
create\_ar\_invoice saves one invoice per customer with hold set to true. Rows for the same customer become lines of one invoice, not several invoices.
3. 03  
### Read the totals back  
get\_invoice returns each saved invoice with its lines and total. The agent compares that total to the sum of the sheet rows and flags any difference before anything is released.
4. 04  
### Release in order  
release\_ar\_invoice runs for the invoices you confirm, with remove\_hold set so a held invoice becomes Balanced first. A release that Acumatica runs in the background is checked until the status is Open.
5. 05  
### Report what is Open  
The agent returns the list of released invoices with their reference numbers, and the ones left On Hold with the reason.

### What you get back

Example data

```
Sheet rows: 6 across 4 customers
Created On Hold: 4 invoices
- Harbor Dental Group: 2 lines, 3,150.00 (matches sheet)
- Lakeside Studio: 1 line, 880.00 (matches sheet)
Set aside: 1 row, no customer named "Pine Corner"
Released after your OK: 3 (Open)
```

### Other ways to ask

- Every Friday, create invoices for the time entries in this export and leave them On Hold for me.
- Release every invoice On Hold that I already reviewed, listed by reference number below.
- Show me invoices that are Balanced but not released so I can finish the batch.

## What Acumatica allows, and what to know first

- Acumatica can release an AR invoice only when its status is Balanced.
- An invoice On Hold is being edited and cannot be released; Remove Hold gives it Balanced status.
- With Hold Documents on Entry on, new AR documents start On Hold; otherwise they start Balanced.
- Releasing an AR invoice sets it to Open, increases the customer balance and generates a general ledger batch.
- Release AR Documents (AR501000) releases many documents in one run; the Release button on the form does one.

create\_ar\_invoice and release\_ar\_invoice ask for your OK by default. To run it weekly without you, switch confirmation off for those tools in your dashboard.

Sources: [Acumatica Help: AR Invoices, Invoice Releasing](https://help.acumatica.com/Wiki/ShowWiki.aspx?pageid=81f30233-f04e-44ce-b839-760bd0ae8467) · [Acumatica Help: AR Invoices, General Information](https://help-2024r2.acumatica.com/%28W%284%29%29/Wiki/ShowWiki.aspx?pageid=1474c546-53f9-499c-9ef3-88c2c69a893e) · [Acumatica Help: Invoices and Memos form reference](https://help.acumatica.com/%28W%285%29%29/Wiki/ShowWiki.aspx?wikiname=HelpRoot%5FFormReference&PageID=5e6f3b27-b7af-412f-a40a-1d4f4be70cba) · [Acumatica: 2026 R2 release with embedded AI](https://www.acumatica.com/corporate-newsroom/press-releases/acumatica-2026-r2-release-with-embedded-ai/)

## Call create\_ar\_invoice from a script

curl

```
curl -X POST https://cotlet.dev/api/v1/acumatica/customers/C000045/ar-invoices \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"date":"2026-10-31","hold":false,"lines":[{"description":"Hosting, October","quantity":1,"unit_price":2400},{"description":"Support hours","quantity":5,"unit_price":150}]}'
```

Example response

```
{
"reference_nbr": "002231",
"customer_id": "C000045",
"status": "Balanced",
"total": 3150
}
```

MCP: add https://cotlet.dev/mcp/v1 with the same key; the call is acumatica\_write → create\_ar\_invoice. Example data.

[Schedule it in n8n, Make, Zapier or cron](https://cotlet.dev/integrations/acumatica-api-mcp-server.md#automations)

## Acumatica tools this automation uses

__Cotlet Acumatica tools used to create and release Acumatica customer invoices from a billing sheet__
| Tool | Parameters |
| -------------------- | ------------------------------- |
| list\_customers | search, status, limit, cursor |
| create\_ar\_invoice | customer\_id, date, hold, lines |
| get\_invoice | reference\_nbr |
| release\_ar\_invoice | reference\_nbr, remove\_hold |

[All 13 Acumatica tools with descriptions](https://cotlet.dev/integrations/acumatica-api-mcp-server.md#tools)

## Frequently asked questions

### Is it safe to connect Acumatica to Cotlet?

Yes. You sign in to Acumatica yourself, in your own Cloud Browser in the EU, and we never save your password. Your agents only get Acumatica once you enable it, every background request is listed, and the browser profile is stored encrypted with AES-256-GCM, the cipher 1Password uses for its vaults. The AI model never sees a login, posts and messages wait for your OK, and Disable for agents cuts access in one click. Independent scanners grade cotlet.dev A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory; live results are on https://cotlet.dev/security.

## More Acumatica automations

- [Enter vendor bills in Acumatica automatically](https://cotlet.dev/integrations/acumatica-api-mcp-server/enter-vendor-bills.md)
- [Acumatica API and MCP server: every tool](https://cotlet.dev/integrations/acumatica-api-mcp-server.md)
- [All use cases](https://cotlet.dev/use-cases.md)

## Give your agent access to Acumatica.

Free 7-day trial with 2,000 credits, no card needed. Cotlet is independent and not affiliated with Acumatica.

[Sign up free](https://cotlet.dev/app/signup?app=acumatica)

---

Give your AI agents your signed-in browser.

**Product:** [Integrations](https://cotlet.dev/integrations.md) · [Use cases](https://cotlet.dev/use-cases.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Pricing](https://cotlet.dev/pricing.md) · [Security](https://cotlet.dev/security.md)

**Resources:** [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [GitHub](https://github.com/cotletdev/cotlet)

**Solutions:** [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md)

**Company:** [About](https://cotlet.dev/about.md) · [AI info: company facts](https://cotlet.dev/ai-info.md) · [Contact](https://cotlet.dev/contact.md)

**Legal:** [Terms of service](https://cotlet.dev/terms) · [Privacy policy](https://cotlet.dev/privacy) · [Refund policy](https://cotlet.dev/refunds) · [Acceptable use](https://cotlet.dev/acceptable-use) · [Cookie policy](https://cotlet.dev/cookies) · [DPA](https://cotlet.dev/dpa) · [Subprocessors](https://cotlet.dev/subprocessors)

**Elsewhere:** [Status page](https://status.cotlet.dev) · [Cotlet on GitHub](https://github.com/cotletdev) · [Cotlet on X](https://x.com/cotletdev) · [Cotlet on LinkedIn](https://www.linkedin.com/company/cotletdev) · [Cotlet on Product Hunt](https://www.producthunt.com/products/cotlet) · [Cotlet on Crunchbase](https://www.crunchbase.com/organization/cotlet) · [Cotlet on SaaSHub](https://www.saashub.com/cotlet)

Cotlet is an independent service. It is not affiliated with, endorsed by or sponsored by any of the products listed on this site. Product names are trademarks of their respective owners.

## For AI agents: sign your user up

Is your user asking you to sign them up for Cotlet? You can do it for them, no account or key needed.

1. Read the fields and their allowed values: GET https://cotlet.dev/api/v1/access-requests
2. Ask the user for each value: email, apps, what you will do with them. If they leave the password to you, generate a strong one and show it to them.
3. Show the user what you will send, then POST it as JSON to https://cotlet.dev/api/v1/access-requests.

One call creates the account and sends the access request; we email the user when access is granted.
