Help & User Guide

1. Overview

The TeamInvest Processor is a web application that retrieves payment transactions from FatZebra and Xero, and submits them to the TeamInvest Spring Boot API for processing into the TIMMS system.

All operations are manual — a user selects a date range, fetches transactions, reviews them, and submits with a passcode. The system records every run for audit purposes.

Key concepts
  • Fetch — retrieves live transactions from the gateway for a selected date range. Nothing is saved at this point.
  • Process — submits the fetched (or selected) transactions to the TeamInvest API and records the result in the database.
  • Processed / Pending — after fetching, rows already in the database are highlighted as ✓ Done. New rows show as Pending.
  • Idempotency — the system prevents duplicate submissions at both the local database and the TeamInvest API level.
2. Dashboard

The Dashboard provides an at-a-glance view of the system status — last run time and result for both FatZebra and Xero, plus database health.

  • Last run — date and time of the most recent processing run for each service.
  • Transactions — number of transactions submitted in the last run.
  • Status badge — green Success or grey Unknown if no run has occurred yet.
  • System health — confirms the SQL Server connection is active.
  • View & process — links directly to the FatZebra or Xero transaction page.
Dashboard overview
The Dashboard showing a successful FatZebra run and no Xero runs yet, with system health below.
3. FatZebra Transactions

The FatZebra page retrieves credit card payment and refund transactions from the FatZebra gateway for a selected date range.

Step 1 — Select date range and fetch

Set From date and To date then click ↓ Fetch from FatZebra. The last dispatch banner confirms the most recent successful run.

FatZebra toolbar
The FatZebra toolbar — date pickers, Fetch button, Passcode field and Process button.
Step 2 — Review the live results grid

All transactions for the selected period are displayed. Rows already submitted to TeamInvest show as ✓ Done.

FatZebra results grid
50 purchases found for 15–16 Mar 2026, all showing as Pending.
Already-processed rows

When a date range overlaps a previous run, already-processed rows are highlighted in grey with a ✓ Done badge.

Already processed row
3 transactions found — 1 already processed (✓ Done), 2 still Pending.
Step 3 — Select records and run

Use checkboxes to select specific rows, or leave all unchecked to process everything fetched. Enter your passcode and click ▶ Process.

4. Xero Transactions

The Xero page retrieves fully paid accounts receivable invoices filtered by FullyPaidOnDate. Only ACCREC invoices with status PAID are returned.

Fetch and review

Set the date range and click ↓ Fetch from Xero. Contact Account Numbers are automatically cross-referenced for CiRef resolution.

Xero invoice grid
13 paid invoices found — contact names, Account Numbers, payment types and MPAY checkboxes shown.
MPAY checkbox

Controls the txnType sent to the API. Unticked = 21 Auto DDR. Ticked = 20 Manual MPAY.

MPAY checkboxes
The MPAY column — unticked by default (Auto DDR). Tick to mark as Manual Payment.
5. Customers

The Customers page provides a read-only view of customer and contact data from both FatZebra and Xero. It is split into two tabs — use it to look up customer details, verify account numbers, or check card information.

FatZebra Customers tab

Click ↓ Load FatZebra customers to fetch the full customer list from the FatZebra gateway. The tab badge shows the total count. Use the search box to filter by reference, name, email or card number in real time.

FatZebra customers tab
FatZebra Customers tab showing 140 customers loaded with reference, name, email, card number and created date.
Xero Contacts tab

Click ↓ Load Xero contacts to fetch all contacts from Xero. Use the search box to filter by name, email or account number in real time. Use the contact type dropdown to narrow results:

  • All contacts — every contact in the Xero system
  • Customers only — contacts that are not suppliers; a Yes in the Customer column indicates the contact has sales invoices on their account
  • Suppliers only — contacts marked as suppliers in Xero
  • FatZebra Customers — contacts that also have an active FatZebra customer record, shown with a FatZebra badge in the FatZebra column
Column meanings
  • Account # — the CiRef used when submitting transactions to the TeamInvest API. Must be set on the Xero contact for processing to work.
  • CustomerYes means the contact has sales invoices in Xero.
  • SupplierYes means the contact is marked as a supplier in Xero.
  • FatZebraFatZebra badge appears when the contact also has a matching FatZebra customer record.
Xero contacts grid with filter
Xero Contacts tab — 668 contacts total, filtered to 12 matching "ale". The dropdown shows all four filter options. Two contacts (Alexander McBean and Camillo D'Alessandro) show a FatZebra badge indicating they have FatZebra customer records. The Customer column footnote (** ) indicates contacts with sales invoices on their account.
Note: The Account # column is the CiRef sent to the TeamInvest API when processing Xero invoices. If a transaction fails with a "txnRef not found" error, use this page to verify the contact's Account Number is correctly set in Xero.
6. Passcodes

Each user is assigned a named passcode that authorises a processing run and identifies who performed it in the logs.

  1. Type your passcode into the Passcode field.
  2. When you leave the field, validation runs automatically.
  3. If valid, your name appears in green and the Run button becomes active.
  4. If invalid, the field turns red.
  5. After a successful run the passcode field is cleared automatically.
Valid passcode
A valid passcode — "✓ Khurram" appears in green confirming the Run button is active.
Passcodes are managed in appsettings.json under Processing.Passcodes. Contact your administrator to add or update passcodes.
7. Processing a Run
  1. Select the date range.
  2. Click Fetch — review results, note any already-processed rows.
  3. Optionally tick specific rows to process a subset only.
  4. For Xero — optionally tick MPAY on manual payment invoices.
  5. Enter your passcode and wait for the green name confirmation.
  6. Click ▶ Process.
  7. Results are saved — processed rows update to ✓ Done.
  8. Passcode is cleared automatically.
Result badge meanings
  • Done by Alice — 5 processed, 0 skipped — all transactions submitted successfully.
  • Done by Alice — 3 processed, 2 skipped — some transactions were duplicates already in TeamInvest.
  • Completed with 1 error(s) — one or more failed, rest were still processed.
The Run button requires both a valid passcode and fetched results in the grid.
8. Dispatch Logs

Shows a full history of every processing run — service, time, transaction count, status and any errors.

Dispatch logs
Three successful FatZebra runs each processing 1 transaction.
9. Idempotency

Shows every individual transaction that has been processed. Filter by FatZebra or Xero using the tab buttons.

Duplicate protection operates at two levels — the local database highlights already-processed rows in the live grid, and the TeamInvest API reports duplicates in skippedTxnIds.

Idempotency log
The Idempotency log showing a single processed FatZebra transaction with status, timestamp and Dispatch ID.
10. Troubleshooting
Passcode field turns red

Check with your administrator that your passcode is correct in appsettings.json under Processing.Passcodes.

Fetch returns no transactions

Check the date range — FatZebra uses transaction date, Xero uses FullyPaidOnDate.

Rows still showing as Pending after processing

Click Fetch again — the page re-fetches and cross-references the database, updating rows to ✓ Done.

Process button is disabled

Both conditions must be met — fetched results in the grid and a valid passcode showing the green owner name.

TeamInvest API error during processing
  • txnRef not found — the Account Number doesn't match a member in TIMMS. Check the Xero contact's Account Number.
  • paymentReference too long — transaction reference exceeds 50 characters.
  • API unreachable — check network connectivity to online.consciousinvestor.com.
Xero invoices missing Account Number (CiRef blank)

The contact in Xero does not have an Account Number set. Update the contact in Xero and re-fetch. Use the Customers → Xero Contacts page to verify Account Numbers.

Database shows unhealthy on Dashboard

Check that SQL Server is running and the connection string in appsettings.json is correct.