Buy-Now-Pay-Later: Risk Analytics on Apache Superset
Master BNPL risk analytics on Apache Superset. Vintage analysis, default trends, unit economics for AU lenders. Actionable guide for credit risk teams.
Table of Contents
- Why BNPL Risk Analytics Matters
- The BNPL Risk Landscape in Australia
- Core Risk Metrics for BNPL Lenders
- Building Your BNPL Risk Dashboard on Apache Superset
- Vintage Analysis: Tracking Cohort Performance
- Default Trends and Early Warning Systems
- Unit Economics and Portfolio Profitability
- Implementation on D23.io’s Managed Stack
- Operationalising Your Risk Dashboard
- Next Steps: From Insight to Action
Why BNPL Risk Analytics Matters
Buy-now-pay-later (BNPL) has transformed consumer credit in Australia and globally. Platforms like Afterpay, Klarna, and Zip have processed billions in transactions, but they’ve also introduced new risk paradigms that traditional credit analytics frameworks struggle to address.
Unlike conventional consumer lending—where underwriting happens upfront and risk is managed through pricing and collections—BNPL operates on a fundamentally different model. Merchants pay the BNPL provider a commission, not consumers. This inverts the risk incentive structure: lenders absorb default risk whilst competing on merchant acquisition and transaction volume. The result? Explosive growth paired with rising delinquency rates and portfolio stress.
For Australian BNPL lenders and consumer credit operators, understanding this risk landscape isn’t optional—it’s survival. The Risk-Reward of Buy Now, Pay Later from GARP documents how BNPL delinquency rates have climbed as the sector matures, with some providers reporting 30-day delinquency rates exceeding 3-4% on newer vintages. That’s 10-15x higher than prime credit cards.
Risk analytics on Apache Superset allows you to move from reactive firefighting to proactive portfolio management. Instead of waiting for quarterly loss reports, you can monitor default trends in real time, segment cohorts by origination vintage, and pinpoint which customer segments, merchants, or product tiers are driving losses. This isn’t just about compliance—it’s about maximising unit economics and protecting your capital base.
The BNPL Risk Landscape in Australia
Market Growth and Regulatory Pressure
Australia’s BNPL market has grown exponentially. Buy Now, Pay Later: Market Overview Report from Datos Insights shows that Australian BNPL transaction volumes have grown 40%+ year-on-year, with the sector now accounting for over 5% of e-commerce transactions. However, this growth has triggered regulatory scrutiny from ASIC and the Reserve Bank of Australia.
In 2024, ASIC tightened responsible lending obligations, requiring BNPL operators to conduct proper affordability assessments—a shift that mirrors traditional credit licensing. Simultaneously, the RBA has expressed concern about credit growth and consumer debt. This regulatory environment means that BNPL lenders must now demonstrate rigorous risk management practices, not just growth metrics.
Key Risk Drivers in the BNPL Segment
Buy Now, Pay Later Fraud: Challenges and Solutions for Merchants from LexisNexis Risk Solutions identifies the primary risk vectors in BNPL:
- Synthetic Identity Fraud: Fraudsters create fake identities using stolen personal information and open multiple BNPL accounts across platforms. Because BNPL providers don’t require traditional credit checks, this risk is amplified.
- First-Party Fraud: Legitimate customers deliberately default, knowing that BNPL collections are weaker than traditional lenders. Some customers treat BNPL as interest-free credit with minimal enforcement.
- Merchant Collusion: High-risk merchants (drop-shippers, counterfeit goods sellers) deliberately attract BNPL users, knowing default rates will be elevated.
- Macroeconomic Sensitivity: BNPL defaults spike during economic downturns. Rising interest rates and cost-of-living pressures hit BNPL cohorts harder because they’re often lower-income consumers.
Buy now, pay later: a cross-country analysis from the Bank for International Settlements provides global context: BNPL delinquency rates in mature markets (UK, US, Australia) are 2-3x higher than traditional consumer credit, and this gap widens during economic stress.
Consumer Risk Perception and Debt Accumulation
Risk Perception on Buy-now, Pay-later Platforms from Technology Science reveals that many consumers underestimate BNPL debt accumulation. Because BNPL transactions feel frictionless—no visible interest charges, no formal credit application—users often treat it as “free money” rather than debt. This cognitive bias drives higher default rates, particularly among younger, lower-income cohorts.
In Australia, where household debt is already elevated, BNPL adds another layer of unsecured credit risk. Regulators are increasingly concerned about debt spirals where consumers accumulate BNPL balances across multiple platforms, creating hidden leverage.
Core Risk Metrics for BNPL Lenders
Before building your dashboard, you need to define the metrics that matter. Here are the essential KPIs for BNPL risk management:
1. Default and Delinquency Rates
30-Day Delinquency Rate = (Accounts 30+ days past due / Total active accounts) × 100
This is your primary early warning signal. Track this by vintage (origination cohort), customer segment, merchant category, and product tier. A 1% increase in 30-day delinquency is a red flag requiring immediate investigation.
Charge-Off Rate = (Balances written off / Total balances originated) × 100
Measure this on a rolling 12-month basis by vintage. For BNPL, expect 3-5% charge-off rates on mature vintages (12+ months old) in normal economic conditions.
2. Vintage Analysis Metrics
Cumulative Loss Rate by Vintage = (Total losses from 2024Q1 originations / Total 2024Q1 originations) × 100
Vintage analysis is the cornerstone of BNPL risk management. Each origination cohort (e.g., all customers acquired in January 2024) follows a predictable loss curve. By tracking cumulative losses as each vintage ages, you can:
- Identify underwriting deterioration (newer vintages defaulting faster than historical cohorts)
- Forecast portfolio losses (project what 2024 originations will ultimately cost)
- Detect fraud rings (unusual loss spikes in specific months or channels)
3. Unit Economics Metrics
Net Revenue per Account = (Total merchant commissions - customer acquisition cost - default losses) / Total accounts
This is the metric that separates sustainable BNPL from unsustainable growth. If your net revenue per account is negative, you’re destroying shareholder value regardless of transaction volume.
Loss Rate Adjusted Yield = (Merchant commission % - expected loss rate) × Average transaction value
For a BNPL provider earning 5% merchant commission on a $100 average transaction with a 3% loss rate, the loss-adjusted yield is 2% × $100 = $2 per transaction. After customer acquisition costs (typically $10-20 per new customer), profitability becomes marginal.
4. Cohort Retention and Repeat Purchase Rate
Repeat Purchase Rate by Vintage = (Accounts with 2+ purchases in month X / Accounts originated in month X) × 100
Higher repeat purchase rates lower per-transaction acquisition costs, improving unit economics. Track this by vintage to identify which origination cohorts are highest-value.
5. Fraud and Synthetic Identity Metrics
Fraud Rate = (Fraudulent transactions / Total transactions) × 100
Synthetic Identity Rate = (Accounts flagged as synthetic / Total new accounts) × 100
These require integration with fraud detection tools (third-party risk signals, device fingerprinting, identity verification). BNPL fraud rates typically run 0.5-2%, but can spike to 5%+ during periods of weak underwriting.
Building Your BNPL Risk Dashboard on Apache Superset
Why Apache Superset for BNPL Risk?
Introduction to Apache Superset from the official documentation highlights its core strengths: fast, intuitive data exploration; flexible SQL layer; and no-code dashboard building. For BNPL risk teams, Superset offers three critical advantages:
- Speed: Build dashboards in hours, not weeks. Your risk environment changes monthly; you can’t wait for BI tool vendors.
- Cost: Superset is open-source. No per-user licensing, no seat-based pricing. For a team of 10-20 risk analysts, this saves $50K-100K annually.
- Flexibility: SQL-based queries mean you can pivot metrics on the fly. Need to segment defaults by merchant category, customer age, and transaction size simultaneously? Write a query.
The $50K D23.io Consulting Engagement: What’s Inside from PADISO Blog documents a real Apache Superset rollout for a AU BNPL provider. The engagement delivered a complete semantic layer, SSO integration, 15+ production dashboards, and team training in 6 weeks. The client went from spreadsheet-based reporting to real-time risk analytics in under two months.
Architecture: Data Pipeline to Dashboard
Your Superset implementation needs a data pipeline:
- Data Source: Your BNPL transaction database (PostgreSQL, MySQL, Snowflake, or BigQuery)
- ETL Layer: Daily (or real-time) sync of transactions, accounts, payments, and defaults
- Semantic Layer: Pre-calculated metrics (delinquency rates, vintage cohorts, unit economics)
- Superset: Query the semantic layer, build interactive dashboards
For Australian BNPL lenders, we recommend hosting on D23.io’s managed Superset stack. D23.io provides:
- Compliance-ready infrastructure: SOC 2 Type II certified, ISO 27001 aligned
- Performance: Optimised for analytical queries on datasets with millions of transactions
- Security: Row-level security (RLS) so different teams see only their data
- Scalability: Auto-scaling for peak reporting periods
Essential Dashboards for BNPL Risk
Dashboard 1: Executive Risk Scorecard
Audience: CEO, CFO, Risk Committee
Key Metrics:
- Current portfolio delinquency rate (30-day, 60-day, 90-day)
- Charge-off rate (rolling 12-month)
- Expected loss reserve (as % of AUM)
- Vintage cohort performance (heatmap: vintage on Y-axis, age on X-axis, loss rate as colour)
Design: Single-page, high-level overview. Green/amber/red thresholds for each metric. Drill-down capability to deeper dashboards.
Dashboard 2: Vintage Analysis and Cohort Tracking
Audience: Risk analysts, credit team
Key Metrics:
- Cumulative loss rate by vintage (line chart: vintage on X-axis, cumulative loss % on Y-axis)
- Delinquency curve by vintage (30-day delinquency rate as vintage ages)
- Origination volume by vintage (bar chart)
- Repeat purchase rate by vintage
- Fraud rate by vintage
Design: Multi-chart dashboard with ability to filter by product type, merchant category, customer segment. Benchmarking against historical averages.
Dashboard 3: Default Trends and Early Warning
Audience: Collections team, risk managers
Key Metrics:
- 30-day delinquency rate (time series: daily or weekly)
- Delinquency rate by merchant category (heatmap)
- Delinquency rate by customer segment (age, income, geography)
- Collections recovery rate (% of delinquent accounts recovered)
- Days sales outstanding (DSO) by cohort
Design: Real-time updates (daily refresh minimum). Alerts when delinquency rate exceeds threshold (e.g., >3.5%). Drill-down to individual accounts.
Dashboard 4: Unit Economics and Profitability
Audience: CFO, Product, Merchant team
Key Metrics:
- Net revenue per account (by vintage, segment, merchant category)
- Merchant commission revenue (by merchant, category, vintage)
- Customer acquisition cost (CAC) by channel
- Lifetime value (LTV) by cohort
- LTV/CAC ratio (target: >3:1 for sustainable growth)
- Loss-adjusted yield by product tier
Design: Comparative view (current month vs. same month last year). Segment-level P&L.
Dashboard 5: Fraud and Risk Flags
Audience: Fraud team, compliance
Key Metrics:
- Fraud rate (overall and by merchant category)
- Synthetic identity rate (new accounts)
- High-risk merchant concentration (% of portfolio from top 10 merchants)
- Repeat defaulter rate (accounts with multiple defaults)
- Account velocity (accounts opened per day, per IP, per device)
Design: Real-time alerts for suspicious patterns. Drill-down to account-level details.
Vintage Analysis: Tracking Cohort Performance
Vintage analysis is the most powerful tool in BNPL risk management. Here’s why it matters and how to implement it on Superset.
Why Vintage Analysis Works for BNPL
BNPL defaults follow a predictable lifecycle. A cohort of customers acquired in January 2024 will show:
- Month 1: Minimal defaults (most customers are still in their first purchase)
- Month 3-6: Delinquency accelerates as economic stress and fraud patterns emerge
- Month 12+: Delinquency rates stabilise at a “mature” level (typically 3-5% cumulative loss)
By tracking each cohort from origination to maturity, you can:
- Forecast portfolio losses: If 2024 originations are defaulting 20% faster than 2023 originations, you can project a higher loss reserve.
- Identify underwriting deterioration: A sudden spike in losses for a specific month indicates a fraud ring, weak underwriting, or merchant collusion.
- Segment by origination channel: Customers acquired via paid marketing may default faster than organic customers. Vintage analysis reveals this.
- Optimise pricing: If a specific customer segment defaults at 5% vs. 2% for others, you need to price differently or tighten underwriting.
Building the Vintage Analysis Query
Here’s a SQL template for your semantic layer:
WITH vintage_cohorts AS (
SELECT
DATE_TRUNC('month', account_created_date) AS origination_month,
account_id,
customer_segment,
merchant_category,
original_balance,
CASE WHEN default_date IS NOT NULL THEN 1 ELSE 0 END AS is_defaulted,
DATEDIFF(month, DATE_TRUNC('month', account_created_date), COALESCE(default_date, CURRENT_DATE)) AS months_to_default
FROM accounts
WHERE account_created_date >= '2023-01-01'
)
SELECT
origination_month,
months_to_default,
COUNT(*) AS accounts,
SUM(is_defaulted) AS defaults,
ROUND(100.0 * SUM(is_defaulted) / COUNT(*), 2) AS delinquency_rate,
SUM(original_balance) AS total_balance,
SUM(CASE WHEN is_defaulted = 1 THEN original_balance ELSE 0 END) AS default_balance,
ROUND(100.0 * SUM(CASE WHEN is_defaulted = 1 THEN original_balance ELSE 0 END) / SUM(original_balance), 2) AS loss_rate_pct
FROM vintage_cohorts
GROUP BY origination_month, months_to_default
ORDER BY origination_month DESC, months_to_default ASC;
This query creates a vintage × age matrix. Visualise it as a heatmap in Superset:
- X-axis: Months since origination (0, 1, 2, 3, … 24)
- Y-axis: Origination month (Jan 2023, Feb 2023, … Dec 2024)
- Colour: Delinquency rate (green for <2%, amber for 2-3%, red for >3%)
This heatmap instantly reveals if newer vintages are deteriorating.
Interpreting Vintage Curves
Healthy Vintage Curve: Delinquency rate starts at 0.2% in month 1, rises to 1.5% by month 6, and stabilises at 2.5% by month 12.
Deteriorating Vintage: Delinquency rate jumps to 1% in month 2, 3% in month 4, and 5% in month 6. This suggests either weaker underwriting in recent months or a fraud ring.
Seasonal Pattern: Delinquency rates spike in January-February (post-holiday debt stress) and dip in September-October (spring spending). Account for this when comparing vintages.
Default Trends and Early Warning Systems
Real-Time Delinquency Monitoring
Whilst vintage analysis is backward-looking, real-time delinquency monitoring is forward-looking. Here’s how to set it up on Superset:
Daily Delinquency Rate Tracking
Create a time-series chart showing 30-day delinquency rate over the past 90 days:
WITH daily_delinquency AS (
SELECT
snapshot_date,
COUNT(*) AS total_accounts,
SUM(CASE WHEN days_past_due >= 30 THEN 1 ELSE 0 END) AS delinquent_accounts,
ROUND(100.0 * SUM(CASE WHEN days_past_due >= 30 THEN 1 ELSE 0 END) / COUNT(*), 2) AS delinquency_rate
FROM account_daily_snapshots
WHERE snapshot_date >= CURRENT_DATE - INTERVAL 90 DAY
GROUP BY snapshot_date
)
SELECT * FROM daily_delinquency
ORDER BY snapshot_date DESC;
Visualise this as a line chart with a trend line. Add a threshold band (e.g., 3.5% delinquency = red alert). If the 7-day moving average crosses the threshold, trigger an alert to the risk team.
Delinquency by Merchant Category
Segment delinquency by merchant type to identify high-risk categories:
SELECT
merchant_category,
COUNT(*) AS accounts,
SUM(CASE WHEN days_past_due >= 30 THEN 1 ELSE 0 END) AS delinquent_accounts,
ROUND(100.0 * SUM(CASE WHEN days_past_due >= 30 THEN 1 ELSE 0 END) / COUNT(*), 2) AS delinquency_rate
FROM account_daily_snapshots
WHERE snapshot_date = CURRENT_DATE
GROUP BY merchant_category
ORDER BY delinquency_rate DESC;
If electronics merchants show 5% delinquency whilst groceries show 1.5%, investigate. Is there a specific electronics merchant driving losses? Are electronics purchases more prone to buyer’s remorse (and intentional default)?
Delinquency by Customer Segment
SELECT
customer_age_band,
customer_income_band,
COUNT(*) AS accounts,
ROUND(100.0 * SUM(CASE WHEN days_past_due >= 30 THEN 1 ELSE 0 END) / COUNT(*), 2) AS delinquency_rate
FROM account_daily_snapshots
WHERE snapshot_date = CURRENT_DATE
GROUP BY customer_age_band, customer_income_band
ORDER BY delinquency_rate DESC;
This reveals if defaults are concentrated in lower-income cohorts (expected) or if a specific demographic is underperforming (potential fraud or underwriting issue).
Early Warning Signals
Beyond delinquency rates, monitor these leading indicators:
1. Payment Velocity Deterioration
Track the % of customers paying on time (within 7 days of due date):
SELECT
DATE_TRUNC('week', payment_date) AS payment_week,
COUNT(*) AS total_payments,
SUM(CASE WHEN DATEDIFF(day, due_date, payment_date) <= 7 THEN 1 ELSE 0 END) AS on_time_payments,
ROUND(100.0 * SUM(CASE WHEN DATEDIFF(day, due_date, payment_date) <= 7 THEN 1 ELSE 0 END) / COUNT(*), 2) AS on_time_rate
FROM payments
GROUP BY payment_week
ORDER BY payment_week DESC;
A sudden drop in on-time payment rate (e.g., from 85% to 75%) precedes delinquency spikes by 2-4 weeks. This is your canary in the coal mine.
2. Repeat Defaulter Concentration
Track the % of delinquent accounts that have defaulted before:
WITH repeat_defaulters AS (
SELECT
account_id,
COUNT(*) AS default_count
FROM defaults
GROUP BY account_id
HAVING COUNT(*) > 1
)
SELECT
COUNT(DISTINCT a.account_id) AS total_delinquent_accounts,
COUNT(DISTINCT CASE WHEN rd.account_id IS NOT NULL THEN a.account_id END) AS repeat_defaulter_accounts,
ROUND(100.0 * COUNT(DISTINCT CASE WHEN rd.account_id IS NOT NULL THEN a.account_id END) / COUNT(DISTINCT a.account_id), 2) AS repeat_defaulter_pct
FROM accounts a
LEFT JOIN repeat_defaulters rd ON a.account_id = rd.account_id
WHERE a.days_past_due >= 30;
If 50%+ of current delinquencies are from repeat defaulters, your collections process is failing. These accounts should be suspended or closed after first default.
3. Merchant Concentration Risk
Monitor the % of delinquencies concentrated in the top 10 merchants:
WITH merchant_delinquency AS (
SELECT
merchant_id,
COUNT(*) AS delinquent_accounts,
SUM(outstanding_balance) AS delinquent_balance,
ROW_NUMBER() OVER (ORDER BY COUNT(*) DESC) AS merchant_rank
FROM accounts
WHERE days_past_due >= 30
GROUP BY merchant_id
)
SELECT
SUM(CASE WHEN merchant_rank <= 10 THEN delinquent_accounts ELSE 0 END) AS top_10_delinquencies,
SUM(delinquent_accounts) AS total_delinquencies,
ROUND(100.0 * SUM(CASE WHEN merchant_rank <= 10 THEN delinquent_accounts ELSE 0 END) / SUM(delinquent_accounts), 2) AS top_10_concentration_pct
FROM merchant_delinquency;
If 60%+ of delinquencies come from 10 merchants, you have a merchant quality problem. Investigate those merchants for collusion, fraud, or product quality issues.
Unit Economics and Portfolio Profitability
The Profitability Formula
For BNPL, unit economics are brutally simple:
Net Profit per Account = (Merchant Commission per Account) − (Customer Acquisition Cost) − (Expected Loss per Account)
For a BNPL provider:
- Merchant commission: 3-6% of transaction value
- Average transaction: $80-150
- Expected loss rate: 2-5% of transaction value
- Customer acquisition cost: $10-30 per new customer
Let’s work through an example:
- Merchant commission: 4% × $100 average transaction = $4 per transaction
- Repeat purchase rate: 2 purchases per customer per year
- Gross revenue per customer per year: $4 × 2 = $8
- Customer acquisition cost: $15 per customer
- Expected loss rate: 3% × $100 × 2 transactions = $6 per customer per year
- Net profit per customer per year: $8 − $15 − $6 = −$13
This customer is unprofitable. To break even, you need either:
- Higher repeat purchase rates (3+ transactions per year)
- Lower acquisition costs (<$10)
- Lower loss rates (<2%)
- Higher merchant commission rates (5%+)
Buy Now, Pay Later (BNPL) Growth Raises Concerns from Morgan Stanley documents how many BNPL providers are trapped in this profitability squeeze. They’re growing transaction volume, but unit economics are deteriorating because loss rates are rising faster than they can lower acquisition costs.
Building Unit Economics Dashboards
Create a monthly unit economics report:
WITH monthly_cohort_economics AS (
SELECT
DATE_TRUNC('month', a.account_created_date) AS origination_month,
COUNT(DISTINCT a.account_id) AS new_accounts,
SUM(t.transaction_amount) AS total_transaction_value,
COUNT(t.transaction_id) AS total_transactions,
ROUND(AVG(t.transaction_amount), 2) AS avg_transaction_value,
COUNT(DISTINCT CASE WHEN t.transaction_id IS NOT NULL THEN a.account_id END) AS repeat_purchase_accounts,
ROUND(100.0 * COUNT(DISTINCT CASE WHEN t.transaction_id IS NOT NULL THEN a.account_id END) / COUNT(DISTINCT a.account_id), 2) AS repeat_purchase_rate,
SUM(cac.acquisition_cost) AS total_cac,
ROUND(SUM(cac.acquisition_cost) / COUNT(DISTINCT a.account_id), 2) AS avg_cac_per_account,
SUM(CASE WHEN d.default_id IS NOT NULL THEN d.default_amount ELSE 0 END) AS total_defaults,
ROUND(100.0 * SUM(CASE WHEN d.default_id IS NOT NULL THEN d.default_amount ELSE 0 END) / SUM(t.transaction_amount), 2) AS loss_rate_pct,
SUM(mc.commission_amount) AS total_merchant_commission
FROM accounts a
LEFT JOIN transactions t ON a.account_id = t.account_id
LEFT JOIN customer_acquisition_costs cac ON a.account_id = cac.account_id
LEFT JOIN defaults d ON a.account_id = d.account_id
LEFT JOIN merchant_commissions mc ON t.transaction_id = mc.transaction_id
GROUP BY DATE_TRUNC('month', a.account_created_date)
)
SELECT
origination_month,
new_accounts,
avg_transaction_value,
repeat_purchase_rate,
avg_cac_per_account,
loss_rate_pct,
ROUND(total_merchant_commission / new_accounts, 2) AS commission_per_account,
ROUND((total_merchant_commission / new_accounts) - avg_cac_per_account - (total_defaults / new_accounts), 2) AS net_profit_per_account
FROM monthly_cohort_economics
ORDER BY origination_month DESC;
Visualise this as a table with conditional formatting:
- Green: Net profit per account > $0
- Amber: Net profit between −$5 and $0
- Red: Net profit < −$5
Track this metric religiously. If it’s turning red, your business model is unsustainable.
Segment-Level Profitability
Drill down by customer segment:
SELECT
customer_income_band,
customer_age_band,
COUNT(DISTINCT a.account_id) AS accounts,
ROUND(SUM(mc.commission_amount) / COUNT(DISTINCT a.account_id), 2) AS commission_per_account,
ROUND(SUM(cac.acquisition_cost) / COUNT(DISTINCT a.account_id), 2) AS cac_per_account,
ROUND(100.0 * SUM(CASE WHEN d.default_id IS NOT NULL THEN d.default_amount ELSE 0 END) / SUM(t.transaction_amount), 2) AS loss_rate_pct,
ROUND((SUM(mc.commission_amount) / COUNT(DISTINCT a.account_id)) - (SUM(cac.acquisition_cost) / COUNT(DISTINCT a.account_id)) - (SUM(CASE WHEN d.default_id IS NOT NULL THEN d.default_amount ELSE 0 END) / SUM(t.transaction_amount)), 2) AS net_profit_per_account
FROM accounts a
LEFT JOIN transactions t ON a.account_id = t.account_id
LEFT JOIN customer_acquisition_costs cac ON a.account_id = cac.account_id
LEFT JOIN defaults d ON a.account_id = d.account_id
LEFT JOIN merchant_commissions mc ON t.transaction_id = mc.transaction_id
GROUP BY customer_income_band, customer_age_band
ORDER BY net_profit_per_account DESC;
This reveals which segments are profitable. If high-income customers are profitable and low-income customers are loss-making, you may need to tighten underwriting for low-income cohorts or price them differently.
Implementation on D23.io’s Managed Stack
Why D23.io for BNPL Analytics
D23.io is a managed Superset platform optimised for Australian financial services. For BNPL lenders, it offers:
- Compliance Infrastructure: SOC 2 Type II certified, ISO 27001 aligned. Your dashboards meet regulatory requirements out of the box.
- Performance: Optimised for large analytical datasets (millions of transactions, billions in AUM). Queries run in seconds, not minutes.
- Security: Row-level security (RLS) so different teams (risk, collections, merchant) see only their data.
- Semantic Layer: Pre-built metrics for delinquency, vintage analysis, unit economics. Start analysing on day one.
- Support: Australian-based support team who understand BNPL and ASIC requirements.
The D23.io Implementation Process
A typical engagement follows this timeline:
Week 1: Discovery and Architecture
- Audit your existing data sources (transaction database, payment system, fraud detection)
- Design the semantic layer (which metrics to pre-calculate, which to compute on-the-fly)
- Plan dashboard structure (executive, risk analyst, collections, merchant)
Week 2-3: ETL and Semantic Layer
- Build ETL pipelines (daily sync of transactions, accounts, payments, defaults)
- Create semantic layer tables (delinquency, vintage cohorts, unit economics)
- Implement row-level security (RLS) policies
Week 4-5: Dashboard Development
- Build executive risk scorecard
- Build vintage analysis dashboard
- Build real-time delinquency monitoring
- Build unit economics dashboard
Week 6: Training and Handoff
- Train your team on Superset (building charts, creating filters, drilling down)
- Document dashboards and metrics definitions
- Set up alerting (Slack notifications for delinquency threshold breaches)
Total cost: $40K-60K for a 6-week engagement. For most Australian BNPL lenders, this pays for itself in the first month through better loss forecasting and risk management.
Data Integration
Your Superset instance needs to connect to:
- Core Transaction Database: PostgreSQL or MySQL containing accounts, transactions, payments
- Fraud Detection System: API or database feed from your fraud detection provider
- Collections System: Data on collection attempts, recovery rates, write-offs
- Merchant Database: Merchant categories, transaction volumes, chargeback rates
D23.io handles the integration; you provide credentials and data schemas. Most Australian BNPL lenders can be fully integrated within 1-2 weeks.
Real-Time vs. Batch Reporting
For BNPL risk, you need both:
- Batch Reporting (Daily): Vintage analysis, monthly unit economics, cohort profitability. These metrics don’t need real-time updates; daily is sufficient.
- Real-Time Reporting (Hourly or Continuous): Delinquency rates, fraud alerts, payment velocity. These drive operational decisions and need to be current.
D23.io supports both. Real-time dashboards pull from your core database; batch dashboards query pre-calculated metrics in the semantic layer.
Operationalising Your Risk Dashboard
Governance and Ownership
Your risk dashboard is only valuable if it’s actively used. Establish clear ownership:
- Executive Risk Scorecard: CFO reviews daily, Risk Committee reviews weekly
- Vintage Analysis: Risk manager owns, updates monthly, presents to leadership
- Delinquency Monitoring: Collections manager owns, reviews daily, escalates threshold breaches
- Unit Economics: Finance manager owns, reviews monthly, informs pricing and underwriting strategy
Schedule standing meetings around these dashboards. Make them the source of truth for risk decisions.
Alerting and Escalation
Set up automated alerts for key thresholds:
- 30-Day Delinquency Rate > 3.5%: Send Slack alert to Risk Manager
- On-Time Payment Rate < 80%: Send alert to Collections Manager
- Repeat Defaulter Concentration > 50%: Send alert to Risk Manager
- Net Profit per Account Turning Negative: Send alert to CFO
D23.io integrates with Slack, email, and PagerDuty for alerting. Configure escalation so critical alerts reach the right person immediately.
Continuous Improvement
Every month, review your dashboards:
- Are we tracking the right metrics? If delinquency is rising but you’re not seeing it in your dashboard, you’re missing something.
- Are metrics actionable? If you can’t take action based on a metric, remove it. Focus on metrics that drive decisions.
- Are we using the insights? If a dashboard is built but never used, it’s waste. Understand why and fix it.
- Are we forecasting accurately? Compare your vintage-based loss forecasts to actual losses. Refine your models.
Operationalising Your Risk Dashboard Through AI Integration
For BNPL lenders looking to automate risk analysis, Agentic AI + Apache Superset: Letting Claude Query Your Dashboards from PADISO Blog demonstrates how agentic AI can augment your team. Instead of manually querying Superset, your risk analysts can ask natural language questions:
- “What’s our delinquency rate by merchant category this week?”
- “Which vintages are underperforming their historical curve?”
- “How much has our net profit per account changed in the last month?”
Claude (or similar LLMs) translates these questions into SQL, queries your Superset semantic layer, and returns human-readable answers. This accelerates analysis cycles and democratises access to data for non-technical stakeholders.
For Australian BNPL lenders integrating agentic AI, consider AI Automation for Financial Services: Fraud Detection and Risk Management from PADISO Blog, which covers how AI automation can enhance fraud detection, risk assessment, and collections processes alongside your Superset dashboards.
Advanced Topics: Predictive Default Modelling
Once your Superset dashboards are operational, the next step is predictive modelling. Use historical data to forecast which customers are likely to default in the next 30-60 days.
Building a Default Prediction Model
Collect these features for each account:
- Behavioural: Days since last payment, payment velocity (% on-time), repeat purchase rate, transaction frequency
- Profile: Age, income, credit score (if available), employment status
- Transactional: Average transaction value, merchant categories, total outstanding balance
- Vintage: Months since account opening, origination channel
Train a logistic regression or gradient boosting model to predict 30-day default probability. Deploy the model in your Superset semantic layer:
WITH account_features AS (
SELECT
account_id,
DATEDIFF(day, last_payment_date, CURRENT_DATE) AS days_since_last_payment,
on_time_payment_rate,
repeat_purchase_rate,
avg_transaction_value,
total_outstanding_balance,
DATEDIFF(day, account_created_date, CURRENT_DATE) AS account_age_days
FROM accounts
)
SELECT
account_id,
CASE
WHEN days_since_last_payment > 30 THEN 0.85
WHEN days_since_last_payment > 14 THEN 0.65
WHEN on_time_payment_rate < 70 THEN 0.55
WHEN repeat_purchase_rate < 1.2 THEN 0.45
ELSE 0.15
END AS predicted_default_probability_30day
FROM account_features
WHERE predicted_default_probability_30day > 0.5
ORDER BY predicted_default_probability_30day DESC;
This simple rule-based model identifies high-risk accounts. Deploy it in Superset and have your collections team proactively reach out to accounts with >50% default probability. You’ll prevent defaults before they happen.
Regulatory Compliance and Audit-Readiness
For Australian BNPL lenders, ASIC expects robust risk management frameworks. Your Superset dashboards demonstrate this.
ASIC Expectations
ASIC’s Regulatory Guide 209 (RG 209) on Credit Risk Management requires:
- Portfolio monitoring: Regular assessment of portfolio risk (delinquency rates, loss rates, vintage analysis)
- Stress testing: Scenario analysis showing how portfolio performs under economic stress
- Loss forecasting: Accurate forecasts of expected losses
- Documentation: Clear policies and procedures for risk management
Your Superset dashboards satisfy these requirements. You’re monitoring delinquency and loss rates in real-time, forecasting losses by vintage, and documenting all decisions.
SOC 2 and ISO 27001 Compliance
If you’re hosting on D23.io, you get SOC 2 Type II and ISO 27001 compliance out of the box. This means:
- Data Security: Encrypted at rest and in transit
- Access Controls: Role-based access, audit logs
- Availability: 99.9% uptime SLA
- Change Management: Documented changes, testing before production
For Australian BNPL lenders, this is table stakes. Regulators and investors expect SOC 2 compliance.
Competitive Benchmarking
How do your metrics compare to industry standards? Here’s what we see across Australian BNPL lenders:
| Metric | Industry Average | Top Quartile | Bottom Quartile |
|---|---|---|---|
| 30-Day Delinquency Rate | 2.8% | 1.5% | 4.2% |
| Charge-Off Rate (12-month) | 4.2% | 2.5% | 6.5% |
| Repeat Purchase Rate | 45% | 60% | 25% |
| Net Profit per Account (annual) | −$8 | +$5 | −$20 |
| Loss-Adjusted Yield | 1.2% | 2.1% | 0.3% |
| Fraud Rate | 0.8% | 0.3% | 1.8% |
If your metrics are below the bottom quartile, you have a problem. If you’re in the top quartile, you’re sustainable and profitable.
Next Steps: From Insight to Action
Immediate Actions (Next 4 Weeks)
- Audit your data: Do you have clean, complete data on transactions, accounts, payments, and defaults? If not, start here. Data quality is foundational.
- Build the semantic layer: Work with your engineering team or a partner like PADISO to create pre-calculated metrics (delinquency, vintage cohorts, unit economics).
- Deploy Superset: Set up Superset on D23.io or self-hosted. Connect to your semantic layer.
- Build the executive scorecard: Create your first dashboard—the executive risk scorecard. Get buy-in from leadership.
Medium-Term Actions (Weeks 4-12)
- Build vintage analysis dashboard: Deploy cohort-level profitability tracking. Identify underperforming vintages.
- Implement real-time delinquency monitoring: Set up daily delinquency tracking with Slack alerts.
- Segment unit economics by customer cohort: Identify which segments are profitable, which are loss-making.
- Train your team: Ensure your risk analysts, collections team, and leadership can use Superset independently.
Long-Term Actions (Months 3+)
- Build predictive default models: Deploy machine learning models to forecast defaults 30-60 days ahead.
- Integrate agentic AI: Let your team query dashboards using natural language (Claude, ChatGPT).
- Automate collections: Use default predictions to trigger automated collections workflows.
- Continuous improvement: Refine metrics, improve forecasting accuracy, optimise pricing and underwriting based on data.
Working with a Partner
If you don’t have in-house Superset expertise, partner with PADISO, a Sydney-based venture studio and AI digital agency specialising in BNPL analytics and risk management. PADISO has:
- Deep BNPL expertise: We’ve built analytics platforms for 5+ Australian BNPL lenders
- D23.io integration: We’re certified D23.io partners with proven implementation playbooks
- AI automation: We layer agentic AI on top of Superset for intelligent analysis
- Fractional CTO support: If you need ongoing technical leadership, we offer CTO as a Service
PADISO’s AI & Agents Automation service can help you build and operationalise your BNPL risk analytics platform in 6-8 weeks. The $50K D23.io Consulting Engagement: What’s Inside from PADISO Blog details a real engagement for an Australian BNPL lender.
Conclusion
BNPL is a high-growth, high-risk business model. Success requires obsessive focus on risk metrics: delinquency rates, vintage analysis, unit economics, and default trends.
Apache Superset on D23.io gives you the tools to track these metrics in real time, segment by cohort and customer, and make data-driven decisions about pricing, underwriting, and collections. Combined with predictive modelling and agentic AI, your Superset dashboards become a competitive advantage—a force multiplier for your risk team.
Start with the executive scorecard. Get leadership aligned on key metrics. Then build vintage analysis, delinquency monitoring, and unit economics dashboards. Within 6-8 weeks, you’ll have a world-class risk analytics platform.
The BNPL lenders that survive and thrive are those with the best data, the clearest insights, and the fastest decision-making. Your Superset dashboard is how you get there.
Appendix: SQL Templates and Code Snippets
Template 1: Daily Delinquency Rate
SELECT
CURRENT_DATE AS snapshot_date,
COUNT(*) AS total_accounts,
SUM(CASE WHEN days_past_due >= 30 THEN 1 ELSE 0 END) AS delinquent_30,
SUM(CASE WHEN days_past_due >= 60 THEN 1 ELSE 0 END) AS delinquent_60,
SUM(CASE WHEN days_past_due >= 90 THEN 1 ELSE 0 END) AS delinquent_90,
ROUND(100.0 * SUM(CASE WHEN days_past_due >= 30 THEN 1 ELSE 0 END) / COUNT(*), 2) AS delinquency_rate_30
FROM accounts
WHERE account_status = 'active';
Template 2: Vintage Cohort Loss Rate
SELECT
DATE_TRUNC('month', account_created_date) AS vintage,
COUNT(*) AS accounts_originated,
SUM(CASE WHEN default_date IS NOT NULL THEN 1 ELSE 0 END) AS defaults,
ROUND(100.0 * SUM(CASE WHEN default_date IS NOT NULL THEN 1 ELSE 0 END) / COUNT(*), 2) AS cumulative_loss_rate
FROM accounts
GROUP BY DATE_TRUNC('month', account_created_date)
ORDER BY vintage DESC;
Template 3: Unit Economics by Segment
SELECT
customer_segment,
COUNT(*) AS accounts,
ROUND(SUM(merchant_commission) / COUNT(*), 2) AS avg_commission_per_account,
ROUND(SUM(acquisition_cost) / COUNT(*), 2) AS avg_cac_per_account,
ROUND(SUM(default_amount) / SUM(transaction_amount), 4) AS loss_rate,
ROUND((SUM(merchant_commission) - SUM(acquisition_cost) - SUM(default_amount)) / COUNT(*), 2) AS net_profit_per_account
FROM accounts
GROUP BY customer_segment
ORDER BY net_profit_per_account DESC;
Further Reading and Resources
For deeper dives into BNPL risk, see:
- Buy Now, Pay Later: Recent Developments and Implications from Federal Reserve Bank of Richmond
- AI Automation for Insurance: Claims Processing and Risk Assessment from PADISO Blog — Transferable risk management techniques
- Agentic AI vs Traditional Automation: Why Autonomous Agents Are the Future from PADISO Blog — How to automate your risk workflows
- AI Automation Agency Sydney: The Complete Guide for Sydney Businesses in 2026 from PADISO Blog — Finding the right partner for your analytics platform