01
About this portlet
Shows Bills due in the next 30 days on a NetSuite home dashboard as a table of ten rows per page, soonest due first, with the bill, vendor, dates, days until due and unpaid amount. It is meant for whoever prepares the payment run.
After import, give the report an audience. Then, on a NetSuite dashboard, choose Personalize and add a Custom Portlet. On the new portlet, choose Set Up and pick Advanced Report - Bills due in the next 30 days. The portlet shows only to people who can open the report.
02
What it carries
The portlet reads 1 report. They travel in the same file, so the import creates them first.
03
Sample preview
Fictional figures in the shape you will see. Yours come from your account.
| Bill | Vendor | Bill date | Due date | Days until due | Currency | Unpaid (bill currency) | Unpaid |
|---|---|---|---|---|---|---|---|
| B-7781 | Ridgeline Contractors | 2026-07-02 | 2026-08-01 | -54 | US Dollar | 2,250 | 2,250 |
| B-7902 | Ridgeline Contractors | 2026-08-10 | 2026-09-09 | -15 | US Dollar | 4,500 | 4,500 |
| PO-3319 | Pacific Office Partners | 2026-09-01 | 2026-10-01 | 7 | US Dollar | 3,120.40 | 3,120.40 |
| INV-44120 | Cloudway Hosting | 2026-09-15 | 2026-10-15 | 21 | US Dollar | 14,200 | 14,200 |
04
The SuiteQL
This is the query each report runs. Read it, copy it, or change it after import.
SELECT t.id AS bill__id,
NVL(t.tranid, t.transactionnumber) AS bill,
NVL(v.altname, v.entityid) AS vendor,
TO_CHAR(t.trandate, 'YYYY-MM-DD') AS bill_date,
TO_CHAR(t.duedate, 'YYYY-MM-DD') AS due_date,
TRUNC(t.duedate) - TRUNC(SYSDATE) AS days_until_due,
BUILTIN.DF(t.currency) AS currency,
t.foreignamountunpaid AS unpaid_fx,
t.foreignamountunpaid * t.exchangerate AS unpaid
FROM transaction t
JOIN entity v ON v.id = t.entity
WHERE t.type = 'VendBill'
AND t.posting = 'T'
AND t.foreignamountunpaid > 0
AND NVL(t.duedate, t.trandate) <= TRUNC(SYSDATE) + 30
ORDER BY NVL(t.duedate, t.trandate)