Consolidated Supplier Onboarding Report
- Context
- Corporate finance — supplier payments processed for multiple clients (client anonymised)
- Status
- Delivered
- Tools
- Power BI, SQL, Power Query
Executive summary
I built a consolidated supplier onboarding report for a corporate finance company that processes supplier payments for many clients across at least eight finance systems. It shows which suppliers were onboarded or rejected and why, checks that each supplier's required information is filled in correctly, confirms that banking details were verified by someone other than the person who completed the onboarding, and gives a separate view of B-BBEE classifications and registrations. Restructuring the underlying queries also reduced the measured server/query time from about 390 seconds to about 89 seconds.
8+
Finance systems consolidated
Supplier onboarding checked per system and per client in one report
~390 s → ~89 s
Server/query aggregate
Measured query-side time before and after restructuring
~77%
Query-side reduction
Not an end-to-end dashboard refresh measurement
How to read this result. The timing is the measured server/query aggregate, not end-to-end dashboard refresh time.
Business context
The client is a corporate finance company that processes supplier payments on behalf of many clients, and each of those clients has a large supplier base. A supplier must be onboarded correctly before it can be paid. Missing, outdated or incorrect supplier information is a risk: it delays onboarding, leads to rejected applications and, where banking details are concerned, opens the door to payment fraud.
Challenge
Supplier records were held across at least eight finance systems. The finance team needed a fool-proof, automated way to see, for every client:
- which suppliers had been onboarded, which had been rejected, and why;
- whether each supplier’s required information had been filled in correctly, according to the finance team’s onboarding requirements;
- whether the supplier’s banking details had been verified — and verified by a different person from the one who completed the onboarding, so that no single person could both capture and approve banking details;
- each supplier’s B-BBEE classification and registration, in an easy view across all of the systems.
My contribution
- Consolidated supplier onboarding data from 8+ finance systems into one report, broken down by system and by client.
- Defined field-level checks for each required supplier field, based on the finance team’s onboarding requirements.
- Built onboarding status tracking — onboarded, in progress or rejected — with the reason for each rejection.
- Added a banking-verification control that shows whether banking details were verified, and flags any supplier where the verifier is the same person who completed the onboarding.
- Built a separate B-BBEE view of classifications and registrations.
- Restructured the underlying queries and measured server/query time before and after.
Investigation and methodology
The work started from the finance team’s own onboarding requirements: for each required field, what counts as filled in correctly. Each requirement became a check that runs for every supplier, in every system, for every client.
There is no matching between systems. Each supplier record is checked against the requirements where it lives, so a missing or incorrect value points straight to the system and client where it has to be fixed.
Solution design and implementation
The report serves two purposes.
- Onboarding control. Onboarding status and rejection reasons, missing or incorrect field values by system and client, and the banking-verification check with segregation of duties. The finance team can see exactly what to investigate and fix, then continue with their processes.
- B-BBEE overview. Supplier B-BBEE classifications and registration status across all of the systems in one place. This view is used by a separate team, which investigates it independently; it is not matched against anything.
Results and business value
- One view instead of eight: onboarding status, rejection reasons and data issues for every client across 8+ finance systems in a single report.
- Fixable data quality: missing field values are identified per system and client, so the team knows where to fix them.
- Fraud control: banking details must be verified, and verified independently of the person who completed the onboarding; exceptions are flagged.
- Query side: measured server/query aggregate reduced from approximately 390 seconds to approximately 89 seconds, about 77%.
Technical details
- Required-field checks: each supplier field tested for presence and validity against the onboarding requirements, per system and per client.
- Segregation of duties: the banking check compares the user who completed the onboarding with the user who verified the banking details and flags any record where they are the same.
- Rejections: rejection reasons captured as categories, so recurring causes can be addressed at source.
- Timing scope: aggregate of server/query execution for the reporting workload; visual rendering and refresh orchestration excluded. (390 − 89) ÷ 390 ≈ 0.772.
Lessons, constraints and improvement opportunities
- A check is only useful when it says where the problem is: “missing in this system, for this client” is something a person can act on.
- Controls such as segregation of duties are easiest to sustain when the report makes every exception visible.
- Be precise about what a performance number measures; query time and refresh time are different claims.
- Supplier data quality
- Fraud controls
- Segregation of duties
- Query optimisation
Interactive demonstration
Explore a synthetic version
Built independently with generated data and illustrative business rules, to show the analytical approach without exposing any client system or record.
Illustrative demonstration using synthetic data. Not an original client system. Company, store and people names are fictional (Bluegum Financial Services).
Consolidated supplier onboarding report
320 fictional suppliers across eight finance systems and six clients. Switch between the onboarding control view and the separate B-BBEE overview.
- Suppliers in view
- 320
- Onboarded
- 57%
- Missing or incorrect fields
- 95
- Verified by the onboarder
- 10
- Segregation-of-duties breaches
Show data table
| Finance system | Records with issues |
|---|---|
| Ledger One | 5 |
| PayCore | 9 |
| Atlas ERP | 12 |
| FinTrack | 21 |
| Meridian AP | 4 |
| Corvus | 6 |
| Summit Books | 17 |
| Harbour Pay | 21 |
Show data table
| Reason | Suppliers |
|---|---|
| Bank letter does not match account | 13 |
| Required documents not supplied | 18 |
| Tax number invalid | 9 |
| Duplicate supplier request | 22 |
| Company not registered | 12 |
Show data table
| Verification | Suppliers |
|---|---|
| Verified independently | 202 |
| Not yet verified | 108 |
| Verified by onboarder | 10 |
- Before
- After
Show data table
| Query step | Before (s) | After (s) |
|---|---|---|
| Supplier extract (8 systems) | 118 | 26 |
| Required-field checks | 96 | 22 |
| Banking verification checks | 70 | 17 |
| Rejection reasons | 42 | 9 |
| B-BBEE summary | 64 | 15 |
| Total | 390 | 89 |
| ID | Supplier (fictional) | System | Client | Status | Issues / rejection reason | Banking check |
|---|---|---|---|---|---|---|
| SUP-1024 | Clearwater Logistics | Harbour Pay | Sable Energy | In progress | Bank details missing, Contact email incorrect | Not yet verified |
| SUP-1039 | Silverleaf Catering | Summit Books | Marula Foods | Rejected | Tax number missing, Company registration missing — Tax number invalid | Not yet verified |
| SUP-1055 | Ironwood IT | Summit Books | Sable Energy | Rejected | Bank details incorrect, Contact email missing — Bank letter does not match account | Not yet verified |
| SUP-1060 | Clearwater Logistics | FinTrack | Acacia Retail | Rejected | Tax number incorrect, Contact email missing — Tax number invalid | Not yet verified |
| SUP-1064 | Clearwater Holdings | Harbour Pay | Marula Foods | Rejected | Contact email missing, Physical address missing — Duplicate supplier request | Not yet verified |
| SUP-1084 | Granite Services | FinTrack | Acacia Retail | Rejected | Bank details missing, Physical address incorrect — Bank letter does not match account | Not yet verified |
| SUP-1095 | Redstone Logistics | Summit Books | Marula Foods | In progress | Bank details incorrect, Physical address missing | Verified independently |
| SUP-1118 | Ironwood Holdings | Corvus | Kestrel Mining | In progress | Bank details incorrect, Tax number missing | Verified independently |
| SUP-1176 | Karoo Services | Harbour Pay | Protea Health | Rejected | Tax number missing, Physical address incorrect — Tax number invalid | Not yet verified |
| SUP-1180 | Karoo Print | FinTrack | Protea Health | Rejected | Bank details missing, Contact email incorrect — Bank letter does not match account | Not yet verified |
| SUP-1228 | Redstone Supplies | FinTrack | Protea Health | In progress | Contact email incorrect, Physical address missing | Verified independently |
| SUP-1246 | Fynbos Facilities | Corvus | Sable Energy | Rejected | Contact email missing, Physical address incorrect — Required documents not supplied | Not yet verified |
| SUP-1251 | Redstone Holdings | Atlas ERP | Marula Foods | Rejected | Company registration missing, Contact email missing — Company not registered | Not yet verified |
| SUP-1252 | Northwind Supplies | FinTrack | Sable Energy | In progress | Company registration missing, Contact email missing | Not yet verified |
| SUP-1262 | Silverleaf Services | Corvus | Kestrel Mining | Rejected | Bank details missing, Tax number missing — Bank letter does not match account | Not yet verified |