# MYOB Acumatica — Accounting API: gotchas

> Canonical URL: https://developers.apideck.com/apis/accounting/myob-acumatica/gotchas

## GET /accounting/tax-rates

The Apideck service type is used for MYOB Acumatica non-stock items, and inventory is used for stock items.

## GET /accounting/bills

The Apideck service type is used for MYOB Acumatica non-stock items, and inventory is used for stock items.

## POST /accounting/invoices

When filling line items, you can either link an existing item by providing the item code or create a new item by filling in the item details. Using both options at the same time is not supported.

## GET /accounting/ledger-accounts

The Apideck service type is used for MYOB Acumatica non-stock items, and inventory is used for stock items.

## GET /accounting/invoice-items

The Apideck service type is used for MYOB Acumatica non-stock items, and inventory is used for stock items.

## POST /accounting/invoice-items

For `sales_details.tax_rate.id`, you must provide the Tax Category ID from the MYOB Acumatica not from our tax rates resource.

## GET /accounting/credit-notes

The Apideck service type is used for MYOB Acumatica non-stock items, and inventory is used for stock items.

## POST /accounting/bill-credit-notes

The document currency follows the supplier's configured currency: a `currency` that differs from the supplier's is accepted but coerced to the supplier's currency.
Line amounts are `unit_price × quantity`. When a line provides only `total_amount` and no `unit_price`, the unit price is derived as `total_amount / quantity` (quantity defaults to 1), so the line total is preserved.
`total_tax` is computed by MYOB Acumatica from the document's tax details and cannot be set on create; `sub_total`, `currency_rate`, `tax_inclusive`, `line_items[].discount_amount` and `tracking_categories` are accepted but not persisted. The ledger account is selected by `line_items[].ledger_account.id`; `ledger_account.name` is read-only.

## PATCH /accounting/bill-credit-notes/{id}

Updating `line_items` adds to the existing lines rather than replacing them. To change an existing line, send it with its `id`; a line sent without an `id` is appended as a new line, and any line omitted from the update is retained. Sending a shorter `line_items` array does not remove the missing lines.

## GET /accounting/customers

The Apideck service type is used for MYOB Acumatica non-stock items, and inventory is used for stock items.

## GET /accounting/suppliers

The Apideck service type is used for MYOB Acumatica non-stock items, and inventory is used for stock items.

## GET /accounting/payments

The Apideck service type is used for MYOB Acumatica non-stock items, and inventory is used for stock items.

## POST /accounting/journal-entries

MYOB Advanced (Acumatica) requires a separate Release action to transition a journal entry from Balanced to Posted.
When `status: "posted"` is sent, Unify automatically calls the ReleaseJournalTransaction action after creating or updating the entry.
Only `status: "posted"` is supported for state transitions. Other values (`draft`, `voided`, etc.) are not supported — the entry will be created or updated but will remain in Balanced state.
Updating a posted journal entry returns an error — only `memo` can be updated on a posted entry. To correct a posted entry, use Reverse or Reclassify in MYOB Advanced.
If the release step fails after a successful create or update, the entry will exist in MYOB Advanced in Balanced state and the API will return an error. The entry is not rolled back.

## PATCH /accounting/journal-entries/{id}

MYOB Advanced (Acumatica) requires a separate Release action to transition a journal entry from Balanced to Posted.
When `status: "posted"` is sent, Unify automatically calls the ReleaseJournalTransaction action after updating the entry.
Only `status: "posted"` is supported for state transitions. Other values (`draft`, `voided`, etc.) are not supported — the entry will be updated but will remain in Balanced state.
Updating a posted journal entry returns an error — only `memo` can be updated on a posted entry. To correct a posted entry, use Reverse or Reclassify in MYOB Advanced.
If the release step fails after a successful update, the entry will exist in MYOB Advanced in Balanced state and the API will return an error. The update is not rolled back.

## GET /accounting/purchase-orders

The Apideck service type is used for MYOB Acumatica non-stock items, and inventory is used for stock items.

## GET /accounting/bill-payments

The Apideck service type is used for MYOB Acumatica non-stock items, and inventory is used for stock items.

## GET /accounting/sales-orders

Sales orders are read from the `SalesOrder` entity, so the API user of the connection needs access to the Sales Orders screen (SO301000); without it every request fails with "insufficient rights". The list returns every order type on the tenant, and `order_type` carries the type of each order: besides sales orders (`SO` and custom types) that includes invoice-type orders (`IN`), quotes (`QT`) and the return and credit types (`RC`, `RR`, `CM`, `CR`), whose amounts flow in the opposite direction, so filter on `order_type` client-side when you only want sales. Order numbers are only unique within an order type, so `filter[number]` can match more than one order. `line_items` are included on list results. `unbilled_amount` is the order's unbilled amount, not its unpaid balance.

## POST /accounting/sales-orders

`customer.id` and at least one line are required. Every line needs an inventory item: send `line_items[].item.id` (or `code`) with the MYOB Acumatica `InventoryID`; a line without one is rejected. `order_type` selects the order type and defaults to `SO`. Totals, tax and `status` are computed by MYOB Acumatica — `sub_total`, `total_tax`, `total` and `status` sent on create are ignored, except `status: on_hold`, which places the order on hold. `number` is only honoured when the order type is configured for manual numbering; otherwise it is assigned. Address fields are only written when at least one address field is sent, and then override the customer's default address on the order.

## PATCH /accounting/sales-orders/{id}

Updates are a PUT of the fields you send. To change an existing line include its `line_items[].id` (the line id returned on read); a line without an `id` is added as a new line, and lines you omit are left untouched. `order_type` cannot be changed after creation.


[API reference](https://developers.apideck.com/apis/accounting/reference.md) · [Coverage matrix](https://developers.apideck.com/apis/accounting/coverage)
