Skip to content

Super — Contributions lifecycle

Manual test plan for creating, validating, lodging, tracking, cancelling and amending super contributions through Beam, plus SuperStream notifications and AI diagnostics. Read How testing works first, and connect a company to Beam using the Connect plan.

Beam UAT only — real lodgements move real money

Lodging a contribution instructs the Beam clearing house to move super. Use the UAT environment only. A default super payment method must be set in Payroll → Settings before you can create contributions.

You will need: a company connected to Beam (UAT), employees with valid super fund details, at least one STP-lodged regular pay run (status Submitted/Success) that owes super, and a developer for the 🔧 notification cases.


A. Super Payments list

A1 — Status filter

Steps 1. Go to Payroll → Super (Payments). 2. Change the Status filter (All / Draft / Lodged / Paid / Cancelled).

✅ Pass if the list filters to the chosen status and resets to page 1.

❌ Fail if the filter has no effect or shows the wrong statuses — 🟠 Major.

A2 — Financial-year filter

Steps 1. Change the financial year filter in the top bar.

✅ Pass if the list and the summary cards re-scope to that FY (1 Jul–30 Jun) and the page resets to 1.

❌ Fail if the FY filter doesn't re-scope the list/cards — 🟠 Major.

A3 — Show archived toggle

Steps 1. Toggle Show archived.

✅ Pass if archived contributions appear (dimmed) when on and hide when off; the setting persists after reload; page resets.

❌ Fail if archived items show when the toggle is off (or vice versa) — 🟠 Major.

A4 — "Create" is disabled without a default payment method

Steps 1. Ensure Payroll → Settings has no default super payment method. 2. On the Super Payments list, look at the Create dropdown button.

✅ Pass if Create is disabled with a hint pointing to Payroll Settings, and a settings-gate banner offers Open Payroll Settings.

❌ Fail if you can start creating a contribution with no payment method — 🔴 Blocker (it can't be lodged).

A5 — "Create → From a pay run" / "Manual contribution"

Steps 1. With a payment method set, open the Create dropdown.

✅ Pass if it offers From a pay run and Manual contribution, opening the matching panel.

❌ Fail if either option is missing or opens the wrong panel — 🟠 Major.

A6 — Delete a Draft from the list

Steps 1. On a Draft row, click the trash icon and confirm.

✅ Pass if delete is offered only for Draft rows, a confirm dialog warns it cannot be undone, and it deletes with a toast.

❌ Fail if a non-Draft contribution can be deleted from the list — 🔴 Blocker.

A7 — "Lodge again" on a Cancelled row

Steps 1. On a Cancelled, non-archived row, open the row menu and click Lodge again.

✅ Pass if a fresh Draft is created (cloned from the cancelled one) and you're taken to it; the original is archived.

❌ Fail if "Lodge again" is offered on non-Cancelled rows or fails — 🟠 Major.

A8 — Archive / Unarchive

Steps 1. Archive a Cancelled row, then turn on Show archived and Unarchive it.

✅ Pass if archive/unarchive work with toasts and the row moves in/out of the archived view.

❌ Fail if archive is offered on an ineligible status, or unarchive doesn't restore — 🟠 Major.

A9 — Amendment navigation chips

Steps 1. Find a contribution that is an amendment (or has amendments).

✅ Pass if an amendment chip links to the parent (from) contribution, and parent rows show an amendment-count badge.

❌ Fail if the amendment links go to the wrong contribution — 🟠 Major.

A10 — Summary cards & pagination

Steps 1. Review the Draft / Awaiting / Paid / Needs-attention summary cards; page through the list.

✅ Pass if the cards reflect backend totals across the FY scope (Paid green when >0, Needs-attention red when >0), and pagination changes page/size.

❌ Fail if card totals are wrong or pagination breaks — 🟠 Major.


B. Creating a contribution

B1 — From a pay run

Steps 1. Create → From a pay run. Pick an eligible pay run.

✅ Pass if only STP-lodged runs (Submitted/Success) that still owe super and aren't already on an active contribution are listed; creating makes a Draft and opens it. When opened from a specific pay run, the run is pre-filled and locked.

❌ Fail if an ineligible run (Draft, not-lodged, or already-covered) is selectable, or "No pay runs awaiting super" isn't shown when there are none — 🟠 Major.

B2 — Manual (voluntary) contribution

Steps 1. Create → Manual contribution. Set period start/end, pick employees.

✅ Pass if period start must be before end (validation), employees are multi-selectable (with "N selected"), and creating requires at least one employee. It opens the new Draft.

❌ Fail if you can create with end ≤ start, or with zero employees — 🟠 Major.

B3 — Create is guarded against double-submit

Steps 1. In either create panel, click Create Contribution and immediately click again.

✅ Pass if only one contribution is created (button disables while pending).

❌ Fail if two contributions are created — 🔴 Blocker.


C. Editing a Draft contribution

C1 — Inline edit SGC and Salary-Sacrifice amounts

Steps 1. Open a Draft contribution. Click an employee's SGC amount cell, change it, press Enter. Repeat for Salary Sacrifice.

✅ Pass if the amount saves inline (Draft only), the running total updates, and a non-numeric or negative value is rejected with a toast and reverts.

❌ Fail if amounts are editable on a non-Draft contribution, or a bad value is accepted — 🔴 Blocker (non-Draft edit) / 🟠 Major.

C2 — Add employees to the Draft

Steps 1. Click Add Employees, select eligible employees, enter SGC/SS, and add.

✅ Pass if only employees not already in the batch are offered; adding requires ≥1 selected; the running total updates.

❌ Fail if you can add a duplicate employee, or add with none selected — 🟠 Major.

C3 — Remove an employee (and delete-batch on last)

Steps 1. Remove an employee row (trash → confirm). Then remove the last remaining employee.

✅ Pass if removing one works; removing the last employee prompts "Delete this batch?" and deletes the whole contribution.

❌ Fail if removing the last employee leaves an empty, un-lodgeable batch with no warning — 🟠 Major.

C4 — Edit period / pay date / description

Steps 1. Click Edit, change the period/description, save.

✅ Pass if it saves (dates required, start < end). When the contribution came from a pay run, the period fields are locked.

❌ Fail if pay-run-sourced fields are editable, or invalid dates save — 🟠 Major.

C5 — Download PDF (Draft shows DRAFT)

Steps 1. On a Draft, click Download PDF.

✅ Pass if a PDF downloads with a DRAFT banner (no payment instructions yet).

❌ Fail if the download fails or a Draft PDF shows real payment instructions — 🟠 Major.

C6 — Delete a Draft that has never touched Beam

Steps 1. On a Draft that has not been validated/lodged, delete it.

✅ Pass if it deletes cleanly.

❌ Fail if deletion is blocked for a truly-untouched Draft, or a Draft that has an unverified Beam response is silently deleted — 🔴 Blocker (the latter could orphan a money-moving action).


D. Validate & lodge with Beam

D1 — Pre-submit validation blocks bad employee data 🔧 partly dev-assisted

Steps 1. On a Draft, make one employee missing DOB and another with an invalid/blank state. Click Validate with Beam.

✅ Pass if validation is blocked before Beam is called, with clear per-employee errors (e.g. missing DOB, invalid state, missing fund ABN/USI/membership, SMSF missing ESA/bank). Fixing them clears the errors.

❌ Fail if a contribution with missing DOB or state is sent to Beam (it must never ship today's date as DOB or a defaulted state) — 🔴 Blocker.

D2 — Missing gender does NOT block

Steps 1. On a Draft, leave an employee's gender blank and validate.

✅ Pass if validation is not blocked by missing gender (it becomes a soft Beam warning, not an error).

❌ Fail if blank gender hard-blocks validation/lodgement — 🟠 Major.

D3 — Validate with Beam (clean pass)

Steps 1. On a Draft with valid employees, click Validate with Beam.

✅ Pass if a toast reports passed / passed-with-warnings, and the action button then offers Lodge with Beam.

❌ Fail if a clean validation doesn't unlock Lodge, or errors aren't listed clearly — 🟠 Major.

D4 — Editing after a clean validate makes it stale

Steps 1. After a clean validate, change an amount or add/remove an employee.

✅ Pass if the button reverts from Lodge back to Validate (the earlier validation is now stale).

❌ Fail if you can lodge a batch you changed after validating — 🔴 Blocker.

D5 — Validate is blocked with no employees

Steps 1. On a Draft with no employees, look at Validate.

✅ Pass if Validate is disabled with a hint to add employees.

❌ Fail if you can validate an empty batch — 🟠 Major.

D6 — Lodge with Beam

Steps 1. After a clean validate, click Lodge with Beam and confirm in the dialog.

✅ Pass if the confirm dialog states the payment method and any warning count; on confirm the contribution moves to Lodged, a process id is shown, and the validation banner clears.

❌ Fail if lodging fails silently, or lodges despite blocking errors — 🔴 Blocker.

D7 — Lodge is safe on timeout (no double-send) 🔧 Needs developer setup

Steps 1. Ask a developer to make the lodge request time out after Beam actually received it.

✅ Pass if the app does not blindly retry; it re-checks with Beam and reconciles the contribution to Lodged (not a second submission).

❌ Fail if a timeout causes a duplicate contribution — 🔴 Blocker.

D8 — Terms-and-conditions re-accept 🔧 Needs developer setup

Steps 1. Ask a developer to make Beam return the T&Cs must be re-accepted result on lodge.

✅ Pass if a sticky "Re-accept Beam terms" banner appears; clicking it re-opens Beam terms; lodgement is not silently marked done.

❌ Fail if a T&Cs rejection is shown as a generic failure or a false success — 🟠 Major.


E. After lodging — track, cancel, amend

E1 — Check status

Steps 1. On a Lodged/processing contribution, click Check status.

✅ Pass if it queries Beam and updates with a toast "Beam status updated: X"; each employee's payment status updates too. (Hidden for Cancelled and for manually-marked contributions.)

❌ Fail if Check status doesn't reflect Beam's current status — 🟠 Major.

E2 — Cancel a genuinely-lodged contribution

Steps 1. On a Lodged contribution (real Beam lodge), click Cancel Lodge and confirm.

✅ Pass if Cancel is offered only for genuinely Lodged contributions (not Error/Paid/Processing/Cancelled/manual), and cancelling moves it to Cancelled. For Direct Debit, the dialog shows the 3:30pm AEST cutoff and different copy once passed.

❌ Fail if Cancel is offered when it shouldn't be, or succeeds after money already dispatched with no warning — 🔴 Blocker.

E3 — Cancel that Beam rejects 🔧 Needs developer setup

Steps 1. Ask a developer to make Beam reject a cancel (already dispatched/paid).

✅ Pass if the app re-checks Beam and mirrors the real status, with a clear translated message (already dispatched / paid / not found) rather than a false "cancelled".

❌ Fail if the UI says Cancelled while Beam still has it active — 🔴 Blocker.

E4 — "Lodge again" / retry a rejected batch 🔧 Needs developer setup

Steps 1. Ask a developer to put a contribution into Error (rejected by Beam). Click Lodge again.

✅ Pass if it re-checks Beam: if Beam actually has it, it reconciles to Lodged; if not, it resets to Draft ready to re-lodge (same batch, no duplicate).

❌ Fail if retry creates a duplicate contribution for the period — 🔴 Blocker.

E5 — Mark as Lodged (manual, no Beam)

Steps 1. On a Draft, use Mark as Lodged.

✅ Pass if the confirm copy stresses this does NOT submit to Beam; the contribution shows as manually lodged. It is not enrolled in Beam auto-polling (there's no Beam batch to track).

❌ Fail if a manual mark triggers a real Beam submission or Beam status polling — 🔴 Blocker.

E6 — Revert a manual lodge to Draft

Steps 1. On a manually lodged contribution (no Beam lodge date), use Revert to Draft.

✅ Pass if revert-to-Draft is offered only for manual lodges (never for a real Beam lodge) and returns it to Draft.

❌ Fail if a real Beam-lodged contribution can be reverted to Draft — 🔴 Blocker.

E7 — Create an amendment for failed employees 🔧 Needs developer setup

Steps 1. Ask a developer to mark some employees in a lodged contribution as failed/refunded. 2. Click Create amendment for N failed.

✅ Pass if a new Draft amendment is created containing only the failed employees, linked to the original.

❌ Fail if the amendment includes already-successful employees, or isn't linked to the parent — 🔴 Blocker (double-paying successful members).

E8 — Overdue / approaching-due banners

Steps 1. View a contribution whose due date is near or passed (and not Paid/Cancelled).

✅ Pass if an overdue banner shows past the due date, and an approaching-due warning shows within ~3 days.

❌ Fail if an overdue contribution shows no warning — 🟠 Major.


F. Payment details & SuperStream notifications

F1 — Payment instructions & copy buttons

Steps 1. On a Lodged/Paid contribution, expand Payment details and use the copy buttons (BSB, account, biller/PRN/CRN, etc.).

✅ Pass if the panel matches the payment method (Direct Debit vs EFT/BPAY), each copy button copies the right value (check icon confirms), and multi-payment splits show per organisation.

❌ Fail if a copy button copies the wrong value, or the panel shows the wrong method's fields — 🟠 Major.

F2 — Make-up payment card on a payment exception 🔧 Needs developer setup

Steps 1. Ask a developer to simulate a Direct Debit dishonour / under-payment notification.

✅ Pass if a red make-up payment card appears with alternate EFT/BPAY details and copy buttons, and the contribution stays Lodged (payment problem, not a system error) with a "Dishonoured/Under-payment" status.

❌ Fail if a payment-side exception flips the whole contribution to Error — 🔴 Blocker (it should remain Lodged with a payment flag).

F3 — SuperStream code hints in the activity timeline 🔧 Needs developer setup

Steps 1. Ask a developer to send Beam notifications with different SuperStream codes (e.g. member-not-found SUPER.GEN.GEN.21, over-payment .7).

✅ Pass if each known code shows an actionable "what to do" hint with the right tone (error/warning/info — over-payment is info/blue), the fund's message verbatim, and the error-code badge.

❌ Fail if codes show as raw text with no guidance, or the wrong tone — 🟠 Major.

F4 — Refund handling 🔧 Needs developer setup

Steps 1. Ask a developer to send a contribution response with a refund for one member, and separately one with a null context id (batch-level refund).

✅ Pass if the specific member shows Refunded with a date; a null-context refund falls back to the batch level; a refund whose context id matches no member is logged (not blanket-applied to everyone).

❌ Fail if a refund is dropped silently, or mis-applied to the wrong/all members — 🔴 Blocker.

F5 — Activity timeline & "show processing updates"

Steps 1. Open the contribution's activity timeline.

✅ Pass if lifecycle/payment/validation/notification events are interleaved newest-appropriate with coloured severity dots; a "Show N processing updates" toggle expands routine status pings.

❌ Fail if the timeline is empty when events exist, or the toggle doesn't work — 🟠 Major.

F6 — Status stepper

Steps 1. Look at the status stepper on a Lodged/Paid contribution.

✅ Pass if it reflects the lifecycle; a terminal-bad state shows a red node; it is suppressed for Draft/Cancelled/failed.

❌ Fail if the stepper shows a wrong or misleading stage — 🟠 Major.


G. AI diagnostics (Super Diagnostic panel)

G1 — Diagnosis appears on a failed/rejected contribution 🔧 Needs developer setup

Steps 1. On a contribution with failed employees or a sync rejection, view the Super Diagnostic panel.

✅ Pass if it lazily loads diagnosis cards (skeleton while loading), shows a confidence badge, and renders nothing when there are no diagnoses. An error state offers Retry.

❌ Fail if the panel crashes or shows diagnoses for a healthy contribution — 🟠 Major.

G2 — Apply fix

Steps 1. On an applicable diagnosis card, click Apply fix.

✅ Pass if it applies with a toast and a hint to lodge an amendment when ready; a refusal shows a warning with the reason.

❌ Fail if Apply fix silently changes nothing or corrupts data — 🔴 Blocker.

G3 — Dismiss

Steps 1. Click Dismiss on a diagnosis card.

✅ Pass if the card hides with a toast and does not reappear on refresh.

❌ Fail if a dismissed diagnosis keeps coming back — 🟠 Major.


H. Behind-the-scenes reliability (Beam notifications & status) 🔧 Needs developer setup

These verify the automatic pipeline. A developer simulates Beam notifications; you confirm the result on the contribution screen.

H1 — Status notification updates the batch

Steps 1. Ask a developer to send a STATUS notification for a lodged batch.

✅ Pass if the contribution and its employees update to the mapped status; a terminal status propagates to the unpaid employees with the correct send-to-fund date.

❌ Fail if the notification doesn't correlate to the batch, or updates the wrong one — 🔴 Blocker.

H2 — Exception system-error vs payment-side split

Steps 1. Ask a developer to send an unknown exception type, then a known payment-side one (dishonour/under-payment).

✅ Pass if the unknown type flips the contribution to Error, but the payment-side exception keeps it Lodged with a payment flag.

❌ Fail if a payment-side exception wrongly flips to Error, or an unknown type is ignored — 🔴 Blocker.

H3 — Duplicate notification is idempotent

Steps 1. Ask a developer to deliver the same Beam notification twice.

✅ Pass if it is processed once — no duplicate history rows, no double status changes.

❌ Fail if the same notification is processed twice — 🟠 Major.

H4 — Notifications are per-company (not by ABN)

Steps 1. With two companies connected, ask a developer to send notifications for each.

✅ Pass if each notification lands on the correct company's contribution.

❌ Fail if notifications for one company affect another, or the pipeline returns nothing — 🔴 Blocker.

H5 — Auto-poll keeps checking until settled

Steps 1. After a real lodge, leave the contribution and ask a developer to advance Beam through processing states over time.

✅ Pass if the background auto-poll keeps updating the status until it settles (it must keep polling through mid-flight "Reconciled", stopping only when genuinely complete/cancelled/error), and raises an alert when a batch enters an action-required state.

❌ Fail if auto-poll stops too early (leaving a stale status) or never alerts on action-required — 🟠 Major.