Connecting Rillet
Last updated: October 6, 2026
Stackpack supports a read-only integration with Rillet that pulls vendor spend into Stackpack. This builds your vendor list automatically and keeps each vendor's spend history current. Stackpack never writes to Rillet.
For what Stackpack keeps from your accounting system, and what it does not, see What Stackpack stores from your accounting system.
Authentication
Rillet issues long-lived API keys scoped to an organization. You create one in Rillet and paste it into Stackpack. Stackpack verifies the key against your Rillet organization before saving it. There is no sign-in redirect and nothing expires on a schedule; the key changes only when you replace it.
Requirements
A Rillet user who can create API keys for your organization.
An organization-scoped API key. Stackpack needs read access to bills, charges, reimbursements, vendor credits, journal entries, accounts, vendors, subsidiaries, and the organization record.
Caveats
Stackpack currently operates in USD. Amounts are read as recorded on each Rillet document and are not converted, so companies with non-USD documents will see those amounts summed as-is. Multi-currency support is on our roadmap.
One profile connects one Rillet organization. If you later replace the key with one scoped to a different organization, Stackpack rejects it; disconnect and connect a new profile instead.
Rillet Subsidiaries (legal entities) are read as Stackpack Locations. Rillet has no class or department dimension, so Stackpack Departments are not populated from Rillet.
If the API key is revoked or deleted in Rillet, the profile stops syncing until you replace the key.
Connecting
During onboarding
On the "Sync with Rillet" step, click Connect to Rillet.
Enter a name for the profile and paste your Rillet API key, then click Connect.
Stackpack verifies the key and the first sync starts immediately.
From Company Settings
Go to Company Settings → Integrations → Rillet and click Connect (or Add profile if a profile already exists).
Enter a name for the profile and paste your Rillet API key, then click Connect.
Replacing the key. Click Replace API key on the profile and paste the new key. Stackpack verifies it belongs to the same organization, then resumes syncing without changing any synced data. Use this when a key is rotated or revoked.
Disconnecting removes the profile and its stored key from Stackpack and stops syncing. Rillet has no revoke call for Stackpack to make, so also delete the key in Rillet if you no longer want it to exist.
Sync schedule and window
The first sync runs when you connect. After that, Stackpack syncs automatically once a day.
Stackpack retains spend for the current calendar year plus the two prior calendar years. (During January through March, one additional prior year is retained so year-over-year comparisons remain available.)
Each sync re-reads the months since the previous sync, and the prior quarter is fully refreshed at the start of each new quarter. Late edits and credits in Rillet are therefore picked up and applied to the month of the original document date.
What Stackpack reads from Rillet
Reference lists: Chart of Accounts, Vendors, Subsidiaries, and the Organization record.
Documents, filtered by document date. Stackpack records one entry per document line, so a bill split across three accounts produces three entries.
Rillet document | Recorded as | Dated by | Sign |
|---|---|---|---|
Bill | Bill | Bill date | Positive |
Charge (card or out-of-pocket) | Credit Card | Charge date | Positive |
Reimbursement | Expense | Bill date | Positive |
Vendor credit | Vendor Credit | Credit date | Negative (offsets prior spend) |
Journal entry linked to a vendor | Journal Entry (Debit or Credit) | Entry date | Positive; tracked separately as accrual spend |
Bills, charges, and reimbursements are read regardless of payment status, so spend is recognized when the document is dated rather than when it is paid. Bill payments are not read separately, which avoids double counting.
Journal entries count only their expense-account lines. Rillet attaches the vendor to the entry as a whole, so the balance-sheet line that funds the entry would otherwise count the same spend twice. Journal entries with no linked vendor are not read.
Line-level exclusions. A line is skipped when any of the following is true:
Its document has no date.
Its document has no vendor, or the vendor cannot be found in your Vendors list.
Its amount is zero or unreadable.
Its account is typed Asset, Equity, or Income in Rillet. Expense and Liability accounts (which cover accounts payable, accrued expenses, and credit cards) are included. For journal entries, only Expense accounts are included.
Its account is on the profile's excluded GL account list, if your Stackpack administrator has configured one.
A line whose account code cannot be matched to your Chart of Accounts is kept, since a missing account is a data gap rather than a sign the line is not spend.
Fields captured per document line
Field | Rillet source |
|---|---|
Transaction ID | Document ID and line ID |
Date | Bill date, charge date, credit date, or journal entry date, as above |
Amount | Line amount (tax-inclusive), negated for vendor credits |
Currency | Line currency, falling back to the document currency |
Type | Bill, Credit Card, Expense, Vendor Credit, or Journal Entry (Debit or Credit) |
Accrual | Set for Journal Entry lines only |
Memo | Bill: expense number. Vendor credit: credit number and memo. Journal entry: entry name. Each followed by the line description, joined with |
Account category | The account's Type (Expense or Liability) |
Account ID and name | The account matching the line's account code |
Class ID and name | Not populated for Rillet |
Department ID and name | Not populated for Rillet |
Location ID and name | Subsidiary and its trade name |
Vendor ID and name | Vendor on the document (or linked to the journal entry) |
How documents become vendor spend
Stackpack groups the captured lines by vendor, matching on the Rillet Vendor ID. Within each vendor, lines are grouped by the calendar month of their document date. Each vendor then carries a monthly spend time series, one bucket per month, with:
Monthly spend field | Derived from |
|---|---|
Year and month | The document date's calendar month |
Amount | Sum of Bill, Credit Card, Expense, and Vendor Credit line amounts for that month. Credits reduce the total. |
Transaction count | Number of those lines in that month |
Accrual amount | Sum of Journal Entry debits to the vendor, offset by Journal Entry credits |
Alongside the time series, each vendor records the accounts and subsidiaries its lines posted to (each with a line count), the earliest month with spend in the retained window, and the most recent month with spend.
Spend views in Stackpack use Amount by default. If accrual-based spend is enabled for your company, vendors that have Journal Entry activity show Amount + Accrual amount, and vendors without any Journal Entry activity continue to show Amount. Note that a vendor accrued by journal entry and later billed will show both when accrual spend is on; Stackpack does not reconcile the two.
Monthly buckets older than the retention window are dropped on each sync. Buckets inside the window are replaced by the latest sync, so corrections in Rillet flow through rather than accumulate.
Frequently asked questions
Q: What does the Rillet integration involve, and what information does Stackpack pull from Rillet?
You create an API key in Rillet and paste it into Stackpack, which verifies it against your organization. From then on Stackpack reads, once a day, your vendor-spend documents: bills, card and out-of-pocket charges, reimbursements, vendor credits, and journal entries linked to a vendor. It also reads your Chart of Accounts, Vendors, and Subsidiaries to label those documents. Stackpack keeps the current year plus two prior years and never writes to Rillet.
Q: Which specific data points or fields are required for the integration?
Each document line needs a document date, a vendor that exists in your Vendors list, a non-zero amount, and an account typed Expense or Liability. Lines missing any of these are skipped. Subsidiary and line descriptions are optional and enrich the vendor record when present. Journal entries must be linked to a vendor at the entry level.
Q: Are there any data or configuration prerequisites we should validate before starting the trial?
You can create an organization-scoped API key in Rillet, and the key is for the organization you want to connect.
Bills, charges, and reimbursements carry a vendor. Documents without one cannot be attributed and are skipped.
Vendor records are consistent (one Vendor per supplier avoids split spend).
Expense accounts are typed Expense in your Chart of Accounts, and credit card and payable accounts are typed Liability. Spend posted to Asset, Equity, or Income accounts is not read.
Your books are in USD. Non-USD documents are summed without conversion.
Q: Does Stackpack count unpaid bills?
Yes. Rillet bills are read by bill date regardless of payment status, so spend appears when the bill is dated. This differs from some other integrations where spend waits for payment.
Q: How are vendor credits and refunds handled?
Vendor credits are recorded as negative amounts in the month of the credit date and reduce that vendor's spend.
Q: We have several subsidiaries. How are they handled?
All subsidiaries visible to the API key are read. Each line records its subsidiary as a Location, so a vendor's spend can be viewed across or by subsidiary in Stackpack.
Q: Why are Departments empty for Rillet vendors?
Rillet does not model a class or department dimension on documents, so Stackpack has nothing to populate Departments from. Subsidiaries are available as Locations instead.
Q: The key I pasted was rejected. Why?
Stackpack verifies the key by reading your organization, accounts, and vendors. A rejection usually means the key is invalid, lacks read access to one of those, or (when replacing a key) belongs to a different organization than the profile was created for.
Q: Can we exclude certain accounts, such as payroll or taxes?
Yes. Your Stackpack administrator can set an excluded GL account list per profile, by account ID or name. Lines posted to those accounts are skipped on the next sync.
Q: Why is a vendor's spend different in Stackpack than in Rillet?
The usual causes are documents without a vendor, lines posted to Asset, Equity, or Income accounts, accounts on your excluded GL account list, journal entries with no linked vendor, and vendor credits netting against spend. Spend is also dated by the document date, so a bill dated in one month and paid in the next appears in the bill month.