Skip to main content

Shopware to iPaaS.com Order Mapping Documentation

How Shopware orders — line items, payments, taxes, and addresses — are mapped to iPaaS.com transactions.

Summary

This documentation describes how standard Shopware orders (transactions) are transferred to iPaaS.com. When triggered by a Shopware order webhook event or by Manual Sync, the integration retrieves the full order and dispatches it to iPaaS.com together with its addresses, line items, payments, and taxes through the supported child collections. The parent collection transfers the order's core commercial values, links the order to the correct iPaaS.com customer (or, for business orders, the correct company), and uses dynamic formulas to translate the Shopware order state into an iPaaS.com status, sum promotions and line quantities, compute totals and taxes, and resolve the Shopware currency to a readable name.

ID Format

Manual Sync ID Format

Orders can be transferred from the iPaaS.com Manual Sync page by entering the Shopware order ID. The order ID is the internal Shopware identifier for the order — for example, 01915630e5db7214ab1ab2dc71608955. Entering this value transfers the specific order together with its addresses, line items, payments, and taxes.

External ID Format

After an order is transferred, iPaaS.com retains a cross-platform link between the Shopware order and the resulting iPaaS.com Transaction record. The order's Shopware order number is also stored on the iPaaS.com Transaction number field as the primary human-readable identifier used to find and reconcile the order in iPaaS.com.

Deleted Record Support

Order deletions are not propagated by this family. There is no outbound delete collection for orders, so removing an order in Shopware does not delete the corresponding Transaction in iPaaS.com. Order-state events such as cancellation are reflected by updating the iPaaS.com order status (for example, to Cancelled) rather than by removing the record.

Custom Field Support

This family stores two Shopware-specific order values on iPaaS.com Transaction custom fields: Shopware Currency Name (the order's currency, resolved from the Shopware currency ID to a readable name) and Shopware Sales Channel (the Shopware sales channel ID the order was placed through). The currency name is resolved at transfer time by the GetCurrencyNameById conversion function; the sales channel is carried through directly from the Shopware order. The exact formula for each custom field is shown in the Mappings section below.

Mapping Collection Status

Status: Enabled (parent collection and all four child collections).

Trigger Events

  • checkout.order.placed: a new order is placed.

  • state_enter.order.state.open: an order enters the Open state.

  • state_enter.order.state.in_progress: an order enters the In Progress state.

  • state_enter.order.state.completed: an order is completed.

  • state_enter.order.state.cancelled: an order is cancelled.

  • checkout.order.payment_method.changed: the payment method on an order changes.

  • order_approval.pending_order.requested: a pending order is requested for approval (B2B approval workflow).

The child collections (Line Item, Payment, Excise Tax, Address) have no independent trigger; they run automatically as part of the parent order transfer, whether that transfer was started by a webhook or by Manual Sync.

Duplicate or Conflicting Mappings

This documentation covers orders transferred from Shopware to iPaaS.com. The following mapping collection operates on order records in the opposite direction:

  • Update Shopware Order FROM iPaaS.com: Updates orders in Shopware from iPaaS.com data.

Before enabling this inbound collection alongside the outbound "From iPaaS.com" order collection, subscribers or their MiSP should review and customize their mapping collection filters to prevent circular updates, and define clearly which system is the source of truth for order data. If both directions are active with default mappings, changes may propagate back and forth between systems. The child collections (Line Item, Payment, Excise Tax) may also have opposite-direction inbound counterparts; the same filter review applies to each.

Unmapped Field Overwrite Risk

The iPaaS.com API performs a full record replace when updating records, and every collection in this family handles both Add and Update. On each Update transfer, any standard field that is not mapped is overwritten with an empty value unless a mapping is added to preserve it. To preserve such values, split the combined Add/Update collection into separate Add and Update collections and, in the Update collection, add a Dynamic Formula mapping that uses the DestinationValue function to carry the existing iPaaS.com value forward — for example, DestinationValue.Weight mapped to the iPaaS.com Weight field. The fields at risk per collection are:

  • Transaction (parent): After excluding the server-managed fields Id, ParentId, and TransactionUpdatedDateTime (all managed by iPaaS.com itself), there are no unmapped subscriber-writeable scalar fields, so no overwrite-preservation action is needed for the parent collection.

  • Transaction Line: DiscountPercent, EstimatedTaxAmount, QtyShipped, Weight.

  • Transaction Payment: MethodInfo.

  • Transaction Tax (Excise Tax): OriginalAmount, TaxPercent.

  • Transaction Address: ShipDate, ShippingAmount, ShippingMethodDescription.

Supported Child Collections

  • Add/Update Shopware Order Address TO iPaaS.com (Transaction Address): Transfers the order's billing and shipping addresses as part of the order transfer.

  • Add/Update Shopware Order Line Item TO iPaaS.com (Transaction Line): Transfers the order's product line items.

  • Add/Update Shopware Order Payment TO iPaaS.com (Transaction Payment): Transfers the order's payment record.

  • Add/Update Shopware Order Excise Tax TO iPaaS.com (Transaction Tax): Derives a single excise tax row from the order's line item data.

Shopware Caveats

  • Webhook workflow actions require Enterprise Shopware: The automatic-transfer workflows described under Setup Requirements can only be created on Enterprise editions of Shopware. Subscribers on other editions should rely on Manual Sync.

  • Order state names are language-dependent: Shopware returns the order state name in the store's configured language, so the Status translation matches both English and German spellings. Stores configured in another language may need the status mapping extended so their state names map to the correct iPaaS.com status; otherwise those orders default to Pending.

  • Per-line discount requires a customized API: The line item DiscountAmount value is not native to Shopware. It requires the Shopware Admin API to be customized to expose a per-line discount on the line item price object. Without that extension, the discount amount is empty.

  • Payment method and status resolution: The payment Method and Description are resolved by looking up the Shopware payment method by its ID; if the ID is empty or the method cannot be found, both fields are left empty. The payment Status depends on the Shopware transaction state ID resolving to a state name; if it cannot be resolved, the status is empty.

  • Address country, region, and shipping method resolution: The address Country and Region names are resolved from Shopware's country and country-state IDs and depend on those IDs existing in Shopware. The ShippingMethod name and the IsPrimaryShipping flag are derived from the parent order's tracking information; if the parent order has no tracking record, the shipping method name is empty and the shipping flag is false for every address on the order.

  • Excise tax source data: The excise tax amount is summed from a per-line excise calculated taxes value on the order's line items; if that data is not present on a line, the per-line contribution is zero.

iPaaS.com Caveats

  • An order is linked to its customer or company in iPaaS.com by an existing cross-platform link. If the customer or company on the order has not yet been linked, the integration transfers that record first so the link can be established before the order is filed (see Additional Notes).

  • The child collections run only as part of a parent order transfer. They cannot be triggered independently from the Manual Sync page; transfer the parent order to move its line items, payment, addresses, and excise tax.

  • The line item Status mapping always sets the line status to Pending, regardless of the Shopware transaction state.

  • Subscribers or their MiSP should stagger large manual jobs and rely on the configured API throttle limits when transferring many orders at once.

Setup Requirements

Automatic transfer requires subscribers or their MiSP to subscribe to Shopware order events on the Inbound Data Flows (External Webhooks) page of the Shopware subscription in iPaaS.com. Webhooks do not activate automatically — the relevant events must be subscribed before automatic transfers occur. Subscribing creates a workflow in Shopware that sends a webhook to iPaaS.com after the corresponding event; clearing the Inbound Data Flow toggle removes that workflow. The supported order events are listed under Mapping Collection Status above.

On non-Enterprise editions of Shopware, where webhook workflow actions are unavailable, use Manual Sync instead by entering the Shopware order ID on the iPaaS.com Manual Sync page.

Integration Flow

  1. A subscribed Shopware order event fires (for example, checkout.order.placed or an order-state change), or a subscriber enters a Shopware order ID on the iPaaS.com Manual Sync page.

  2. iPaaS.com receives the webhook (or Manual Sync request) and retrieves the full order from Shopware.

  3. The order is evaluated against the parent collection filter. Standard orders pass; deposit orders (order numbers ending in "-D") and order returns are skipped and handled by their separate collections.

  4. The parent collection transforms the order's core values, resolves the iPaaS.com customer or company link, translates the order state into an iPaaS.com status, and computes the totals, taxes, discounts, and quantity.

  5. If the customer or company on the order is not yet linked in iPaaS.com, the integration transfers that record first so the order can be attached to the correct customer or company.

  6. The order's addresses, line items, payment, and excise tax are transferred through the child collections and attached to the iPaaS.com order created or updated by the parent transfer.

  7. iPaaS.com retains the cross-platform link between the Shopware order and the iPaaS.com Transaction, and stores the Shopware order number as the Transaction number for reconciliation. Subsequent order-state events update the existing Transaction's status.

Mappings

Add/Update Shopware Order TO iPaaS.com

Mapping Filter

OrderNumber != null && !OrderNumber.EndsWith("-D") && Type != "order_return"

Filter Description. This filter processes standard orders only. An order passes when its OrderNumber is not empty, the order number does not end in -D, and the order Type is not order_return. Deposit orders (whose order numbers end in -D) are skipped and transferred by the separate Add Shopware Order Deposit TO iPaaS.com collection, and order returns are skipped and transferred by the separate Add/Update Shopware Order Return TO iPaaS.com collection. Any order with an empty order number is also skipped.

Description: Transfers the order's core commercial values and links it to the correct iPaaS.com customer, company, and connected system.

Mapping Type

Source Field (Shopware)

Destination Field (iPaaS.com)

Description

Field

OrderNumber

TransactionNumber

recommended — the Shopware order number; the primary human-readable identifier used to find and reconcile the order and the value entered on the Manual Sync page.

Field

PositionPrice

Subtotal

recommended — the order subtotal (sum of line-item prices before shipping and tax).

Field

ShippingTotal

ShippingAmount

recommended — the order shipping total, so the order total reconciles correctly.

Field

Email

EmailAddress

recommended — the ordering customer's email address, for identifying the customer in iPaaS.com.

Dynamic Formula

SpaceportSystemId

SystemId

recommended — associates the order with the correct connected Shopware system; SpaceportSystemId resolves automatically at transfer time. Leave this mapping in place.

Dynamic Formula

return await GetSpaceportIdAsync(CustomerId, "Customer", SpaceportSystemId);

CustomerId

recommended — resolves the iPaaS.com customer identifier for the linked customer using GetSpaceportIdAsync; when no link exists, the customer is transferred first.

Dynamic Formula

return await GetSpaceportIdAsync(CustomerId, "Company", SpaceportSystemId);

CompanyId

recommended — resolves the iPaaS.com company identifier for a business (B2B) customer using GetSpaceportIdAsync; empty for individual customers.

Dynamic Formula

Order state to status (see formula below)

Status

recommended — translates the Shopware order state into an iPaaS.com status, matching both English and German state names.

Dynamic Formula

Normalize order type (see formula below)

Type

recommended — normalizes the Shopware order type; the standard order becomes Order and any other value passes through.

Dynamic Formula

AmountTotal + Price_CalculatedTaxes;

Total

recommended — the order grand total (amount total plus calculated taxes).

Dynamic Formula

Price_CalculatedTaxes

TaxAmount

recommended — the order's calculated product taxes; shipping taxes can optionally be added (see formula below).

Dynamic Formula

return await GetSumOfPromotions(Promotions);

DiscountAmount

recommended — the total of all promotions on the order, summed by GetSumOfPromotions; 0 when there are no promotions.

Dynamic Formula

GetQtyOfLines(Transaction_Line)

TotalQty

recommended — the total item quantity across all line items, summed by GetQtyOfLines.

Dynamic Formula

DateTimeOffsetFromLocalDateTime(OrderDateTime)

TransactionCreatedDateTime

recommended — the order date, converted to a date-time-with-offset value by DateTimeOffsetFromLocalDateTime.

Dynamic Formula

return await GetCurrencyNameById(CurrencyId);

Shopware Currency Name (custom field)

optional — resolves the order's Shopware currency ID to a readable currency name via GetCurrencyNameById; empty when no match is found.

Field

SalesChannelId

Shopware Sales Channel (custom field)

optional — the Shopware sales channel ID the order was placed through, useful for sales-channel-specific downstream handling.

// Status
var status = await TransactionStateNameFromId(StateId);
switch(status)
{
  case "Abgebrochen":
  case "Cancelled":
  case "Order clearance denied":
    return "Cancelled";
    break;
  case "Abgeschlossen":
  case "Done":
    return"Complete";
    break;
  default:
    return "Pending";
    break;
}
// Type
if(Type=="order"){
    return "Order";
}
return Type;
// TaxAmount — remove the comment marker to also include shipping taxes
Price_CalculatedTaxes // + ShippingCosts_CalculatedTaxes

Add/Update Shopware Order Line Item TO iPaaS.com

Mapping Filter

Type!=null && Type!="promotion_line_item"

Filter Description. This filter ensures only product line items are transferred. A line passes when its Type is not empty and is not promotion_line_item. Any line with an empty type, and any promotion line item, is skipped, so promotion lines on the Shopware order are not created as Transaction Lines on iPaaS.com.

Description: Transfers each qualifying product line item on the order as an iPaaS.com Transaction Line.

Mapping Type

Source Field (Shopware)

Destination Field (iPaaS.com)

Description

Field

UnitPrice

UnitPrice

optional — the line item unit price.

Field

Quantity

Qty

optional — the line item quantity.

Field

UnitPrice

OriginalUnitPrice

optional — the pre-discount unit price, preserved for reference.

Field

Price_DiscountAmount

DiscountAmount

optional — the per-line discount amount; requires a customized Shopware API exposing a line_item_discount extension, otherwise empty.

Static

"Product"

Type

optional — sets the line type to the constant Product, identifying the row as a product line.

Dynamic Formula

Line status (see formula below)

Status

optional — always returns Pending for every transferred line, regardless of the Shopware transaction state.

Dynamic Formula

SKU from product number (see formula below)

Sku

optional — uses the product number as the SKU; falls back to the line item label when no product number is present.

Dynamic Formula

Extended price (see formula below)

ExtendedPrice

optional — returns the line item total price; a commented-out proportional discount-distribution block can be enabled if needed.

Dynamic Formula

Sum of line tax rates (see formula below)

TaxPercent

optional — sums all tax rates on the line item; 0 when the line has no tax rules.

Field

Label

Description

optional — the line item label (its display name).

// Status
var status = await TransactionStateNameFromId(StateId);
if(!string.IsNullOrEmpty(status))
  return "Pending";
return "Pending";
// Sku
if(Payload_ProductNumber!=null && Payload_ProductNumber!="")
{
    return Payload_ProductNumber;
}
return Label;
// ExtendedPrice
//This will distribute the total header discount amount among line items based on line extended price and ticket subtotal
//var discount = await GetSumOfPromotions(Parent.Promotions);
//if (discount != null && discount > 0){
   // var proportion = TotalPrice / (discount + Parent.PositionPrice);
   // var lineAmount = proportion * discount;
  //  return TotalPrice-(Math.Round(lineAmount,2));
//}
return TotalPrice;
// TaxPercent
double result = 0;
if(Price_TaxRules != null && Price_TaxRules.Count > 0){
  foreach (var tax in Price_TaxRules){
    if (tax.TaxRate != null) {
      result = result + tax.TaxRate;
    }
  }
}
if (result == 0) {
  //throw new Exception("Taxes are 0 for this order");
}
return result;

Add/Update Shopware Order Payment TO iPaaS.com

Description: Transfers the order's payment as an iPaaS.com Transaction Payment.

Mapping Type

Source Field (Shopware)

Destination Field (iPaaS.com)

Description

Dynamic Formula

return await GetPaymentMethodNameById(PaymentMethodId);

Method

optional — the payment method name, resolved from the Shopware payment method ID via GetPaymentMethodNameById; empty when the ID is empty or the method is not found.

Dynamic Formula

return await GetPaymentMethodNameById(PaymentMethodId);

Description

optional — set to the same resolved payment method name as Method.

Dynamic Formula

return await TransactionStateNameFromId(StateId);

Status

optional — the payment status, resolved from the Shopware transaction state via TransactionStateNameFromId; empty when the state cannot be resolved.

Dynamic Formula

Amount_TotalPrice + Amount_CalculatedTaxes;

Amount

optional — the gross payment amount (order total plus calculated taxes).

Add/Update Shopware Order Excise Tax TO iPaaS.com

Mapping Filter

SumFieldFromCollection(Parent.Transaction_Line, "Payload_ExciseTaxAmount_Total") <> 0

Filter Description. This filter gates whether the excise tax row is created at all. The SumFieldFromCollection function sums the Payload_ExciseTaxAmount_Total value across all of the parent order's line items, and the row is created only when that total is not zero. Orders with no excise tax therefore produce no excise tax row on iPaaS.com.

Description: Derives a single excise tax row on the iPaaS.com order from the order's line item data.

Mapping Type

Source Field (Shopware)

Destination Field (iPaaS.com)

Description

Static

"Excise Tax"

Authority

optional — labels the tax authority with the constant value Excise Tax.

Dynamic Formula

SumFieldFromCollection(Parent.Transaction_Line, "Payload_ExciseTaxAmount_Total")

Amount

optional — the total excise tax for the order, summed across all line items via SumFieldFromCollection.

Add/Update Shopware Order Address TO iPaaS.com

Description: Transfers each of the order's addresses as an iPaaS.com Transaction Address and flags billing and shipping.

Mapping Type

Source Field (Shopware)

Destination Field (iPaaS.com)

Description

Field

FirstName

FirstName

optional — the recipient first name on the order address.

Field

LastName

LastName

optional — the recipient last name on the order address.

Field

Company

Company

optional — the company name on the address, typically populated for business addresses.

Field

Street

Address1

recommended — the primary street line.

Field

AdditionalAddressLine1

Address2

optional — the second street line.

Field

AdditionalAddressLine2

Address3

optional — the third street line.

Field

City

City

recommended — the address city.

Field

Zipcode

PostalCode

recommended — the address postal/ZIP code.

Dynamic Formula

return await CountryNameFromId(CountryId);

Country

recommended — the country name, resolved from the Shopware country ID via CountryNameFromId; empty when the ID cannot be resolved.

Dynamic Formula

return await StateNameFromId(CountryId,CountryStateId);

Region

optional — the state/region name, resolved from the country and country-state IDs via StateNameFromId; empty when either ID cannot be resolved.

Dynamic Formula

Billing flag (see formula below)

IsPrimaryBilling

optional — true when this address matches the order's billing address ID, false otherwise.

Dynamic Formula

Shipping flag (see formula below)

IsPrimaryShipping

optional — true when this address matches the shipping address on the order's first tracking record; false when the order has no tracking.

Dynamic Formula

Shipping method (see formula below)

ShippingMethod

optional — the shipping method name for the order's shipping address, resolved via GetShippingMethodNameById; empty for non-shipping addresses or when there is no tracking.

// IsPrimaryBilling
if (Id.StartsWith(Parent.BillingAddressId)){return true;}
return false;
// IsPrimaryShipping
if (Parent.Transaction_Tracking != null && Parent.Transaction_Tracking.Count > 0){
  var shippingAddressId = Parent.Transaction_Tracking[0].ShippingOrderAddressId;
  if (Id.StartsWith(shippingAddressId)){return true;}
}
return false;
// ShippingMethod
if (Parent.Transaction_Tracking != null && Parent.Transaction_Tracking.Count > 0){
  var shippingAddressId = Parent.Transaction_Tracking[0].ShippingOrderAddressId;
  if (Id.StartsWith(shippingAddressId)){
    var methodId = Parent.Transaction_Tracking[0].ShippingMethodId;
    return await GetShippingMethodNameById(methodId);
  }
}
return null;

Error Handling

Errors surface in Dashboard / Integration Monitoring / Error Logs.

  • Dependent customer or company cannot be created: When an order is transferred and its customer (or, for a business order, its company) is not yet linked in iPaaS.com, the integration transfers that record first. If the dependent customer or company cannot be created, the order transfer fails. Resolution: confirm the customer or company data is valid and transferable, or disable the customer and company transfer mapping collections to prevent dependent records from being created during order transfers.

  • Shopware API temporarily unavailable: If the Shopware API is unavailable when a transfer is triggered, the transfer fails. Resolution: retry the record by triggering a new webhook event or by using Manual Sync.

  • Order state in an unsupported language: Orders whose Shopware state name is not in English or German default to Pending rather than failing. Resolution: subscribers or their MiSP should extend the Status mapping so the store-language state names map to the correct iPaaS.com status.

Testing & Validation

Test Scenarios

  • Place a new standard order in Shopware (or subscribe to checkout.order.placed) and confirm a Transaction is created in iPaaS.com with the correct order number, totals, tax, discount, and quantity.

  • Move an order through its lifecycle states (open, in progress, completed, cancelled) and confirm the iPaaS.com Transaction status updates to Complete or Cancelled as expected, and to Pending for intermediate states.

  • Transfer an order via Manual Sync by entering its Shopware order ID and confirm the order and all child records (addresses, line items, payment, excise tax) are created together.

  • Place an order with promotions and confirm the discount amount is summed correctly and promotion lines are not created as Transaction Lines.

  • Place an order with multiple addresses and confirm the billing and shipping flags, country, region, and shipping method are resolved correctly.

  • Place an order that carries excise tax on its lines and confirm a single excise tax row is created; place an order with no excise tax and confirm no excise tax row appears.

  • Transfer a business (B2B) order and confirm it is linked to the correct iPaaS.com company.

Validation Checklist

  • The Transaction number matches the Shopware order number and the order is reconcilable in iPaaS.com.

  • The order is linked to the correct iPaaS.com customer or company; the dependent record was transferred first when no link existed.

  • The order total equals the amount total plus calculated taxes, and the subtotal, shipping amount, tax amount, discount amount, and total quantity are all populated.

  • The order status reflects the current Shopware order state.

  • Line items are present with the expected SKU, quantity, unit price, extended price, and tax percent, and the line status is Pending.

  • The payment record carries the resolved method, description, status, and gross amount.

  • The excise tax row is present only when the order's summed excise tax is non-zero.

  • Addresses carry the correct street lines, city, postal code, country, region, and billing/shipping flags.

  • Deposit orders (order numbers ending in "-D") and order returns are not transferred by this collection.

Additional Notes

  • When an order is transferred from Shopware to iPaaS.com, the integration automatically transfers the order's customer first if that customer is not already linked in iPaaS.com — even when customer webhooks are disabled. For a business (B2B) customer, the related company is transferred instead. To prevent customer or company records from being created or updated during order transfers, disable the customer and company transfer mapping collections.

  • Deposit orders (order numbers ending in "-D") and order returns are out of scope for this collection; they are transferred by the separate Add Shopware Order Deposit TO iPaaS.com and Add/Update Shopware Order Return TO iPaaS.com collections respectively.

  • The line item extended price is passed through as the line total. The proportional discount-distribution logic is present but inactive; enabling it requires a mapping change by the subscriber or their MiSP.

  • The payment method and the payment description are populated from the same resolved payment method name, so both fields carry the same value, and the payment amount is computed as the order total plus its calculated taxes rather than read from a separate payment transaction amount.

  • These limitations are inherent to the current design of the integration and the capabilities of the Shopware API, and they apply to all subscribers at the time this documentation was written.

Did this answer your question?