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)

  1. Go to notification-hub.fr8labs.co/client/portal and log in with your admin account.

  2. Find the green Fr8Claims tile — it reads "Expense claims, cash advances, approval pipeline, and claimant management for your tenant."

  3. 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:

  1. Enter your email address.

  2. Receive a magic link via email or WhatsApp.

  3. 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:

  1. WhatsApp Delivery toggle — enable or disable WhatsApp message delivery for your tenant

  2. 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 slash

  • API 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:

  1. Log in to your Accounting Module as an administrator

  2. Go to My Profile

  3. Scroll to the API Access section

  4. Click Generate Keys

  5. 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:

  1. Auto-approve claims below a low threshold

  2. Level 1 approval for mid-range claims

  3. 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, or

  • Snap 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

  1. 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.

  2. 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).

  3. During and after the trip, the traveller submits normal claims and links each one to the budget.

  4. 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-102

Notice 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

{{magicLink}}, {{ttlMinutes}}

Welcome Message (WhatsApp)

When a claimant is first registered, or a phone number is added later

{{name}}, {{tenantName}}, {{claimsUrl}}, {{whatsappNumber}}

Welcome Email — Subject

When a claimant is registered with email, or an email is added later

{{name}}, {{tenantName}}

Welcome Email — Body

Same trigger as the subject line

{{name}}, {{tenantName}}, {{claimsUrl}}, {{whatsappNumber}}

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:

  1. Register yourself as a claimant, and register a second account as a test approver

  2. 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

  3. Submit a larger claim above the L1 threshold — verify it routes to the assigned approver

  4. Check the Accounting Module for the created document (Journal Entry or Purchase Invoice)

  5. 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.