Contents
Summary
Posted Microsoft Dynamics 365 Business Central sales invoices can be transferred to iPaaS.com as transactions through the integration's polling schedule or through Manual Sync. Each invoice is captured as an iPaaS.com transaction with its header detail, and five child collections capture the invoice's addresses, line items, tracking number, payment terms, and partially shipped lines within the same transfer. Only Business Central records that are posted sales invoices are processed; sales orders and credit memos are handled separately.
This sales invoice family exists alongside the sales order family so that the integration can capture the invoice stage of a Business Central sales document. When a Business Central sales order is posted it ceases to exist as an open order, and the invoice it produces is captured here as a posted invoice transaction. Shipment information is gathered from both the order and the invoice sources so that the tracking and shipped-quantity detail on the iPaaS.com transaction reflects what was actually shipped against the invoice.
ID Format
Manual Sync ID Format
When transferring a Business Central sales invoice from the iPaaS.com Manual Sync page, enter the invoice identifier in this format:
Invoice|{{invoiceId}}The {{invoiceId}} value is the unique ID (a GUID) of the posted Business Central invoice.
Example:
Invoice|72f2e4b9-9b71-4f23-8d8c-bf3c876d3c1a
External ID Format
After a successful transfer, iPaaS.com saves the Business Central invoice number as the external ID on a dedicated external-ID record. This external ID links every subsequent transfer of the same invoice to the same iPaaS.com transaction rather than creating a duplicate. Keep the invoice number unique so repeated transfers update the existing transaction.
Deleted Record Support
Outbound delete is not supported for the sales invoice transaction or for any of its child records (addresses, line items, tracking number, and payment). This collection captures and updates posted invoices into iPaaS.com; it does not remove iPaaS.com records. Delete mappings are not included in the default templates, and deleting an invoice or any of its child records in Business Central does not remove the corresponding iPaaS.com transaction or child record. Subscribers who need to retire an iPaaS.com transaction should manage that on the iPaaS.com side.
Custom Field Support
Custom fields are supported on the parent sales invoice transaction and on both line-item collections (the standard line-item collection and the partially shipped line-item collection). This collection maps three header custom fields, and the line-item collections map five line-item custom fields; these are listed in each collection's field mapping table below.
To capture a Business Central invoice value that is not already in the standard mapping list:
In Business Central, customize the relevant Web Service so the value is exposed in the invoice or line response. Subscribers or their MiSP can contact iPaaS.com Support for assistance customizing Business Central Web Services.
In iPaaS.com, create a custom field on the subscription that matches the field name and data type.
Map the new iPaaS.com custom field to the Business Central value in the appropriate mapping collection.
A custom field must exist on the iPaaS.com subscription before its mapping can store a value; an unmatched custom field is left unset.
Mapping Collection Status
Status: Enabled
Trigger Events: Transaction Create, Transaction Update, Transaction Poll. These collections use the transaction scope set. Transfers happen automatically on the integration's polling schedule — there are no webhooks for this integration, so the integration periodically checks Business Central for new and changed posted invoices within the Transaction Poll Search Days window — and a Manual Sync can be run at any time. Whether a detected invoice creates a new iPaaS.com transaction or updates an existing one depends on the external-ID link (the saved invoice number), not on the change type — see ID Format.
Duplicate or Conflicting Mappings
Other collections operate on Business Central invoice and order data and may write the same kinds of records:
Add/Update Dynamics 365 Business Central Sales Order TO iPaaS.com and its children capture sales orders into iPaaS.com. Sales orders are handled separately from posted invoices, but both write transaction records to iPaaS.com.
The Business Central invoice collections that write in the opposite direction (from iPaaS.com into Business Central) create invoice records rather than capturing them.
Before enabling these collections together, review their filters and Add/Update settings and decide which system is the source of truth for invoice data, so the same record is not written in conflicting directions.
Collision Handling
This integration does not provide configurable collision-handling methods for the sales invoice collections. There is no subscriber-selectable conflict-resolution option (such as Error, Remap and Link, or Update and No Link) on these collections. Invoices are instead matched to their iPaaS.com transaction by the saved external ID (the invoice number) — see ID Format. Keep the invoice number unique so repeated transfers update the same transaction rather than creating a duplicate.
Duplicate Matching
None of the six sales invoice collections perform duplicate matching against existing iPaaS.com records, and none auto-transfer a related record as a prerequisite. The invoice transaction is linked to iPaaS.com solely by its external ID; the child records are captured within the parent invoice's transfer and associated with that invoice's transaction.
Supported Child Collections
The parent Update Dynamics 365 Business Central Sales Invoice TO iPaaS.com collection captures the invoice header. Five child collections capture the rest of the invoice within the same dispatch:
Child Collection | Purpose |
Update Dynamics 365 Business Central Sales Invoice Address TO iPaaS.com | Captures the invoice's billing and shipping addresses. |
Update Dynamics 365 Business Central Sales Invoice Line Item TO iPaaS.com | Captures each standard invoice line as a transaction line. |
Update Dynamics 365 Business Central Sales Invoice Tracking Number TO iPaaS.com | Captures the invoice's package tracking number and shipping method. |
Update Dynamics 365 Business Central Sales Invoice Payment TO iPaaS.com | Captures the invoice's payment terms as a transaction payment. |
Update Dynamics 365 Business Central Partially Shipped Sales Invoice Line Item TO iPaaS.com | Captures partially shipped invoice lines as transaction lines. |
Each child collection captures its records as part of the parent invoice's transfer; the children are not synced on their own.
System Caveats
Microsoft Dynamics 365 Business Central Caveats
Invoice qualification: only posted records flagged as invoices are processed. Sales orders, credit memos, and other non-invoice records are skipped by this collection.
Header status normalization: Business Central invoice statuses are normalized to standardized iPaaS.com statuses on the header. Shipped, Partially Shipped, Cancelled, and Released all map to Shipped; Completed maps to Complete; Pending, In Progress, and Submitted map to Pending. A Business Central status not covered by the mapping is not translated, and the status is left unset when the invoice has no status.
Line-level status differs from the header: the line-item collections normalize the parent invoice status differently from the header. At the line level, Completed is recorded as Completed (not Complete) and Cancelled is recorded as Partially Shipped (not Shipped). Review both rules if invoice status fidelity matters downstream.
Total quantity: the invoice's total quantity is calculated by summing the quantities of the invoice's item lines only. Non-item line types are excluded from the count, and the total is zero when the invoice has no item lines.
Name parsing on addresses: the address collection derives the first and last name by splitting the address name on spaces — the first word becomes the first name and the second word becomes the last name. A name with only one word leaves the last name empty, and a name with more than two words contributes only its first two words.
Partially shipped lines: Business Central lines flagged as partially shipped invoice lines are excluded from the standard line-item collection and captured by the partially shipped line-item collection instead, which sets the shipped quantity to zero. Each line is processed by exactly one of the two line collections.
iPaaS.com Caveats
Invoice number is the routing key: the invoice number must be present on the Business Central record for the transfer to link correctly. It is saved as the external ID that routes all subsequent transfers for that invoice.
Creation date is preserved: the transaction creation date preserves the existing iPaaS.com transaction creation timestamp on update, so an existing transaction keeps its original creation date across repeated transfers. On a first transfer with no existing transaction, no prior creation date is carried over.
Shipping methods must exist first: the tracking number collection requires that the shipping method named by the Business Central location code already exist in iPaaS.com. If it does not, the transfer stops with an error directing that the shipping method be created in iPaaS.com first. Create the matching shipping method in iPaaS.com before transferring invoices that carry tracking data.
Custom fields must exist first: a mapped custom field stores a value only when a custom field of the same name exists on the iPaaS.com subscription; otherwise the value is not stored.
Integration-Specific Caveats
Partially invoiced lines default to zero quantity: when a line item is present on an existing iPaaS.com transaction but is not in the Business Central sales-invoice payload for that transfer, the partially shipped line-item collection captures it with its shipped quantity set to a static 0. This is by design — it represents partially invoiced and unshipped lines correctly on the iPaaS.com transaction rather than dropping them. The line type is set to a static Product so each captured line is recorded as a product line.
Adding missing lines: the partially shipped line-item collection works in conjunction with the Update Non-Existing Invoice Lines preset to add lines that are missing from an existing iPaaS.com transaction.
Setup Requirements
Microsoft Dynamics 365 Business Central Configuration
Enable Web Services for the customer, item, and sales document data the integration reads — including Sales Invoices, Sales Order, Sales Orders, and Sales Order Lines, along with Items, Item Card, Item Categories, Items By Location, and Customer Price Groups.
Enable and customize the Sales Shipments Web Service (and Sales Shipment Lines) to expose the originating Order No. on each shipment — the invoice's tracking-number child reads shipments by that field. Until Order No. is exposed, posted sales invoice transfers to iPaaS.com do not complete.
If custom fields are mapped, customize the relevant Web Service to expose them.
Authentication uses OAuth 2.0; ensure credentials are stored securely in the iPaaS.com credential manager.
For the full installation walkthrough, see the Installation Instructions.
iPaaS.com Configuration
Configure the Transaction Poll Search Days preset to define the polling lookback window for automatic transfers.
Create shipping methods in iPaaS.com for every Business Central location code referenced by invoice tracking data, before transferring those invoices.
Create custom fields on the iPaaS.com subscription that match the Business Central field names and data types for any custom-field mappings in use.
Configure the Update Non-Existing Invoice Lines preset if partially shipped lines should be added to existing iPaaS.com transactions.
Subscribers or their MiSP can contact iPaaS.com Support for assistance configuring Business Central Web Services.
Integration Flow
A sales document is posted in Business Central. Once a sales order is posted it ceases to exist as an open order, and the posted sales invoice it produces is what this family captures. Shipment detail is gathered from both the order and invoice sources so the captured invoice reflects what was shipped.
The integration detects the invoice on its polling schedule within the Transaction Poll Search Days window, or a subscriber triggers a Manual Sync using the
Invoice|{{invoiceId}}format.The parent mapping filter confirms the record is a posted invoice; non-invoice records are skipped.
iPaaS.com authenticates with Business Central using OAuth 2.0 and reads the invoice.
The parent collection records the invoice header: system identifier, transaction number, type, normalized status, customer email, financial totals, total quantity, creation date, and the header custom fields.
The address child collection records the invoice's billing and shipping addresses, deriving first and last name from the address name.
The standard line-item child collection records each non-partially-shipped invoice line as a transaction line with SKU, quantity, pricing, discounts, and line custom fields.
The payment child collection records the invoice's payment terms as a transaction payment when the parent invoice has a payment terms code.
The tracking number child collection confirms the shipping method exists in iPaaS.com, then records the tracking number, shipping method, and shipment reference detail.
The partially shipped line-item child collection records lines flagged as partially shipped, with shipped quantity set to zero.
The iPaaS.com transaction is created on the first transfer or updated on subsequent transfers, matched by the saved external ID (the invoice number).
Transfer status and any errors are recorded in the iPaaS.com Dashboard under Integration Monitoring and the Error Logs.
Mappings
Update Dynamics 365 Business Central Sales Invoice TO iPaaS.com (Parent)
iPaaS.com data type: Transaction
Mapping Filter
IsInvoice
Filter Description. Only Business Central records that are posted sales invoices pass this filter — the IsInvoice indicator must be set. Non-invoice records, such as sales orders and credit memos, are skipped by this collection and are not captured as invoice transactions.
This collection captures the invoice header and is the parent of the five child collections below.
Mapping Type | Source Field (Microsoft Dynamics 365 Business Central) | Destination Field (iPaaS.com) | Description |
Dynamic Formula |
| SystemId | Required. Identifies the source Business Central system on the iPaaS.com transaction so the invoice is attributed to the correct connected system. The value is resolved automatically by the platform and should not be changed. |
Field |
| TransactionNumber | Required. The iPaaS.com transaction number, taken from the Business Central invoice number. It is saved as the external ID and is the key used to match the invoice to its iPaaS.com transaction on every transfer. Keep the invoice number unique. |
Static |
| Type | Required (designed constant). Sets the transaction type to a fixed |
Dynamic Formula | (status normalization — see formula below) | Status | Recommended. Normalizes the Business Central invoice status into a standardized iPaaS.com status. Shipped, Partially Shipped, Cancelled, and Released map to Shipped; Completed maps to Complete; Pending, In Progress, and Submitted map to Pending. The status is left unset when the invoice has no status, and a status outside the listed set is not translated. This header rule differs from the line-level rule. |
Field |
| EmailAddress | Recommended. The customer's sell-to email address from the invoice. Left unset when the invoice has no sell-to email. |
Field |
| DiscountAmount | Recommended. The invoice's overall discount amount. Left unset when the invoice has no discount amount. |
Field |
| TaxAmount | Recommended. The total tax amount, calculated in Business Central from the invoice's lines and tax setup. |
Field |
| Subtotal | Recommended. The invoice subtotal excluding tax, calculated in Business Central from the invoice's lines. |
Field |
| Total | Recommended. The invoice total including tax, calculated in Business Central from the invoice's lines and tax setup. |
Dynamic Formula | (total-quantity sum — see formula below) | TotalQty | Recommended. The invoice's total quantity, calculated by summing the quantities of item lines only. Non-item line types are excluded, and the total is zero when the invoice has no item lines. |
Dynamic Formula |
| TransactionCreatedDateTime | Recommended. Preserves the existing iPaaS.com transaction creation timestamp so an existing transaction keeps its original creation date on a repeat transfer. No prior date is carried over on a first transfer. |
Field |
| Invoice No (Custom Field) | Optional. The Business Central invoice number, stored on the iPaaS.com Invoice No custom field for reference and traceability. The custom field must exist on the subscription; left unset when the source value is absent. |
Field |
| Invoiced By (Custom Field) | Optional. The Business Central user or process that generated the invoice, stored on the iPaaS.com Invoiced By custom field. The custom field must exist on the subscription; left unset when the source value is absent. |
Field |
| Invoice Document Exchange Status (Custom Field) | Optional. The Business Central document exchange status, stored on the iPaaS.com Invoice Document Exchange Status custom field for tracking and auditing. The custom field must exist on the subscription; left unset when the source value is absent. |
The header Status formula:
var orderStatus = Invoice_OrderStatus;
if(orderStatus == null)
return null;
orderStatus = orderStatus.ToString();
if (orderStatus == "Shipped") {
return "Shipped";
} else if (orderStatus == "Completed") {
return "Complete";
} else if (orderStatus == "Pending" || orderStatus == "In Progress") {
return "Pending";
} else if (orderStatus == "Submitted") {
return "Pending";
} else if (orderStatus == "Partially Shipped") {
return "Shipped";
} else if (orderStatus == "Cancelled") {
return "Shipped";
} else if (orderStatus == "Released") {
return "Shipped";
}The TotalQty formula:
var sum = 0;
if (LineItems != null && LineItems.count > 0) {
foreach (var item in LineItems){
if (item.Type == "Item")
sum = sum + item.Quantity;
}
}
return sum;Update Dynamics 365 Business Central Sales Invoice Address TO iPaaS.com (Child)
iPaaS.com data type: Transaction Address
This collection is a child of the Sales Invoice parent. It has no mapping filter, so every address on a captured invoice is processed. It records the invoice's billing and shipping addresses on the iPaaS.com transaction and derives a first and last name from the address name.
Mapping Type | Source Field (Microsoft Dynamics 365 Business Central) | Destination Field (iPaaS.com) | Description |
Field |
| IsPrimaryBilling | Recommended. Flags whether this is the invoice's primary billing address. Left unset when the invoice address carries no primary billing designation. |
Field |
| IsPrimaryShipping | Recommended. Flags whether this is the invoice's primary shipping address. Left unset when the invoice address carries no primary shipping designation. |
Field |
| Address1 | Recommended. The first line of the street address. Left unset when the invoice has no street address. |
Field |
| Address2 | Recommended. The second line of the street address. Left unset when the invoice has no second address line. |
Field |
| City | Recommended. The city. Left unset when the invoice has no city. |
Field |
| Region | Recommended. The county, mapped to the iPaaS.com region. Left unset when the invoice has no county. |
Field |
| Country | Recommended. The country, taken from the Business Central country/region code. Where downstream systems expect a full country name rather than a code, confirm the value meets their needs. Left unset when there is no country/region code. |
Field |
| PostalCode | Recommended. The postal code. Left unset when the invoice has no post code. |
Dynamic Formula |
| FirstName | Recommended. Derives the first name by taking the first word of the address name. A name with no spaces contributes its whole value. |
Dynamic Formula |
| LastName | Recommended. Derives the last name by taking the second word of the address name. A one-word name leaves the last name empty; a name with more than two words contributes only its second word. |
Update Dynamics 365 Business Central Sales Invoice Line Item TO iPaaS.com (Child)
iPaaS.com data type: Transaction Line
This collection is a child of the Sales Invoice parent. It captures each standard invoice line as a transaction line and supports custom fields.
Mapping Filter
string.IsNullOrWhiteSpace(Type) || Type != "PartiallyShippedInvoiceLine" ? true : false;
Filter Description. A Business Central invoice line passes this filter when its Type value is empty or is anything other than PartiallyShippedInvoiceLine. Lines flagged as PartiallyShippedInvoiceLine are rejected here and captured by the partially shipped line-item collection instead. This ensures each line is processed by exactly one of the two line collections.
Mapping Type | Source Field (Microsoft Dynamics 365 Business Central) | Destination Field (iPaaS.com) | Description |
Static |
| Type | Required (designed constant). Sets the transaction line type to a fixed |
Field |
| SequenceNumber | Recommended. The line number, defining the order of lines on the transaction. Confirm Business Central line numbering reflects the intended sequence. |
Dynamic Formula | (line status — see formula below) | Status | Recommended. Derives the line status from the parent invoice's status. Shipped, Pending, Submitted, and Partially Shipped pass through unchanged; Completed is recorded as Completed; Cancelled is recorded as Partially Shipped. Left unset when the parent has no status. This line-level rule differs from the header rule. |
Field |
| Sku | Recommended. The product/item code (SKU). Left unset when the line has no item code. |
Field |
| Description | Recommended. The line description. Left unset when the line has no description. |
Field |
| Qty | Recommended. The line quantity. Left unset when the line has no quantity. |
Field |
| QtyShipped | Recommended. The line quantity shipped. Left unset when the line has no quantity shipped. |
Field |
| UnitPrice | Recommended. The line unit price. Left unset when the line has no unit price. |
Field |
| DiscountAmount | Recommended. The line-level discount amount. Left unset when the line has no discount amount. |
Field |
| DiscountPercent | Recommended. The line-level discount percentage. Left unset when the line has no discount percentage. |
Field |
| Unit of Measure (Custom Field) | Optional. The unit of measure (for example, pcs or kg), stored on the iPaaS.com Unit of Measure custom field. The custom field must exist on the subscription; left unset when the source value is absent. |
Field |
| Location Code (Custom Field) | Optional. The inventory or warehouse location code, stored on the iPaaS.com Location Code custom field. The custom field must exist on the subscription; left unset when the source value is absent. |
Field |
| Invoice Line Item UPC (Custom Field) | Optional. The item UPC or barcode for tracking, stored on the iPaaS.com Invoice Line Item UPC custom field. The custom field must exist on the subscription; left unset when the source value is absent. |
Field |
| Tax Area Code (Custom Field) | Optional. The line tax area code, stored on the iPaaS.com Tax Area Code custom field. The custom field must exist on the subscription; left unset when the source value is absent. |
Field |
| Tax Group Code (Custom Field) | Optional. The line tax group code used to determine applicable tax rules, stored on the iPaaS.com Tax Group Code custom field. The custom field must exist on the subscription; left unset when the source value is absent. |
The line Status formula:
var orderStatus = Parent.Invoice_OrderStatus;
if(orderStatus == null)
return null;
orderStatus = orderStatus.ToString();
if (orderStatus == "Shipped") {
return "Shipped";
} else if (orderStatus == "Completed") {
return "Completed";
} else if (orderStatus == "Pending" || orderStatus == "In Progress") {
return "Pending";
} else if (orderStatus == "Submitted") {
return "Submitted";
} else if (orderStatus == "Partially Shipped") {
return "Partially Shipped";
} else if (orderStatus == "Cancelled") {
return "Partially Shipped";
}Update Dynamics 365 Business Central Sales Invoice Tracking Number TO iPaaS.com (Child)
iPaaS.com data type: Transaction Tracking Number
This collection is a child of the Sales Invoice parent. It captures the invoice's package tracking number, shipping method, and shipment reference detail.
Mapping Filter
bool IsExist = await IsShippingMethodExistsInIPaaS(LocationCode);
if(!IsExist)
throw new exception($"Shipping Method ({LocationCode}) needs to be created manually in iPaaS first");
return true;Filter Description. Before any tracking record is captured, this filter checks whether a shipping method matching the Business Central LocationCode already exists in iPaaS.com. If it exists, the row passes and the tracking record is captured. If it does not exist, the transfer stops with the error "Shipping Method () needs to be created manually in iPaaS first", where <LocationCode> is the Business Central location code. Subscribers or their MiSP must create the matching shipping method in iPaaS.com first, then re-transfer the invoice.
Mapping Type | Source Field (Microsoft Dynamics 365 Business Central) | Destination Field (iPaaS.com) | Description |
Field |
| ShippingMethod | Required. The shipping method, taken from the Business Central location code. The named shipping method must already exist in iPaaS.com or the transfer stops with an error. |
Field |
| ShippingMethodDescription | Recommended. The shipping method description. Left unset when the source record has no description. |
Dynamic Formula | (tracking-number fallback — see formula below) | TrackingNumber | Recommended. The package tracking number, using the line-level package tracking number when present and otherwise falling back to the shipment's package tracking number. Left unset when neither carries a tracking number. |
Field |
| Shipment Line No (Custom Field) | Optional. The Business Central shipment line number, stored on the iPaaS.com Shipment Line No custom field. The custom field must exist on the subscription; left unset when the source value is absent. See the note below on tracking custom-field support. |
Field |
| Shipment No (Custom Field) | Optional. The Business Central shipment document number, stored on the iPaaS.com Shipment No custom field. The custom field must exist on the subscription; left unset when the source value is absent. See the note below on tracking custom-field support. |
The TrackingNumber formula:
if(!string.IsNullOrWhiteSpace(PackageTrackingNo)) return PackageTrackingNo; return SalesShipment.PackageTrackingNo;
Note on tracking custom fields. At the time this documentation was written, the integration reports custom fields as unsupported for the tracking-number collection type and direction, yet this collection maps the two custom fields above. Subscribers or their MiSP should confirm whether the tracking custom fields apply to their subscription during implementation.
Update Dynamics 365 Business Central Sales Invoice Payment TO iPaaS.com (Child)
iPaaS.com data type: Transaction Payment
This collection is a child of the Sales Invoice parent. It captures the invoice's payment terms as a transaction payment.
Mapping Filter
SourceTypeName == "ParentOnly" && !string.IsNullOrEmpty(Parent.PaymentTermsCode)
Filter Description. A payment record is captured only when the source type is ParentOnly and the parent invoice has a non-empty PaymentTermsCode. An invoice with no payment terms code does not produce a payment record, and the collection does not run for non-parent source types.
Mapping Type | Source Field (Microsoft Dynamics 365 Business Central) | Destination Field (iPaaS.com) | Description |
Dynamic Formula |
| Method | Required. The payment method, taken from the parent invoice's payment terms code. The payment record is captured only when the parent invoice has a payment terms code. Confirm the payment terms code matches what downstream systems expect for the payment method. |
Update Dynamics 365 Business Central Partially Shipped Sales Invoice Line Item TO iPaaS.com (Child)
iPaaS.com data type: Transaction Line
This collection is a child of the Sales Invoice parent. It captures only the partially shipped invoice lines that the standard line-item collection excludes, and supports custom fields. It exists by design to handle the case where a line item is present on the iPaaS.com transaction but is not in the Business Central sales-invoice payload for the transfer: rather than dropping that line, this collection captures it with its shipped quantity set to zero so partially invoiced and unshipped lines are represented correctly. It works with the Update Non-Existing Invoice Lines preset to add those missing lines to an existing iPaaS.com transaction.
Mapping Filter
!string.IsNullOrWhiteSpace(Type) && Type == "PartiallyShippedInvoiceLine" ? true : false;
Filter Description. A Business Central invoice line passes this filter only when its Type value is non-empty and equals PartiallyShippedInvoiceLine. All other lines are rejected here and captured by the standard line-item collection instead. This is the inverse of the standard line-item filter, so the two collections divide the invoice's lines between them without overlap.
Mapping Type | Source Field (Microsoft Dynamics 365 Business Central) | Destination Field (iPaaS.com) | Description |
Static |
| Type | Required (designed constant). Sets the transaction line type to a fixed |
Field |
| SequenceNumber | Recommended. The line number, defining the order of lines on the transaction. Confirm Business Central line numbering reflects the intended sequence. |
Dynamic Formula | (line status — same formula as the standard line-item collection) | Status | Recommended. Derives the line status from the parent invoice's status. Shipped, Pending, Submitted, and Partially Shipped pass through unchanged; Completed is recorded as Completed; Cancelled is recorded as Partially Shipped. Left unset when the parent has no status. |
Field |
| Sku | Recommended. The product/item code (SKU). Left unset when the line has no item code. |
Field |
| Description | Recommended. The line description. Left unset when the line has no description. |
Field |
| Qty | Recommended. The line quantity. Left unset when the line has no quantity. |
Static |
| QtyShipped | By design (designed constant). The shipped quantity is set to a fixed |
Field |
| UnitPrice | Recommended. The line unit price. Left unset when the line has no unit price. |
Field |
| DiscountAmount | Recommended. The line-level discount amount. Left unset when the line has no discount amount. |
Field |
| DiscountPercent | Recommended. The line-level discount percentage. Left unset when the line has no discount percentage. |
The line Status formula is identical to the standard line-item collection's formula shown above.
Error Handling
For the complete catalog of error messages this integration can produce, see the Error Messages article. The errors most relevant to the sales invoice transfer are:
"Shipping Method () needs to be created manually in iPaaS first": The tracking number collection's filter could not find a shipping method in iPaaS.com matching the Business Central location code on the invoice, and the transfer stops. Resolution: subscribers or their MiSP should create a shipping method in iPaaS.com whose name matches the location code, then re-transfer the invoice. The error message includes the specific location code that needs to be created.
Missing or duplicate invoice number: The invoice number is saved as the external ID and is the key that links each transfer to its iPaaS.com transaction. An invoice with no number cannot be linked, and a non-unique invoice number can cause a transfer to update an unintended transaction. Resolution: ensure each Business Central invoice carries a unique invoice number before transferring.
Errors and transfer status for every invoice transfer are recorded in the iPaaS.com Dashboard under Integration Monitoring and the Error Logs.
Validation Rules
Invoice qualification: only posted records flagged as invoices are processed; other record types are skipped by the parent filter.
Line routing: each invoice line is captured by exactly one of the two line-item collections, partitioned by whether the line is flagged as a partially shipped invoice line.
Shipping method existence: the tracking number collection requires the shipping method named by the location code to already exist in iPaaS.com before any tracking record is captured.
Payment condition: a payment record is captured only when the source type is
ParentOnlyand the parent invoice has a payment terms code.
Testing and Validation
Test Scenarios
Valid invoice transfer. Post a complete Business Central sales invoice with header detail, addresses, line items, payment terms, and a tracking number, then transfer it (by polling or Manual Sync). Confirm the iPaaS.com transaction is created with the correct header, addresses, lines, payment, and tracking number.
Status normalization. Transfer invoices in different Business Central statuses (for example, Pending and Cancelled). Confirm the header status is normalized to the expected iPaaS.com value (Pending and Shipped, respectively) and that the line-level status follows the line rule.
Required field validation — shipping method. Transfer an invoice whose location code has no matching shipping method in iPaaS.com. Confirm the transfer stops with the shipping-method error and that creating the shipping method, then re-transferring, succeeds.
ID format. From the Manual Sync page, transfer a specific invoice using
Invoice|{{invoiceId}}and confirm the correct invoice is captured.Parent-child transfer. Transfer an invoice that has multiple lines, billing and shipping addresses, and tracking data. Confirm all child records are captured under the same iPaaS.com transaction in a single dispatch.
Partially shipped lines. Transfer an invoice that contains partially shipped lines with the Update Non-Existing Invoice Lines preset enabled. Confirm those lines are captured by the partially shipped line-item collection with shipped quantity set to zero, and that standard lines are captured by the standard line-item collection.
Repeat transfer / external ID. Transfer the same invoice twice. Confirm the second transfer updates the existing iPaaS.com transaction (matched by invoice number) rather than creating a duplicate, and that the original creation date is preserved.
Validation Checklist
The Business Central invoice carries a unique, non-empty invoice number.
All required Web Services are enabled in Business Central.
Shipping methods exist in iPaaS.com for every location code referenced by invoice tracking data.
Custom fields exist on the iPaaS.com subscription for every custom-field mapping in use, matching the Business Central field names and types.
The Transaction Poll Search Days preset is configured for the desired polling lookback window.
The Update Non-Existing Invoice Lines preset is configured if partially shipped line support is needed.
Payment terms codes are populated on invoices if payment mapping is in use.
Additional Notes
The header-level and line-level status rules intentionally differ in how they treat the Completed and Cancelled statuses (header: Complete / Shipped; line: Completed / Partially Shipped). Review both before relying on invoice status downstream.
Address name parsing captures only the first two words of the address name, so names with middle names or suffixes may not separate as intended.
Outbound delete is not supported for the invoice transaction or any child record; deletions in Business Central do not propagate to iPaaS.com.
Related Documents
Connections and Settings (pending publication)
Known Limitations (pending publication)
