# Set up invoice automation

Learn how to set up invoice automation in Stripe Connector for NetSuite (SCN).



## Before you begin

1. [Install](https://marketplace.stripe.com/apps/netsuite-connector) the SCN Stripe App and connect it to NetSuite.
2. [Configure](https://docs.stripe.com/use-stripe-apps/netsuite/configure-app.md) the general settings and workflows in the SCN Stripe App.
3. [Learn](https://docs.stripe.com/use-stripe-apps/netsuite/invoice-automation.md) how Invoice Automation works before configuring it.

| Workflow | Description | Functionality | Complexity |
| --- | --- | --- | --- |
| **Invoice Automation** | Automatically create a complete accounting record in NetSuite from each Stripe invoice and its related records. It supports both Stripe Billing subscriptions and Stripe Invoicing. | Advanced | Multi-step configuration (no-code) |

## Quickstart guide

Start here whether you use Stripe Billing, Invoicing, or both. Then review and complete any optional sections that apply to your use case. Use the default settings for testing where applicable.

#### Configure general settings that affect all record sync scenarios



1. Confirm that the **General** tab settings are configured for your use case. No changes are needed if you’re using the following default settings. If you require a more advanced configuration, follow the [General tab setup guide](https://docs.stripe.com/use-stripe-apps/netsuite/configure-app.md) before proceeding.

| General setting                                                                                                                       | Default configuration                                                                                                            | Conditional alternatives                                                                                                                                    |
| ------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [NetSuite subsidiary ID](https://docs.stripe.com/use-stripe-apps/netsuite/multiple-subsidiaries.md)                                   | Blank (single entity NetSuite account with no subsidiaries)                                                                      | You must set this Stripe account to pair with one specific subsidiary if you use a multi-subsidiary NetSuite account.                                       |
| [Record sync timing controls](https://docs.stripe.com/use-stripe-apps/netsuite/custom-payment-application.md#override-sync-timing)    | Webhook events - Initiate sync at time of default triggers                                                                       | Denylist is the only other compatible option for this workflow and is required if you’re using SCN Payment Linker simultaneously—allowlist is incompatible. |
| [Customer sync controls: Stripe to NetSuite workflows](https://docs.stripe.com/use-stripe-apps/netsuite/stripe-customers-netsuite.md) | SCN creates a new individual NetSuite customer for each Stripe customer.                                                         | Customer matching settings prevent duplicates if NetSuite customers already exist for the customers handled by this workflow.                               |
| [Currency sync controls](https://docs.stripe.com/use-stripe-apps/netsuite/multiple-currencies.md)                                     | A single settlement currency in Stripe and NetSuite. This assumes that the NetSuite `Multiple Currencies` setting isn’t enabled. | You must turn on the SCN `Multiple currencies` setting if the NetSuite `Multiple Currencies` setting is being used.                                         |

2. Go to the **Account Mapping** tab. Make sure the `Required account mapping` fields (`Payment processing fees`, `Undeposited funds`, and `Bank deposit accounts`) are configured from your [general setup](https://docs.stripe.com/use-stripe-apps/netsuite/configure-app.md). Invoice Automation requires one additional section.

| Subsection   | Configuration                                                                                                                                                                                                                                                 |
| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Invoices** | - **Income** (Required) This account is required for this workflow, whether you link to existing NetSuite items or let SCN create its own.
     - Configure the `Tax liability` and `Discounts` fields if you plan to charge sales tax or use Stripe coupons. |

   > While on the **Account Mapping** tab, you can configure any optional fields for other GL account scenarios that apply to your use case. This generally isn’t necessary for sandbox testing.

3. This workflow interacts with tax, revenue recognition, subsidiary, and other accounting settings on multiple NetSuite records that it creates automatically, including global items for specific scenarios. These automations begin as soon as you turn on the **Connection** > **Stripe Connector for NetSuite** setting. To prevent errors, add one of the following field mapping starter templates. Don’t delete any fields that seemingly don’t apply to your use case; SCN automations may require them.

   Go to the **Field Mapping** tab. Click on the **Advanced** subtab. In the **Field defaults** (Static Mappings) text box, paste one of the following starter templates, depending on your use case. Click **Save** when done editing.

   #### Single-entity

   If you’re using a single-entity NetSuite account with no subsidiaries, paste the following template, which uses the standard NetSuite system defaults `2` and `-7` for `Non-Taxable` in the United States. These default mappings prevent NetSuite Legacy Tax or SuiteTax from calculating tax twice on NetSuite invoices. The tax for this workflow is calculated on the Stripe invoice by either Stripe Tax or a third-party tax engine you’ve integrated directly with Stripe.

   > If you’re using Avalara or another tax engine integrated directly with NetSuite to calculate tax on other NetSuite invoices outside of this workflow, modify the internal IDs to use the custom non-taxable tax schedules and tax codes provided by the Avalara integration. Use the [Avalara in NetSuite instructions](https://docs.stripe.com/use-stripe-apps/netsuite/setup/invoice-automation.md#configure-scn-to-work-with-avalara-taxes) on this page to fully configure your workflow to support this scenario.

   ```json
   {
     "service_sale_item": {
       "tax_schedule_id": 2
     },
     "non_inventory_sale_item": {
       "tax_schedule_id": 2
     },
     "discount_item": {
       "tax_schedule_id": 2,
       "non_posting": true
     },
     "invoice_item": {
       "tax_code_id": -7
     },
     "credit_memo_item" : {
       "tax_code_id": -7
     }
   }
   ```

   #### Multi-subsidiary

   If your NetSuite account has multiple subsidiaries, use this template instead of the subsidiary field mapping in the [general configuration guide](https://docs.stripe.com/use-stripe-apps/netsuite/configure-app.md)—it includes those subsidiary ID mappings plus the Invoice Automation-specific record types (`invoice`, `customer_payment`, `customer_refund`, `credit_memo`). If needed, adjust the internal ID value `1` for `subsidiary_id` to the same value that you set on the **NetSuite subsidiary ID** setting on the **General** tab. Several of the record types require a subsidiary to be mapped upon creation, including `customer` and `deposit`. Other record types included here permit the NetSuite `Multi-subsidiary customer` setting to function without error, if applicable.

   This template uses the same tax schedule and tax code logic as the `Single-entity` template.

   ```json
   {
     "customer": {
       "subsidiary_id": 1
     },
     "deposit": {
       "subsidiary_id": 1
     },
     "service_sale_item": {
       "subsidiary_id": 1,
       "tax_schedule_id": 2
     },
     "non_inventory_sale_item": {
       "subsidiary_id": 1,
       "tax_schedule_id": 2
     },
     "discount_item": {
       "subsidiary_id": 1,
       "tax_schedule_id": 2,
       "non_posting": true
     },
     "invoice_item": {
       "tax_code_id": -7
     },
     "invoice": {
       "subsidiary_id": 1
     },
     "customer_payment": {
       "subsidiary_id": 1
     },
     "customer_refund" : {
       "subsidiary_id": 1
     },
      "credit_memo_item" : {
        "tax_code_id": -7
     },
     "credit_memo" : {
        "subsidiary_id" : 1
     }
   }
   ```

4. In preparation to run your first test, check whether your NetSuite account has any non-standard fields set as mandatory on the forms SCN uses to create new records. SCN already maps all standard mandatory fields by default, so this step only applies if your forms have been customized to set more fields as mandatory. Follow the [mandatory fields process](https://docs.stripe.com/use-stripe-apps/netsuite/configure-app.md) in the configuration guide, using the record types below for this workflow.

| Form type   | NetSuite record types                                                      |
| ----------- | -------------------------------------------------------------------------- |
| Entry       | `Customer`                                                                 |
| Transaction | `Customer Payment`, `Credit Memo`, `Customer Refund`, `Invoice`, `Deposit` |
| Item        | `Service for Sale Item`, `Non-Inventory Sale Item`, `Discount Item`        |

5. Go to the **App Settings** > **Connection** tab. Turn on both **Stripe Connector for NetSuite** and **Automatic record sync** settings.

6. Run your first test to confirm nothing is blocking the primary records of the Invoice Automation workflow from being created in NetSuite. SCN uses all of the default settings on the **Stripe Invoices** tab, which you can change after the test.

   1. [Open Workbench](https://dashboard.stripe.com/workbench/shell) to the **Shell** tab.
   2. Paste one of the following triggers into the command line that says `Enter a shell command...` and press **Enter**.
      - Simulate a customer paying an invoice. Stripe objects synced to NetSuite: `customer`, `invoice` with `invoiceitem`, `charge`.
        ```bash
        stripe trigger invoice.payment_succeeded
        ```
      - Simulate a customer creating a subscription and paying the first invoice. Stripe objects synced to NetSuite: `customer`, `price`, `invoice`, `charge`.
        ```bash
        stripe trigger customer.subscription.created
        ```
   3. [Open the Dashboard](https://dashboard.stripe.com/dashboard) to the **Home** page in a new browser tab. Click the **SCN App** logo to open the side drawer view of the App.
   4. After a moment, cards populate at the top of the list representing each record SCN attempted to sync to NetSuite. Click each card.
      - If the sync was successful, open the links to view the records in Stripe and NetSuite. In Stripe, observe the metadata SCN added to each object. In NetSuite, observe the values added to fields, GL impact changes, record statuses, and the relationships between the records.
      - If the sync failed, you see an error log indicating which settings to alter before retrying the sync or triggering another test in Workbench.

When this test is successful, your environment is capable of handling the most basic scenarios supported by the default settings of the Invoice Automation workflow. The next section of this guide explains how to change the settings on the **App Settings** > **Stripe Invoices** tab to support more complex scenarios.

## Optional: Configure record sync controls

Use this section to enable advanced record flows beyond the default behavior you’ve already configured.

#### Configure record synchronization controls

Go to **App Settings** > **Stripe Invoices**.

1. **Invoice synchronization controls**

   **Synchronize invoices** (Always on) creates a corresponding NetSuite invoice upon finalization of each Stripe invoice, using standard field mapping rules and any custom field mappings configured in the **Field Mapping** tab. The remaining settings in this section are optional—enable any that apply to your accounting needs.

| Setting                             | When to enable                                                                                                                                                                                                                                                                                              |
| ----------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Synchronize trial invoices**      | Stripe trial periods create 0 USD invoices. By default, SCN doesn’t create copies of these in NetSuite. Enable this if your accounting team needs a NetSuite record for each trial period invoice regardless of the amount.                                                                                 |
| **Keep unpaid invoices open**       | By default, when an unpaid Stripe invoice is voided or marked uncollectible, SCN closes the corresponding NetSuite invoice by creating a credit memo. Enable this to leave the NetSuite invoice open when that happens—for example, if your AR team handles writeoffs manually in NetSuite.                 |
| **Global item for unpaid invoices** | By default, SCN initializes the credit memo line items from the original invoice when closing an unpaid invoice. Enable this to use a single global “Stripe Unpaid Invoice Item” for all such credit memos instead. Doing so simplifies reporting when invoice line item detail isn’t needed for writeoffs. |

2. **Product and item synchronization controls**

   Stripe products and their child `Price` objects are represented in NetSuite as item records mapped to the lines of the invoice. By default, SCN creates individual items automatically. The settings in this section control whether SCN creates items (individual or global) or matches Stripe prices to existing NetSuite items.

| Subsection                                                  | When to configure                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Recurring price synchronization** (Stripe Billing)        | By default, SCN creates a new `Service Sale Item` in NetSuite for each recurring Stripe price. Switch to the global item option if you don’t require per-price reporting in NetSuite and you want to minimize item record creation.                                                                                                                                                                                                                                                                                                                                                                                                                     |
| **Recurring price match** (Stripe Billing)                  | - **Link recurring prices by metadata mapping** (Always on) If you’re going to use existing NetSuite service sale items instead of creating new items, add the NetSuite item’s internal ID to the Stripe `Price` object’s metadata with the key `netsuite_service_sale_item_id`. Metadata linking takes precedence over dynamic linking.
     - **Dynamic recurring price linking** — Automatically match Stripe recurring prices to existing NetSuite service sale items when they share an identical value in a field you configure. Enter the NetSuite field ID and the Stripe field ID to compare.                                                  |
| **Recurring price synchronization timing** (Stripe Billing) | By default, SCN synchronizes a new recurring price item when it’s created in Stripe. Enable this to defer item creation until the first invoice that uses the price is synced. Use this when you create prices before you finalize your NetSuite configuration.                                                                                                                                                                                                                                                                                                                                                                                         |
| **One-time price match**                                    | One-time prices always use a single global `Service Sale Item` in NetSuite. To use an individual item instead, link an existing item using one of the options below. This also applies to invoice item objects.
     - **Link one-time prices by metadata mapping** (Always on)—Add the NetSuite item’s internal ID to the Stripe one-time `Price` object’s metadata with the key `netsuite_service_sale_item_id`. Metadata linking takes precedence over dynamic linking.
     - **Dynamic one-time price linking**—Automatically match Stripe one-time prices to existing NetSuite items when they share an identical value in a field you configure. |

3. **Line item controls**

   For basic use case testing, leave the default settings as they are. Any taxes and coupons created on test invoices map to the NetSuite invoice with default settings. Alternatively, follow the instructions below for other options.

| Subsection                                      | Configuration options                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Tax mapping**                                 | If you calculate sales tax on Stripe invoices with Stripe Tax or another tax engine, SCN maps the tax data as values on the NetSuite invoice.
     - (Recommended) Keep the default `Taxes as separate line items` setting, which avoids NetSuite tax calculation conflicts and supports all NetSuite configurations (including credit memos).

     - Alternatively, you can switch to `Taxes represented on every line item`, but because of NetSuite limitations, this can cause tax discrepancies if you also have `Synchronize credit notes as NetSuite credit memos` enabled.

     - Use **Tax-inclusive item amounts** for VAT scenarios. This requires **Taxes represented on every line item**. The `gross_amt` field must be available in NetSuite, which is typical for non-US subsidiaries. This option might not be compatible with NetSuite accounts using SuiteTax or Advanced Taxes configurations that hide the `gross_amt` field. |
| **Stripe Tax**                                  | Stripe Tax is already installed in Stripe sandbox and live modes to begin using immediately. **Map Stripe Tax values to NetSuite** (Always on) automatically maps Stripe Tax values to the NetSuite invoice lines without any additional configuration.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| **Avalara taxes**                               | If you’re calculating tax on Stripe invoices with Avalara, use the [Avalara instructions](https://docs.stripe.com/use-stripe-apps/netsuite/setup/invoice-automation.md#configure-scn-to-work-with-avalara-taxes).
     > If you’re calculating tax on Stripe invoices with a different tax engine, configure your integration to achieve the same result: tax values are mapped to invoice line items without triggering double tax calculation in NetSuite.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| **Coupon synchronization**                      | - If you use Stripe coupons, leave the default setting if you want a new NetSuite discount item created for each new coupon. This helps with reporting in NetSuite.
     - Otherwise, switch to use the same global NetSuite item for every coupon. The NetSuite `Description` and `Amount` column fields dynamically change, but the discount item used remains the same.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| **NetSuite Advanced Revenue Management fields** | To calculate revenue recognition at the invoice level in NetSuite using Stripe data, use the [ARM instructions](https://docs.stripe.com/use-stripe-apps/netsuite/setup/invoice-automation.md#arm).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |

4. **Credit note synchronization controls**

   Credit memos are created automatically in NetSuite in a number of scenarios regardless of this setting, including refunds, disputes, and voided invoices. This setting controls whether Stripe credit notes are also synchronized specifically.

| Setting                                                             | When to enable                                                                                                                                                                                                                                                                                                                                                                                          |
| ------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Synchronize credit notes as NetSuite credit memos** (Recommended) | Enable this if your team issues Stripe credit notes and needs them represented as credit memos in NetSuite. This setting is generally incompatible with **Taxes represented on every line item** because of NetSuite limitations with taxes on credit memo line items. If both settings are enabled, credit memo creation fails unless the additional unit tax on credit memos setting is also enabled. |

5. **Customer balance applied to Stripe invoices**

   **Apply customer credit balances to invoices** (Always on) This requires no additional configuration. When a Stripe invoice has a customer credit balance applied, SCN automatically creates the corresponding NetSuite records: a full invoice, a customer payment for any amount charged, and a credit memo for the applied credit balance. The credit balance itself isn’t synchronized until it’s applied to an invoice. For invoices resulting in amounts under 0.50 USD or negative totals, SCN creates a 0 USD invoice with offsetting records, with the actual amount accounted for when applied to the next chargeable invoice.

## Optional: Configure advanced field mapping

SCN maps specific fields for each NetSuite record type it creates. Most of these are a prerequisite for creating the new record. You can override which Stripe field data is populated from or add additional field mappings.

Earlier in this guide, you were instructed to [map mandatory fields](https://docs.stripe.com/use-stripe-apps/netsuite/configure-app.md) on your custom record forms to prevent record creation errors.

Follow a similar process to map any optional fields on the NetSuite records that SCN creates. Go to **App Settings** > **Field Mapping** > **Basic**.

- Use the **Static mappings** > **Add mapping** form to add a default value to always be populated on a specific NetSuite field.
- Use the **Dynamic mappings** > **Add mapping** form to populate a specific NetSuite field with the value that appears on a specific Stripe field.

To test each field mapping, create a new record in the Stripe Dashboard or with Workbench, and open the resulting record in NetSuite to confirm your mapping worked as expected.

> SCN only reports errors for invalid field mapping on `mandatory` NetSuite fields. Invalid field mapping on optional NetSuite fields doesn’t trigger error reporting.

## Optional: Use Advanced Revenue Management

Use NetSuite Advanced Revenue Management (ARM) to create revenue arrangements from invoice line items. SCN adds start and end dates to each line item from the Stripe invoice. Use SCN’s item creation or matching features to set the NetSuite revenue recognition rule used for each line item.

#### Configure the start and end date fields

1. In NetSuite, go to **Customization** > **SuiteBundler** > **Search & Install Bundles**. Install the `Stripe Rev Rec Columns` bundle (ID: `172164`). This bundle creates the specific custom column fields SCN writes to. Don’t manually create your own fields.

2. Apply the Stripe Rev Rec column fields to both the invoice and credit memo forms. In NetSuite, go to **Customization** > **Forms** > **[*your preferred form*]** > **Edit** > **Sublist fields** and set the checkmark box in the `SHOW` column to `true`. Repeat for both forms.

3. Map the new column fields to be used during revenue arrangement creation. Go to **Setup** > **Accounting** > **Revenue Recognition Field Mapping** > **New** and create two mappings:

|  |
|  |
| **Field**  | `Source Record Type` | `Source Field`            | `Target Field` |
| Start date | Transaction Line     | Stripe Rev Rec Start Date | Start Date     |
| End date   | Transaction Line     | Stripe Rev Rec End Date   | End Date       |

4. On each NetSuite item record used with this workflow, open the **Revenue Recognition** / **Amortization** subtab and confirm that the **Start/End Date Source** is set to follow the arrangement mapping rather than using standard record dates.

> The Stripe Connector for NetSuite integration with NetSuite Advanced Revenue Management uses names such as “Stripe Rev Rec…” and `suitesync_rev_rec...` for SuiteBundles, field names, and field IDs.

#### Choose or create a revenue recognition rule

1. In NetSuite, go to **Lists** > **Accounting** > **Revenue Recognition Rules** and check for an existing rule that fits your Stripe use case. If there’s a rule related to subscriptions or Stripe, evaluate whether its criteria match your requirements.

2. If no existing rule fits, create a new rule:

| NetSuite Field              | Value to add                                        |
| --------------------------- | --------------------------------------------------- |
| `Name`                      | `Stripe Rev Rec Rule`                               |
| `Recognition method`        | `Straight Line, Exact Days`                         |
| `Rev Rec Start Date Source` | `Arrangement Transaction Date`                      |
| `Rev Rec End Date Source`   | `Arrangement Transaction Date`                      |
| `Term in Months`            | `0` — term is driven from the invoice, not the rule |

#### Set the default rev rec rule to be used for created or matched items

- ***(Option: item creation)*** Use SCN’s default price creation settings to create NetSuite service for sale items for new Stripe `Price` objects. Set the default rev rec rule to use on newly created items. Go to **App Settings** > **Field Mapping** > **Basic** > **Static mappings** and click **Add mapping**. Use the form to add one mapping by selecting the following options from the dropdown fields:

|  |
|  |
| **Field**   | `On creation of NetSuite record type` | `NetSuite field`         | `Value type` | `Value to map`                               |
| New mapping | Service Sale Item                     | Revenue Recognition Rule | Number       | (Enter the internal ID of your rev rec rule) |

- ***(Option: item matching)*** Use SCN’s price matching settings to match an existing NetSuite item to each Stripe `Price` object. In this case, the rev rec rule must be configured on the NetSuite item record manually before the first record is synchronized.

#### Don’t use the Direct Revenue Posting checkbox on NetSuite item records

Don’t use the `Direct Revenue Posting` checkbox on NetSuite item records when SCN creates invoices that mix item types (for example, monthly and annual items on the same invoice, or invoices that include SCN’s global proration item). NetSuite requires all items on an invoice to have a consistent state for this checkbox.

Use the NetSuite `Default One-Time Direct Posting` rev rec rule on all items instead. The checkbox state can’t be changed on items that already have transactions. You must create new items if this needs to change.

## Optional: Mark Stripe invoices as paid out of band

Use the SCN `Paid Out of Band` workflow to reconcile Stripe invoices that are [paid out of band](https://support.stripe.com/questions/marking-an-invoice-paid-out-of-band) with non-Stripe payment methods (such as with a paper check).

| Event | Description |
| --- | --- |
| NetSuite invoice created in the 'Open' state | SCN creates a NetSuite invoice copy of the Stripe invoice as expected |
| Out of band customer payment recorded | NetSuite user manually creates and applies a customer payment to the invoice |
| SCN saved search identifies paid NetSuite invoices | Criteria: invoice created by SCN; applied customer payment that was not created by SCN |
| SCN marks Stripe invoice as paid | The original Stripe invoice is marked as paid out of band automatically |

#### Set up the Paid Out of Band workflow

1. [Install](https://docs.stripe.com/use-stripe-apps/netsuite/stripe-connector-add-ons.md) the Stripe Connector Add-ons SuiteBundle.
2. [Configure and test](https://docs.stripe.com/use-stripe-apps/netsuite/paid-out-of-band-setup.md) the Paid Out of Band workflow.

## Optional: Configure advanced settings

#### Use a custom GL account for Accounts Receivable

SCN uses the NetSuite default Accounts Receivable GL account. To bypass it in favor of a custom account, go to **Field Mapping** > **Basic** > **Static mappings** and click **Add mapping**. Use the form to add three individual mappings by selecting the following options from the dropdown fields:

|  |
| **Field** | `On creation of NetSuite record type` | `NetSuite field` | `Value type` | `Value to map` |
| First mapping | Customer Payment | Account | Number | (Enter the GL account internal id) |
| Second mapping | Customer Refund | Account | Number | (Enter the GL account internal id) |
| Third mapping | Invoice | Account | Number | (Enter the GL account internal id) |

#### Configure SCN to work with Avalara taxes

These instructions assume that Stripe is integrated directly with Avalara (commonly referred to as “AvaTax”) to calculate taxes on Stripe invoices.

**Prerequisite**: Confirm whether taxes appear on Stripe fees by inspecting a few payouts in the Stripe live mode account. If they do, configure **Fee taxes** in the **Account Mapping** tab before proceeding.

1. In the **Stripe Invoices** tab, set the tax representation to **Taxes as a separate line item**.

2. Some NetSuite accounts also simultaneously use Avalara in NetSuite to calculate taxes on NetSuite originated transactions. Turn on the option that matches your setup:

   - **Avalara without NetSuite taxes**: If you’re only using Avalara to calculate tax on Stripe invoices.
   - **Avalara with NetSuite taxes**: If you’re using separate Avalara integration components to calculate tax on Stripe invoices and on NetSuite invoices.

3. Add a `tax_schedule_id` mapping to the `non_inventory_sale_item` record type, set to the internal ID of the non-taxable tax schedule in your NetSuite account. If you have Avalara components installed in NetSuite, they commonly import a new set of tax schedules. The Avalara non-taxable tax schedule is commonly internal id `1`. NetSuite system default uses `2` for non-taxable.

   Go to **Field Mapping** > **Basic** > **Static mappings**, and click **Add mapping**. Use the form to add one new mapping by selecting the following options from the dropdown fields:

|  |
|  |
| **Field**   | `On creation of NetSuite record type` | `NetSuite field` | `Value type` | `Value to map`                       |
| New mapping | Non Inventory Sale Item               | Tax Schedule     | Number       | (Enter the tax schedule internal id) |

4. **(Avalara with NetSuite taxes only)** In NetSuite, configure the invoice form to disable Avalara tax calculation on invoices created by SCN. The most common approach is a custom checkbox (boolean) field on the invoice form. Some NetSuite accounts already have a field titled `Disable Avalara Tax Integration`, which must be mapped to `true`. Without this, NetSuite’s Avalara integration attempts to recalculate tax on SCN-created invoices.

   Go to **Field Mapping** > **Basic** > **Static mappings**, and click **Add mapping**. Use the form to add one new mapping by selecting the following options from the dropdown fields:

|  |
|  |
| **Field**   | `On creation of NetSuite record type` | `NetSuite field`                     | `NetSuite custom field name`    | `Value type` | `Value to map` |
| New mapping | Invoice                               | Enter NetSuite custom field manually | custbody_your_custom_field_name | Boolean      | True           |

   **Expected result**: The NetSuite invoice has a separate non-taxable line item for the total tax amount collected in Stripe. The `Total Taxes` field in the invoice body isn’t populated, which is expected. NetSuite isn’t acting as the tax engine for these invoices, and the separate line item is sufficient for accurate accounting and reconciliation.

## See also

- [Stripe-initiated payments workflows](https://docs.stripe.com/use-stripe-apps/netsuite/setup/stripe-initiated-payments.md)
- [NetSuite-initiated payments workflows](https://docs.stripe.com/use-stripe-apps/netsuite/setup/netsuite-initiated-payments.md)
