NetSuite Configuration

For some workflows and configurations, there are NetSuite configuration changes that need to be made. Here are some details about how to make these configuration changes on your NetSuite account.


General

Setting Up Token Based Authentication

Token Based Authentication (TBA) is used to connect to your NetSuite account without a email and password (the previously standard way of connecting to a NetSuite account).

In order to login using tokens, there are two groups of tokens (i.e. keys) needed:

  1. Consumer Tokens. These are tied to an "Application Record" in NetSuite. You can view application records in your account by searching for page: integrations
  2. User Tokens. These are tied to a combination of a 1) User/Employee 2) Role and 3) application record. You can view user tokens by searching for page: access tokens

Here's how to set up these two token groups:

  1. Make sure Token Based Authentication is enabled.
    1. Visit the features page of the setup area.
    2. Ensure the "Token Based Authentication" checkbox is enabled (Setup > Enable Features > SuiteCloud > Manage Authentication > Token Based Authentication). If it's not, enable it and press save.
  2. Install the "SuiteSync Token Based Authentication" bundle (ID 178262).
    • Below are the exact permissions required for token based authentication on the role. These permissions are included on the "SuiteSync Limited Role" by default.
      • User Access Tokens
      • Access Token Management
      • Log in using Access Tokens
    • Installing this bundle creates pre-configured consumer tokens for SuiteSync. You don't need to worry about providing these consumer tokens to SuiteSync.
  3. Add the "SuiteSync Limited Access" role to the user you'd like to use for the integration. You do this by editing the employee record for the user and adding the role to the employee.
  4. Create a user token. Search for page: New Access Token.
    1. Application Name: SuiteSync
    2. User: The user you'd like to use
    3. Role: SuiteSync Limited Access
  5. The token ID and token secret are what SuiteSync uses to connect your NetSuite account. Enter these into the SuiteSync dashboard or email these tokens to SuiteSync support.
    • Note that these tokens are useless without the corresponding consumer tokens. The consumer tokens are generated automatically when you install the "SuiteSync Token Based Authentication" bundle and are only accessible by SuiteSync. In other words, you don't need to worry about sharing these tokens.
Enabling customer credit hold in NetSuite

The customer credit hold feature can be used in conjunction with the subscription or eCommerce SuiteSync flows. Here's where you can enable this feature in NetSuite:

Setup > Accounting > Preferences > Accounting Preferences > Accounts Receivable (subheader) > Customer Credit Limit Handling > Warn Only

If "Enforce Holds" is enabled this prevents transactions from being created on users who update their credit card, or later complete some sort of successful payment.

Viewing the Stripe ID on the NetSuite record

For customers:

  1. Customization > Lists, Records & Fields > Entity Fields > New
  2. Label: "Stripe Customer ID"
  3. Type: "Free-form Text"
  4. ID: _stripe_customer_id
  5. Store value: unchecked
  6. Applies to: Customer
  7. Validation & Defaulting:
    1. Formula: checked
    2. Default Value: {externalid}

For transactions:

  1. Customization > Lists, Records & Fields > Transaction Body Fields > New
  2. Label: "Stripe ID"
  3. ID: _stripe_transaction_id
  4. Type: "Free-form Text"
  5. Store Value: unchecked
  6. Applies to:
    1. Purchase
    2. Sale
    3. Customer Payment
    4. Deposit
  7. Validation & Defaulting:
    1. Formula: checked
    2. Default Value: {externalid}
Viewing the Deposit Associated with a Payment or Refund

NetSuite does not provide a way to determine which bank deposit a given transaction is associated with. The instructions below show how you can add a custom field that exposes the transaction ID of the deposit record a transaction is associated with.

When a deposit is not associated with a record this field will display an error. Since the field is not a formula field you can safely ignore the error. It won't effect any scripts or other functionality in NetSuite.

You can install this field using the bundle "SuiteSync Transaction Deposit ID" ID 171428.

  1. Customization > Lists, Records & Fields > Transaction Body Fields > New
  2. Label: "Deposit ID"
  3. ID: _bank_deposit_id
  4. Description: "The transaction ID of the bank deposit record that deposited the charge or refund."
  5. Type: Free-Form Text
  6. Store Value checkbox > Unchecked.
  7. Applies To: Customer Payment
  8. Display > Display Type: Disabled
  9. Validation & Defaulting:
    1. Formula: checked
    2. Default value: {deposittransaction.number}
  10. Subtab: Main
Saved Search for Disputes

Here's a saved search you can use to identify all of the CreditMemos and CustomerRefunds representing disputes in your account:

  • Title: "Stripe Disputed Charges"
  • ID: _stripe_disputes
  • Criteria:
    • Type: Customer Refund, Credit Memo
    • Memo: contains Stripe: dp_
    • Main Line: true
Saved Search for Refund Errors

Here's a saved search you can build to watch for any refund errors:

  • Type: Customer Refund, Credit Memo
  • Memo: contains "Stripe Refund Error"
  • Main Line: true

Here's a screenshot of how the saved search should look:

Refund Error Saved Search

B2B Payments

In order to support B2B Payments, the feature that enables the "Stripe Invoice Payment Link" on your NetSuite Invoice, two changes need to be made to your NetSuite instance:

  1. Add the "Stripe Invoice Payment Link" custom field to sale transactions. You can install this field using bundle ID 170321
  2. Add the "Amount Remaining" field needs to be added to the form used for invoices on your account
  3. In most cases, you'll also want to add the "Stripe Transaction ID" field. You can install this field using bundle ID 170177
Creating the "Stripe Invoice Payment Link" custom field
  1. Customization > Lists, Records, and Fields > Transaction Body Fields > New
  2. Configure field:
    • Label: Stripe Invoice Payment Link
    • ID: _stripe_invoice_payment_link
    • Type: Hyperlink
      • You may want to change the type to free-form text if you are primarily using this form in templates (emails, pdfs, workflows, etc)
    • Display > Subtab: Main
    • Display > Display Type: Disabled
    • Store value: false / unchecked
    • Description: link to a SuiteSync-hosted payment form which allows customers to pay SalesOrders and Invoices with your Stripe account.
    • Validation & Defaulting > Default Value: https://app.suitesync.io/payments/test/acct_/{type}/{id}
      • The acct_ value is unique to your account. This is your Stripe account ID.
      • The {id} is the internalID of the NetSuite invoice
      • Since the URL structure is just made up of the Stripe Account and the internal ID, you can generate this link on your own if needed.
      • If you only want to support payments on invoices, remove the {type} URL component
    • Validation & Defaulting > Formula: unchecked.
      • After save, make sure this value is still unchecked. NetSuite resets this field value for you without warning.
    • Applies To: Sale
  3. Save. Generated ID: custbody_stripe_invoice_payment_link

You may want to configure the link to disallow credit card payments for invoices above a certain value. You can do this by using the following formula in the "Default Value" (make sure you click the "Formula" checkbox):

CASE
WHEN NVL2({amountremaining},{amountremaining},{total})>100.0 THEN
  'https://app.suitesync.io/payments/test/acct_/'||{type}||'/'||{id}||'?card=false'
ELSE
  'https://app.suitesync.io/payments/test/acct_/'||{type}||'/'||{id}
END

You can also disable ACH payments for invoices below a certain amount using a similar approach. Here's more information on all of the customization options available.

Adding Payment Link to Invoice PDFs

You can add the invoice payment form to either the "standard" NetSuite PDFs or the advanced PDFs.

The ability to customize the "standard" invoice PDFs is limited:

  • You cannot use HTML: links and advanced formatting cannot be used.
  • You cannot conditionally display content. For example, you cannot hide the payment link depending on the invoice total (or any other attribute of the invoice or customer).
  • Custom field types do not affect formatting. For instance, a Hyperlink field type is not rendered with the "Link Text". In the case of the payment form link, the full URL is rendered instead of a user-friendly "Pay Online" link.

To add the link to the standard PDFs, just include {custbody_stripe_invoice_payment_link} in a text box.

Most likely, you'll want to control the text, formatting, etc of the invoice link in your PDF. You can use the "Advanced PDF/HTML Templates" for this.

If you'd like to customize when the payment link appears on your Invoice PDF there are two options:

  1. Customize the template using the NetSuite PDF template language (FreeMarker)
  2. Use SuiteScript to remove or customize custom fields and then include that field in your template

Customizing the template is usually the easiest way to go. Here's a quick start guide:

  1. Ensure that "Printing Type: Advanced" is enabled on your preferred invoice form
  2. Navigate to Customization > Forms > Advanced PDF/HTML Templates and customize the preferred Invoice template.
  3. If you'd like to include the invoice payment link as-is, add ${record.custbody_stripe_invoice_payment_link} to your template. You can customize the link text by editing the transaction body field. SuiteSync does not depend on any specific setting of the custbody_stripe_invoice_payment_link transaction body field aside from the default value, so you are free to edit any other aspect of the field.
  4. If you'd like to customize the link text, or other aspects of the link, switch the transaction body field to be a "Free-form text" field and create the link directly in the template. For example <a href="${record.custbody_stripe_invoice_payment_link}">Custom Link Text</a>
  5. If you want to conditionally add the invoice link to your template you can edit the template as HTML code and implement more advanced customizations. For instance, if you want to only show the invoice when the total of the invoice is greater than $100 and less than $2,000 you could use the following snipped:
<#if record.total gt 100 && record.total lt 2000>
<a href="${record.custbody_stripe_invoice_payment_link}">Pay Online</a>
</#if>

You can also use template logic to customize which payment methods are available (or any of the other customization options):

<#if record.total gt 100 && record.total lt 2000>
<a href="${record.custbody_stripe_invoice_payment_link}?card=false">Pay Online</a>
</#if>

Customizing advanced PDF templates is confusing. Here are some tips and helpful resources:

  • Both amountremaining and amountremainingtotalbox do not seem to exist on the record
  • If you encounter "Error: Outer tag is" you may have pressed "Enter" in a field that has strict formatting requirements
  • record contains all of the information about the invoice
  • companyInformation contains a reference to the company record. This is the data in your "Company Information" setup area. Hint: company information is actually stored as a single subsidiary record on your account.
  • Hyperlink fields include the <a> tag, not just the link target. If you want to customize the link text you need to convert the hyperlink field
  • FreeMarker Reference. This is the language NetSuite uses for templating.
  • Tutorial demonstrating some advanced usage
  • Tutorial demonstrating FreeMarker usage
Adding "Amount Remaining" to the NetSuite Invoice form

The "Amount Remaining" field (sometimes called "Amount Due") needs to exist on your invoice form in order for the payment form to work. If this field is not specified, you'll get a error page.

  1. Navigate to "Customization > Forms > Transaction Forms"
  2. View the preferred transaction form for Invoices. Or, if you are using another custom form for your invoices, use that form. View transaction forms
  3. Screen Fields > Amount Remaining. The name of this field is often "Amount Due"
  4. Save
Per-subsidiary Stripe Accounts

In some cases, you may have a unique account for each subsidiary. In this case you'll want to tie the Stripe account ID to the subsidiary using a custom field on the Subsidiary.

  • Customization > Lists, Records, and Fields > Other Custom Field > New
  • Configure field:
    • Record Type: Subsidiary
    • Label: Stripe Account ID
    • ID: _stripe_account_id
    • Type: Free-form text
    • Store Value: true
  • Save. Generated ID: custrecord_stripe_account_id
  • Enter in the Stripe Account IDs for your subsidiaries.
  • Change the default value on the "Stripe Invoice Link" field: https://app.suitesync.io/payments/test/{subsidiary.custrecord_stripe_account_id}/{id}
    • Note that the formula checkbox should be unchecked.

Here's a screenshot of what the transaction body field should look like:

Pay NetSuite Invoices with Multiple Subsidiaries

Sending Payment Reminder (Dunning) Emails

NetSuite workflows (or SuiteScripts) can be used to send customers automated emails throughout the collection process.

Here's an example of how to create a workflow to send an email to customers if their saved card failed to charge, or if they don't have a saved card or bank, one day after the invoice was due:

  1. Search for the "Stripe Billing Errors" saved search. It's easiest to plug page: Stripe into the global search.
  2. Edit the search
  3. Add a "Due Date/Receive By" filter. Don't set the value to be a specific day, but use a built-in day filter. For instance, if you want to send a payment reminder the day after a payment is due set the value to yesterday.
  4. Create a new workflow.
    • Record Type: Transaction
    • Sub Types: Invoice
    • Initiation: Scheduled
    • Saved Search Filter: Choose the search you just created
    • Frequency: Daily
  5. Click on "State 1"
  6. In the bottom left, click on "New Action" then choose "Send Email"
    • Recipient: From Field > Current Record > Email
    • Use ${transaction.custbody_suitesync_authorization_code} to include the payment link

Customer Accounts

Adding "Stripe Customer Account Link" to NetSuite

This can also be installed using bundle ID 195309.

  1. Customization > Lists, Records, and Fields > Entity Fields > New
  2. Configure field:
    • Label: Stripe Customer Account Link
    • ID: _stripe_customer_account_link
    • Type: Hyperlink
      • You may want to change the type to free-form text if you are primarily using this form in templates (emails, pdfs, workflows, etc)
    • Display > Subtab: Main
    • Display > Display Type: Disabled
    • Store value: false / unchecked
    • Description: Link to a SuiteSync-hosted payment form which allows customers make payments on their account using card or bank transfer.
    • Validation & Defaulting > Default Value: 'https://app.suitesync.io/customers/test/acct_/'||{id}||'/'||(to_number(({datecreated}- to_date('01-JAN-1970','DD-MON-YYYY')) * (86400)))
      • The acct_ value is unique to your account. This is your Stripe account ID.
      • The {id} is the internalID of the NetSuite invoice
      • If you have a multi-subsidiary configuration you'll want to use this formula 'https://app.suitesync.io/customers/test/'||{subsidiary.custrecord_stripe_account_id}||'/'||{id}||'/'||(to_number(({datecreated}- to_date('01-JAN-1970','DD-MON-YYYY')) * (86400)))
    • Validation & Defaulting > Formula: checked.
    • Applies To: Customer
  3. Save. Generated ID: custentity_stripe_invoice_payment_link

eCommerce

Creating the SuiteSync "Authorization Code" Field

This field is also called the "Stripe Transaction ID" field.

This custom field is more specifically a "custom NetSuite transaction body field". You can install it using bundle ID 170177 or create it using these instructions:

  1. Customization > Transaction Body Fields > New
  2. Create a new field to appear on SalesOrders and Invoices.
    • Label: "SuiteSync Authorization Code" (or "Stripe Transaction ID")
    • Description: "Field where Stripe charge or refund IDs should be entered"
    • ID: _suitesync_authorization_code
    • Type: free form text
    • Store Value: true
    • Applies to: Sale
    • Global Search: true. This enables you to search for transactions by the Stripe Charge ID.
  3. Save. Generated ID: custbody_suitesync_authorization_code

Authorization Code Example

Enabling Invoicing (Billing) before Order Fulfillment

Enabling this NetSuite feature will enable you to create Invoices before completely fulfilling a SalesOrder. You'll find the toggle for this feature here:

Setup > Accounting > Accounting Preferences > Invoicing > Invoice in Advance of Fulfillment

Once this feature is enabled, a bill button will appear on the order immediately after it's created. Read more about this feature in the NetSuite documentation.

Configuring SalesOrders to Create Invoices, and not CashSales

The form used on a SalesOrder determines if a Invoice or CashSale record is created when the order is billed. Here's what the NetSuite Documentation says about this:

Whether you create an invoice or cash sale for the sales order depends on the sales order form you originally used to enter the order. The cash sale form generates a cash sale and the invoice form generates an invoice.

If you are using a SalesOrder form that creates a CashSale, you’ll need to use a different form that creates invoices when a SalesOrder is billed. If you are using a customized form, you’ll need to customize the “Standard Sales Order - Invoice” form.

You can customize forms here.

Multiple Shipping Stages

This feature doesn't interface with or effect the eCommerce integration, but there is a feature that's hard to find that enables Item Fulfillments (shipments) to have multiple states. This is super helpful for integrating Item Fulfillments with a 3PL service: you can create a item fulfillment in the "picked" status and then move it to "shipped" when the 3PL has notified you when the package has shipped.

Here's where you can enable this feature:

Setup > Setup Tasks > Enable Features > Transactions > Shipping & Receiving > Advanced Shipping

SalesOrders that have been approved cannot be cancelled

From the NetSuite documentation:

By design, only Sales Order with 'Pending Approval' status can be Cancelled.

If you are building out automated fraud review workflows using the Stripe fraud integration with NetSuite this is something to keep in mind.

Credit Memo Without Refund

If you have refunds from NetSuite enabled, a refund is issued in Stripe when a Credit Memo is created (only if the invoice was paid with a Stripe payment).

This is triggered by the presence of a Stripe payment ID on the Credit Memo. If you want to prevent a refund from being issued, you just need to hide/remove the Stripe payment ID from the CreditMemo. Payment IDs start with either a ch_ or py_ prefix.

One way to do this is to remove the "Stripe Transaction ID" field (custbody_suitesync_authorization_code) from the default form and setup a new custom form to use when triggering refunds:

  1. Find the default preferred form
  2. Find "Stripe Transaction ID" field and hide it. Normally under the custom field screen fields list.
  3. Change form name to "CreditMemo with Refund" or something along those lines
  4. Save as

Embedded Payments (Payments inside NetSuite)

Our embedded payments form enables you to pay NetSuite transactions with Stripe securely in any of your systems. This is most commonly used to enable sales reps to use Stripe to process phone orders within the NetSuite interface, but this form can be used for many other purposes as well.

Available Features and Options

There are options available which change how the payment form operates in NetSuite. These options can be set separately for payments on invoices and payments through the script deployments for each of those records.

Here's how to find the script deployments:

  1. Do a global search for page: Scripts
  2. Search the page for SuiteSync Stripe Payment Processing and click view on the resulting script
  3. Go to the "Deployments" tab. You will see two deployments: Invoice & SalesOrder.

These options are available as parameters on each of the script deployments.

  • "Stripe Account ID". This should be the ID of your Stripe account (normally starts with acct_).
  • "Capture Charge" (_txn_capture_charge). Allows the user the option to capture, or authorize, a payment. If you always want to capture payments, remove this script parameter. If you'd like to default the form to capture payments set this field to true.
  • "Store Credentials" (_txn_store_credentials). Allows the user the option to store payment credentials for future use. Delete this script parameter if you do not want to allow customers the option to store cards. Set this script parameter to true if you'd the form to store cards by default, and set the script parameter to false if you'd like to default the form to not store credentials.
  • "Saved Cards" (_txn_saved_cards). Allows the user to charge saved cards associated with a customer.
  • "Embed Key". This is a security token used by the integration. Contact support for this token.

There are also some undocumented options available to change options such as which Stripe account is used, what statement descriptor is used, etc. Contact support about your use-case for more information.

Limiting Access to Payment Processing in NetSuite

You can limit who has the ability to run payments through Stripe by changing the permissions associated with the script deployments.

Fraud (Radar)

Fraud Message Field
  1. Customization > Transaction Body Fields > New
  2. Create new field to appear on CashSale, SalesOrders, and Invoices.
    • Label: "Stripe Fraud Message"
    • ID: _suitesync_fraud_message
    • Description: "A field to store feedback from Stripe's fraud system. If a CashSale, SalesOrder, or Invoice is associated with a possibly fraudulent charge, this field will have content."
    • Type: Free-form Text
    • Store Value: true
    • Applies To: Sale
    • Subtab: Main
Fraud Processed Field
  1. Customization > Transaction Body Fields > New
  2. Create new field to appear on CashSale, SalesOrders, and Invoices.
    • Label: "Stripe Fraud Processed"
    • ID: _suitesync_fraud_processed
    • Description: "A checkbox which indicates if the transaction has been checked for fraud by Stripe's system."
    • Type: Checkbox
    • Store Value: true
    • Applies To: Sale
    • Subtab: Main

Revenue Recognition

You can learn more about how revenue recognition works through this guide.

Old (pre-2017) Revenue Recognition

Creating a Deferred Revenue Account

A deferred revenue account is a special account type in NetSuite. Here's how to create the account:

  1. Visit Setup > Accounting > Chart of Accounts
  2. Create a new account unless the user specifies they want to use an existing account.
    • Type: Deferred Revenue
    • If subsidiaries are enabled, ensure that a parent subsidiary is picked with "Include Children" is enabled.
Creating a Revenue Recognition Template
  1. Visit "Revenue Recognition Templates"
  2. Create a new revenue recognition template
    • Name: Stripe Revenue Template
    • Type: Standard
    • Method: Straight-line, by even periods
      • "Straight-line, by exact days" can be used as well. Ask your accounting department what would be best.
      • Do not change the method of an existing rev rec template, create a new template instead.
    • Term source: Rev Rec Dates Specified on Transaction
    • Period offset: 0
    • Start offset: 0
    • Recognition Period: blank. The start and end dates specified on the invoice is used in place of the recognition period.

Here's an example of what the rev rec template should look like:

Rev Rec Template Example

Advanced Revenue Recognition

This is the guide to setting up rev rec from a system admin perspective. If you are interested in the details of how Stripe ties into NetSuite's rev rec engine from a finance perspective, check out this guide.

  1. Create a rev rec rule
  2. Create an item and associate it with a rev rec rule
  3. Create transaction column fields to store subscription start and end dates from Stripe
  4. Create a rev rec mapping to source the rev arrangement start and end date from the custom column field level
  5. Set a preferred rev rec arrangement form
Creating a Rev Rec Rule
  1. Create new "Revenue Recognition Rule"
    • Name: Stripe Rev Rec Rule
    • Recognition Method: Ask your finance team.
    • Rev Rec Start Date Source: Arrangement Transaction Date
    • Rev Rec End Date Source: Arrangement Transaction Date
    • Term in Months: 0. Term will be driven from the invoice.
  2. Save. Make sure you set any Stripe items to this rev rec form.
Revenue Field Mapping

Start date:

  • Source Record Type: Transaction Line
  • Source Field: SuiteSync Rev Rec Start Date
  • Target Field: Forecast Start Date

End date:

  • Source Record Type: Transaction Line
  • Source Field: SuiteSync Rev Rec End Date
  • Target Field: Forecast End Date
Refreshing Plans

When you are testing rev rec in the NetSuite sandbox the rev arrangements are not generated in real time after the invoice is created.

However, you can "force" the rev arrangements to be created by going to the "More
Update Revenue Arrangements and Revenue Plans"
and clicking:

  1. Refresh
  2. Update Revenue Arrangements
  3. Update Revenue Plans
Create Rev Rec Start Date Custom Transaction Column Field

Note that this field is normally installed automatically using a bundle.

  1. Customization > Lists, Records & Fields > Transaction Column Fields > New
  2. Create new field
    • Label: SuiteSync Rev Rec Start Date
    • ID: _suitesync_rev_rec_start
    • Description: The start date for the revenue recognition schedule of Stripe subscription line items
    • Type: Date
    • Store Value: Check
    • Applies To: Sales Item
  3. Save. Finalized ID: custcol_suitesync_rev_rec_start
Create Rev Rec End Date Custom Transaction Column Field
  1. Customization > Lists, Records & Fields > Transaction Column Fields > New
  2. Create new field
    • Label: SuiteSync Rev Rec End Date
    • ID: _suitesync_rev_rec_end
    • Description: The end date for the revenue recognition schedule of Stripe subscription line items
    • Type: Date
    • Store Value: Check
    • Applies To: Sales Item
  3. Save. Finalized ID: custcol_suitesync_rev_rec_end
Setting a Preferred Rev Rec Arrangement Form

By default, there's not a preferred rev rec arrangement form configured. This triggers the following error when attempting to view a rev rec arrangement:

"No appropriate forms are enabled for this role. Please contact your Administrator"

To fix this issue:

  1. Visit the custom transactions form page
  2. Find the "Revenue Arrangement" row
  3. Ensure the "Preferred" checkbox is selected
  4. Press save

Stripe Application Configuration

CVent

  • CVent sets three metadata fields: Comment1, Comment2, and (you guessed it!) Comment3. The charge description does not contain any of this data.
  • Comment1 is the event ID. It's recommended to create a custom field in NetSuite to store this information on the invoice:
    • Name: "CVent Event ID"
    • ID: _cvent_event_identifier
    • Free-form text, store value, only needs to be available on "Sale".
  • One-time tokens are used. There are no customer records in Stripe.
  • There is no application fee.
  • When this inspection was done CVent was using Stripe API version 2017/02/14 with bindings Stripe/v1 .NetBindings/7.2.0

Teachable

  • Charge description is the name of the course/lesson that was purchased
  • An application fee is charged
  • One-time tokens are used. There are no customer records in Stripe.
  • Additional information is passed in the metadata:
    • email customer email.
    • product_name matches the description
    • product_ref this is the best option for mapping. It's recommended to create a custom field in NetSuite to store this information on the invoice:
      • Name: "Teachable Product Reference"
      • ID: _teachable_product_ref
      • Free-form text, store value, only needs to be available on "Sale".
    • provider_ref
    • username
  • When this inspection was done, Teachable was using Stripe API version 2014-11-05 with bindings Guzzle/3.9.3 curl/7.19.7 PHP/5.6.31

Payment Application

Saved Search for Unapplied Payments

This saved search can be used to select invoices which could not be automatically
applied to an invoice using the payment application workflow.

  • Title: "Stripe Unapplied Payments"
  • ID: _stripe_unapplied_payments
  • Criteria
    • Type: is Payment
    • Memo: contains Stripe Error: no invoice match found
    • Main Line: is true

Automatic Billing

Saved Search for Failures

Here's a saved search you can create to select any invoices which encountered an error during the automatic billing process. This search can be installed using bundle ID 170427 ("Stripe Billing & Refund Errors").

  • Title: "Stripe Billing Failures"
  • ID: _stripe_billing_failures
  • Criteria:
    • Type: Invoice
    • Main Line: true
    • Status: Open
    • Memo: contains "Stripe". This is an indicator that we've passed back information about why the charge failed. If you are looking to just identify which invoices need to be rescheduled for billing just keep it simple omit this criteria.