Skip to main content

Acumatica to iPaaS.com Sales Order Mapping Documentation

How Acumatica sales orders and their lines, addresses, taxes, and payments are captured into iPaaS.com as Transactions through polling and Manual Sync, including ID format, prerequisite handling, field mappings, and caveats.

Summary

Acumatica sales orders (order type SO) are captured into iPaaS.com as Transactions using an Add/Update sync method. The integration reads each order with its lines, bill-to and ship-to addresses and contacts, taxes, payments, and totals, and builds a Transaction with the order number, customer, Company, email, type, status, dates, and amounts. The lines, addresses, taxes, and payments are captured by child collections that run as part of the order transfer. Orders are written in the other direction by Add/Update Acumatica Sales Order FROM iPaaS.com, and both directions link an order to the same Transaction.

ID Format

Manual Sync ID Format

When manually transferring, enter the Acumatica order type and order number joined with "|", for example SO|000080. Order numbers are unique only within an order type, so both are needed.

External ID Format

iPaaS.com records the Acumatica record id (GUID) of the sales order as the external ID of the Transaction on a dedicated external-ID record, the primary match for every later transfer. Add/Update Acumatica Sales Order FROM iPaaS.com links orders by the same id, so an order created in Acumatica from an iPaaS.com Transaction updates that same Transaction instead of creating a second one. The template also maps the order number into TransactionNumber, which shows it on the Transaction and serves as a fallback match: an order that is not linked yet is linked to the one existing, unlinked Transaction with the same number (none is linked when several match). Remapping TransactionNumber to another value is supported, but it stops that fallback for orders already in iPaaS.com.

The children are linked as follows: each line and each payment by its Acumatica row id; each address by the Acumatica id of the bill-to or ship-to address together with its role, Billing or Shipping, since Acumatica can give both addresses the same id; and each tax by its Acumatica RecordID and row id, for example 282|fbde0cc3-2307-4c39-9bb0-db1ba4a9961a. Acumatica gives addresses and tax rows a new id in each session, so their links are refreshed on each transfer.

Deleted Record Support

Deleting or cancelling an order in Acumatica is not sent to iPaaS.com as a delete, and delete mappings are not included in the default templates. A cancelled order is captured with the status Cancelled.

Custom Field Support

No custom fields are mapped in the shipped template. The integration reads the standard fields of the sales order from the Acumatica Default web service endpoint; fields added to the sales order by an Acumatica customization are not read.

Mapping Collection Status

Status: Enabled

Trigger Events: Acumatica does not push order changes to the integration. An order reaches iPaaS.com in two ways:

  • Order poll: on each scheduled poll, the integration reads the Acumatica sales orders changed since the last poll (by their last-modified time, in UTC) and sends each one to this collection; the mapping filter decides which are captured. The first order poll on a subscription, when no earlier order poll time has been saved, only records its start time and does not pull existing orders. An order written to Acumatica by Add/Update Acumatica Sales Order FROM iPaaS.com is not sent straight back by the next poll; it is captured again once it changes in Acumatica after that poll. An edit made in Acumatica before that poll runs is skipped with it and reaches the Transaction with the order's next change.

  • Manual Sync: a subscriber can transfer a specific order on demand from the iPaaS.com Manual Sync page by entering its order type and number (see ID Format).

Duplicate or Conflicting Mappings

  • Add/Update Acumatica Sales Order FROM iPaaS.com writes iPaaS.com Transactions into Acumatica as sales orders. Both collections link an order to the same Transaction, so an order created from iPaaS.com and later changed in Acumatica updates its original Transaction. Decide which system is the source of truth for each part of an order: a change made in Acumatica is captured into the Transaction, and a later transfer of the Transaction into Acumatica writes the iPaaS.com values back over the order.

Collision handling: this collection does not use the Collision Handling Method setting. Duplicate handling is automatic: an order not linked yet is linked to the one existing, unlinked iPaaS.com Transaction with its number; when several match, none is linked and a new Transaction is created. On an existing Transaction, the order's lines, addresses, taxes, and payments are linked to the matching records already on it (lines by Sku, then quantity and line number; taxes by Authority; payments by Method, then amount); only a single match is linked, otherwise the record is added. Addresses are linked by their role: the bill-to to the Transaction's primary billing address and the ship-to to its primary shipping address, with the address fields compared only to choose between several, and the first linked when several still remain, so a capture never adds a second primary billing or shipping address.

Supported Child Collections

  • Add/Update Acumatica Sales Order Line TO iPaaS.com: The order's lines.

  • Add/Update Acumatica Sales Order Address TO iPaaS.com: The order's bill-to and ship-to addresses.

  • Add/Update Acumatica Sales Order Tax TO iPaaS.com: The order's taxes.

  • Add/Update Acumatica Sales Order Payment TO iPaaS.com: The payments applied to the order.

System Caveats

Acumatica Caveats

  • Status values: the Status formula compares Acumatica's own spelling of each order status, for example Canceled, Open, On Hold, and Back Order. A status the formula does not list is captured as Pending.

  • Shipping amount: the iPaaS.com ShippingAmount is the order's freight plus its premium freight. Add/Update Acumatica Sales Order FROM iPaaS.com writes the iPaaS.com shipping amount into the premium freight, so both are needed for the amount to survive a round trip.

  • Order types: the shipped filter captures order type SO only; an order type of the subscriber's own can be added to the filter.

iPaaS.com Caveats

  • Customer, Company, or email: iPaaS.com rejects a transaction with no customer, no Company, and no email (VALD-1002). Keep the EmailAddress mapping so that an order whose business account no filter captures is still captured.

  • Products: every line is captured with the type Product, and iPaaS.com requires each line's SKU to match an iPaaS.com product, so every SKU on the order's lines must exist as a product in iPaaS.com, or the order is not captured. This integration creates iPaaS.com products only for Acumatica stock items; a non-stock item line needs a product with that SKU in iPaaS.com, which this integration does not create.

  • Payment methods: every Acumatica payment method used on the orders must exist in iPaaS.com as a Payment Method, or be translated to one by the Method mapping. A new payment with a method iPaaS.com does not have is rejected with VALD-1036, and the whole order is not captured.

Setup Requirements

Acumatica Configuration

No Acumatica customization is needed. The integration reads sales orders through the standard Acumatica web service endpoint (Default) at the version set in the Version setting of your iPaaS.com Acumatica subscription.

iPaaS.com Configuration

  • Polling must be configured for the integration so that changed orders are captured on a recurring cadence; until it is, orders are captured only by a Manual Sync.

  • The stock items used on the orders must be in iPaaS.com as products, through Add/Update Acumatica Stock Item TO iPaaS.com (see Acumatica to iPaaS.com Stock Item Mapping Documentation).

  • Every Acumatica payment method used on the orders must exist in iPaaS.com as a Payment Method with the same name.

  • The collections Add/Update Acumatica Customer TO iPaaS.com and Add/Update Acumatica Company TO iPaaS.com must be active, so that an order's business account can be transferred first.

  • The child collections listed under Supported Child Collections must be active for lines, addresses, taxes, and payments to be captured.

Authentication & Security

The integration authenticates to the Acumatica instance with OAuth 2.0; the Acumatica company it works in is set by the Connected Application's Client Id. The full authentication walkthrough is covered in the Acumatica Connections and Settings and Acumatica Installation Instructions articles; this document does not repeat it.

Prerequisite Handling

Subscribers do not need to transfer an order's customer before the order: the integration handles it as part of the order transfer.

  • Business account first: when the order's business account (CustomerID) is not yet linked to an iPaaS.com Customer or Company, the account is transferred first through Add/Update Acumatica Customer TO iPaaS.com and then Add/Update Acumatica Company TO iPaaS.com. Their filters decide which one captures it, and their own duplicate handling links it to an existing record instead of creating a second one (see Acumatica to iPaaS.com Customer Mapping Documentation and Acumatica to iPaaS.com Company Mapping Documentation). An account that is already linked is not transferred again.

  • An account no filter captures: the order is captured without a customer or Company, with the email of its bill-to contact (or else of its ship-to contact), and a warning is written to the integration log.

  • A failed account transfer blocks the order: if the account transfer fails with an error, the order transfer fails with error ACUM-EXTN-1006; if the account cannot be read from Acumatica, the order transfer fails with that read error. Resolve the account error, shown with the order error in Dashboard / Integration Monitoring / Error Logs, then transfer the order again.

  • Existing Transaction: an order that is not linked yet is linked to the one existing, unlinked iPaaS.com Transaction with the same number. Whenever the order maps to an existing Transaction, already linked or linked now by number, its lines, addresses, taxes, and payments that are not linked yet are linked to the matching records on it (see Duplicate or Conflicting Mappings).

Integration Flow

  1. The order poll finds the order changed in Acumatica, or a subscriber runs a Manual Sync with its order type and number. The mapping filter decides whether the order is captured.

  2. The order is retrieved from Acumatica through the standard Default web service endpoint, with its lines, taxes, bill-to and ship-to addresses and contacts, payments, and totals.

  3. When the business account is not yet in iPaaS.com, it is transferred first through the Customer and Company collections.

  4. When the order is not yet linked, it is linked to the one existing, unlinked Transaction with the same number, if there is one. When the order maps to an existing Transaction, already linked or linked now, its children that are not linked yet are linked to the matching records on that Transaction.

  5. The Transaction is created in iPaaS.com, or updated when it is already linked, with its lines, addresses, taxes, and payments, and each record is linked back to its Acumatica order or row.

Mappings

Add/Update Acumatica Sales Order TO iPaaS.com

iPaaS.com data type: Transaction

Mapping Filter

OrderType == "SO"

Filter Description. Only Acumatica sales orders (order type SO) are captured. Orders of every other order type, including invoices (IN), quotes (QT), and credit memos and returns (CM, RC, RM, CR), are skipped. Conditions can be added, for example on Status, but the OrderType condition must stay in place; the filter compares Acumatica's own spelling of each value, for example OrderType == "SO" && Status != "Canceled". Orders are best captured once their lines no longer change (see Additional Notes).

Description: Builds the iPaaS.com Transaction from the Acumatica sales order, its totals, and its bill-to and ship-to contacts.

Mapping Type

Source Field (Acumatica)

Destination Field (iPaaS.com)

Description

Field

OrderNbr

TransactionNumber

Required. The Acumatica order number, for example 000080; the order type is not part of it. Also the fallback match that links an unlinked order to an existing iPaaS.com Transaction with the same number.

Dynamic Formula

See the formula below the table.

CustomerId

Recommended. The order contact's iPaaS.com Customer when the business account is an iPaaS.com Company; otherwise the Customer linked to the business account.

Dynamic Formula

See the formula below the table.

CompanyId

Optional. The iPaaS.com Company linked to the order's business account; empty when the account is a Customer.

Dynamic Formula

See the formula below the table.

Type

Required. Order for SO orders; QT is a Quote, IN an Invoice, and CM, RC, RM, and CR are Returns when the filter is widened to those order types.

Dynamic Formula

See the formula below the table.

Status

Required. Complete for Completed or Invoiced, Cancelled for Canceled or Rejected, Processing for Open, Back Order, or Shipping, and Pending for every other status.

Field

DiscountTotal

DiscountAmount

Optional. The order's document-level discount total; line discounts are carried on each line's DiscountAmount, not here.

Field

TaxTotal

TaxAmount

Recommended. The order's tax total.

Dynamic Formula

See the formula below the table.

ShippingAmount

Recommended. The order's freight plus premium freight.

Field

LineTotalAmount

Subtotal

Recommended. The order's line total, before tax and freight.

Field

OrderTotal

Total

Recommended. The order total, including tax and freight.

Field

OrderedQty

TotalQty

Optional. The order's total ordered quantity.

Dynamic Formula

See the formula below the table.

TransactionCreatedDateTime

Recommended. The order date, in UTC.

Dynamic Formula

See the formula below the table.

TransactionUpdatedDateTime

Optional. When the order was last changed in Acumatica, in UTC.

Dynamic Formula

return SpaceportSystemId;

SystemId

Required. This subscription; iPaaS.com requires the system the transaction comes from. Keep as shipped.

Dynamic Formula

See the formula below the table.

EmailAddress

Recommended. The email of the bill-to contact, or else of the ship-to contact, so that an order whose account no filter captures is not rejected (VALD-1002).

The CustomerId dynamic formula:

var companyId = await GetSpaceportIdAsync(CustomerID, "Company", SpaceportSystemId);
if (companyId != null && ContactID != null)
{
    var contactCustomerId = await GetSpaceportIdAsync(ContactID + "|contact", "Customer", SpaceportSystemId);
    if (contactCustomerId != null)
        return contactCustomerId;
}
var customerId = await GetSpaceportIdAsync(CustomerID, "Customer", SpaceportSystemId);
if (customerId != null)
    return customerId;
return null;

The CompanyId dynamic formula:

var companyId = await GetSpaceportIdAsync(CustomerID, "Company", SpaceportSystemId);
if(companyId != null)
    return companyId;
return null;

The Type dynamic formula:

if (OrderType == "QT")
    return "Quote";
if (OrderType == "IN")
    return "Invoice";
if (OrderType == "CM" || OrderType == "RC" || OrderType == "RM" || OrderType == "CR")
    return "Return";
return "Order";

The Status dynamic formula:

if (Status == "Completed" || Status == "Invoiced")
    return "Complete";
if (Status == "Canceled" || Status == "Rejected")
    return "Cancelled";
if (Status == "Open" || Status == "Back Order" || Status == "Shipping")
    return "Processing";
return "Pending";

The ShippingAmount dynamic formula:

return Convert.ToDecimal(Freight ?? 0) + Convert.ToDecimal(PremiumFreight ?? 0);

The TransactionCreatedDateTime dynamic formula:

if (Date == null)
    return null;
return new DateTimeOffset(DateTime.SpecifyKind(Convert.ToDateTime(Date), DateTimeKind.Utc));

The TransactionUpdatedDateTime dynamic formula:

if (LastModified == null)
    return null;
return new DateTimeOffset(DateTime.SpecifyKind(Convert.ToDateTime(LastModified), DateTimeKind.Utc));

The EmailAddress dynamic formula:

if (TransactionAddresses != null)
{
    foreach (var address in TransactionAddresses)
        if (address.IsPrimaryBilling && !string.IsNullOrEmpty(address.Email))
            return address.Email;
    foreach (var address in TransactionAddresses)
        if (!string.IsNullOrEmpty(address.Email))
            return address.Email;
}
return null;

Add/Update Acumatica Sales Order Line TO iPaaS.com

iPaaS.com data type: Transaction Line

This child collection has no mapping filter; every line of the order is processed.

Description: Captures each order line.

Mapping Type

Source Field (Acumatica)

Destination Field (iPaaS.com)

Description

Field

InventoryID

Sku

Recommended. The line's Inventory ID. It must exist as a product in iPaaS.com, or the order is not captured; a non-stock item needs a product with that SKU in iPaaS.com, which this integration does not create.

Field

LineDescription

Description

Optional. The line description.

Field

OrderQty

Qty

Recommended. The ordered quantity.

Field

UnitPrice

UnitPrice

Recommended. The unit price.

Field

ExtendedPrice

ExtendedPrice

Recommended. Unit price times quantity, before discount.

Field

DiscountAmount

DiscountAmount

Optional. The line discount amount.

Field

DiscountPercent

DiscountPercent

Optional. The line discount percent.

Field

LineNbr

SequenceNumber

Optional. The Acumatica line number.

Dynamic Formula

"Product"

Type

Required. Product; keep as shipped.

Dynamic Formula

See the formula below the table.

Status

Required. Complete when the line is completed, otherwise Pending.

The Status dynamic formula:

if (Completed == true)
    return "Complete";
return "Pending";

Add/Update Acumatica Sales Order Address TO iPaaS.com

iPaaS.com data type: Transaction Address

This child collection has no mapping filter; the bill-to and ship-to addresses are processed.

Description: Captures the bill-to and ship-to addresses, with the business name of the matching contact.

Mapping Type

Source Field (Acumatica)

Destination Field (iPaaS.com)

Description

Field

AddressLine1

Address1

Recommended. The first address line.

Field

AddressLine2

Address2

Optional. The second address line.

Field

City

City

Recommended. The city.

Field

State

Region

Recommended. The Acumatica State.

Field

Country

Country

Recommended. The country, for example US.

Field

PostalCode

PostalCode

Recommended. The postal code.

Field

BusinessName

Company

Optional. The business name of the bill-to or ship-to contact.

Field

IsPrimaryBilling

IsPrimaryBilling

Recommended. True for the bill-to address.

Field

IsPrimaryShipping

IsPrimaryShipping

Recommended. True for the ship-to address.

Add/Update Acumatica Sales Order Tax TO iPaaS.com

iPaaS.com data type: Transaction Tax

This child collection has no mapping filter; every tax of the order is processed.

Description: Captures each tax detail.

Mapping Type

Source Field (Acumatica)

Destination Field (iPaaS.com)

Description

Field

TaxID

Authority

Recommended. The Acumatica Tax ID; also links a tax to a tax already on an existing Transaction.

Field

TaxAmount

Amount

Recommended. The tax amount.

Field

TaxRate

TaxPercent

Optional. The rate Acumatica holds for the tax.

Add/Update Acumatica Sales Order Payment TO iPaaS.com

iPaaS.com data type: Transaction Payment

This child collection has no mapping filter; every payment applied to the order is processed.

Description: Captures each payment applied to the order.

Mapping Type

Source Field (Acumatica)

Destination Field (iPaaS.com)

Description

Field

AppliedToOrder

Amount

Recommended. The amount of the payment applied to the order.

Field

PaymentMethod

Method

Required. The Acumatica payment method; it must exist in iPaaS.com as a Payment Method (VALD-1036).

Field

Status

Status

Optional. The Acumatica payment status.

Dynamic Formula

return DocType + " " + ReferenceNbr;

Description

Optional. The payment document type and reference number, for example Prepayment 000123.

Error Handling

Errors appear in Dashboard / Integration Monitoring / Error Logs. For the full list of Acumatica error messages and codes, see Acumatica Error Messages.

  • Sales order could not be located (ACUM-NFND-1011): the order type and number entered for a Manual Sync do not exist in Acumatica, or the value entered is not an order type and number. Resolution: check the order on the Acumatica Sales Orders (SO301000) form and transfer it again with its order type and number, for example as SO|000080.

  • The order's business account could not be transferred first (ACUM-EXTN-1006): the transfer of the order's account to iPaaS.com failed. Resolution: correct the account error shown with it, then transfer the order again.

  • Existing transaction could not be linked (ACUM-BIZL-1012) and existing transaction line, address, tax, or payment could not be linked (ACUM-BIZL-1013 to 1016): a matching iPaaS.com record was found, but the link to it could not be saved. The transfer stops rather than create a duplicate. Resolution: reprocess the order; if the error repeats, ask your MiSP to check the record named in the message.

  • No customer, Company, or email (VALD-1002): the order has none of the three. Resolution: keep the EmailAddress mapping, or make sure the order's business account is captured by the Customer or Company collection.

  • Payment method not valid (VALD-1036): a payment's method does not exist in iPaaS.com. Resolution: create the Payment Method in iPaaS.com, or translate the method with the Method mapping, then transfer the order again.

  • A line's SKU is not an iPaaS.com product: the order is not captured. Resolution: transfer the stock item to iPaaS.com, then transfer the order again.

If Acumatica is temporarily unavailable during a transfer, the transfer fails and an error appears in Dashboard / Integration Monitoring / Error Logs; the next order poll or a Manual Sync transfers the order again.

Testing & Validation

Test Scenarios

  1. Run a Manual Sync of an open SO order with two lines, a bill-to and ship-to address, a tax, and a payment, and verify the Transaction's number, type, status, customer, amounts, and dates, and its lines, addresses, tax, and payment in iPaaS.com.

  2. Transfer the same order again and confirm the existing Transaction is updated rather than duplicated.

  3. Change the premium freight of the order in Acumatica and confirm the Transaction's shipping amount and total are updated on the next order poll.

  4. Cancel an order and confirm its Transaction status becomes Cancelled.

  5. Send an order FROM iPaaS.com into Acumatica, run an order poll, and confirm the Transaction is not changed; then change a line quantity in Acumatica and confirm the poll updates the same Transaction.

  6. Run a Manual Sync of a QT order and confirm nothing is captured.

  7. Transfer an order whose payment method is not an iPaaS.com Payment Method and confirm VALD-1036 appears in Dashboard / Integration Monitoring / Error Logs.

Validation Checklist

  • Polling is configured for the integration.

  • The stock items used on the orders are in iPaaS.com as products.

  • Every Acumatica payment method used on the orders exists in iPaaS.com as a Payment Method.

  • The Customer and Company collections are active, with complementary filters.

  • Any condition added to the mapping filter uses Acumatica's own spelling of each value and keeps the OrderType condition.

Additional Notes

  • Bulk initialization is not available for this collection; orders are captured by the order poll as they change, or by Manual Sync.

  • The child collections run with the parent; lines, addresses, taxes, and payments cannot be transferred on their own.

  • Shipments and other Acumatica documents are not captured as Transactions.

At the time this documentation was written:

  • Transfer orders once their lines are final: changes to the quantity, price, or other fields of an existing line update the Transaction, but a change to the order's set of lines is not fully carried. A line removed from the Acumatica order after it has transferred stays on the iPaaS.com Transaction, and a line added later can be written onto the Transaction line of a removed line instead of being added as a new line. Orders are often passed on from iPaaS.com to systems that do not accept later edits, so capture an order when its lines no longer change, for example with a Status condition in the mapping filter.

  • First order poll: the first order poll on a subscription does not pull orders that already exist in Acumatica; send those with a Manual Sync if they are needed in iPaaS.com.

Related Documents

Related Mapping Documentation

Did this answer your question?