Skip to main content

Zuper to iPaaS.com Deposit Ticket Mapping Documentation

How the Zuper to iPaaS.com Deposit Ticket mapping collections capture a Zuper deposit ticket and its lines, addresses, notes, payments, and tax into iPaaS.com, including field mappings, filters, triggers, and validation.

Summary

This article describes how the integration captures deposit tickets from Zuper into iPaaS.com as transactions. A deposit ticket is a Zuper invoice whose number ends in -D, representing a deposit taken against an invoice. When a deposit ticket is created in Zuper, the integration reads the full record and creates a matching transaction in iPaaS.com, along with its line items, billing and service addresses, notes, payments, and tax through child collections. Each deposit ticket is also linked to the base invoice it belongs to, which keeps deposit activity visible alongside the underlying invoices in iPaaS.com.

ID Format

Manual Sync ID Format

The Manual Sync identifier is the Zuper deposit ticket identifier, which is the base invoice identifier with -D appended. Enter this value on the iPaaS.com Manual Sync page to capture a specific deposit ticket.

Example: 32bc938b-d942-4eed-ad65-15f633c5b270-D

External ID Format

After a successful transfer, iPaaS.com records the Zuper deposit ticket identifier as the external ID on a dedicated external-ID record, which routes later updates to the same iPaaS.com transaction. The TransactionNumber mapping also carries the deposit ticket number onto the transaction, which provides visibility and serves as a fallback match when no external-ID record yet exists.

Deleted Record Support

This collection captures deposit ticket creates. It does not remove transactions from iPaaS.com. Removal of transactions is out of scope for this collection.

Mapping Collection Status

Enabled. Mapping filters apply to several collections in this family, so that only deposit tickets are captured and each child entry is produced from the correct source record. The applicable filters are documented per collection below.

Trigger Events: The TO iPaaS.com direction supports Zuper webhooks enabled under Inbound Data Flows — the Zuper invoice and job events — plus Manual Sync. No automatic transfers occur until those webhook events are enabled.

Duplicate or Conflicting Mappings

Several collections capture Zuper billing records as iPaaS.com transactions and are separated by their filters. Review them together and confirm each is filtered for the records it should own:

  • Add Zuper Deposit Ticket TO iPaaS.com captures deposit tickets (invoice number ending in -D).

  • Add Zuper Invoice TO iPaaS.com captures standard invoices (invoice number not ending in -D).

  • Update Zuper Invoice TO iPaaS.com captures updates to standard invoices.

  • Add Zuper Job TO iPaaS.com captures Zuper jobs as transactions.

Collision Handling

This collection does not use collision handling. Records are matched by the saved external ID and, before an external-ID link exists, by the transaction number — not by a configurable collision rule.

Supported Child Collections

Each child below is captured as part of the deposit ticket transfer and is linked to the transaction it belongs to. None of them run independently.

  • Add Zuper Deposit Ticket Line TO iPaaS.com captures the line items.

  • Add Zuper Deposit Ticket Billing Address TO iPaaS.com captures the billing address.

  • Add Zuper Deposit Ticket Service Address TO iPaaS.com captures the service address.

  • Add Zuper Deposit Ticket Note TO iPaaS.com captures notes.

  • Add Zuper Deposit Ticket Payment TO iPaaS.com captures recorded payments.

  • Add Zuper Deposit Ticket Payment Due TO iPaaS.com records the outstanding balance as a payment entry.

  • Add Zuper Deposit Ticket Tax TO iPaaS.com captures the tax.

Zuper Caveats

Deposit tickets are identified by the -D suffix: only records whose invoice number ends in -D are captured here. Records whose number does not end in -D are standard invoices and are handled by the Invoice collection.

Parent invoice link: each deposit ticket links to its base invoice through the ParentId mapping, which resolves the base invoice number to the parent transaction already captured in iPaaS.com. That base invoice should already have been captured so the link can be resolved.

Totals are calculated from line items: subtotal, discount, tax, and quantity totals are computed from the record's line items and tax entries at capture time.

iPaaS.com Caveats

The captured transaction and its child records are created together. The child collections do not run independently of this deposit ticket transfer, and each child record is attached to the parent transaction captured by the deposit ticket collection.

Setup Requirements

Enable the Zuper invoice and job webhook events under Inbound Data Flows in the subscription configuration so that deposit activity in Zuper flows into iPaaS.com automatically.

Authentication uses a Zuper API key. For the steps to obtain the API key and configure the subscription, see the Zuper Installation Instructions article.

Integration Flow

A single transfer brings the deposit ticket into iPaaS.com:

  1. The integration retrieves the full deposit ticket record from Zuper by its identifier.

  2. The record is captured as a transaction and its parent invoice is linked.

  3. The line items, billing and service addresses, notes, payments, and tax are captured through the child collections and attached to the transaction.

Mappings

Add Zuper Deposit Ticket TO iPaaS.com

This collection maps the Zuper deposit ticket record onto the iPaaS.com transaction.

Mapping Filter

if (InvoiceNo != null && InvoiceStatus != null){
  if (InvoiceNo.EndsWith("-D"))
    return true;
  else
    return false;
} else {return false;}

The filter captures a record only when both its invoice number and its invoice status are present. When they are present, the record is captured only if its invoice number ends in -D, which identifies it as a deposit ticket; a record whose number does not end in -D is a standard invoice and is skipped here. A record missing either its invoice number or its status is also skipped.

Mapping Type

Source Field (Zuper)

Destination Field (iPaaS.com)

Description

Dynamic Formula

SpaceportSystemId

SystemId

Records which connected system the transaction came from. This is a system-managed value and should be left as configured. Optional.

Field

InvoiceNo

TransactionNumber

Sets the transaction number from the Zuper deposit ticket number. It identifies the transaction and is used to match it on later transfers. Required.

Dynamic Formula

return await GetSpaceportIdAsync(Id.Substring(0, Id.Length - 2), "Transaction", SpaceportSystemId);

ParentId

Links the deposit ticket to the invoice it belongs to, by trimming the -D suffix from the identifier and resolving the base invoice's parent transaction already captured in iPaaS.com. The parent invoice should already have been captured so this link can be resolved. Recommended.

Static

"Order"

Type

Sets the transaction type to Order for deposit tickets. This is a fixed classification for this collection. Recommended.

Lookup Translation

Lookup Translation: Zuper Invoice Status To iPaaS

Status

Sets the transaction status by translating the Zuper deposit ticket status. Values not listed in the translation table are passed through unchanged. Recommended.

Dynamic Formula

Customer.Email

EmailAddress

Sets the contact email on the transaction from the Zuper customer's email. Recommended.

Dynamic Formula

Decimal myTotalDiscount = 0; foreach (var invoiceLine in LineItems) { var fixedQty = Convert.ToDecimal(invoiceLine.Quantity); if ( invoiceLine.DiscountType == "FIXED") { myTotalDiscount = myTotalDiscount + invoiceLine.Discount; } else if ( invoiceLine.DiscountType == "PERCENTAGE") { var result = (invoiceLine.UnitPrice * fixedQty ) * (invoiceLine.Discount / 100); myTotalDiscount = myTotalDiscount + result; } } return myTotalDiscount;

DiscountAmount

Sets the total discount on the transaction by adding up the discounts on the line items, handling fixed and percentage discounts. Optional.

Dynamic Formula

Decimal myTotalTax = 0; foreach (var invoiceTax in Tax) { myTotalTax = myTotalTax + invoiceTax.TaxAmount; } return myTotalTax;

TaxAmount

Sets the total tax on the transaction by adding up the tax entries. Optional.

Dynamic Formula

Decimal mySubtotal = 0; foreach (var invoiceLine in LineItems) { var fixedQty = Convert.ToDecimal(invoiceLine.Quantity); if ( invoiceLine.DiscountType == "FIXED") { var result = ( invoiceLine.UnitPrice * fixedQty ) - invoiceLine.Discount; mySubtotal = mySubtotal + result; } else if ( invoiceLine.DiscountType == "PERCENTAGE") { var result = ( invoiceLine.UnitPrice * fixedQty ) - (( invoiceLine.UnitPrice * fixedQty ) * (invoiceLine.Discount / 100)); mySubtotal = mySubtotal + result; } else { var result = invoiceLine.UnitPrice * fixedQty; mySubtotal = mySubtotal + result; } } return mySubtotal;

Subtotal

Sets the transaction subtotal by totaling the line items before tax, accounting for fixed and percentage discounts. Recommended.

Field

Total

Total

Sets the transaction total from the Zuper deposit ticket total. Recommended.

Dynamic Formula

Decimal myTotalQty = 0; foreach (var invoiceLine in LineItems) { var fixedQty = Convert.ToDecimal(invoiceLine.Quantity); myTotalQty = myTotalQty + fixedQty; } return myTotalQty;

TotalQty

Sets the total quantity on the transaction by adding up the line item quantities. Optional.

Dynamic Formula

CurrentDateTimeOffset()

TransactionCreatedDateTime

Records when the transaction was captured into iPaaS.com. This is a system-managed value. Optional.

Lookup Translation Tables

Source Value (Zuper)

Destination Value (iPaaS.com)

DRAFT

Pending

PAID

Complete

AWAIT_PAYMENT

Pending

Add Zuper Deposit Ticket Line TO iPaaS.com

This child collection maps each Zuper deposit ticket line item onto an iPaaS.com transaction line as part of the parent deposit ticket transfer.

Mapping Type

Source Field (Zuper)

Destination Field (iPaaS.com)

Description

Field

LocationName

Zuper Fulfillment Location

Captures the fulfillment location name for the line into an iPaaS.com custom field. Optional.

Static

"Product"

Type

Marks the line as a Product line. This is a fixed classification for lines captured through this collection. Recommended.

Static

"Pending"

Status

Sets the line status to Pending by default. Subscribers who track a different line status can change this value. Recommended.

Field

ProductId

Sku

Captures the product identifier for the line item so the line can be matched to a product. Recommended.

Field

Name

Description

Captures the line item description (the product name) from Zuper. Recommended.

Field

Quantity

Qty

Captures the quantity for the line item. Recommended.

Dynamic Formula

var fixedQty = Convert.ToDecimal(Quantity); if ( DiscountType == "FIXED") { var result = (( UnitPrice * fixedQty ) - Discount ) / fixedQty; return Convert.ToDecimal(result); } else if ( DiscountType == "PERCENTAGE") { var result = (( UnitPrice * fixedQty ) - (( UnitPrice * fixedQty ) * (Discount / 100))) / fixedQty; return Convert.ToDecimal(result); } else { var result = UnitPrice; return Convert.ToDecimal(result); }

UnitPrice

Sets the per-unit price for the line, adjusting for a fixed or percentage discount applied to the line in Zuper. Recommended.

Dynamic Formula

var fixedQty = Convert.ToDecimal(Quantity); if ( DiscountType == "FIXED") { var result = ( UnitPrice * fixedQty ) - Discount; return Convert.ToDecimal(result); } else if ( DiscountType == "PERCENTAGE") { var result = ( UnitPrice * fixedQty ) - (( UnitPrice * fixedQty ) * (Discount / 100)); return Convert.ToDecimal(result); } else { var result = UnitPrice * fixedQty; return Convert.ToDecimal(result); }

ExtendedPrice

Sets the extended (line total) price, accounting for the line quantity and any discount. Recommended.

Field

UnitPrice

OriginalUnitPrice

Captures the original unit price before any discount. Optional.

Dynamic Formula

var fixedQty = Convert.ToDecimal(Quantity); if ( DiscountType == "FIXED") { return Discount; } else if ( DiscountType == "PERCENTAGE") { var result = (UnitPrice * fixedQty ) * (Discount / 100); return result; } else { return 0; }

DiscountAmount

Sets the discount amount for the line, based on whether the Zuper discount is a fixed amount or a percentage. Optional.

Dynamic Formula

var fixedQty = Convert.ToDecimal(Quantity); if ( DiscountType == "FIXED") { return Total - (( UnitPrice * fixedQty ) - Discount); } else if ( DiscountType == "PERCENTAGE") { return Total - (( UnitPrice * fixedQty ) - (( UnitPrice * fixedQty ) * (Discount / 100))); } else { return Total - (UnitPrice * fixedQty); }

EstimatedTaxAmount

Sets the estimated tax for the line, derived from the line total after discount. Optional.

Add Zuper Deposit Ticket Billing Address TO iPaaS.com

This child collection maps the deposit ticket customer's billing address onto the iPaaS.com transaction's billing address as part of the parent deposit ticket transfer.

Mapping Filter

SourceTypeName == "ParentOnly"

The filter captures the billing address only from the parent deposit ticket record, so a single billing address is captured per transaction rather than once per line item.

Mapping Type

Source Field (Zuper)

Destination Field (iPaaS.com)

Description

Static

"true"

IsPrimaryBilling

Marks this address as the transaction's primary billing address. This is a fixed value for this collection. Recommended.

Dynamic Formula

Parent.CustomerBillingAddress.Street

Address1

Captures the billing street from the deposit ticket's customer billing address. Recommended.

Dynamic Formula

Parent.CustomerBillingAddress.City

City

Captures the billing city from the deposit ticket's customer billing address. Recommended.

Dynamic Formula

Parent.CustomerBillingAddress.State

Region

Captures the billing state or region from the deposit ticket's customer billing address. Recommended.

Dynamic Formula

Parent.CustomerBillingAddress.Country

Country

Captures the billing country from the deposit ticket's customer billing address. Recommended.

Dynamic Formula

Parent.CustomerBillingAddress.ZipCode

PostalCode

Captures the billing postal or zip code from the deposit ticket's customer billing address. Recommended.

Dynamic Formula

Parent.CustomerBillingAddress.FirstName

FirstName

Captures the billing contact first name from the deposit ticket's customer billing address. Optional.

Dynamic Formula

Parent.CustomerBillingAddress.LastName

LastName

Captures the billing contact last name from the deposit ticket's customer billing address. Optional.

Dynamic Formula

if (Parent.Organization != null) {return Parent.Organization.Name;} else {return null;}

Company

Captures the company name on the billing address when the deposit ticket belongs to a Zuper organization; otherwise no value is set. Optional.

Add Zuper Deposit Ticket Service Address TO iPaaS.com

This child collection maps the deposit ticket customer's service address onto the iPaaS.com transaction's service (shipping) address as part of the parent deposit ticket transfer.

Mapping Filter

SourceTypeName == "ParentOnly"

The filter captures the service address only from the parent deposit ticket record, so a single service address is captured per transaction rather than once per line item.

Mapping Type

Source Field (Zuper)

Destination Field (iPaaS.com)

Description

Static

"true"

IsPrimaryShipping

Marks this address as the transaction's primary service (shipping) address. This is a fixed value for this collection. Recommended.

Dynamic Formula

Parent.CustomerServiceAddress.Street

Address1

Captures the service street from the deposit ticket's customer service address. Recommended.

Dynamic Formula

Parent.CustomerServiceAddress.City

City

Captures the service city from the deposit ticket's customer service address. Recommended.

Dynamic Formula

Parent.CustomerServiceAddress.State

Region

Captures the service state or region from the deposit ticket's customer service address. Recommended.

Dynamic Formula

Parent.CustomerServiceAddress.Country

Country

Captures the service country from the deposit ticket's customer service address. Recommended.

Dynamic Formula

Parent.CustomerServiceAddress.ZipCode

PostalCode

Captures the service postal or zip code from the deposit ticket's customer service address. Recommended.

Dynamic Formula

Parent.CustomerServiceAddress.FirstName

FirstName

Captures the service contact first name from the deposit ticket's customer service address. Optional.

Dynamic Formula

Parent.CustomerServiceAddress.LastName

LastName

Captures the service contact last name from the deposit ticket's customer service address. Optional.

Dynamic Formula

if (Parent.Organization != null) {return Parent.Organization.Name;} else {return null;}

Company

Captures the company name on the service address when the deposit ticket belongs to a Zuper organization; otherwise no value is set. Optional.

Add Zuper Deposit Ticket Note TO iPaaS.com

This child collection maps each Zuper deposit ticket note onto an iPaaS.com transaction note as part of the parent deposit ticket transfer.

Mapping Type

Source Field (Zuper)

Destination Field (iPaaS.com)

Description

Static

"Invoice Note"

Type

Classifies the captured note with a fixed type of Invoice Note, consistent with how notes are labeled across the invoice and deposit ticket collections. This is a fixed value for this collection. Recommended.

Field

Content

Text

Captures the note text from the Zuper deposit ticket note. Recommended.

Add Zuper Deposit Ticket Payment TO iPaaS.com

This child collection maps recorded payments on a fully paid deposit ticket onto iPaaS.com transaction payments as part of the parent deposit ticket transfer.

Mapping Filter

SourceTypeName != "ParentOnly" && Parent.AmountDue == 0 && IsVoid == false

The filter captures a payment when it is a real payment record (not the deposit ticket header), the deposit ticket has no remaining balance, and the payment is not voided. Voided payments and deposit tickets with an outstanding balance are handled elsewhere.

Mapping Type

Source Field (Zuper)

Destination Field (iPaaS.com)

Description

Dynamic Formula

PaymentMode.PaymentModeName

Method

Captures the payment method from the Zuper payment mode. Recommended.

Dynamic Formula

PaymentMode.PaymentModeName

Description

Sets the payment description from the Zuper payment mode. Optional.

Field

Amount

Amount

Captures the payment amount from the Zuper deposit ticket payment. Required.

Static

"Captured"

Status

Marks the payment as Captured, reflecting a completed payment on the deposit ticket. This is a fixed value for this collection. Recommended.

Add Zuper Deposit Ticket Payment Due TO iPaaS.com

This child collection records the outstanding balance on a deposit ticket as an iPaaS.com transaction payment entry as part of the parent deposit ticket transfer.

Mapping Filter

SourceTypeName == "ParentOnly" && Parent.AmountDue > 0

The filter creates this entry from the deposit ticket header only when the deposit ticket has an outstanding balance greater than zero. Deposit tickets with no balance due do not produce a payment-due entry.

Mapping Type

Source Field (Zuper)

Destination Field (iPaaS.com)

Description

Static

"amount due"

Method

Labels the entry method as amount due, distinguishing it from a recorded payment. This is a fixed value for this collection. Recommended.

Static

"amount due"

Description

Sets the entry description to amount due. This is a fixed value for this collection. Optional.

Dynamic Formula

Parent.AmountDue

Amount

Sets the payment entry amount to the deposit ticket's outstanding balance. Required.

Static

"Authorized"

Status

Marks the entry as Authorized, reflecting an outstanding (not yet captured) balance. This is a fixed value for this collection. Recommended.

Add Zuper Deposit Ticket Tax TO iPaaS.com

This child collection maps each Zuper deposit ticket tax entry onto an iPaaS.com transaction tax entry as part of the parent deposit ticket transfer.

Mapping Type

Source Field (Zuper)

Destination Field (iPaaS.com)

Description

Field

TaxName

Authority

Captures the tax authority (the tax name) from the Zuper deposit ticket tax. Recommended.

Field

TaxAmount

Amount

Captures the tax amount from the Zuper deposit ticket tax. Recommended.

Field

TaxPercent

TaxPercent

Captures the tax percentage from the Zuper deposit ticket tax. Optional.

Error Handling

For the errors this integration can return and how to resolve them, see the Zuper Error Messages article.

Testing & Validation

Test Scenarios

  • Create a deposit ticket in Zuper (an invoice whose number ends in -D) and confirm a matching transaction with type Order appears in iPaaS.com, together with its line items, addresses, notes, payments, and tax.

  • Confirm the deposit ticket's ParentId resolves to the base invoice transaction, and that the base invoice was captured beforehand so the link resolves.

  • Create a standard invoice (a number not ending in -D) and confirm it is not captured by the deposit ticket collection.

  • Run a Manual Sync using the Zuper deposit ticket identifier (base invoice identifier with -D appended) and confirm the deposit ticket is captured.

  • Capture a fully paid deposit ticket and confirm a Captured payment is recorded, with no payment-due entry.

  • Capture a deposit ticket with an outstanding balance and confirm an amount-due entry is recorded with a status of Authorized.

  • Confirm the transaction status reflects the translated Zuper status (for example, DRAFT to Pending, PAID to Complete, AWAIT_PAYMENT to Pending).

Validation Checklist

  • The Zuper invoice and job webhook events are enabled under Inbound Data Flows.

  • The transaction's TransactionNumber matches the Zuper deposit ticket number.

  • The transaction type is set to Order.

  • The ParentId links the deposit ticket to its base invoice transaction.

  • Subtotal, discount, tax, and total quantity are calculated from the line items and tax entries.

  • The billing and service addresses, notes, tax, and payment or payment-due entries are attached to the transaction.

  • A fully paid deposit ticket records a Captured payment; a deposit ticket with a balance records an Authorized amount-due entry.

Additional Notes

Out of Scope

This collection captures deposit ticket creates only; it does not remove transactions. There is no bulk initialization — records transfer individually through the parent's webhook events or Manual Sync at the time this documentation was written. None of the child collections run on their own; each travels with its deposit ticket and is attached to the parent transaction.

Totals are calculated at capture time

Subtotal, discount, tax, and quantity totals are computed from the record's line items and tax entries when the deposit ticket is captured, at the time this documentation was written.

Related Documents

Did this answer your question?