Acumatica Sales Order REST JSON Template
Creating a sales order through Acumatica's contract-based REST API is a PUT to the SalesOrder entity with every field wrapped as a value object. This generator builds the URL and body so you can test it in Postman or code.
Fill in
Leave blank for cloud sites that have no virtual directory.
Check the endpoint list in Web Service Endpoints (SM207060) for your version.
Request
PUT https://yourcompany.acumatica.com/[Site / instance name]/entity/Default/24.200.001/SalesOrder Content-Type: application/json Accept: application/json Cookie: .ASPXAUTH=<session cookie from login>
JSON body
{
"OrderType": { "value": "SO" },
"CustomerID": { "value": "ABCHOLDING" },
"CustomerOrder": { "value": "PO-77412" },
"Description": { "value": "Web order via integration" },
"Details": [
{
"InventoryID": { "value": "AALEGO500" },
"OrderQty": { "value": 10 },
"WarehouseID": { "value": "MAIN" }
},
{
"InventoryID": { "value": "CONGRILL" },
"OrderQty": { "value": 4 },
"WarehouseID": { "value": "MAIN" }
}
]
}Login (before the PUT)
POST https://yourcompany.acumatica.com/[Site / instance name]/entity/auth/login
Content-Type: application/json
{
"name": "<api user>",
"password": "<password>",
"company": "<company/tenant>"
}Logout (after the PUT)
POST https://yourcompany.acumatica.com/[Site / instance name]/entity/auth/logout
Verify field names against your endpoint version in Web Service Endpoints and test in a non-production tenant. If the instance name is blank, remove the double slash from the URL. For OAuth 2.0 connected applications, use a bearer token instead of the login cookie. Always release API sessions with logout, as concurrent API session limits apply.
Get an integration design review
Share your integration flow for a review of error handling, retries and approvals.
Optional. The tool and every export work without this. No spam.
How to use it
Enter your instance URL, endpoint version, order type, customer and up to two lines. Copy the login call, the PUT and the logout call into your REST client in that order. A successful PUT returns the created order with its number and defaulted fields. If the response carries validation errors, they refer to the field names in the body, which makes mapping problems easy to find.
- Authenticate first, then call the entity
- Send quantities as numbers, not strings
- Log out when finished to free the API session
- Test in a sandbox tenant before production
How the contract-based API works
Acumatica exposes entities through web service endpoints. The Default endpoint ships with versioned contracts such as 24.200.001, and you can extend it or define your own in Web Service Endpoints. Each field is sent as an object with a value property, and detail lines are an array under Details. A PUT creates the record or updates it if the key fields match. Related actions such as releasing or confirming shipment are separate action endpoints.
Reading the response
The response echoes the saved order with identifiers such as OrderNbr and calculated fields like totals and status. Check the status and any approval hold, because a new order can land On Hold or Pending Approval depending on the order type configuration. Custom fields appear only if they are included in the endpoint definition. Use the expand parameter when you need related entities in the response.
Common mistakes
Forgetting the value wrapper is the top error. Others include using the wrong endpoint version for the site, sending an inventory ID with the wrong segment format, leaving sessions open until the concurrent limit is reached, and creating orders for customers on credit hold. Also be careful with retries: repeating a PUT without a unique customer order check can duplicate orders.
Frequently Asked Questions
Which endpoint version should I use?
Use the version listed in Web Service Endpoints for your Acumatica release. The version in the URL must match an existing endpoint on the site. If you built a custom endpoint, use its name and version in the path instead of Default.
How do I authenticate?
Either a cookie based login through the auth login endpoint or an OAuth 2.0 connected application with a bearer token. OAuth is preferred for production integrations because credentials are not sent with every session.
Can I add more than two lines?
Yes. Add more objects to the Details array following the same pattern. The generator provides two to show the structure. For large orders, consider batching and check the response times in your tenant.
Does this release the order or create a shipment?
No. This creates the order only. Further steps such as creating a shipment or releasing are separate actions on the relevant entities and depend on your order type setup.
If you are building integrations for web orders, EDI or quoting tools, we can help design and test them, with human approval on any write-back.
Related Tools
Acumatica Data Migration Field Mapping Worksheet
Map each legacy field to its Acumatica screen and field, record the transform rule and owner, and track cleansing status. Exports to Excel.
ERP Migration & SelectionAcumatica Implementation Statement of Work Template
A fill-in SOW outline for an Acumatica project with scope, phases, deliverables, assumptions, customer responsibilities and approvals.
ERP OperationsAcumatica User Role and Access Matrix Worksheet
Plan which users get which Acumatica roles and access levels, score segregation of duties risk and export an auditor friendly matrix.
Costing & FinanceSMB ERP Implementation Budget Calculator
Estimate year-one and five-year ERP cost from subscription, partner hours, data migration, training, internal staff time and contingency.
More Developer Tools tools
See all- Acumatica REST API URL Builder
- Acumatica OData Generic Inquiry URL Builder
- Acumatica REST API Python Script Generator
- SAP Sales Order ABAP SELECT Generator (VBAK, VBAP, VBFA)
- SAP Sales Order Create BAPI ABAP Generator (BAPI_SALESORDER_CREATEFROMDAT2)
- SAP ABAP Open Items SELECT Generator
- SAP ACDOCA SQL Query Generator
- SAP QM Inspection Lot ABAP SELECT Generator
- SAP Quality Notification Pareto SQL Query Generator