Skip to main content

NetSuite Cash Sale From iPaaS.com Mapping Documentation

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:

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 cash sale — routes the transaction to a NetSuite cash sale.

Control — required

custbody_otg_ipaas_tax_code

Tax override

Set a valid NetSuite tax code. Placeholder — replace: ships as 5.

Control — required for tax

custbody_otg_ipaas_tax_rate

Tax-rate override

Computed as (TaxAmount / Subtotal) × 100; confirm it matches how your source supplies tax.

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 true).

Control — required for external payment auth

ShippingCostOverridden

Supplied shipping cost

Keep true whenever a shipping cost is mapped so NetSuite uses your amount.

Control

PaymentMethodType (Gift Redemption)

Gift-card redemption

Static value must be exactly Gift Card.

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

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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

"cash sale"

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 cash sale.

Dynamic Formula

Customer NetSuite ID (GetExternalIdAsync), falling back to email

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 name → NetSuite location id

Location_Id

Required. Resolves the NetSuite location from a location name. Placeholder value — replace during implementation: ships as the example name Califorina.

Dynamic Formula

subsidiary name → NetSuite subsidiary id

Subsidiary_Id

Required on OneWorld accounts. Resolves the NetSuite subsidiary from a subsidiary name. Placeholder value — replace during implementation: ships as Parent Company.

Dynamic Formula

return 5;

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: 5. Applied by the Tax Override customization; SuiteTax is not required.

Dynamic Formula

(TaxAmount / Subtotal) * 100

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

"true"

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 true.

Dynamic Formula

(cash-sale summary: number, payment method, total, tax)

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

Email

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 ShippingCostOverridden.

Field

ShippingAmount

AltShippingCost

Optional. Alternate shipping-cost field from the same source amount.

Static

"true"

ShippingCostOverridden

Control. Tells NetSuite to use the supplied shipping cost rather than calculating its own. Keep true whenever a shipping cost is mapped.

Dynamic Formula

FieldFromFirstMatch(Addresses, "IsPrimaryShipping == true", "ShippingMethod")

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

accounting period id + transaction date

TransactionDate

Required. Sets the transaction date and validates it against the selected NetSuite posting period. Placeholder value — replace during implementation: ships with posting period 201; align to your accounting periods.

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

await GetNetSuiteProductIdBySku(Sku)

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

quantity × unit price (line extended price)

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

product type resolved from SKU

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

"FirstName LastName" when both present, otherwise the Company name

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

await GetGiftCertificateIdBySkuAsync(Sku)

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

quantity × unit price

Amount

Recommended. The face value of the gift-certificate line.

Field

Description

Description

Optional. The line description.

Dynamic Formula

Parent.SystemId

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

Company email if present, otherwise the customer email

GiftCertificateRecipientEmail

Recommended. The delivery email; company when present, otherwise the customer's.

Dynamic Formula

Company name if present, otherwise the customer name

GiftCertificateRecipientName

Recommended. The recipient name on the certificate.

Dynamic Formula

product type resolved from SKU

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

"Gift Card"

PaymentMethodType

Control — required for gift-card redemption. Routes the payment to gift-certificate redemption rather than a standard payment. Must be exactly Gift Card.

Dynamic Formula

gift card id from payment details, validated against NetSuite

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_Id cannot 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

  1. 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.

  2. 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.

  3. 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".

  4. ID format. Manually sync using the iPaaS.com transaction record ID and confirm success.

  5. 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.

  6. Gift-card quantity guard. Send a gift-certificate line with quantity greater than 1 and confirm the rejection message.

  7. 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.

Related Documents

Did this answer your question?