Introducing Acumatica Cloud ERP: 2026R1
Technical discussions focused on Web Services and APIs for developers
Recently active
I need to write a custom expression to map Brand from ERP to BigCommerce BrandID. it is custom since BigCommerce’s interval is a number and the ERP is a text format. We have a Substitution List designed to map the BrandID to the Brand Name too. The brand is located in Attributes, but I think it may need to be changed to Advanced for a customized expression. For the Substitution Lists, BCBrands is the name of the list.If anyone can point me in the direction for learning how to write the expressions too that would be great. I work in web development, so the expressions look familiar to JavaScript variable syntax.
Hi All,I’m trying to generate Demand PO’s linked to SO’s from the PO505000 screen but am finding it will only generate a PO for one line item at a time, rather than the multiple items available for Purchase from the one supplier or multiple suppliers. I’ve created a Custom Endpoint via Web Services linked to the screen, added the ProcessAll button as an Action with OrderNbr and OrderType as parameters: I call via HTTP using Postman and the below Body:I get a 202 back saying its successful.What seems straight forward and works in the GUI with the above filter options, will only ever generate one PO for the first line, no matter how many lines there may be meeting the criteria.Not sure what I’m missing and this seems like a process many people would want to use via API?? Is there something required in the Entity that I am missing??Any help appreciated :-)
Has anyone done an SMS gateway integration with Acumatica ? Can you integrate any Bank’s SMS gateway as long as they have the right APIs ?
Hi everyone.I’m trying to pass a “notes” field in when creating or updating Employee Time Activities. Below is an example of my request: PUT "/entity/Default/22.200.001/TimeEntry"{ "note": "Some notes", "BillableTime": { "value": "01:00" }, "Date": { "value": "2024-02-16T06:00:00-08:00" }, "Summary": { "value": "Hours from Timesheet" }, "EarningType": { "value": "RG" }, "Employee": { "value": "EP00000002" }, "LaborItem": { "value": "CONSULTSR" }, "ProjectID": { "value": "X" }, "TimeSpent": { "value": "01:30" } }The Time Activity gets created, but the notes do not get passed through. Also, I’m trying to run the CompleteTimeEntry action on the PUT "/entity/Default/22.200.001/TimeEntry", but I always get the “Invalid uri structure” error even though I have this as a mapped action:Any ideas what’s happening?
When I attempt to release a purchase order from hold via the API, sometimes I get the following error:Operation failed: At least one line is not present in the cost budget of the project. Either add the corresponding budget lines to the project or select the Allow Adding New Items on the Fly check box on the Summary tab of the Projects (PM301000) form I get the same error when try to do so from the user interface:Oddly, if I try a second time, either via a repeating the API request, or by pressing the button again, the error does not occur. What could be going on?
I am adding customers with the ERP api. Part of this process is assigning the default salesperson to the customer. For things like the MainContact/Address, I can just $extend the customer entity being saved, but this does not seem to work for Salespersons, How do I attach a default salesperson to a customer with the api?PUT /20.200.001/Customer?$expand=Salespersons,MainContact/Address{..."Salespersons": [ { "SalespersonID": {"value": "SALEPERID"}, "Default": {"value": true} } ]...}This will result in 200 OK, but no Salespersons will be assigned to the customer.{..."Salespersons": []...}What do I need to do to get this salesperson assigned to the customer?
Hello Acumatica Developer Community,I'm currently working on implementing an integration with Acumatica and have a question about the best approach for handling multi-tenant authentication. Authentication ChallengeFor OAuth authentication, we need to store and manage client ID and client secret credentials. Since Acumatica supports multiple tenants, I'm wondering about the best practice for handling authentication in this context.For multi-tenant support, we need to determine if Acumatica requires separate client credentials per tenant: Does each tenant instance require unique client ID/secret pairs in Acumatica, or can a single set of credentials work across multiple tenant instances with the same base domain? Thank you!
I have a Purchase Order with three line-items (Details). I create the PO and there’s no problem, but when I do to add a Detail, it randomly updates a different Detail. The new detail has no id (because it is new) and has a LineNbr of -1.Here is the PO details when I first create it:Here is the payload which I PUT to the PurchaseOrder endpoint{ "id": "bdb7e18e-5300-f011-8368-065d7e32b4d5", "Details": [ { "AlternateID": { "value": "8b974d0f-5f8a-b586-5e1a-a3d3900830ed" }, "Account": { "value": "Accounts Payable (A/P)" }, "BranchID": { "value": "SOURCE" }, "OrderNbr": { "value": "24-TST2-024" }, "InventoryID": { "value": "OTHER" }, "LineType": { "value": "Service" }, "LineNbr": { "value": -1 }, "LineDescription": { "value": "Measure & Install Trip" }, "UOM": { "value": "EACH" }, "OrderQty": { "value": 1 }, "
I am using the Acumatica REST API to create vendor bills. I am using the "Default" endpoint, version 24.200.001. I see the same behavior in older versions of the API too.When I submit a bill with an invalid account number on a bill detail line, the vendor's default expense account is used and no error is returned unless there is also an error with another field. The bill is successfully created and the response code is 200.Other bill detail line fields do not behave this way. For example, if I pass an invalid value for the Branch or Subaccount fields the bill is not created and the response code is 422.If I submit invalid values for both Account and Subaccount, the call fails but only the error for the invalid Subaccount value is returned.If I submit invalid values for both the Vendor field at the header level and Account the bill is not created. The response code is 422 and the body indicates both that the vendor could not be found and that the account could not be found:{ "id": "8
Hi, I am needing to get the Unbilled Quantity left on a Receipt.I can only get the total of all lines, but not the breakdown.Is there a way to do this?/entity/Default/22.200.001/PurchaseReceipt/?$expand=Details&$filter=VendorID eq 'V000000001' and ReceiptNbr eq '000092'here is my API Call URL. I have expanded details. there is nothing in custom etc
Hi,How can i GET PurchaseReceipt - List of Lines that are for a certain PO number?I cannot seem to filter by expanded objects. Otherwise to get all Receipt Lines against a certain PO I will need to dig out all receip[ts for a supplier and loop through all returned lines to get my filtered list. here is my API call returning a 500 - "The parent value for a property access of a property 'POOrderNbr' is not a single value. Property access can only be applied to a single value.",/entity/Default/22.200.001/PurchaseReceipt/?$expand=Details&$filter=VendorID eq 'V000000001' and Details/POOrderNbr eq '000018' or is there a way to query ReceiptLines seperately?
Is there a way to reopen a purchase order that was set to “completed” via the API? I have some tests that are cancelling line items and some of the POs are being closed automatically and I can’t delete them when I run my cleanup script.
Hello Everyone,I am trying to make a customer contact as primary through API call. But it is working for the first entered contact. Unable to set another contact. Could you please review and share your feedback?
Hi folks, i’m looking for an possibility to identify the system that sent a push-notification.The notification body looks like that:{ "Inserted": [ { .... } ], "Deleted": [], "Query": "<my_query>", "CompanyId": "<my_company>", "Id": "8d6d670d-86e0-477f-a8cc-343b578ba3dd", "TimeStamp": 638775642732888022, "AdditionalInfo": { "PXPerformanceInfoStartTime": "03/14/2025 15:51:12" }} However, if i receive push notifications from different systems (different domains) i can’t figure out which system sent the notification. I only have the company id but I don’t think that the companyid is unique. Does anyone know how to solve this problem? Thanks in advance.
Hello community,I have been trying to use a GET method to login to my Acumatica instance using Postman, but it displays 404 error or sometimes 401 unauthorized error.i have created a user account and have given the account as Admin & Access to OData roles. I have been using the following syntax in the postman:https://siteURL/AcumaticaERP/ODataIs this the correct syntax that I have been using? If yes then why I am facing the issue? Thanks in advance.
Hi Everyone,MYOB customer updating from 23R1 to 24R1.Having an issue where the Payment endpoint in the API is returning an error that the cash account cannot be found. This error is also experienced in the UI and is due to the Branch that is defaulted from the customer record being a different branch than the cash account (fair enough). The request body has the correct value for the branch so that if all values of the API request were entered in the correct order, then the payment would be valid.Is there a way to control the sequence that values in API requests are entered so that defaulting happens in the correct order?
TLDR; How can I avoid time zone issues with Plan dates on Production Order Details when they are created via API? Due to the long JSON blocks, this question split over the first few comments as well.Configuration:My Site Preferences ‘Login Time Zone’ is blank My logged in UI user is also set to a blank Time Zone My API user’s Time Zone is blank I am using infinite scheduling with a Finish On Constraint The Work Calendar is M-F 11 hour days in UTC-08:00Request:I log in via Postman to the API user for my local Acumatica instance. Then I PUT a Production Order (entity/MANUFACTURING/23.200.001/ProductionOrder?$filter=ProductionNbr eq 'DATETEST'):{ "OrderType": { "value": "RG" }, "ProductionNbr": { "value": "DATETEST" }, "InventoryID": { "value": "018954" }, "OrderDescription": { "value": "test product" }, "Warehouse": { "value": "PBNW" }, "Location": { "value": "*MFG" }, "OrderDate": { "value": "2025-0
We have defined an action on SOShipment and exposed it via the REST API. When we call the action for the API we define a query string param $select=ShipmentNbr. The action succeeds, but the the return body is empty. We expected to see an SOShipment, with the ShipmentNbr specified. How can we fix this?Here are the details On SOShipmentEntryExt, we define an action named AddShipmentNbr. public PXAction<SOShipment> AddShipmentNbr; [PXUIField(DisplayName = "Add ShipmentNbr", MapEnableRights = PXCacheRights.Select, MapViewRights = PXCacheRights.Select)] [PXButton()] public virtual IEnumerable addShipmentNbr(PXAdapter adapter) { ... }We exposed this action as an Action on the Shipment REST API, naming it LockShipmentMutex. We construct a call in PostmanPOST {{PackingEndpointURL}}/Shipment/LockShipmentMutex?$select=ShipmentNbrBODY{ "entity": { "id": "6B4E9A21-78F6-EA11-96A4-000D3A610F1B" }}The ac
When I use the following, I am able to get everything except the Details (CustomerPaymentDetail):entity/Default/22.200.001/CustomerPaymentMethod/?$filter=CustomerID+eq+'C10987654321'+and+PaymentMethod+eq+'CC Visa'+and+ProcCenterID+eq+'procID'+and+CustomerProfileID+eq+'12345678901'The Details are in the Web service endpoint. Is there a specific URL parameter I need to pass to see it?
Hi , I wanted to extend my stock item end point to include Available to Ship value of Inventory Summary screen. To do so, I Create a custom view and tried to populate the field from DAC level only. So that when called from API it will resolve the BQL and fire the data to the API. I want this field for API only so I dont have any screen level events attached to this DAC field.Below is my code public class TSInventoryItemNIExtension : PXCacheExtension<PX.Objects.IN.InventoryItem> { public static bool IsActive() => true; #region UsrAvailToShip [PXDBDecimal] [PXSelector(typeof( Search<TSViewGetAvailToShip.qtyHardAvail, Where<TSViewGetAvailToShip.inventoryID, Equal<Current<InventoryItem.inventoryID>>>>))] [PXUIField(DisplayName = "Avail To Ship")] public virtual decimal? UsrAvailToShip { get; set; } public abstract class usrAvailToShip : PX.Data.BQL.BqlDecimal.Field<usrAvailToShip> { } #endregion }In the abo
We are using end point to create payment for our sales order, the default Sales Order Type is “SO”, when creating payment record it works and get added correctly.We added a new Sales Order type “CL” with a separate sequence. But when sending the payment to it it returns this error:An error occurred during processing of the field Order Nbr.: The order cannot be applied, the specified combination of the order type and order number cannot be found in the systemAlthough in the request the order NBr is correct and OrderTYpe, here is the payload of the payment creation request: $data = [ "Type" => ["value" => "Payment"], "CustomerID" => ["value" => "CUST001"], "CashAccount" => ["value" => "MAIN"], "PaymentMethod" => ["value" => "CHECK"], "PaymentAmount" => ["value" => 100], "OrdersToApply" => [ [ "Type" => ["value" => "CL"], "OrderNbr" => ["value" => "CL00000001"], "AppliedToOrder" => ["
I am trying to release a payment using rest apiI Created invoice by calling put request and was successful and get the reference Nbr I called release payment object Payment soPaymentToBeReleased = new Payment { Type = new StringValue { Value = type }, ReferenceNbr = new StringValue { Value = paymentRefNo } };created release object var releasePayment = new Models.AcumaticaModels.Actions.ReleasePayment(soPaymentToBeReleased);then I called post requestvar token = await acumaticaTokenHelper.GetAccessToken();using var httpClientPost = new HttpClient();var requestMessage = new HttpRequestMessage(HttpMethod.Post, "https://acctqa.nabp.pharmacy/entity/NABPR2/24.200.001/Payment/ReleasePayment");requestMessage.Headers.Add("Accept", "application/json");requestMessage.Headers.Add("Authorization", $"Bearer {token.AccessToken}");requestMessage.Headers.Add("PX-CbApiBranch", branch);requestMessage.Content = new StringContent(JsonConvert.SerializeObject(soPaymentToBeReleased ), null, "applicat
I can GET custom values using the REST API but when I trying setting, they remain NULL.Question: what JSON structure do I use to set custom values?Here’s an example when I use GET: "custom": { "Document": { "UsrDeviceIPaddress": { "type": "CustomStringField", "value": “100.99.777.55” } } }However, when I use this same structure during a PUT to create a SalesOrder, the value is always null.
When you Alt+Ctrl in the SO301000 screen for SOLine details. It gives you the element properties. How do you use this information to add it to an endpoint? Specifically if it is from a customization and not standard Acumatica.
I have two Generic Inquires exposed to OData. I can use the API to query one of them without issue, but the other one always fails. In particular, it returns a partial fragment of the results and then the HTTP connection drops with our HTTP library (curl) reporting this error:“HTTP/2 stream 0 was not closed cleanly: CANCEL (err 8)”If I force HTTP 1.1 instead, the behavior is the same, but the error says “Connection reset by peer”.Any troubleshooting suggestions would be appreciated, thank you!
Already have an account? Login
No account yet? Create an account
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.