Back to Projects
Compliance·2025

FCA Regulatory Return Generator

HTML5JavaScriptExcelJSCSS3

What Needed Solving

The FCA requires every appointed representative to submit an annual CCR009 regulatory return covering introduction volumes, commission earned, and lending activity. With 170+ retailers on our panel, each return was being completed manually in Excel. That meant someone opening the FCA template, looking up the retailer's data in Salesforce, transcribing figures by hand, filling in the questionnaire sections, and saving the file. Each one took 1-2 hours.

Most retailers in our position would outsource this to a third-party compliance firm, paying them to compile the returns. That costs money and introduces a dependency on an external party who doesn't know the data as well as we do. I saw an opportunity to generate the entire output internally, at the click of a button, adding value to our retailer relationships at no added cost.

Technical Decisions

I built it as a single HTML file. This is an internal tool used by our compliance team, and a single-file architecture means zero deployment overhead, no hosting, and no maintenance burden. It works offline and can be run from any machine without setup. A web application would have needed authentication, hosting, and ongoing support for a process that runs once a year.

ExcelJS loaded via CDN generates the FCA-compliant workbook entirely client-side. No server processing means no data leaves the user's browser, which matters for compliance. I pre-populated all 170+ retailer entities from embedded JSON rather than an API call because the FCA data structure changes once a year at most. A wizard pattern rather than a single form, because the FCA return has conditional sections (questionnaire items 165A-176A only apply to certain retailer types). The step-by-step flow prevents incomplete submissions.

How It Works

Step 1 selects the retailer from a dropdown pre-populated with their entity data (FRN number, appointed rep details, introduction counts, commission figures). Step 2 walks through 13 optional questionnaire items covering channels, staff remuneration, commission models, marketing spend, and trade body membership. Step 3 reviews the completed data and generates the Excel workbook.

The generated file matches the FCA's CCR009 template structure with Credit Broking, General, DT-Volumes, and Table 8-10 sheets pre-filled. The return is ready for submission without further editing.

What It Changed

Per-retailer processing dropped from 1-2 hours to about 10 minutes. The compliance team reclaimed weeks of annual effort. Error rates fell because the data is pre-populated from source systems rather than manually transcribed. And we eliminated the need for a third-party compliance firm entirely, turning a cost centre into a value-add for our retailer relationships. We now offer this as part of our service, strengthening partnerships at zero marginal cost.

Try It

This demo contains fictional retailers and sample data. The wizard flow, questionnaire, preview figures, and validation all work exactly as they do in the production tool. The Excel export is disabled in this demo.