The quick answer
Open the invoice and check that its status is Paid In Full with an Amount Due of 0.00. On Related Records, open the payment PayPack created and confirm it is applied to the invoice, sits in Undeposited Funds, and shows Set by -System- with a Context of Script (Suitelet) under System Information > System Notes. Then go to PayPack > Logs > Payment Intent and find the row for that invoice: Status succeeded, the same amount, and a Charge Log reference. The thank-you page the customer sees is not proof of any of this.
The screenshots show sample data. Person and operating-company names are fictional.
Before you start
PayPack is a third-party SuiteApp that connects NetSuite to Stripe, not a NetSuite feature. This guide assumes it is installed, connected to Stripe, and has payment links turned on, so the invoice already carries a Payment Link on its PayPack Data subtab. Setting that up is a separate job. The page names, the payment methods offered, and the log columns below come from the version shown and can differ in yours.
You need a role that can open invoices, customer payments, and the PayPack logs. This walkthrough runs in a Stripe sandbox, so the payment uses a card number Stripe publishes for testing. Never enter a real card in a sandbox. Everything the customer sees on the payment page is hosted by PayPack, not NetSuite.
01. Open the invoice before the customer pays
Start from an open invoice so you know what "recorded" should look like afterward. Here that is invoice 1047 for Brightwater Cafe Co., two Trail Lantern Kits at 214.50. Its status is Open, the Summary total is 429.00, and Amount Due is also 429.00.
Open the PayPack Data subtab, then PayPack Fields. Payment Link holds the address PayPack generated for this invoice. It is the link the customer gets on the invoice email or PDF. It carries an access token, so treat it like a password-reset link and don't paste it into tickets or chat.
02. Pay on the PayPack payment page
The customer opens the link. PayPack's payment page shows the invoice: Invoice Total $429.00, Amount Due $429.00, and Invoice # 1047. Card is selected here, next to Cash App Pay, US bank account, and Affirm. Which methods appear depends on your PayPack setup and your Stripe account. The test card below applies to Card only. Bank account, Cash App Pay, and Affirm have their own test flows, and bank payments can sit in a processing state before they succeed.
Enter the test card 4242 4242 4242 4242, an expiration date in the future (12 / 29 here), any three-digit security code, and any ZIP code. Then click Pay $429.00 USD.
The thank-you page shows a Payment Summary with the invoice, the Payment Transaction Id (a Stripe charge ID starting with ch_), the date, Visa ....4242, and a Paid Amount (USD) of $429.00.
That proves Stripe took the card payment. It doesn't prove NetSuite recorded, applied, or deposited anything, so the rest of this guide checks the NetSuite side.
03. Check the invoice
Back in NetSuite, open invoice 1047 again. The status is now Paid In Full and Amount Due is 0.00.
Click Related Records. The payment appears as PYMT1742 for 429.00 with the status Not Deposited. Nobody keyed it in. PayPack created it when the Stripe payment succeeded.
04. Check the customer payment PayPack created
Click PYMT1742. The payment is Not Deposited, Account is 1090 Undeposited Funds, and the Summary shows 429.00 applied and 0.00 unapplied. Not Deposited means the money is not in a bank deposit yet. Which account a PayPack payment uses comes from PayPack's account mapping, not from the card, so your account may use a different one.
Open the System Information subtab and look at System Notes. Every row shows Set by -System- and Context Script (Suitelet), ending with a Create entry for the record. That means the record was created in a script context, not by a user clicking Save. It doesn't name PayPack as the script, and -System- can appear for other automated processes. Match the date, invoice, and amount to the PayPack log in the next step before you attribute the payment to PayPack.
05. Find the payment intent in PayPack's log
Go to PayPack > Logs > Payment Intent. The PayPack Payment Intent List has one row per payment attempt. The new row for Invoice #1047 has an Intent Id starting with pi_, Status succeeded, Total Amount and Amount of 429.00, and Charge Log 3. That is the PayPack charge record behind PYMT1742. The log row shows the processor-side result, so it supports the NetSuite payment but doesn't replace checking the payment itself. In this version the list doesn't show the payment number, so you match by invoice, amount, and date.
Check the result
- Invoice 1047 is Paid In Full with an Amount Due of 0.00.
- Related Records shows payment PYMT1742 for 429.00, Not Deposited.
- PYMT1742 is in 1090 Undeposited Funds, fully applied, and System Notes show -System- in a Script (Suitelet) context.
- The Payment Intent log has a succeeded row for Invoice #1047 for 429.00 with a Charge Log reference.
Getting the money from Undeposited Funds to the bank is a separate step this walkthrough doesn't show. If PayPack's payout reconciliation is enabled and configured, it can create the deposit once the Stripe payout is matched. Otherwise the deposit comes from your usual process, such as Make Deposits.
If the thank-you page said success but NetSuite shows no payment, find the Stripe payment and charge IDs, then look for the invoice in the Payment Intent log and read its Error Message. Common causes to check are an invoice that was already closed, a customer, subsidiary, or currency mismatch, a payment created but left unapplied, and delayed processing from a webhook or queue. Don't enter a manual payment until the PayPack attempt is confirmed failed or unrecoverable, or the invoice can end up paid twice.
Common questions
Does the thank-you page mean NetSuite recorded the payment?
No. The charge ID on that page comes from Stripe. NetSuite has recorded the payment only when the invoice is Paid In Full, a payment sits under Related Records, and the Payment Intent log shows a succeeded row.
Why is the PayPack payment in Undeposited Funds?
PayPack creates the customer payment in the account its mapping points to, and in this setup that is 1090 Undeposited Funds with the status Not Deposited. The money moves to a bank account when a deposit is made, either by PayPack's payout reconciliation if it is configured or by your normal deposit process.
How can I tell a script-created payment from one a user entered?
Open the payment and check System Information, then System Notes. Set by -System- and Context Script (Suitelet) mean a script created it. A user entry shows that person's name and a user-interface context. The note doesn't name PayPack by itself. Match the date, invoice, and amount to the PayPack log before you attribute it to PayPack.
What do Payment Intent and Charge Log mean in PayPack?
A payment intent is Stripe's record of an attempt to collect a payment, and PayPack lists every attempt in the Payment Intent log. Succeeded is the processor-side status, so it supports the NetSuite payment without replacing the invoice and payment checks. Charge Log points to the PayPack charge record tied to a successful intent. In the setup shown, a succeeded intent leads to a charge log and a customer payment applied to the invoice.
A customer paid through the link but the invoice is still open. What should I check?
Look up the invoice in the Payment Intent log. If the row is processing, wait, since methods such as ACH take longer. If it failed, read the Error Message. If there is no row, find the payment in Stripe and check whether PayPack received the event. Don't record a manual payment until the attempt is confirmed failed or unrecoverable, and check for a payment created but left unapplied.
Which card can I use to test a PayPack payment link?
In Stripe test mode, use 4242 4242 4242 4242 with any future expiration date, any three-digit security code, and any ZIP code. Never use a real card in a sandbox.