Skip to main content

Syspro to iPaaS.com Invoice Mapping Documentation

How Syspro invoices are captured into iPaaS.com as transactions, linked to their sales order and customer, with invoiced lines and tracking.

Summary

Syspro invoices can be transferred into iPaaS.com as transactions through Manual Sync or through automatic transfers raised by the Syspro webhook service. Each transfer links the invoice back to the sales order it was raised against and to the customer it was billed to, and carries the invoiced lines and any despatch tracking. Together these give iPaaS.com a record of what was actually invoiced and shipped, as distinct from what was originally ordered.

This document covers the parent Invoice collection and both of its child collections.

ID Format

Manual Sync ID Format

Enter the Syspro sales order number the invoice was raised against, on the iPaaS.com Manual Sync page.

Example: 000000000012345

Note this is the sales order number rather than the Syspro invoice number.

External ID Format

After a successful transfer, iPaaS.com saves the external-ID link for the invoice transaction. The transaction number written is the sales order number, so an invoice carries the same reference as the order it relates to. That keeps the pair recognisable, but it means the Syspro invoice number itself is not carried into that field.

Deleted Record Support

Outbound delete is not supported for this entity. The integration does not implement a delete operation, delete mappings are not included in the default templates, and removing an invoice in Syspro will not remove the corresponding iPaaS.com transaction.

Mapping Collection Status

Status: Enabled, with a mapping filter restricting the collection to invoices whose related records already exist in iPaaS.com. See the Mapping Filter block below.

Trigger Events: invoice/created and invoice/updated, raised by a database trigger in the subscriber's own Syspro database and enabled by default in the shipped configuration.

Duplicate or Conflicting Mappings

Update Syspro Sales Order TO iPaaS.com captures order status changes; its filter excludes invoices, so the two collections do not process the same records. Add Syspro Sales Order FROM iPaaS.com creates the orders these invoices are subsequently raised against.

Add/Update Syspro Sales Order Shipment TO iPaaS.com captures tracking details for orders rather than invoices. An order that is both despatched and invoiced can therefore produce tracking records from two collections. Subscribers or their MiSP should confirm during implementation which is intended to be the source of tracking information, so customers are not shown duplicate or conflicting tracking.

This entity does not support collision handling, so there are no selectable collision methods on any collection in this family.

Supported Child Collections

  • Add/Update Syspro Invoice Line Item TO iPaaS.com: the invoiced items and the quantities actually shipped. Child of the Invoice collection.

  • Add/Update Syspro Invoice Shipment TO iPaaS.com: despatch tracking details for the invoiced goods. Child of the Invoice collection.

System Caveats

Syspro Caveats

  • The order number is used as the transaction number. The invoice carries the Syspro sales order number rather than the Syspro invoice number.

  • The shipped quantity is used on lines, not the ordered quantity. An invoice line reflects what was despatched, so a part-shipped order produces an invoice line showing less than the original order line. This is correct rather than an error.

  • Line descriptions are captured as invoiced. The description reflects the wording on the customer's invoice at the time, not the current stock item description — the correct behaviour for a financial record.

  • Invoice shipping instructions are free text. The invoice tracking collection takes its shipping method from the invoice's shipping instructions field, which in many Syspro environments is a free-form despatch note rather than a controlled carrier name.

iPaaS.com Caveats

  • The parent order and the customer must both already exist. The mapping filter enforces this, so invoices accumulate unprocessed until their related records transfer.

  • Status and type are fixed values. Every invoice arrives as a Complete Ticket, regardless of its state in Syspro.

  • Invoices arrive typed as Ticket. Downstream systems and reports that filter on transaction type must look for Ticket to find invoices, not Invoice.

  • Line SKUs must resolve to an existing product. A line whose stock code has never been transferred will not be associated with an iPaaS.com product.

  • Tracking shipping method must match a configured Shipping Method, or the tracking transfer fails.

Integration-Specific Caveats

  • A database-level filter applies in addition to the mapping filter. The subscription that raises the invoice event carries its own SQL filter in the subscriber's Syspro database, restricting which invoices are reported at source. Subscribers or their MiSP troubleshooting a missing invoice should check both filters.

  • Missing invoices usually trace to a missing order. Because the mapping filter requires the parent sales order to exist in iPaaS.com, an invoice for an order that never transferred will never transfer either.

Setup Requirements

Syspro Configuration

  1. Install the Syspro database objects that raise invoice change events, and confirm the invoice-event subscriptions are recorded and enabled. They are enabled in the shipped configuration.

  2. Review the SQL filter attached to those subscriptions against the subscriber's own business rules — the shipped filter carries example values.

  3. Install and run the Syspro webhook service on a Windows server that can reach both the Syspro database and iPaaS.com.

iPaaS.com Configuration

Ensure customer and sales order synchronisation are running, since the filter requires both to exist. Create a Shipping Method for each distinct value the Syspro invoice shipping instructions field can contain, or apply a Lookup Translation on that mapping.

Integration Flow

  1. An invoice is raised or changed in Syspro, or a subscriber initiates a Manual Sync using the Syspro sales order number.

  2. For automatic transfers, the change raises an invoice/created or invoice/updated event — subject to the SQL filter on the Syspro subscription — which the webhook service relays to iPaaS.com.

  3. The mapping filter is evaluated. Records that are not invoices, or whose parent sales order or customer does not yet exist in iPaaS.com, are skipped silently.

  4. The integration resolves the iPaaS.com transaction representing the parent sales order, and the iPaaS.com customer.

  5. The invoice transaction is created or updated, linked to the parent order and attributed to the customer, with the fixed type and status.

  6. Add/Update Syspro Invoice Line Item TO iPaaS.com writes the invoiced items and shipped quantities.

  7. Add/Update Syspro Invoice Shipment TO iPaaS.com writes despatch tracking details.

Mappings

Add/Update Syspro Invoice TO iPaaS.com

iPaaS.com data type: Transaction

Mapping Filter

IsInvoice==true
&& GetSpaceportId(ParentSalesOrder, "Transaction", SpaceportSystemId) != null
&& GetSpaceportId(Customer, "Customer", SpaceportSystemId) != null

Filter Description. A Syspro record is processed only when all three conditions hold. IsInvoice==true restricts the collection to invoices; sales orders that have not been invoiced are handled by Update Syspro Sales Order TO iPaaS.com. The second condition requires the parent sales order to already exist as an iPaaS.com transaction, so the invoice can be attached to it. The third requires the customer to already exist in iPaaS.com, so the invoice can be attributed.

Records failing any condition are skipped silently — they raise no error and do not appear in the error log. Crucially, an invoice whose order or customer has not yet transferred is not permanently rejected: it will transfer on a later run once those records are present. Subscribers or their MiSP should therefore expect a delay rather than a failure in that case, and should investigate a persistently missing invoice by first checking whether the underlying order reached iPaaS.com.

Mapping Type

Source Field (Syspro)

Destination Field (iPaaS.com)

Description

Dynamic Formula

SpaceportSystemId

SystemId

Required. Supplied by the platform at transfer time, so it is always correct for the subscription in use and needs no configuration.

Field

SalesOrder

TransactionNumber

Required. The Syspro sales order number, not the invoice number. Keeps an order and its invoice recognisable as a pair.

Dynamic Formula

GetSpaceportId(ParentSalesOrder, "Transaction", ...)

ParentId

Required. Links the invoice to the iPaaS.com transaction for its sales order. The filter checks this resolves before the transfer runs.

Dynamic Formula

GetSpaceportId(Customer, "Customer", ...)

CustomerId

Required. Links the invoice to the iPaaS.com customer. iPaaS.com requires a transaction to identify its customer.

Static

"Ticket"

Type

Required. Fixed by design. Note invoices arrive typed Ticket, not Invoice.

Static

"Complete"

Status

Required. Fixed by design, on the basis that a raised invoice represents a completed sale.

Add/Update Syspro Invoice Line Item TO iPaaS.com (Child)

iPaaS.com data type: Transaction Line

A child of the Invoice collection, dispatched as part of the invoice transfer. Parent Collection: Add/Update Syspro Invoice TO iPaaS.com.

Mapping Type

Source Field (Syspro)

Destination Field (iPaaS.com)

Description

Static

"Product"

Type

Required. Fixed by design. iPaaS.com accepts only Product or Giftcard on a transaction line, so a Syspro gift-card line arrives typed as Product.

Static

"Complete"

Status

Required. Fixed by design, matching the parent invoice.

Field

StockCode

Sku

Recommended. Must resolve to an existing iPaaS.com product or variant for the line to be associated with a product. Lines for non-stocked charge items arrive without an association.

Field

StockDescription

Description

Recommended. The description as recorded on the Syspro invoice at the time of invoicing.

Field

ShipQty

Qty

Recommended. The quantity actually shipped — the correct basis for an invoice line.

Add/Update Syspro Invoice Shipment TO iPaaS.com (Child)

iPaaS.com data type: Transaction Tracking Number

A child of the Invoice collection, dispatched as part of the invoice transfer. Parent Collection: Add/Update Syspro Invoice TO iPaaS.com.

Mapping Type

Source Field (Syspro)

Destination Field (iPaaS.com)

Description

Dynamic Formula

Parent.ShippingInstrs

ShippingMethod

Required. Taken from the parent invoice's shipping instructions. Must match a configured iPaaS.com Shipping Method — and because this field is often free text, it is more likely to fail than the equivalent sales order mapping.

Field

TrackingNumber

TrackingNumber

Recommended. The despatch tracking number for the invoiced goods.

Dynamic Formula

Parent.ShippingInstrs

ShippingMethodDescription

Optional. Reads the same parent value as ShippingMethod. Free text, so it is the appropriate place to keep the raw shipping instructions if the method mapping is re-pointed at a controlled carrier field.

Error Handling

Errors raised by this family are catalogued in the Syspro Error Messages article. The most likely failure mode is a tracking record whose shipping instructions do not match a configured iPaaS.com Shipping Method. Errors appear under Dashboard / Integration Monitoring / Error Logs.

Invoices excluded by the mapping filter or by the Syspro-side SQL filter produce no error — they are skipped silently and may transfer later once their related records exist.

Testing & Validation

Test Scenarios

  1. Transfer a customer and an order first, then raise an invoice in Syspro and verify it appears in iPaaS.com linked to the correct order and customer.

  2. Raise an invoice for an order that has not yet transferred and confirm it is skipped silently; transfer the order, re-run, and confirm the invoice then transfers.

  3. Verify the invoice arrives typed Ticket with status Complete.

  4. Part-ship an order, invoice it, and verify the invoice line quantity reflects the shipped quantity rather than the ordered quantity.

  5. Invoice a line for an item that has never been transferred as a product, and confirm the line arrives without a product association.

  6. Record a despatch whose shipping instructions match a configured Shipping Method and verify the tracking record appears.

  7. Record a despatch whose shipping instructions are free text with no match, and confirm the tracking transfer fails.

  8. Credit the invoice in Syspro and confirm the iPaaS.com transaction remains Complete, since reversals are not carried.

Validation Checklist

  • Invoices are linked to the correct parent order and customer.

  • Invoice line quantities match what was shipped.

  • Line SKUs resolve to iPaaS.com products where the items have been transferred.

  • Shipping instruction values map to configured Shipping Methods, or a Lookup Translation is in place.

  • The SQL filter on the Syspro subscription has been reviewed.

  • Missing invoices trace back to a missing order or customer rather than an unexplained failure.

Additional Notes

  • Status is fixed at Complete and type at Ticket. An invoice subsequently credited in Syspro still shows as Complete; this collection does not carry reversals. Subscribers whose downstream processes expect the Invoice type should confirm during implementation.

  • Line pricing is out of scope. Unit prices, discounts and tax are not captured on invoice lines, so the lines show what was shipped but not what it was billed at. Subscribers needing invoiced values should raise this during implementation.

  • Credit notes are out of scope. Lines on a credit or adjustment are not captured.

  • Invoice payments and settlement are out of scope. Payment allocation against invoices is not captured.

  • Duplicate tracking is possible. Where both this family's tracking collection and the sales order tracking collection are enabled, the same despatch can produce two tracking records in iPaaS.com.

Related Documents

Did this answer your question?