NetSuite draft invoices
Push approved true-up lines to NetSuite as invoices in Pending Approval, so your own approval workflow releases them. Growth plan.
On this page
TrueUpp creates one invoice per contract and period in Pending Approval; your NetSuite approval routing releases it. One line per approved true-up line, posted to a service item you choose, with the calculation summary in the description. Your NetSuite administrator needs about thirty minutes. Try it in a sandbox account first.
1. Turn on the features
In Setup › Company › Enable Features: on the SuiteCloud tab enable REST Web Services and OAuth 2.0; on the Accounting tab enable Invoice Approval (and set up approval routing if you haven't).
2. Create the integration record
In Setup › Integration › Manage Integrations › New, name it "TrueUpp", tick Client Credentials (Machine to Machine) Grant and the REST Web Services scope, and untick everything else. Save and copy the client ID; it's shown only once.
3. Create and map a certificate
Create a key pair on your machine. TrueUpp signs with PS256, so the key must be RSA:
openssl req -new -x509 -newkey rsa:4096 -keyout trueupp_private.pem \
-sigopt rsa_padding_mode:pss -sha256 -sigopt rsa_pss_saltlen:64 \
-out trueupp_public.pem -nodes -days 730 -subj "/CN=TrueUpp"In Setup › Integration › OAuth 2.0 Client Credentials (M2M) Setup › Create New, choose an integration user, a role that can create and view invoices and customers, the TrueUpp application, and upload trueupp_public.pem. Copy the certificate ID from the list. Put a reminder in your calendar before the certificate expires.
4. Create the true-up item
Create a Non-inventory Item for Sale (or a Service item) named "Usage true-up", posting to your usage revenue account, and note its internal ID. In OneWorld accounts, note the subsidiary's internal ID too.
5. Connect TrueUpp
- Your account ID is in Setup › Company › Company Information (sandboxes look like
1234567_SB1). - In Settings › Connections › NetSuite, enter the account ID, client ID, certificate ID, item and subsidiary IDs, and paste all of
trueupp_private.pem. TrueUpp requests a token to check the setup before saving. - Under Billing system, choose NetSuite.
- On each contract, enter the NetSuite customer's internal ID.
Pushes are idempotent through the invoice's external ID. TrueUpp checks pushed invoices daily: once approved, the lines become invoiced and the amount is recorded for the expected-versus-invoiced check; a rejected or deleted invoice is flagged for a decision. If your account's REST record service can't set approval status, a RESTlet on your account's own RESTlet domain can be used instead.