Fr8Claims — Setup Guide for Tenant Admins
Fr8Claims handles expense reimbursement, cash advances, and approval pipelines for your team. This guide walks through the complete setup — from your first login through the client portal to a fully configured system ready for live claims.
Everything runs from a single admin console. No separate installations, no complex integrations to manage yourself.
Video Walkthrough
Watch the full setup walkthrough, or follow the step-by-step guide below.
Fr8Claims-Admin-Setup-Guide-v3.mp4
What you'll have at the end
Accounting Module connected — credentials stored encrypted, validated with preflight checks
Expense categories mapped to your chart of accounts
Approval pipeline with currency-aware thresholds (auto-approve small claims, escalate large ones)
Team registered as claimants — by email, phone number, or both
WhatsApp bot ready for mobile receipt submissions and magic-link logins
Cash advances tied to specific jobs for field staff
How to get to the admin console
First-time setup (recommended)
Go to
notification-hub.fr8labs.co/client/portaland log in with your admin account.Find the green Fr8Claims tile — it reads "Expense claims, cash advances, approval pipeline, and claimant management for your tenant."
Click Open →.
That single click triggers an SSO bridge: Fr8Claims auto-provisions your admin account, sets a session cookie, and lands you in the admin console at claims.fr8labs.co/reimbursement/admin/. No separate registration, no credentials to enter. Requires an admin role in the client portal.
Ongoing access
Returning admins can go directly to claims.fr8labs.co:
Enter your email address.
Receive a magic link via email or WhatsApp.
Log in and click Admin Console in the sidebar.
The admin console header
After login, the header shows three action buttons on the right:
Button | What it does |
|---|---|
Update Setup | Re-opens the step-by-step Setup Wizard anytime — always starts at Section 0 |
AI Wizard | Opens the conversational configuration assistant |
Logout | Ends your session |
Your tenant name (e.g. DEMO LOGISTICS) and user email are displayed in the top-left. Below the header, eight tabs organize the admin console: Approvals, Claimants, Claims, Advances, Categories, Pipeline, Accounting, and WhatsApp Bot.
Before you start
Gather these before opening the wizard:
Accounting Module access — usually connected centrally by Fr8Labs, so there's nothing to gather here. Only if your tenant isn't centrally connected do you need your Accounting Module URL + API key + secret (the wizard's Section 1 has a built-in help block with step-by-step instructions)
Job Module credentials — only needed if you use job-related posting patterns (Job → Purchase Invoice or Job → Cash Advance)
Team list — names, phone numbers, and optionally emails. Email OR phone is sufficient — phone-only claimants receive WhatsApp magic links instead of email
How WhatsApp delivery works
Fr8Claims uses a single global WhatsApp bot — one Fr8Labs phone number shared across all tenants. Fr8Labs operations connects the bot once via QR scan on the operator console, and inbound/outbound message routing is handled automatically by phone number. Tenant admins do not scan QR codes or manage the bot connection themselves.
As a tenant admin, you control two things:
WhatsApp Delivery toggle — enable or disable WhatsApp message delivery for your tenant
Message templates — customize the wording of four messages sent to your claimants: magic-link login, welcome WhatsApp, welcome email subject, and welcome email body
The bot connection status, phone number, and technical details are visible only on the Fr8Labs operator console — not in your tenant admin view. The operator console shows the global bot card with connection status, phone number (e.g. 6580142314), and Connect/Disconnect/Logout controls.
Pick your posting patterns
The wizard starts with four posting patterns. Pick all that apply — the wizard adapts its fields to only show what your selected patterns require.
Pattern | What it does | Best for |
|---|---|---|
Office expenses → Accounting Module Journal Entry | General expenses post as Journal Entries | Simplest setup — most companies start here |
Office expenses → Accounting Module Purchase Invoice | General expenses post as Purchase Invoices with naming series + supplier | Companies that need PI-based tracking and AP aging |
Job expenses → Job Module Purchase Invoice | Per-shipment expenses post to the Job Module as Purchase Invoices | Per-job cost tracking tied to specific MBL/HBL |
Job cash advance → Job Module Cash Advance | Drivers/operators request cash upfront for a job | Field staff who need upfront cash, settled after the job |
You can select multiple patterns and add more later without losing existing data.
Two paths: AI Wizard or Setup Wizard
Both achieve the same result — a fully configured system. Choose the one that fits your style.
AI Wizard | Setup Wizard v2 | |
|---|---|---|
Interface | Conversational chat | Stepped form |
Best for | "I'm not sure what I need" | "I know what I want — give me the form" |
Context-aware | Knows your existing config, proposes partial edits (not overrides) | Pre-fills existing values in each field |
Scope | Locked to reimbursement setup — refuses off-topic questions | Walks through every section in order |
Setup Wizard walkthrough
Click Update Setup in the header to open the wizard. It always starts at Section 0 (Posting Patterns), even when re-entering an existing setup — this ensures you can review and change your pattern selection at any time.
Section 0 — Posting patterns
Select the patterns that match your business. The wizard adapts dynamically — it only shows subsequent sections relevant to your selected patterns. For example, selecting only the Journal Entry pattern auto-hides Sections 3 (Naming Series) and 4 (Supplier), since those only apply to Purchase Invoice workflows.
Note: When a pattern selection hides certain wizard sections, the stepper automatically renumbers the visible steps contiguously. For example, a Journal Entry-only setup shows "0. Patterns → 1. Connection → 2. Company → 3. Items → 4. Preflight" — clean sequential numbers with no gaps.
Section 1 — Accounting Module connection
Most tenants skip this step. Fr8Labs connects your Accounting Module centrally, so this section usually shows "✓ Connected centrally — no API key needed here" and you can go straight to Save & Next — no URL or keys to enter. The credential fields below appear only when your tenant isn't centrally connected, or if you expand "⚙ Enter credentials manually (advanced)" to override with your own keys.
Three fields:
Instance URL — your Accounting Module base URL (e.g.
https://erp.yourcompany.com), no trailing slashAPI Key — masked if already saved; leave blank to keep existing
API Secret — stored encrypted; leave blank to keep existing
Expand the "How do I get an API key and secret?" help block for step-by-step instructions:
Log in to your Accounting Module as an administrator
Go to My Profile
Scroll to the API Access section
Click Generate Keys
Copy the key and secret into Fr8Claims
Note: Use a dedicated service account rather than a personal admin account. This prevents credential issues if the admin's password changes.
Click Test Connection to validate before proceeding.
Section 2 — Company + default accounts
Company — pulled from your Accounting Module (e.g. "Demo Logistics Pte Ltd (SGD)")
Default cost center — fallback cost center for postings (e.g. "Main - DL")
Default expense account — used when a category has no specific account mapped (e.g. "Staff Claims - DL")
Payable account — the liability account for Journal Entry postings (e.g. "Creditors - DL")
JE credit method controls how Journal Entry credit rows are posted:
Account only (default) — works when your payable account is a non-Payable Liability account (e.g. "Employee Reimbursement Payable"). Simpler setup.
Account + default party — required when using a true Payable account in the Accounting Module, since Payable rows are rejected without a party.
Sections 3 & 4 — Naming series and supplier (Purchase Invoice only)
These sections only appear if you selected a Purchase Invoice pattern. Section 3 sets the PI naming series. Section 4 assigns the default supplier for claims. Both are auto-hidden for Journal Entry-only setups — in the video walkthrough, you can see these sections are skipped in the progress bar.
Section 5 — Category mapping
Each expense category maps to an Accounting Module account (JE path) or item (PI path). A default fallback item and default tax template are available for categories without explicit mappings.
Section 6 — Preflight + complete
Preflight runs an automated validation of every Accounting Module resource your configuration references. Each check shows a green checkmark on success:
Accounting Module API connection
Company exists
Cost centre valid
Expense account valid
Payable account valid
Below the checks, three settings:
Setting | Default | What it controls |
|---|---|---|
Auto-post to Accounting Module on final approval | Off | When ON, approved claims immediately post as JE/PI. When OFF, a finance user manually clicks "Post". |
Reimbursement net days | 30 | Days added to posting date to compute the due date on Purchase Invoices. 0 = pay on approval. |
Max retry attempts | 3 | How many times to retry transient posting failures before marking as failed. |
Click Complete Setup to finish. You can re-enter the wizard anytime via the Update Setup button.
AI Wizard walkthrough
Click AI Wizard in the header to open the conversational assistant. It loads with a markdown-rendered welcome message ("Welcome to the Fr8Claims Setup Wizard!") and supports two interaction modes:
Quick-action chips — pre-built prompts like "What posting patterns are available?" and "Describe my use case" that return structured, formatted responses
Free-text input — ask anything about your reimbursement setup in plain language
The AI Wizard is context-aware. When you ask "I want to update my expense categories," it responds with your tenant's current categories (e.g. "Your tenant currently has 3 categories: Meals & Entertainment, Transportation, and Accommodation — all mapped to your JE expense accounts") and proposes targeted edits — rename, add, or change account mappings — without overwriting existing data.
Responses render with proper markdown formatting: bold text, bullet points, and numbered lists. The assistant is scope-locked to reimbursement setup and includes safeguards against prompt injection — off-topic or malicious prompts are refused.
Configure the approval pipeline
Click the Pipeline tab. The Approval Flow Preview at the top shows your current routing logic as a visual flow diagram — each rule displays its dollar range, approval stages, and outcomes (Auto-Approved, Approved, or Rejected).
Threshold inputs now display your tenant's currency code — for example, "From (SGD)" and "Up to (SGD)" instead of a generic dollar sign — so there is no ambiguity about which currency to enter amounts in. The helper text below the rules confirms amounts are in your company currency.
If your rules leave a gap — amounts that match no rule — a red warning appears in the Approval Flow Preview as soon as you edit. The warning identifies exactly which ranges are uncovered. For example, setting Rule 2's upper limit to S$1,000 triggers: "No catch-all: amounts above S$1K match no rule." The fix: leave the highest rule's "Up to" field blank (no limit), which acts as a catch-all for every amount above its lower bound. Claims submitted in uncovered ranges strand in "Submitted" status with no approver assigned — see Monitoring stuck claims below.
Note: When a pipeline rule routes claims to a level (e.g. L1 or L2) that has no active approver, a red "Approver gap — claims will stall" banner appears at the top of the Pipeline tab. The banner reads: "Your pipeline routes to L1, L2 but no active approver is assigned at those levels. Promote someone on the Claimants tab, then return here." You can safely configure thresholds first and assign approvers later — the banner persists as a reminder until every routed level has at least one active approver.
Note: An empty pipeline means all claims auto-approve with no oversight. If no rules are configured, the system processes every claim immediately. Configure at least one threshold before going live.
Quick Setup — click once to generate three currency-aware default tiers scaled to your tenant's base currency:
Auto-approve claims below a low threshold
Level 1 approval for mid-range claims
Level 1 + Level 2 approval for high-value claims
Manual setup — click + Add Rule to define custom dollar ranges and assign specific approvers to each tier.
To assign approvers, go to the Claimants tab and promote any registered claimant to an approver role.
Monitoring stuck claims
The dashboard stats row at the top of the admin console includes a Stuck (no rule) tile. This tile counts claims that were submitted but matched no pipeline rule — they sit in "Submitted" status and appear in no approver's queue. When one or more stuck claims exist, the tile turns red so it stands out at a glance.
To resolve stuck claims, click the Claims tab. Each stuck claim shows three action buttons:
Action | What it does |
|---|---|
Re-evaluate | Re-runs the approval pipeline with your current rules. Use this after you have fixed the gap in your pipeline — the claim routes to the correct approver and triggers a notification. |
Approve | Manually approves the claim as a final decision, bypassing the pipeline entirely. |
Reject | Rejects and closes the claim. |
Note: Check the Stuck tile regularly, especially after editing pipeline rules. A rule change does not retroactively re-route already-submitted claims — use Re-evaluate on each stuck claim to do that explicitly.
Overseas currency capture (optional)
By default, claimants enter every amount in your company's currency. If your team pays for expenses in other currencies — an overseas trip, a foreign vendor — turn on Overseas currency capture so they can record the amount in the currency they actually paid, and Fr8Claims converts it to your company's currency automatically.
Turn it on: in the admin console settings, switch on Overseas currency capture. It's off by default and you can switch it off again anytime.
Once it's on, your claimants can:
Pick a currency on the new-claim form (in the app),
Tag the amount on WhatsApp — e.g.
RM79 lunch,฿250 taxi,$70 fuel, orSnap a receipt — the app reads the currency automatically (and asks if it can't tell).
Fr8Claims converts each foreign amount to your company's currency at the current exchange rate — the same rate your Accounting Module uses — and keeps the original amount on record. Approvals and postings use the converted (company-currency) amount, so your books stay in a single currency.
Finance controls the rate, not the claimant. If an approver needs a specific rate, they can override it while reviewing a claim (before it's posted) — the app recalculates the converted amount instantly. Once a claim has posted to your Accounting Module, its rate is locked.
Note: Overseas capture converts to your company currency, so make sure your company currency is set correctly before you turn this on. If you're unsure, check with your Fr8Labs account manager.
Travel Budget Control (optional)
For teams that travel, Travel Budget Control lets you set a spending limit before a trip and then watch the real claims come in against it — so you always know how much of an approved trip budget is still left.
It's off by default and completely additive: if you leave it off, claims and cash advances work exactly as they do today.
Turn it on: in the admin console settings, switch on Travel Budget Control, then choose which of your claim categories count as travel (e.g. Airfare, Hotel, Meals, Ground transport). Claims in those categories are the ones that count against a travel budget.
How the flow works
The traveller requests a budget before the trip — destination, dates, and the planned costs line by line (flights, hotel, meals…). This is a plan, not cash changing hands.
It goes through your normal approval pipeline — the same approvers and thresholds you already use for claims. Finance can approve the amount as-is or set a different approved amount (the final envelope).
During and after the trip, the traveller submits normal claims and links each one to the budget.
Fr8Claims rolls the claims up against the envelope automatically — no spreadsheets.
Budget vs. actual — what the numbers mean
Once a budget is approved, every travel budget shows three running numbers:
Number | What it counts | Think of it as |
|---|---|---|
Committed | Every claim raised against the budget that isn't rejected — submitted, waiting for approval, approved, or posted | What you're on the hook for so far |
Actual | Only the claims that are approved or posted | Confirmed spend |
Remaining | Approved budget − Committed | How much of the envelope is still free |
So Committed answers "how much have we already earmarked against this trip?" and Actual answers "how much of that is locked in?" The gap between them is the spend still working through approval.
Going over budget
If committed spend passes the approved amount, Fr8Claims flags the budget as over budget — but it never blocks anyone. Claims still submit and approvers can still approve them; the flag is simply there so finance sees the overspend and can decide what to do.
Where to watch it
Open the Dashboards tab in the admin console and choose the Travel Budgets sub-tab. You'll see the totals across all trips — approved budget, committed, and actual — a status funnel, and a per-traveller breakdown so you can spot who's tracking over or under. (The Claims sub-tab next to it gives you the same kind of overview for all claims, travel or not.)
Note: Travel Budget Control is optional. If your team doesn't travel much you can leave it off — the Travel Budgets dashboard simply explains what the feature does until you switch it on.
Add your team
Two methods to register claimants:
Single registration — fill in the form: name, email (or phone), department, and employee ID. Click Register Claimant.
Bulk Add (Paste CSV) — paste rows from a spreadsheet into the CSV textarea. Columns: name, email, phone, department, employeeId (comma or tab separated). Up to 500 claimants per batch.
Example CSV:
Sarah Tan, sarah@demo-logistics.com, +6591111111, Finance, EMP-100
Ahmad Driver, , +6592222222, Operations, EMP-101
Maya Approver, maya@demo-logistics.com, +6593333333, Management, EMP-102Notice Ahmad Driver has no email — just an empty field between commas. Phone-only claimants receive WhatsApp magic links instead of email links. Email is optional; a phone number is all you need.
WhatsApp Bot
All tenants share one global Fr8Labs WhatsApp bot — a single WhatsApp number used across every Fr8Claims tenant. No per-tenant QR code scanning or setup is required. Magic-link logins and notifications route automatically by phone number.
WhatsApp Bot tab — what you control
The bot connection is managed globally by Fr8Labs operations. As a tenant admin, the WhatsApp Bot tab gives you control over delivery settings and message templates for your tenant.
WhatsApp Delivery toggle
The "WhatsApp Delivery for this Tenant" toggle enables or disables WhatsApp message delivery for your tenant. When you toggle delivery off, a yellow warning appears: phone-only claimants (those registered with a phone number but no email) will lose their notification channel entirely — magic-link logins and claim notifications will not reach them. Toggle it back on to dismiss the warning.
Message templates
Four customizable templates control the messages your claimants receive:
Template | When it's sent | Available placeholders |
|---|---|---|
Magic-Link Login Message | When a phone-only claimant requests login |
|
Welcome Message (WhatsApp) | When a claimant is first registered, or a phone number is added later |
|
Welcome Email — Subject | When a claimant is registered with email, or an email is added later |
|
Welcome Email — Body | Same trigger as the subject line |
|
Expand the "Default templates" collapsible at the bottom of the tab to see the built-in defaults for reference. Click Save Templates after editing.
Note: Templates support multiple languages natively. Write your template in any language — Bahasa Indonesia, Chinese, Thai, or any other — and the system sends it as-is. No translation layer is involved. This is how Indonesian tenants send WhatsApp messages and magic-link prompts in Bahasa without any additional configuration.
Daily reminders
Fr8Claims sends automatic daily digest emails at 9:00 AM in your company's configured timezone. Three audiences receive tailored notifications:
Audience | What they receive |
|---|---|
Approvers | A list of pending items that have been waiting for their decision for more than 2 days |
Claimants | Settlement-deadline reminders — items due within 3 days and items already overdue |
Tenant admins | A morning summary with counts of pending approvals, advances awaiting disbursement, overdue settlements, stuck claims, and failed postings |
No setup is required — digests are automatic once your team is registered and the pipeline is configured. To ensure "9:00 AM" means your local 9:00 AM, set your company timezone under Timezone on the admin console (visible on the Approvals tab, defaults to Asia/Singapore UTC+8).
Test the flow end-to-end
Before going live, run through these verification steps:
Register yourself as a claimant, and register a second account as a test approver
Submit a small claim below the auto-approve threshold — verify it auto-approves and posts to the Accounting Module as a Journal Entry or Purchase Invoice
Submit a larger claim above the L1 threshold — verify it routes to the assigned approver
Check the Accounting Module for the created document (Journal Entry or Purchase Invoice)
Approve the pending claim from the approver account and verify the posting completes
Day-to-day operations
Tab | What it shows |
|---|---|
Approvals | Pending approval queue with claim details, amounts, and approve/reject actions. Approvers can expand any pending item to see line items and receipt photos before deciding. |
Claimants | Registered team members — name, email, phone, department, status, approver role |
Claims | All claims with status, posting status, Accounting Module document number, and Job Module document number |
Advances | Cash advance requests — pending, disbursed, settled, and force-close actions |
Categories | Expense category list, account/item mappings, and posting targets displayed in title case ("Journal Entry", "Purchase Invoice") |
Pipeline | Approval flow preview and threshold rules |
Accounting | Posting history, connection credentials, and sync status |
WhatsApp Bot | Per-tenant delivery toggle and message templates |
For job-related claims posted to the Job Module, status syncs back automatically approximately every 30 minutes.
Categories
The Posting Target column in the Categories tab and the Default Posting Target dropdown in the "Add Custom Category" form now display title-cased values — "Journal Entry" and "Purchase Invoice" — matching the Accounting Module's own naming convention.
Claimant mobile experience
Note: The mobile PWA walkthrough was not captured in this video recording. The features below are described textually based on the current production interface.
Claimants access Fr8Claims at claims.fr8labs.co on their mobile browser as a progressive web app. Recent improvements to the mobile experience:
Currency-aware claim cards — amounts render with the correct currency symbol for your tenant's currency. SGD tenants see "S$" prefixes (e.g. S
". The new-claim form shows an "Amounts in SGD" hint. Friendly category labels — claim cards display readable names with icons (e.g. "Transport") instead of raw database slugs.
Corrected status badges — badges now read "Pending L1" or "Pending L2" correctly (a previous typo displayed "Pending LL1").
Phone number in Settings — WhatsApp-registered users see their phone number listed in the Settings panel alongside their name, email, department, and employee ID.
Admin Console shortcut — tenant admins who are also claimants see an "Open Admin Console" button in their Settings view. This shortcut exists because the mobile bottom-navigation bar (Claims / Advances / Settings) cannot fit an admin sidebar link.
Troubleshooting
Problem | Solution |
|---|---|
I don't see the Fr8Claims tile | Your client portal role must be admin. Contact your Fr8Labs account manager to upgrade your role. |
Claims stuck in Submitted with no approver | Your pipeline rules have a gap. Go to the Pipeline tab — the red coverage warning tells you exactly which ranges are uncovered. Fix the rules, then use Re-evaluate on the Claims tab to re-route each stuck claim. |
Posting failed: Item not configured | A category is missing its account/item mapping. Go to the wizard Section 5 (Category Mapping) and assign an Accounting Module account to every active category. |
WhatsApp message didn't arrive | Check the bot connection status in the WhatsApp Bot tab. If disconnected, click Refresh. Also verify the claimant's phone number includes the country code (e.g. +65). |
Wizard says preflight failed: auth.get_logged_roles | This was a known issue that has been fixed. Clear your browser cache and retry the preflight check. |
All my claims approve instantly | Your approval pipeline is empty — every claim auto-approves by default. Go to the Pipeline tab and configure thresholds or click Quick Setup. |
Connection test fails | Verify the Instance URL has no trailing slash, and that the API key belongs to an active user with the correct permissions in the Accounting Module. |
Payable rows require party | Your payable account is a true Payable account type. Switch the JE credit method to Account + default party in wizard Section 2. |
Claimant can't submit a claim | Check that the claimant's status is Active in the Claimants tab. If they're blocked, it may be due to the "Block new claims/advances if overdue" setting being enabled while they have overdue advances. |
Approved claims are not posting to the Accounting Module | Check the auto-post setting on the Accounting tab of the admin console. If auto-post is disabled, approved claims queue up but do not post automatically — a finance user must click "Post" manually. |
Claimants receive a "WhatsApp delivery disabled" reply | The per-tenant WhatsApp Delivery toggle on the WhatsApp Bot tab is switched off. Go to the WhatsApp Bot tab and toggle delivery back on. |
Adding a new claimant didn't trigger a welcome message | Claimants registered before the welcome-message feature was shipped do not automatically receive one. To trigger it manually, edit any field on their claimant record (e.g. change the department) and save — the system sends the welcome message on the next save. |