NetSuite Cash Sale From iPaaS.com Mapping Documentation
A NetSuite Cash Sale — a fully paid sale recorded as a single cash-sale transaction — can be created and updated from an iPaaS.com transaction. The integration maps the customer, location, subsidiary, totals, shipping, and tax-handling fields, and through child collections the sale's lines, billing/shipping address, gift-certificate lines, and gift-card redemptions. Transactions transfer on demand from the iPaaS.com Manual Sync page or automatically when outbound transaction triggers are enabled.
ID Format
Manual Sync ID Format
Enter the iPaaS.com record ID of the transaction on the Manual Sync page.
External ID Format
On a successful transfer, the NetSuite cash sale's internal ID is recorded as the external-ID link on the iPaaS.com transaction, so subsequent transfers update the existing cash sale rather than creating a new one. The originating transaction number is also stored on the cash sale's Other Reference Number (see System Caveats).
Deleted Record Support
Outbound delete is not provided for cash sales — there is no Cash Sale delete collection, so a deletion in iPaaS.com does not remove the NetSuite cash sale. Reverse or void a cash sale in NetSuite using your normal accounting process.
Custom Field Support
The cash sale carries source tax onto NetSuite transaction custom fields (custbody_otg_ipaas_tax_code / custbody_otg_ipaas_tax_rate) for a post-create override applied by the Tax Override customization (see Setup Requirements). Any NetSuite custom field used by the integration must be created in NetSuite (Customization → Lists, Records & Fields) with a matching iPaaS.com custom field of the same Field ID; List/Record and Multi-Select values are formatted by the FormatCustomFields conversion function (supplying values replaces the set; a field cannot be cleared to empty).
Mapping Collection Status
Status: Enabled (a single Add/Update collection handles both create and update).
Trigger Events: Create and Update. Automatic transfers fire on the iPaaS.com transaction outbound triggers subscribed in Outbound Data Flows; the collection is also available on demand from the Manual Sync page.
Duplicate or Conflicting Mappings
Several collections process iPaaS.com transactions; which one acts is determined by each collection's filter. Review the filters and Add/Update settings before enabling, and confirm the intended source of truth for each transaction type:
Add NetSuite Sales Order FROM iPaaS.com — orders (see NetSuite Sales Order From iPaaS.com Mapping Documentation).
Add/Update NetSuite Cash Refund FROM iPaaS.com — refunds.
Add NetSuite RMA FROM iPaaS.com — returns.
Collision handling
The integration does not use iPaaS.com collision handling for this collection; it prevents duplicates through the external-ID link plus the Other Reference Number matching key. Because Other Reference Number is a matching key, changing or un-mapping it after cash sales exist can cause incoming transactions to stop matching their NetSuite records and create duplicates. Keep that mapping stable once live and coordinate any change with your implementation partner.
Supported Child Collections
Add/Update NetSuite Cash Sale Line FROM iPaaS.com — the sale line items.
Add/Update NetSuite Cash Sale Address FROM iPaaS.com — the billing/shipping address.
Add/Update NetSuite Cash Sale Gift Card Line FROM iPaaS.com — gift-certificate line items.
Add/Update NetSuite Cash Sale Gift Redemption FROM iPaaS.com — a gift-card redemption applied as payment.
System Caveats
NetSuite Caveats
NetSuite calculates tax. NetSuite computes its own tax from the customer, item, and shipping configuration; tax amounts cannot be set directly through the API. The integration carries the source tax onto transaction custom fields for a post-create override applied by the Tax Override customization; the NetSuite SuiteTax feature is not required.
Location and subsidiary are required. The cash sale's location resolves from a location name, and on OneWorld accounts the subsidiary resolves from a subsidiary name — both must match your account (the shipped values are placeholders; see Setup Requirements).
Posting period must be open. The transaction date must fall in an open NetSuite posting period.
Gift certificates must already exist in NetSuite — matched by SKU for sale lines and by gift-card code for redemptions. A gift-certificate line must have a quantity of 1.
iPaaS.com Caveats
Other Reference Number matching key. The originating transaction number is stored on Other Reference Number and is used to match an existing cash sale. Keep that mapping stable once live — see Collision handling.
Customer handling. You don't need to sync the customer first. The integration checks whether the transaction's customer is already linked in NetSuite, matches an existing one by email if possible, and otherwise attempts to create it as a prerequisite. If the customer cannot be created, the transfer is blocked with "Unable to create customer. This will prevent the transfer of the order." — resolve the underlying customer error and re-sync.
Integration-Specific Caveats
Totals are computed by NetSuite from the lines. The cash sale subtotal/total are carried from the source for reference; NetSuite recalculates totals from the line items.
Discounts must be reflected in the line unit price to be honored (each line amount is quantity × unit price). A discount the source records separately from the unit price is not reflected on the line.
Setup Requirements
Control Fields and Required Configuration
These mappings gate specific behavior and must be configured if you use the feature; replace every shipped placeholder before going live.
Mapping | Enables | Action | Required? |
CreateTransactionAs | Cash sale creation | Static value must be exactly | Control — required |
custbody_otg_ipaas_tax_code | Tax override | Set a valid NetSuite tax code. Placeholder — replace: ships as | Control — required for tax |
custbody_otg_ipaas_tax_rate | Tax-rate override | Computed as | Control — required for tax-rate override |
custbody_es_bt_auth_by_external_pnref | External payment authorization | Configure your payment-auth custom field (a Dynamic Formula returning a real boolean is preferable to the static | Control — required for external payment auth |
ShippingCostOverridden | Supplied shipping cost | Keep | Control |
PaymentMethodType (Gift Redemption) | Gift-card redemption | Static value must be exactly | Control — required for redemption |
Placeholders to replace: Location_Id (ships as the example name Califorina), Subsidiary_Id (ships as Parent Company), the posting period / transaction date used by the date formula (ships with period 201), and the tax code (5).
Subscription settings: enable the iPaaS.com transaction create/update triggers in Outbound Data Flows (in the iPaaS.com subscription configuration) for automatic transfers; until then, only Manual Sync transfers run.
Authentication
The integration authenticates to NetSuite using the connection configured for the integration. The Tax Override customization (the custbody_otg_ipaas_tax_code/_rate custom fields plus the supporting User Event script) is documented in NetSuite Connections and Settings.
Integration Flow
An iPaaS.com transaction transfers — on demand from the Manual Sync page (enter the transaction record ID), or automatically when the transaction outbound triggers are enabled in Outbound Data Flows.
The collection filter decides whether the transaction is a cash sale: it must carry at least one payment that is not a House Account payment, have a status other than Refunded/Partially Refunded, a total of zero or greater, and a type other than Invoice or Return. Refunds, returns, and invoices route to their own collections.
The integration checks for the customer in NetSuite — matching by email or otherwise attempting to create it as a prerequisite — resolves the location and subsidiary, creates the cash sale header, and transfers the children: line items, the address, any gift-certificate lines, and any gift-card redemption.
The NetSuite cash sale internal ID is stored back on the iPaaS.com transaction as its external ID; the source transaction number is written to Other Reference Number for matching.
A later transfer of the same transaction matches the existing cash sale (external ID, then Other Reference Number) and updates it.
Mappings
Each mapping collection below shows its live filter (where one applies), a short description, and its field mapping table. Fields marked Control gate a feature; fields with a Placeholder value ship with an example that must be replaced (see Setup Requirements).
Add/Update NetSuite Cash Sale FROM iPaaS.com
iPaaS.com data type: Transaction
Mapping Filter
if (Payments != null && Payments.Count > 0 && Payments.Exists(x => !string.IsNullOrWhiteSpace(x.Description) && !x.Description.Contains("House Account")))
{
if(Status != "Refunded" && Status != "Partially Refunded" && Total >= 0 && Type != "Invoice" && Type != "Return")
return true;
}
return false;Filter Description. The transaction must first carry at least one payment whose Description is non-blank and does not contain House Account — transactions with no payments, only blank-description payments, or only House Account payments are rejected. Transactions that clear that check then pass only when Status is neither Refunded nor Partially Refunded, Total is zero or greater, and Type is neither Invoice nor Return; any transaction failing a condition falls through to return false and is skipped. Note: the staging test subscription currently prefixes this filter with a return false; test stub that disables the collection; the production template filter is the guard shown above.
This collection creates or updates a NetSuite cash sale from an iPaaS.com transaction.
Mapping Type | Source Field (iPaaS.com) | Destination Field (NetSuite) | Description |
Static |
| CreateTransactionAs | Control — required. Tells the integration to create the transaction as a cash sale (not a sales order, cash refund, or return). The value must be exactly |
Dynamic Formula |
| Entity_Id | Required. Identifies the customer the cash sale belongs to. The customer must exist in NetSuite or be matchable by email, or the transfer fails. |
Dynamic Formula |
| Location_Id | Required. Resolves the NetSuite location from a location name. Placeholder value — replace during implementation: ships as the example name |
Dynamic Formula |
| Subsidiary_Id | Required on OneWorld accounts. Resolves the NetSuite subsidiary from a subsidiary name. Placeholder value — replace during implementation: ships as |
Dynamic Formula |
| custbody_otg_ipaas_tax_code | Control — required for tax override. Writes the NetSuite tax code to a transaction custom field. Placeholder value — replace during implementation: |
Dynamic Formula |
| custbody_otg_ipaas_tax_rate | Control — required for the tax-rate override. Writes the tax percentage to a transaction custom field. Confirm/replace to match how your source supplies tax. |
Static |
| custbody_es_bt_auth_by_external_pnref | Control — required for external payment authorization. Flags the payment as authorized by an external reference. A Dynamic Formula returning a real boolean is preferable to the static text |
Dynamic Formula |
| Memo | Optional. Builds a short summary on the cash sale's Memo field. |
Field | TransactionNumber | OtherRefNum | Recommended (matching key). Stores the originating transaction number on Other Reference Number and is used to match an existing cash sale. Keep stable once live — changing it can create duplicates. |
Field | EmailAddress | Recommended. Sets the cash sale email from the customer's email. | |
Field | Subtotal | Subtotal | Recommended. The cash sale subtotal (NetSuite recalculates from the lines). |
Field | Total | Total | Recommended. The cash sale total (NetSuite recalculates from the lines). |
Field | ShippingAmount | ShippingCost | Recommended. The shipping cost; pairs with |
Field | ShippingAmount | AltShippingCost | Optional. Alternate shipping-cost field from the same source amount. |
Static |
| ShippingCostOverridden | Control. Tells NetSuite to use the supplied shipping cost rather than calculating its own. Keep |
Dynamic Formula |
| ShipMethod_RefName | Recommended. Sets the shipping method from the primary shipping address; must match a NetSuite shipping method. |
Lookup | Lookup Translation: OrderStatus_RefName | OrderStatus_RefName | Recommended. Sets the NetSuite cash-sale status via a lookup translation you configure (map each source status to a NetSuite value). |
Dynamic Formula |
| TransactionDate | Required. Sets the transaction date and validates it against the selected NetSuite posting period. Placeholder value — replace during implementation: ships with posting period |
Add/Update NetSuite Cash Sale Line FROM iPaaS.com
iPaaS.com data type: Transaction Line
Mapping Filter
var netsuiteGiftCertificateId = await GetGiftCertificateIdBySkuAsync(Sku);
if(netsuiteGiftCertificateId != null) {
return false;
}
else {
var netSuiteProductId = await GetNetSuiteProductIdBySku(Sku);
if(netSuiteProductId != null){
return true;
}
else{
throw new Exception("Sku "+Sku+" is not linked to a NetSuite item id");
}
}Filter Description. The line's Sku is first checked against NetSuite gift certificates; a match returns false so gift-certificate lines are excluded here (they are handled by the Gift Card Line collection). Otherwise the SKU is resolved as a NetSuite product; a match passes the line. If the SKU matches neither, the filter throws "Sku [Sku] is not linked to a NetSuite item id" and the line (and sale) fails.
Adds a product line item to the cash sale.
Mapping Type | Source Field (iPaaS.com) | Destination Field (NetSuite) | Description |
Dynamic Formula |
| Item_Id | Required. Resolves the NetSuite item from the product SKU; an unmatched SKU fails the line. |
Field | Qty | Quantity | Required. The line quantity. |
Dynamic Formula |
| Amount | Recommended. The line amount = quantity × unit price. A discount is reflected only when folded into the unit price; a separately-recorded discount posts at the full amount. |
Field | Description | Description | Optional. The line description carried to the cash sale line. |
Dynamic Formula |
| LineItemtype | Control — required for line creation. Identifies the line type for the cash sale line, derived from the product type. |
Add/Update NetSuite Cash Sale Address FROM iPaaS.com
iPaaS.com data type: Transaction Address
This collection writes the billing/shipping address onto the cash sale.
Mapping Type | Source Field (iPaaS.com) | Destination Field (NetSuite) | Description |
Dynamic Formula |
| Addressee | Recommended. The name shown on the address. |
Field | Address1 | Addr1 | Recommended. The first address line. |
Field | Address2 | Addr2 | Optional. The second address line. |
Field | Address3 | Addr3 | Optional. The third address line. |
Field | City | City | Recommended. The address city. |
Field | Region | State | Recommended. The state or region. |
Field | PostalCode | Zip | Recommended. The postal/ZIP code. |
Field | IsPrimaryBilling | IsPrimaryBilling | Recommended. Whether this is the cash sale's primary billing address. |
Field | IsPrimaryShipping | IsPrimaryShipping | Recommended. Whether this is the cash sale's primary shipping address; the shipping method is read from it. |
Add/Update NetSuite Cash Sale Gift Card Line FROM iPaaS.com
iPaaS.com data type: Transaction Line
Mapping Filter
var netsuiteGiftCertificateId = await GetGiftCertificateIdBySkuAsync(Sku);
if(netsuiteGiftCertificateId != null) {
if(Qty > 1) {
throw new Exception("Gift card quantity cannot be greater than 1. NetSuite supports only one gift certificate per transaction line");
return false;
}
else {
return true;
}
}
else {
return false;
}Filter Description. The line's Sku is resolved to a NetSuite Gift Certificate item. A SKU that does not resolve to a gift-certificate item is rejected (handled by the regular Cash Sale Line collection). A resolved gift-certificate line with Qty greater than 1 throws "Gift card quantity cannot be greater than 1. NetSuite supports only one gift certificate per transaction line"; only quantity 1 passes. Sell multiple certificates as separate lines.
Adds a gift-certificate sale line to the cash sale.
Mapping Type | Source Field (iPaaS.com) | Destination Field (NetSuite) | Description |
Dynamic Formula |
| Item_Id | Required. The NetSuite Gift Certificate item, resolved from the SKU; must already exist. |
Field | Qty | Quantity | Required. The line quantity — must be 1. |
Dynamic Formula |
| Amount | Recommended. The face value of the gift-certificate line. |
Field | Description | Description | Optional. The line description. |
Dynamic Formula |
| GiftCertificateFrom | Control — links the certificate to its sale. Records which transaction the certificate originated on; leave mapped. |
Field | AssignedIdentification | GiftCertificateMessage | Optional. The message recorded on the gift certificate. |
Dynamic Formula |
| GiftCertificateRecipientEmail | Recommended. The delivery email; company when present, otherwise the customer's. |
Dynamic Formula |
| GiftCertificateRecipientName | Recommended. The recipient name on the certificate. |
Dynamic Formula |
| LineItemtype | Control — required for line creation. Identifies the gift-certificate line type. |
Add/Update NetSuite Cash Sale Gift Redemption FROM iPaaS.com
iPaaS.com data type: Transaction Payment
Mapping Filter
if (MethodInfo != null &&
MethodInfo.TryGetValue("GiftCardId", out var giftCardId) &&
!string.IsNullOrEmpty(giftCardId?.ToString()))
{
var result = await ValidateNetSuiteGiftCertificateAsync(giftCardId.ToString());
if(result != null) {
return true;
}
else {
return false;
}
}return false;Filter Description. The payment is processed only when MethodInfo is non-null and carries a non-empty GiftCardId; otherwise the final return false rejects it. When a gift card id is present, it is validated against NetSuite (ValidateNetSuiteGiftCertificateAsync): a matched certificate (non-null result) passes, an unmatched one is rejected. This filter does not throw.
Applies a gift card as payment on the cash sale, recorded as a NetSuite gift certificate redemption.
Mapping Type | Source Field (iPaaS.com) | Destination Field (NetSuite) | Description |
Static |
| PaymentMethodType | Control — required for gift-card redemption. Routes the payment to gift-certificate redemption rather than a standard payment. Must be exactly |
Dynamic Formula |
| GiftCertRedemption_AuthCode_Id | Required for redemption. Identifies the NetSuite gift certificate being redeemed, matched by code; must already exist. |
Field | Amount | GiftCertRedemption_AuthCodeApplied | Required. The amount redeemed against the certificate toward the sale. |
Field | Method | GiftCertRedemption_AuthCode_RefName | Recommended. The payment-method reference name for the redemption. |
Error Handling
"Sku [Sku] is not linked to a NetSuite item id" — a line SKU resolved to neither a gift certificate nor a product item. Resolution: confirm the SKU and link the item/product in NetSuite, then re-sync.
"Gift card quantity cannot be greater than 1. NetSuite supports only one gift certificate per transaction line" — a gift-certificate line was sent with a quantity greater than 1. Resolution: sell each certificate as its own line with quantity 1.
Customer could not be resolved — when
Entity_Idcannot match a NetSuite customer by ID or email, the cash sale cannot be created. Resolution: confirm the transaction's customer record is present in iPaaS.com and review the customer's own transfer error — the integration attempts to create and link it in NetSuite for you, so the fix is usually on the customer record rather than a manual NetSuite entry.Location / subsidiary / posting-period rejections — NetSuite rejects the cash sale when the location or subsidiary name does not match, or the transaction date is outside an open posting period. Resolution: confirm the location and subsidiary names (replace the placeholders) and that the posting period is open.
Testing & Validation
Test Scenarios
Create a cash sale. Manually sync a fully paid transaction and confirm a NetSuite cash sale is created with the correct customer, lines, address, totals, and that the internal ID is stored back on the iPaaS.com transaction.
Update a cash sale. Re-sync the same transaction after a change and confirm the existing cash sale is updated rather than a duplicate created.
Required-field validation. Sync a transaction whose line SKU is not linked in NetSuite and confirm the error "Sku [Sku] is not linked to a NetSuite item id".
ID format. Manually sync using the iPaaS.com transaction record ID and confirm success.
Child collections. Create a cash sale with lines, an address, and (if used) a gift-certificate line and gift redemption; confirm each appears on the NetSuite cash sale.
Gift-card quantity guard. Send a gift-certificate line with quantity greater than 1 and confirm the rejection message.
Placeholders replaced. Confirm the location, subsidiary, tax code, and posting period are set to your account's values, not the shipped placeholders.
Validation Checklist
The customer resolves correctly (NetSuite ID or email) for representative transactions.
Location and subsidiary names match your NetSuite account (not the placeholders
Califorina/Parent Company).Tax control fields carry a valid tax code (not the placeholder
5) and the Tax Override customization applies tax as expected.The transaction date falls in an open posting period.
Other Reference Number is populated and stable (the duplicate-matching key).
Gift-certificate lines (quantity 1) and gift redemptions resolve to existing NetSuite certificates.
Additional Notes
Tax is applied by the Tax Override customization, documented in NetSuite Connections and Settings. The NetSuite SuiteTax feature is not required.
Refunds are handled by Add/Update NetSuite Cash Refund FROM iPaaS.com, and returns by the Return Authorization feature; see the related mapping documentation.
Known limitations affecting transactions are collected in NetSuite Known Limitations.
