TemidireOpen for projects
All projects

Case 04 / 04FIRS, via Resilience17, 2025 to 2026

Government bill payments

One place to look up and pay federal and state government bills, from FIRS tax to agency fees, powered by Flutterwave.

Client
FIRS, via Resilience17
Year
2025 to 2026
Role
Top contributor in a team of about 5
Timeline
Aug 2025 to Jun 2026
Result
Federal and state bills paid in one flow, with no login
Pay any agency, no login needed
Find the agency or billVerify the payerRaise the chargePay through FlutterwaveConfirm, or raise a complaint
102commits of mine, the most on the team
17pages across lookup, agencies, payment and status
3revenue authorities in one bill lookup

01The problem

Paying a government bill means finding the right agency, the right service and the right reference, then trusting that the money reached the treasury. The portal had to cover federal agencies and FIRS alongside state authorities like FCT-IRS and Lagos, with part-payments, identity checks and complaints, for people who never log in.

02The approach

A Next.js portal where a payer searches for an agency or looks up a bill reference, verifies who they are with a NIN or a company RC number, and pays through Flutterwave checkout. Behind the scenes the app raises the charge in RevOps, attaches TSA metadata to the payment, reports it to RevOps and Remita once it settles, and handles part-payments and complaints.

Next.jsReactTypeScriptTailwind CSSshadcn/uiReact QueryZodFFlutterwave

03How it works

Step 01

Find the agency or bill

Search a federal or state agency, or paste a bill reference. The lookup routes by status: new, pending, part-paid or already paid.

Step 02

Verify the payer

Individuals verify with a NIN and companies with an RC number, each on its own validated form.

Step 03

Raise the charge

The app creates the charge in RevOps and attaches TSA metadata to the payment, so the money is traceable to the right account.

Step 04

Pay through Flutterwave

Card or bank transfer through Flutterwave checkout, finalised after payment, with the transaction ID passed on to Remita.

Step 05

Confirm, or raise a complaint

A status page with a downloadable receipt, and a complaint form with file upload for when something went wrong.

04Before and after

Before

  • Each agency's bills paid in a different place
  • Unclear whether a part-payment counted
  • No identity check for company bills
  • Payment problems handled off-platform

After

  • One lookup for federal and state bills
  • Clear status: new, pending, part-paid or paid
  • NIN and RC number checks in the payment form
  • Complaints with evidence, from the success page

05See it run

The home page: search any federal or state agency and pay, powered by Flutterwave
Look up any agency
A searchable grid of federal agencies
Federal agencies
Payment details for an individual, with the NIN field and a Corporate tab
Payer details, NIN or RC number
Flutterwave checkout confirming a completed payment
Paid through Flutterwave

06Proof it holds up

  • Part-payments are recognised in the lookup, and amounts are formatted in naira throughout.
  • Every payment carries TSA metadata and is reported to RevOps and Remita once it settles.
  • I moved data fetching to React Query, reorganised the code into feature modules, and led the June 2026 redesign of the service search.
Federal and state bills paid in one flow, with no login
Next caseLead research agent