Pay Balance

The Pay Balance feature provides the opportunity for you to give each of your customers a "Pay Now" link that lets them see all their open invoices and sales orders. Your customer will be able to select the items they want to pay and make a single payment for all their selected items.

FeatureReason
Each document the customer clicks is paid in fullKeeps your A/R clean — no partial payments to reconcile or chase
One currency per paymentA single charge cannot span currencies; the customer simply pays each currency in turn
Invoices and sales orders are never mixed in one paymentSales orders and invoices are different NetSuite records. If your customer wants to pay both they run two payments
Payment details never reach NetSuiteThe payment itself happens on BlueSnap's PCI-compliant hosted checkout

Prerequisites

Before you begin you will need:

  • The BlueSnap SuiteApp installed
  • A working BlueSnap payment processing profile for each subsidiary, and currency, you want to collect in which are the same profiles the SuiteApp already uses for card payments.
  • Administrator access in NetSuite, to check script deployment and to edit the BlueSnap connection record.
  • Add Pay Link to your invoice, sales order and statement templates

Setup

Step 1 — Activate Pay Link

Open the BlueSnap Connection record (the extension on your payment processing profile) for each subsidiary that you want to offer the Pay Link, and set the following:

FieldWhat it doesDefault
Enable Pay Balance LinkMaster switch for this subsidiaryOff
Pay Balance - Allow InvoicesList open invoices on the pageOn
Pay Balance - Allow Sales OrdersList open sales orders on the pageOff
Pay Balance - Link Expiry (Days)How long a pay link stays active without being used.
Note: Every time your customer opens the link the expiration clock resets
90
Pay Balance - Rotation Grace (Days)How long the old link keeps working after you regenerate it, so statements already in inboxes don't break. 0 = immediate cut-over7
Pay Balance - Max DocumentsHow many rows are listed and payable in one go (maximum 100)50

These settings are per subsidiary, so you can pilot one entity before rolling out to the rest.

Step 2 — Check the public page is published

The customer-facing page is a NetSuite Suitelet that has to be accessible without a login.

Go to Customization → Scripting → Script Deployments and open the deployment of customscript_bls_pay_balance_suitelet and validate the following settings:

SettingValue
StatusReleased
Available Without LoginChecked
Audience → RolesIncludes Online Form User

Note: The Audience --> Roles is important since without this set correctly, anonymous visitors arrive as the Online Form User role, and NetSuite's "All Roles" option only covers internal roles. Without this set, every customer sees "You do not have privileges to view this page" even though their link is perfectly valid.

A clean install will have all three settings set correctly. Only check them if your deployment was created by an older version of the SuiteApp.

Step 3 — Validate

Before touching any template:

  1. Pick a customer with two or three open invoices.
  2. Open the customer record and press Generate Pay Balance Link. The link appears on the BlueSnap subtab.
  3. Copy it and open it in a private/incognito window. You should get the "confirm it's you" page, then that customer's open invoices.
  4. If anything is off, your administrator has a read-only diagnostics view that shows exactly what the page can and cannot see for a given customer — see the administrator reference, PAY_BALANCE_LINK.md.

Step 4 — Add the link to your templates

You need to add the links to your template so be sure to add it where you already ask to be paid:

TemplateMerge field
Invoice / sales order (Advanced PDF/HTML)${transaction.custbody_bls_pay_balance_link}
Invoice or sales-order email${transaction.custbody_bls_pay_balance_link}
Customer statement${customer.custentity_bls_pay_balance_link}
Dunning / collection letters${customer.custentity_bls_pay_balance_link}

Guard the merge field while you roll out, so customers who don't have a link yet don't get a "Pay now" button with nothing behind it:

<#if transaction.custbody_bls_pay_balance_link?has_content>
  <p>Pay this invoice or any part of your balance online:
     <a href="${transaction.custbody_bls_pay_balance_link}">Pay now</a></p>
</#if>

The transaction field sources are associated with the customer, so the moment a customer is issued a link, every open document of theirs carries it — including invoices raised years ago.

Step 5 — Add Pay Links for your Existing Customers

New and edited customers are issued a link automatically. Existing customers are not impacted so you have three ways to get them a link:

MethodHow it worksWhen to use it
Manual generationOn the customer record, click Generate Pay Balance Link.Default, on-demand method — use when A/R needs a link for one customer right now.
Auto-generation on saveSaving a customer record with an empty link field automatically issues one.Passive coverage — no setup required; links fill in naturally as A/R works through customer records.
Bulk backfillRun from the BlueSnap Pay Balance Links console (admin access required).Proactive setup — use to generate links for all customers before a statement run. Defaults to customers with an open balance; supports a dry-run to preview before committing.

Note: Issue Pay Links on demand rather than all at once. The expiration timer starts when a link is issued and only resets when the customer uses it.

Step 6 — Verify the field is visible on your forms

The two link fields are inline text and they render as a clickable link, and NetSuite hides them completely if they are empty. So a customer with no link shows no field and no BlueSnap subtab — that's normal, not a broken install.

If a customer has a link and the field still doesn't show, your custom form is hiding it: Customization → Forms → Entry Forms (or Transaction Forms) → the form in use → Fields → click Show for BlueSnap Pay Balance Link.

Day-to-day use

Customer record buttons

ButtonWhat it does
Generate / Regenerate Pay Balance LinkIssues a fresh link. The old one keeps working for the rotation grace window, so statements already sent don't break.
Revoke Pay Balance LinkTerminates every link for that customer immediately and clears the field.

Automatic actions

  • A customer saved without a link gets one (if the feature is on for their subsidiary, and their links were never revoked).
  • Five wrong answers in a row at the "confirm it's you" step locks that link for 30 minutes. It unlocks itself.
  • A link that is never opened for a full expiry window stops working.

Keeping Pay Links alive

A Pay link that gets used stays alive indefinitely — every time it's opened the expiration date extends. For example, a customer who only pays once a quarter will not have the link become expired since it is being used within the allowed time table as set in Pay Balance - Link Expiry (Days)

Links that expire are not renewed automatically, and the expired URL stays on the customer record until someone acts.

There are three ways to manage the expiration:

  • Reactively — when a customer says the link doesn't work, press Regenerate and resend.
  • Proactively — a saved search on BlueSnap Pay Balance Token for status Active and Expires on or before today +30 gives you a monthly worklist.
  • In bulk — the Repair job on the Pay Balance Links console regenerates every already-expired link. Your administrator can put it on a monthly schedule.

Impacts within NetSuite

What the customer selectedWhat NetSuite creates
InvoicesOne Customer Payment, applied line by line to each invoice they selected
Sales ordersOne Customer Deposit per order, with the charge split across the orders
EitherPosted to Undeposited Funds — settlement reconciliation builds the bank deposit as usual
Surcharge (if enabled)A Cash Sale for the surcharge, same as with any other BlueSnap payment

Every booked record carries the BlueSnap transaction reference, so settlement reconciliation and refunds work exactly as they do for any other payment through the SuiteApp.

Amounts are always re-checked against NetSuite. If an invoice was paid or credited somewhere else between the customer loading the page and paying, the surplus stays unapplied on the Customer Payment as a credit on the customer's account rather than being over-applied or lost.

If a payment can't be safely booked — a currency or amount mismatch, for example — nothing is booked and the payment session is marked Blocked with the reason on it. A saved search of blocked sessions is your exception worklist; each row names the customer, the documents, the amount and the BlueSnap reference needed to enter it by hand. This is rare and always visible; a charge is never taken and silently forgotten.

FAQ

  • Does my customer need a NetSuite login or portal account?
    No. There's nothing to provision, nothing for them to remember, and no per-user license.
  • Can my customer pay part of an invoice?
    No. Every document they select is paid in full, at the amount still due at the time of payment. If you need partial payments, use a different mechanism.
  • What if they owe money in two currencies?
    They pay each currency separately — two visits to the same link, two charges. The page prompts them to pay one currency at a time.
  • Can they pay invoices and sales orders together?
    No — these become different NetSuite records. They pay the invoices, then the orders, as separate transactions.
  • How many documents can they pay at once?
    Up to your Max Documents setting (default 50, ceiling 100). If they select a very large batch, the page may prompt them to pay in smaller batches instead.
  • Is it one link per customer, or one per invoice?
    One per customer, reusable indefinitely. The per-invoice link still exists as a separate feature, and the two run side by side.
  • Does the link change?
    Only when you regenerate or revoke it. Normal use never changes it, which is what makes it safe to hard-code into templates.
  • Does the link expire?
    Only through inactivity — 90 days with no use by default. Every time the customer opens it, the clock resets. Customers who pay regularly keep the same link indefinitely.
  • What happens when a link expires?
    The customer sees a neutral "this link is no longer valid, please contact us" message, and the reason is recorded in your access log. Click Regenerate and resend the link. Expired links are not renewed automatically — see Keeping Links Alive.
  • What if a customer forwards the link to someone else?
    That person can pay those invoices if they also know one of the customer's document numbers. Since the outcome is money arriving against the correct account, this is usually harmless — but revoke the link if it has gone somewhere it shouldn't.
  • Can two people pay the same invoice twice?
    No. A document with a payment in progress is shown as locked and can't be selected in a second checkout for the next 30 minutes.
  • Does this work with surcharging?
    Yes. If surcharging is enabled on your connection record, it applies here the same way it does to any other BlueSnap payment.
  • Does it work with multiple subsidiaries?
    Yes. The feature and its settings are per subsidiary, and the profile that takes the charge is resolved by subsidiary and currency, as with any other payment.
  • Do my old invoices get the link?
    Yes, automatically. The transaction field sources live from the customer record, so every open document picks up the link as soon as the customer has one — no re-saving, no data migration required.
  • What happens to existing customers when I install the upgrade?
    Nothing — no script runs across your customer list. They get links via the button, their next save, or the Backfill job. See Step 5: Get Links Onto Your Existing Customers.
  • How do I turn it off?
    Uncheck the Enable Pay Balance Link. New links stop being issued and existing links stop working immediately. Note that URLs already stamped on customer records are not cleared — if you're backing the feature out entirely rather than pausing it, remove the merge field from your templates or revoke the links first.
  • Can I see who used a link?
    Yes. Every request against a link is recorded with timestamp, IP address, browser, and outcome.
  • What does the customer see if something goes wrong?
    Your customer will see an error message with some practical guidance but never a technical error or a hint about the cause. The specific reason is recorded in your logs for support.

Quick Troubleshooting

ErrorAction
"You do not have privileges to view this page"Online Form User is missing from the page's audience, or Available Without Login is off
"This payment link is no longer valid"The link expired, was revoked, or is locked after failed verification. Click Regenerate and resend.
Same message appears right after enablingEnable Pay Balance Link is off for that customer's subsidiary, or the subsidiary has no active BlueSnap profile.
Links stopped working for an entire subsidiaryThe master switch was unchecked, or its only BlueSnap profile was made inactive.
"Online payment is not available for these documents"No BlueSnap profile matches that subsidiary and currency combination.
No BlueSnap subtab or link field appears on a customerIf the field is empty, NetSuite hides empty inline-text fields — click Generate. If it has a value and still doesn't show, your form is hiding it
Invoices show no link even though the customer has oneThe template doesn't merge the field yet, or the transaction form hides it
A link opens a NetSuite error pageIt was generated before the page deployment was correct. Fix the deployment, then click Regenerate on the affected customers — existing links aren't corrected in place.
Existing customers have no links after the upgradeExpected behavior
A document is stuck showing "payment in progress"A payment attempt is holding it. It clears within 30 minutes, or as soon as the payment completes or declines.
A payment was taken but nothing was bookedThe session is Blocked and names the reason. Fix the underlying cause, then enter the payment manually using the BlueSnap reference on the session.
A payment booked with an unapplied balanceExpected when an invoice was settled elsewhere mid-payment. The surplus sits as a credit on the customer's account.