Why African crypto startups are getting into the lending business
This is Follow the Money, our weekly series that unpacks the earnings, business, and scaling strategies of African fintechs, financial institutions, companies, and governments. A new edition drops every Monday.
Owning Bitcoin and Solana no longer means selling them when cash runs out. Across Africa, digital asset startups are borrowing another idea from traditional finance: lending to consumers who are crypto-rich but cash-poor.
Crypto-backed loans, a form of lending tied to cryptocurrencies, allow users to obtain credit—in fiat, stablecoins, or other digital assets—by pledging their crypto holdings to these startups. It is a form of lending that is gaining momentum in Africa’s largest crypto markets, including Nigeria and South Africa.
In January, Busha, a Nigerian fintech startup that allows users to buy and sell digital assets and pay bills, launched crypto-backed loans as an additional product to its stack. The product offers up to 50% loan-to-value (LTV), allowing users to borrow up to half the value of their Bitcoin and Solana holdings and access the loans in Naira. Busha said it charges a 2% monthly interest.
Busha is one of several African startups offering crypto-backed loans. The emerging product, which borrows some features from the traditional finance sector where lending is a profit centre, could expand core services to crypto users that are overlooked in the broader secured lending market.
It could signal a maturing crypto market, especially if the startups are actually deploying their own capital into loans, rather than simply intermediating and sourcing liquidity from other global lending protocols, such as US-based Morpho. But as some African crypto lenders target the broader mass market, they face a bigger challenge: expanding the product beyond people who already hold crypto.
John Babodor, the African lead for Blend, a US-based startup that provides infrastructure to enable businesses to offer stablecoin yield, said that since the start of the year, he has received between $2,000 and $5,000 in crypto-backed credit from global lending platforms, including Aave, Kamino Finance, Hyperlend, MarginFi, Hyperliquid, and HypurrFi.
“I use crypto-backed loans to avoid selling my volatile assets like Bitcoin, Ether, Solana, and the $HYPE token,” Babodor told TechCabal. “For example, I deposited ETH into Aave and borrowed stablecoins against it. I then used those [stablecoins] to pursue additional yield opportunities, trade, buy meme coins, and occasionally off-ramp [withdraw] funds when needed. At one point, I had more than $5,000 worth of ETH deployed in this strategy.”
Crypto-backed loans are digital products originally built for digital asset traders. But Olayinka Omoniyi, co-founder of Monierate, a currency price-tracking platform, sees a larger market beyond traders.
Unlike Babodor, who prefers borrowing stablecoins and other digital assets, Omoniyi prefers borrowing in Naira. He said he regularly uses global exchange Binance or Bitmonie—a crypto-backed lending product he co-founded—to access liquidity without selling his Bitcoin holdings.
“If most of my income is in Naira, it makes sense for me to borrow in Naira,” he said. “You don’t want FX [foreign exchange] volatility becoming another problem when you’re trying to repay.”
The contrast between the two users captures a question at the centre of Africa’s emerging crypto credit market: is crypto-backed lending primarily a trading tool, or can it become a mainstream credit product?
That question reflects a broader opportunity.
While crypto-backed lending remains nascent in Africa, Galaxy Research, a US-based crypto research firm, estimated that the global crypto-collateralised lending market stood at $67.4 billion in outstanding loans at the end of Q1 2026, after reaching a record $78.7 billion in Q3 2025 before pulling back amid market volatility.
As more Africans accumulate Bitcoin and other cryptocurrencies, startups are building lending products that let users unlock liquidity without selling their assets, filling a gap left by traditional banks, which generally do not accept digital assets as collateral.
The startups building Africa’s crypto lending market
Nigeria is beginning to emerge as a market for crypto-backed lending.
/* 1. Global Reset for this specific widget to defeat CMS overrides */
.tc-matrix-wrapper {
font-family: ‘Open Sans’, Helvetica, sans-serif;
width: 100% !important;
max-width: 600px !important;
margin: 0 auto;
background-color: #FFFFFF;
border: 1px solid #E3E8EF;
border-radius: 12px;
padding: 24px;
color: #151515;
box-shadow: 0 4px 12px rgba(0,0,0,0.05);
box-sizing: border-box !important;
overflow: hidden !important;
overflow-wrap: break-word !important;
word-wrap: break-word !important;
}
/* Force strict containment on ALL child elements */
.tc-matrix-wrapper *, .tc-matrix-wrapper *::before, .tc-matrix-wrapper *::after {
box-sizing: border-box !important;
min-width: 0 !important; /* Kills the flexbox stretching bug */
max-width: 100% !important;
}
.tc-matrix-header {
border-bottom: 2px solid #EA2D2E;
padding-bottom: 16px;
margin-bottom: 20px;
width: 100%;
}
.tc-matrix-header h2 {
font-size: 1.5rem;
font-weight: 800;
margin: 0 0 8px 0;
color: #151515;
line-height: 1.3;
letter-spacing: -0.5px;
}
.tc-matrix-header p {
font-size: 0.875rem;
margin: 0;
color: #24292F;
line-height: 1.6;
}
.tc-matrix-filters {
display: flex;
flex-direction: column;
gap: 12px;
margin-bottom: 20px;
background: #F6F6F6;
padding: 16px;
border-radius: 6px;
width: 100%;
}
.tc-matrix-filters span {
font-size: 0.875rem;
font-weight: 700;
display: block;
margin-bottom: -4px;
}
.tc-matrix-select {
padding: 10px;
border: 1px solid #E3E8EF;
border-radius: 4px;
font-size: 0.875rem;
background: #FFF;
outline: none;
cursor: pointer;
width: 100% !important;
text-overflow: ellipsis;
}
/* Div-Based Grid System */
.tc-grid-container {
width: 100%;
border: 1px solid #E3E8EF;
border-radius: 8px;
overflow: hidden;
}
.tc-grid-header {
display: grid;
grid-template-columns: 1fr 1fr 1fr 1fr 1.2fr;
background-color: #24292F;
color: #FFFFFF;
font-weight: 700;
font-size: 0.8rem;
}
.tc-grid-header-cell {
padding: 12px;
}
.tc-grid-body {
display: flex;
flex-direction: column;
width: 100%;
}
.tc-grid-row {
display: grid;
grid-template-columns: 1fr 1fr 1fr 1fr 1.2fr;
border-bottom: 1px solid #E3E8EF;
font-size: 0.85rem;
background-color: #FFFFFF;
width: 100%;
}
.tc-grid-row:nth-child(even) {
background-color: #FAFAFA;
}
.tc-grid-row:last-child {
border-bottom: none;
}
.tc-grid-cell {
padding: 12px;
color: #24292F;
display: flex;
flex-direction: column;
justify-content: flex-start;
}
.tc-badge-fiat {
background-color: #E2F9F3;
color: #1A7A60;
padding: 4px 8px;
border-radius: 12px;
font-size: 0.75rem;
font-weight: 700;
display: inline-block;
word-break: break-word;
}
.tc-badge-crypto {
background-color: #FFF3F3;
color: #C71B1C;
padding: 4px 8px;
border-radius: 12px;
font-size: 0.75rem;
font-weight: 700;
display: inline-block;
word-break: break-word;
}
.tc-matrix-footer {
margin-top: 20px;
font-size: 0.75rem;
color: #8D99A8;
text-align: center;
border-top: 1px solid #E3E8EF;
padding-top: 16px;
line-height: 1.5;
width: 100%;
}
/* 2. Absolute Mobile Constraint: Pure Block Elements */
@media (max-width: 650px) {
.tc-matrix-wrapper {
padding: 16px !important;
}
.tc-grid-container {
border: none !important;
}
.tc-grid-header {
display: none !important;
}
.tc-grid-row {
display: block !important; /* Kills Grid layout entirely */
width: 100% !important;
margin-bottom: 16px !important;
border: 1px solid #E3E8EF !important;
border-radius: 8px !important;
box-shadow: 0 2px 4px rgba(0,0,0,0.03) !important;
}
.tc-grid-row:nth-child(even) {
background-color: #FFFFFF !important;
}
.tc-grid-cell {
display: block !important; /* Kills Flex layout entirely */
width: 100% !important;
padding: 12px 16px !important;
border-bottom: 1px solid #F6F6F6 !important;
border-right: none !important;
border-left: none !important;
border-top: none !important;
text-align: left !important;
}
.tc-grid-cell:last-child {
border-bottom: none !important;
}
/* Injects mobile labels */
.tc-grid-cell::before {
content: attr(data-label);
font-weight: 700 !important;
font-size: 0.75rem !important;
text-transform: uppercase !important;
color: #8D99A8 !important;
display: block !important;
width: 100% !important;
margin-bottom: 4px !important;
}
.tc-grid-cell span, .tc-grid-cell strong {
display: inline-block !important;
width: 100% !important;
}
}
The African Crypto-Credit Matrix
Compare LTV limits, interest rates, and loan structures across the startups defining Africa’s digital asset lending landscape.
All Markets
Nigeria Focus
South Africa Focus
Global / Multi-region
All Loan Currencies
Fiat (Naira/Cash)
Crypto / Stablecoins
document.addEventListener(“DOMContentLoaded”, function() {
const platforms = [
{ name: “Busha”, markets: “Nigeria”, filterMarket: “Nigeria”, currency: “Fiat (Naira)”, filterCurrency: “Fiat”, ltv: “50%”, terms: “2% Monthly”, audience: “Mass Market” },
{ name: “Bitmonie”, markets: “Nigeria”, filterMarket: “Nigeria”, currency: “Fiat (Naira)”, filterCurrency: “Fiat”, ltv: “60%”, terms: “Short-term Beta”, audience: “Mass Market” },
{ name: “TransferXO”, markets: “Nigeria, Kenya, Ghana”, filterMarket: “Nigeria”, currency: “Fiat (Naira)”, filterCurrency: “Fiat”, ltv: “Undisclosed”, terms: “4.2% Default Rate”, audience: “Mass Market” },
{ name: “Roqqu”, markets: “Nigeria, Kenya”, filterMarket: “Nigeria”, currency: “Crypto/Fiat”, filterCurrency: “all”, ltv: “Undisclosed”, terms: “Active since 2023”, audience: “Traders” },
{ name: “AltCoinTrader”, markets: “South Africa”, filterMarket: “South Africa”, currency: “Crypto”, filterCurrency: “Crypto”, ltv: “Undisclosed”, terms: “Up to 7.95% Annual (12% Liq. Fee)”, audience: “Traders” },
{ name: “VALR”, markets: “South Africa”, filterMarket: “South Africa”, currency: “Crypto”, filterCurrency: “Crypto”, ltv: “Variable”, terms: “Priced on Risk Profile”, audience: “Crypto Traders” },
{ name: “Geddes Capital”, markets: “South Africa”, filterMarket: “South Africa”, currency: “Fiat/Crypto”, filterCurrency: “all”, ltv: “50%”, terms: “Alternative Finance”, audience: “SMEs / HNWIs” },
{ name: “NFTfi”, markets: “South Africa (Origin)”, filterMarket: “South Africa”, currency: “wETH / Stablecoins”, filterCurrency: “Crypto”, ltv: “Market-driven”, terms: “Peer-to-Peer (NFT Collateral)”, audience: “DeFi Users” },
{ name: “Blockchain.com”, markets: “Global (100+ Markets)”, filterMarket: “Global”, currency: “USDC Stablecoins”, filterCurrency: “Crypto”, ltv: “Undisclosed”, terms: “Interest accrued daily”, audience: “Global Traders” }
];
const tbody = document.getElementById(‘tc-matrix-body’);
const countryFilter = document.getElementById(‘tc-matrix-country-filter’);
const currencyFilter = document.getElementById(‘tc-matrix-currency-filter’);
const getCurrencyBadge = (curr) => {
if(curr.includes(“Fiat”) || curr.includes(“Naira”)) {
return `${curr}`;
} else if (curr.includes(“Stablecoin”) || curr.includes(“Crypto”) || curr.includes(“wETH”)) {
return `${curr}`;
}
return `${curr}`;
};
const renderTable = (data) => {
tbody.innerHTML = “”;
if(data.length === 0) {
tbody.innerHTML = `
`;
return;
}
data.forEach((row) => {
const rowDiv = document.createElement(‘div’);
rowDiv.className = ‘tc-grid-row’;
let formattedLTV = row.ltv;
if (row.ltv === “50%” || row.ltv === “60%”) {
formattedLTV = `${row.ltv}`;
}
// Div-based cells injected with data-labels for mobile stacking
rowDiv.innerHTML = `
`;
tbody.appendChild(rowDiv);
});
};
const filterData = () => {
const countryVal = countryFilter.value;
const currencyVal = currencyFilter.value;
const filtered = platforms.filter(p => {
const matchCountry = countryVal === “all” || p.filterMarket === countryVal;
const matchCurrency = currencyVal === “all” || p.filterCurrency === “all” || p.filterCurrency === currencyVal;
return matchCountry && matchCurrency;
});
renderTable(filtered);
};
countryFilter.addEventListener(‘change’, filterData);
currencyFilter.addEventListener(‘change’, filterData);
// Initial Render
renderTable(platforms);
});
Roqqu, a cryptocurrency exchange that operates in Nigeria and Kenya, has offered crypto-backed loans since 2023. TransferXO, a Nigerian startup that launched in 2023, expanded its crypto-backed lending product to Ghana in October 2025. The startup—which, like Busha, also provides Naira loans—claims it has disbursed over $10 million and recorded a 4.2% default rate.
Global players have also begun paying attention. In May 2026, Blockchain.com launched crypto-backed loans in over 100 markets where it operates, including Africa. The new product offers users access to USDC stablecoins without requiring them to sell their crypto holdings.
South Africa’s market is further along.
AltCoinTrader, one of South Africa’s oldest crypto firms, was one of the first exchanges to launch crypto-backed loans. In 2022, the startup introduced Easy Loans, enabling users to access crypto-backed credit at up to 7.95% annual interest.
In January 2025, VALR, one of South Africa’s largest cryptocurrency exchanges, launched a lending product for crypto traders. It doesn’t use an LTV ratio; VALR prices and issues loans based on a user’s risk profile, taking into account factors such as their collateral and trading activity.
Launched in August 2025, Geddes Capital, a South African investment and alternative finance firm, offers crypto-backed financing to small businesses and high-net-worth individuals at up to 50% LTV.
South African Bitcoin treasury firm Africa Bitcoin Corporation also plans to launch a Bitcoin-backed lending product, offering loans of up to a 50% LTV ratio at 12% annual interest, with repayment terms of up to 60 months.
NFTfi, a South African-founded startup that provides a marketplace to buy and sell digital art such as non-fungible tokens (NFTs), is the outlier. It enables users to lock their NFTs as collateral and borrow cryptocurrencies, such as Wrapped Ethereum (wETH) or stablecoins, from peer lenders.
Why crypto firms are getting into lending
For crypto companies, lending is a retention product.
When customers need cash urgently, they can simply sell their crypto, leave the platform, and sometimes never return. Crypto-backed loans offer another option: borrow against the asset instead.
By keeping assets on the platform, lenders can earn interest on loans while encouraging customers to remain active users.
/* Scoped layout foundations to ensure WordPress framework safety */
.tc-sim-container {
font-family: ‘Open Sans’, Helvetica, sans-serif;
width: 100%;
max-width: 500px; /* Constrains tool to be noticeably narrower */
margin: 0 auto;
background-color: #FFFFFF;
border: 1px solid #E3E8EF;
border-radius: 12px;
padding: 24px;
color: #151515;
box-shadow: 0 8px 24px rgba(0,0,0,0.08);
box-sizing: border-box;
overflow: hidden; /* Hard stop on external bleeding */
overflow-wrap: break-word;
}
/* Force box-sizing on all internal elements to prevent overflow */
.tc-sim-container * {
box-sizing: border-box;
}
.tc-sim-header {
border-bottom: 3px solid #20C997;
padding-bottom: 16px;
margin-bottom: 24px;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
align-items: flex-start;
gap: 12px;
}
.tc-sim-title-group {
flex: 1;
min-width: 200px;
}
.tc-sim-title {
font-size: 1.5rem;
font-weight: 800;
margin: 0 0 8px 0;
color: #151515;
letter-spacing: -0.5px;
line-height: 1.3;
}
.tc-sim-subtitle {
font-size: 0.9rem;
margin: 0;
color: #24292F;
line-height: 1.6;
}
.tc-sim-badge {
background-color: #151515;
color: #FFF;
padding: 6px 12px;
border-radius: 4px;
font-size: 0.75rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 1px;
white-space: nowrap;
margin-bottom: 4px;
}
.tc-note-box {
background-color: #F6F6F6;
border-left: 3px solid #24292F;
padding: 16px;
margin-bottom: 24px;
border-radius: 0 4px 4px 0;
}
.tc-note-box p {
margin: 0;
font-size: 0.85rem;
color: #24292F;
line-height: 1.6;
}
.tc-input-row {
display: flex;
gap: 12px;
margin-bottom: 20px;
}
.tc-input-field {
flex: 1;
padding: 12px;
border: 1px solid #E3E8EF;
border-radius: 4px;
font-size: 1rem;
font-weight: 700;
width: 100%;
outline: none;
}
.tc-value-display {
background: #E2F9F3;
color: #1A7A60;
padding: 12px;
border-radius: 4px;
font-weight: 700;
display: flex;
align-items: center;
justify-content: center;
min-width: 140px;
font-size: 0.95rem;
}
.tc-dashboard-grid {
display: grid;
grid-template-columns: 1fr;
gap: 16px;
margin-bottom: 24px;
}
.tc-stats-subgrid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 12px;
}
.tc-stat-card {
background: #FAFAFA;
border: 1px solid #E3E8EF;
padding: 16px;
border-radius: 6px;
text-align: center;
}
.tc-action-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 12px;
}
/* Ledger Rows */
.tc-ledger-row {
display: flex;
justify-content: space-between;
margin-bottom: 8px;
font-size: 0.95rem;
gap: 12px;
}
.tc-ledger-row.border-dashed {
margin-bottom: 12px;
padding-bottom: 12px;
border-bottom: 1px dashed #3A424D;
}
.tc-ledger-row.total {
align-items: flex-end;
margin-bottom: 0;
}
/* Strict Mobile Override: Pure Block Stacking */
@media (max-width: 600px) {
.tc-sim-container {
padding: 16px;
}
.tc-sim-header {
flex-direction: column;
align-items: flex-start;
gap: 12px;
}
.tc-sim-badge {
align-self: flex-start;
}
.tc-sim-title {
font-size: 1.35rem;
}
.tc-input-row {
flex-direction: column;
gap: 8px;
}
.tc-value-display {
width: 100%;
justify-content: flex-start;
padding-left: 12px;
}
.tc-stats-subgrid, .tc-action-grid {
grid-template-columns: 1fr;
gap: 10px;
}
/* Stack the ledger rows vertically on mobile */
.tc-ledger-row {
flex-direction: column;
justify-content: flex-start;
gap: 2px;
}
.tc-ledger-row span:last-child {
align-self: flex-start;
font-size: 1.05rem;
}
.tc-ledger-row.total {
flex-direction: column;
align-items: flex-start;
gap: 4px;
}
.tc-ledger-row.total span:last-child {
align-self: flex-start;
}
}
Become the Lender: Revenue Simulator
How much can you earn issuing crypto-backed loans? Set your terms, issue fiat to a borrower, and navigate historical market volatility to calculate your net yield.
Note: Crypto-backed loans are fundamentally revolving credit lines offered in perpetuity. While there is no strict end date as long as the loan remains healthy, typical institutional planning models estimate lifecycle caps of 24 to 36 months before the borrower closes the position or is liquidated.
Step 1: Configure Your Lending Product
Prices up to date as of July 6, 2026
Bitcoin (BTC)
Ether (ETH)
Solana (SOL)
12.0% APR
document.addEventListener(“DOMContentLoaded”, function() {
const assetEras = {
BTC: [
{value: ‘aug2010’, label: ‘Aug 2010 (The Genesis Era – Extreme Volatility)’},
{value: ‘jan2018’, label: ‘Jan 2018 (The Crypto Winter Crash)’},
{value: ‘mar2020’, label: ‘Mar 2020 (The COVID-19 Flash Crash)’},
{value: ‘nov2021’, label: ‘Nov 2021 (The Post-Peak Bear Market)’},
{value: ‘jan2024’, label: ‘Jan 2024 (The Spot ETF Bull Rally)’}
],
ETH: [
{value: ‘aug2015’, label: ‘Aug 2015 (The Genesis Era)’},
{value: ‘jan2018’, label: ‘Jan 2018 (The Crypto Winter Crash)’},
{value: ‘mar2020’, label: ‘Mar 2020 (The COVID-19 Flash Crash)’},
{value: ‘nov2021’, label: ‘Nov 2021 (The Post-Peak Bear Market)’},
{value: ‘jan2024’, label: ‘Jan 2024 (The Spot ETF Bull Rally)’}
],
SOL: [
{value: ‘apr2020’, label: ‘Apr 2020 (The Genesis Era)’},
{value: ‘nov2021’, label: ‘Nov 2021 (The Post-Peak Bear Market)’},
{value: ‘nov2022’, label: ‘Nov 2022 (The FTX Collapse Crash)’},
{value: ‘jan2024’, label: ‘Jan 2024 (The Bull Rally)’}
]
};
const timelineData = {
“BTC”: {
“aug2010”: [2.1099, 0.4409, 0.7333, 0.6538, -0.0877, 3.4609, 1.4971, 0.8421, -0.1708, -0.3858, -0.3732, -0.3677, -0.0862, 0.5892, 0.161, -0.1131, 0.0465, 0.2915, 0.3976, 0.0866, 0.2205, -0.0968, 0.1223, 0.0748],
“jan2018”: [-0.2588, 0.0067, -0.3286, 0.3325, -0.1885, -0.1471, 0.2079, -0.09, -0.0567, -0.0406, -0.3654, -0.0818, -0.0734, 0.1104, 0.0749, 0.297, 0.6085, 0.2641, -0.0681, -0.0484, -0.1365, 0.1048, -0.1755, -0.0464],
“mar2020”: [-0.2494, 0.3456, 0.0957, -0.0338, 0.2406, 0.0274, -0.0746, 0.2804, 0.4277, 0.4697, 0.1437, 0.3641, 0.3011, -0.0178, -0.3538, -0.0609, 0.1863, 0.1342, -0.0702, 0.399, -0.0722, -0.1875, -0.167, 0.1218],
“nov2021”: [-0.0722, -0.1875, -0.167, 0.1218, 0.0541, -0.173, -0.1556, -0.3732, 0.1695, -0.1399, -0.031, 0.0553, -0.1626, -0.0365, 0.3983, 0.0002, 0.231, 0.0273, -0.0696, 0.1197, -0.0407, -0.1127, 0.0395, 0.2851],
“jan2024”: [0.0884, 0.1209, 0.0073, 0.4366, 0.1661, -0.1495, 0.1131, -0.0707, 0.0298, -0.0874, 0.0739, 0.1096, 0.3717, -0.0295, 0.0105, -0.1074, -0.0217, 0.141, 0.1106, 0.0246, 0.0802, -0.0651, 0.0538, -0.039]
},
“ETH”: {
“aug2015”: [-0.17, -0.18, 0.25, 0.05, -0.02, 0.60, 0.40, 0.10, -0.15, 0.10, -0.05, -0.15, 0.12, -0.10, 0.05, 0.18, -0.05, 0.10, 0.35, 1.20, 0.80, 0.40, -0.10, -0.05],
“jan2018”: [-0.30, 0.05, -0.45, 0.60, -0.15, -0.20, 0.15, -0.15, -0.25, -0.10, -0.35, -0.15, -0.10, 0.15, 0.10, 0.25, 0.50, 0.15, -0.15, -0.05, -0.10, 0.10, -0.20, -0.05],
“mar2020”: [-0.40, 0.55, 0.10, -0.05, 0.50, 0.10, -0.10, 0.20, 0.45, 0.30, 0.60, 0.15, 0.25, 0.45, 0.10, -0.40, -0.05, 0.30, 0.10, -0.15, 0.45, -0.10, -0.20, -0.15],
“nov2021”: [-0.10, -0.20, -0.25, 0.15, 0.10, -0.25, -0.30, -0.45, 0.40, -0.10, -0.05, 0.15, -0.15, -0.05, 0.35, 0.02, 0.15, 0.05, -0.05, 0.10, -0.05, -0.10, 0.05, 0.20],
“jan2024”: [0.10, 0.15, 0.05, 0.45, 0.20, -0.15, 0.15, -0.10, 0.05, -0.10, 0.05, 0.15, 0.30, -0.05, 0.02, -0.15, -0.05, 0.10, 0.15, 0.05, 0.10, -0.05, 0.05, -0.05]
},
“SOL”: {
“apr2020”: [0.15, 0.20, -0.05, -0.10, 0.25, -0.15, 0.10, 0.40, -0.10, 0.20, 0.60, 0.30, -0.10, -0.25, 1.10, 0.80, 0.30, -0.20, 0.10, 1.20, -0.15, -0.30, 0.20, 0.40],
“nov2021”: [-0.20, -0.30, -0.35, 0.10, 0.15, -0.40, -0.35, -0.50, 0.30, -0.15, -0.10, 0.20, -0.20, -0.10, 0.50, 0.05, 0.20, 0.10, -0.10, 0.15, -0.10, -0.15, 0.10, 0.40],
“nov2022”: [-0.55, -0.15, 0.40, -0.05, 0.10, -0.10, -0.05, 0.20, -0.10, -0.15, 0.10, 0.25, 0.50, -0.10, 0.15, 0.30, 0.45, 0.10, -0.20, 0.15, -0.05, 0.10, -0.10, 0.20],
“jan2024”: [0.15, 0.25, 0.10, 0.60, 0.25, -0.20, 0.20, -0.15, 0.10, -0.15, 0.15, 0.20, 0.40, -0.10, 0.05, -0.20, -0.10, 0.15, 0.20, 0.10, 0.15, -0.10, 0.10, -0.10]
}
};
const eraDetails = {
aug2010: { startMonth: 7, startYear: 2010 },
aug2015: { startMonth: 7, startYear: 2015 },
jan2018: { startMonth: 0, startYear: 2018 },
mar2020: { startMonth: 2, startYear: 2020 },
apr2020: { startMonth: 3, startYear: 2020 },
nov2021: { startMonth: 10, startYear: 2021 },
nov2022: { startMonth: 10, startYear: 2022 },
jan2024: { startMonth: 0, startYear: 2024 }
};
const monthsList = [“Jan”, “Feb”, “Mar”, “Apr”, “May”, “Jun”, “Jul”, “Aug”, “Sep”, “Oct”, “Nov”, “Dec”];
const TIMELINE_CAP = 24;
// Setup DOM
const assetSelect = document.getElementById(‘tc-asset-select’);
const eraSelect = document.getElementById(‘tc-era-select’);
const tokenAmountInput = document.getElementById(‘tc-token-amount’);
const collateralFiatVal = document.getElementById(‘tc-collateral-fiat-value’);
const interestSlider = document.getElementById(‘tc-interest-slider’);
const interestVal = document.getElementById(‘tc-interest-val’);
const monthlyYieldLabel = document.getElementById(‘tc-monthly-yield-label’);
const loanIssuedVal = document.getElementById(‘tc-loan-issued-val’);
const startBtn = document.getElementById(‘tc-start-btn’);
// Sim DOM
const setupScreen = document.getElementById(‘tc-setup-screen’);
const simScreen = document.getElementById(‘tc-sim-screen’);
const monthCounterText = document.getElementById(‘tc-month-counter’);
const eraValText = document.getElementById(‘tc-era-val’);
const statusBadge = document.getElementById(‘tc-status-badge’);
const ledgerInterest = document.getElementById(‘tc-ledger-interest’);
const ledgerPenalty = document.getElementById(‘tc-ledger-penalty’);
const ledgerLoss = document.getElementById(‘tc-ledger-loss’);
const ledgerNet = document.getElementById(‘tc-ledger-net’);
const activeInterestRateLabel = document.getElementById(‘tc-active-interest-rate’);
const assetLabel = document.getElementById(‘tc-asset-label’);
const collateralLive = document.getElementById(‘tc-collateral-live’);
const priceChangeLabel = document.getElementById(‘tc-price-change-label’);
const debtLive = document.getElementById(‘tc-debt-live’);
const ltvValText = document.getElementById(‘tc-ltv-val’);
const ltvBar = document.getElementById(‘tc-ltv-bar’);
const advanceBtn = document.getElementById(‘tc-advance-btn’);
const autorunBtn = document.getElementById(‘tc-autorun-btn’);
const controlButtons = document.getElementById(‘tc-control-buttons’);
const insightBox = document.getElementById(‘tc-insight-box’);
const insightTitle = document.getElementById(‘tc-insight-title’);
const insightDesc = document.getElementById(‘tc-insight-desc’);
const resetBtn = document.getElementById(‘tc-reset-btn’);
// Global Economics Reference
let baseAssetPrice = 0;
let initialFiatValue = 0;
let loanPrincipal = 0;
let monthlyInterestDecimal = 0;
// Active Simulation Loop State
let currentCollateralValue = 0;
let currentDebt = 0;
let currentStep = 0;
let loopMonth = 0;
let loopYear = 0;
let activeTimeline = [];
let isLiquidated = false;
// Balance Sheet Tracking
let totalInterestEarned = 0;
let liquidationPenaltyRevenue = 0;
let shortfallLoss = 0;
const formatCurrency = (num) => num.toLocaleString(‘en-US’, {maximumFractionDigits: 2, minimumFractionDigits: 2});
// Synchronize chronological timeline selection arrays mapping to active asset selection
const updateEraOptions = () => {
const selectedAsset = assetSelect.value;
if (selectedAsset === ‘BTC’) tokenAmountInput.value = 1;
if (selectedAsset === ‘ETH’) tokenAmountInput.value = 35;
if (selectedAsset === ‘SOL’) tokenAmountInput.value = 780;
const options = assetEras[selectedAsset];
eraSelect.innerHTML = ”;
options.forEach((opt, idx) => {
const option = document.createElement(‘option’);
option.value = opt.value;
option.textContent = opt.label;
if (idx === options.length – 2) option.selected = true;
eraSelect.appendChild(option);
});
};
// Recalculate underlying setup value fields
const syncSetup = () => {
const selectedOption = assetSelect.options[assetSelect.selectedIndex];
baseAssetPrice = parseFloat(selectedOption.getAttribute(‘data-price’));
const tokenAmount = parseFloat(tokenAmountInput.value) || 0;
initialFiatValue = tokenAmount * baseAssetPrice;
collateralFiatVal.innerText = formatCurrency(initialFiatValue);
// standard baseline safety framework at 50% LTV
loanPrincipal = initialFiatValue * 0.50;
loanIssuedVal.innerText = formatCurrency(loanPrincipal);
const apr = parseFloat(interestSlider.value);
interestVal.innerText = apr.toFixed(1);
const monthlyYield = apr / 12;
monthlyYieldLabel.innerText = monthlyYield.toFixed(2) + “%”;
monthlyInterestDecimal = monthlyYield / 100;
};
assetSelect.addEventListener(‘change’, () => {
updateEraOptions();
syncSetup();
});
tokenAmountInput.addEventListener(‘input’, syncSetup);
interestSlider.addEventListener(‘input’, syncSetup);
updateEraOptions();
syncSetup();
// Re-render active platform metrics state layout
const renderDashboard = (lastMonthReturn = null) => {
const ltv = (currentDebt / currentCollateralValue) * 100;
monthCounterText.innerText = currentStep;
eraValText.innerText = `${monthsList[loopMonth]} ${loopYear}`;
collateralLive.innerText = formatCurrency(currentCollateralValue);
debtLive.innerText = formatCurrency(currentDebt);
ledgerInterest.innerText = formatCurrency(totalInterestEarned);
ledgerPenalty.innerText = formatCurrency(liquidationPenaltyRevenue);
ledgerLoss.innerText = formatCurrency(shortfallLoss);
const netProfit = totalInterestEarned + liquidationPenaltyRevenue – shortfallLoss;
ledgerNet.innerText = netProfit >= 0 ? `+$${formatCurrency(netProfit)}` : `-$${formatCurrency(Math.abs(netProfit))}`;
ledgerNet.style.color = netProfit >= 0 ? ‘#20C997’ : ‘#EA2D2E’;
ltvValText.innerText = ltv.toFixed(1);
let visualWidth = Math.min(ltv, 100);
ltvBar.style.width = visualWidth + ‘%’;
if (lastMonthReturn !== null) {
const formattedRet = (lastMonthReturn * 100).toFixed(1);
priceChangeLabel.innerText = formattedRet > 0 ? `▲ +${formattedRet}% Asset Move` : `▼ ${formattedRet}% Asset Move`;
priceChangeLabel.style.color = formattedRet > 0 ? ‘#20C997’ : ‘#EA2D2E’;
} else {
priceChangeLabel.innerText = ‘Position Opened’;
priceChangeLabel.style.color = ‘#8D99A8’;
}
// Structural execution logic checking for positions crossing risk margin caps
if (ltv >= 80 && !isLiquidated) {
isLiquidated = true;
ltvBar.style.background = ‘#EA2D2E’;
statusBadge.innerText = ‘LIQUIDATED: ASSETS SOLD’;
statusBadge.style.background = ‘#EA2D2E’;
controlButtons.style.display = ‘none’;
const penaltyFee = currentCollateralValue * 0.12;
const totalOwed = currentDebt + penaltyFee;
if (currentCollateralValue >= totalOwed) {
liquidationPenaltyRevenue = penaltyFee;
insightBox.style.backgroundColor = ‘#E2F9F3’;
insightBox.style.border = ‘1px solid #20C997’;
insightTitle.innerText = ‘Profitable Liquidation Executed’;
insightTitle.style.color = ‘#1A7A60’;
insightDesc.innerHTML = `The LTV exceeded 80%. You instantly seized and sold the borrower’s collateral for $${formatCurrency(currentCollateralValue)}. The sale fully covered the principal, accrued interest, and your 12% execution penalty.
Final Outcome: You secured your capital and extracted an extra $${formatCurrency(penaltyFee)} in penalty fees. The house wins.`;
} else {
const lossAmount = currentDebt – currentCollateralValue;
shortfallLoss = lossAmount > 0 ? lossAmount : 0;
insightBox.style.backgroundColor = ‘#FFF3F3’;
insightBox.style.border = ‘1px solid #EA2D2E’;
insightTitle.innerText = ‘Catastrophic Shortfall: Bad Debt Incurred’;
insightTitle.style.color = ‘#C71B1C’;
insightDesc.innerHTML = `The asset plummeted so violently that by the time you seized the collateral, it was only worth $${formatCurrency(currentCollateralValue)}.
Final Outcome: The sale didn’t even cover the $${formatCurrency(currentDebt)} the borrower owed you. You suffered a shortfall loss of $${formatCurrency(shortfallLoss)}. This is the ultimate danger of the lending business.`;
}
ledgerPenalty.innerText = formatCurrency(liquidationPenaltyRevenue);
ledgerLoss.innerText = formatCurrency(shortfallLoss);
const finalNet = totalInterestEarned + liquidationPenaltyRevenue – shortfallLoss;
ledgerNet.innerText = finalNet >= 0 ? `+$${formatCurrency(finalNet)}` : `-$${formatCurrency(Math.abs(finalNet))}`;
ledgerNet.style.color = finalNet >= 0 ? ‘#20C997’ : ‘#EA2D2E’;
insightBox.style.display = ‘block’;
} else if (ltv >= 65 && !isLiquidated) {
ltvBar.style.background = ‘#FFC52F’;
statusBadge.innerText = ‘MARGIN CALL RISK’;
statusBadge.style.background = ‘#FFC52F’;
statusBadge.style.color = ‘#151515’;
} else if (!isLiquidated) {
ltvBar.style.background = ‘#20C997’;
statusBadge.innerText = ‘LOAN HEALTHY’;
statusBadge.style.background = ‘#20C997’;
statusBadge.style.color = ‘#FFFFFF’;
}
if (currentStep >= TIMELINE_CAP && !isLiquidated) {
controlButtons.style.display = ‘none’;
insightBox.style.backgroundColor = ‘#F6F6F6’;
insightBox.style.border = ‘1px solid #E3E8EF’;
insightTitle.innerText = ‘Term Completed Successfully’;
insightTitle.style.color = ‘#151515’;
insightDesc.innerHTML = `The borrower survived the ${TIMELINE_CAP}-month cap without hitting the 80% liquidation threshold.
Final Outcome: You earned a clean, steady yield of $${formatCurrency(totalInterestEarned)} in interest, proving the stability of well-collateralized lending in normal market conditions.`;
insightBox.style.display = ‘block’;
}
};
startBtn.addEventListener(‘click’, () => {
syncSetup();
if(initialFiatValue {
if (currentStep >= TIMELINE_CAP || isLiquidated) return;
const monthlyInterest = currentDebt * monthlyInterestDecimal;
totalInterestEarned += monthlyInterest;
currentDebt += monthlyInterest;
let assetReturn = activeTimeline[currentStep];
if (assetReturn 11) {
loopMonth = 0;
loopYear++;
}
renderDashboard(assetReturn);
};
advanceBtn.addEventListener(‘click’, tickMonth);
autorunBtn.addEventListener(‘click’, () => {
const fastForwardInterval = setInterval(() => {
if (currentStep >= TIMELINE_CAP || isLiquidated) {
clearInterval(fastForwardInterval);
return;
}
tickMonth();
}, 50);
});
resetBtn.addEventListener(‘click’, () => {
insightBox.style.display = ‘none’;
simScreen.style.display = ‘none’;
setupScreen.style.display = ‘block’;
syncSetup();
});
});
The economics differ from conventional consumer lending. Crypto loans are typically over-collateralised, meaning lenders face less credit risk than banks and digital lenders issuing unsecured personal loans. Instead, the business depends on monitoring collateral values, maintaining sufficient liquidity, and liquidating positions quickly enough to avoid losses during periods of market volatility.
The challenge, however, is determining who the product is really for.
“Crypto-backed loans are still niche products in Africa,” Daniel Felix, co-founder and chief executive officer of NectarFi, a Nigerian startup that lets users trade digital assets and tokenised stocks, told TechCabal. “It has always been like that because of consumer choice and the way the product is structured. It is marketed as a DeFi [decentralised finance] product: you borrow when you need to buy another asset, farm a point, airdrop, or yield on a [DeFi] protocol.”
Babodor’s use case fits the original design. He deposits Ether, borrows stablecoins, and deploys the proceeds into other DeFi trading opportunities. According to him, the loan functions as trading capital.
Busha and TransferXO are pursuing a broader audience. By lending in Naira, they are targeting users who may never touch a DeFi protocol but still want liquidity without selling their holdings.
TechCabal reviewed the lending terms of African crypto lenders in June and found that the advertised LTV ratios range from 50% to 60%, depending on the collateral and the lender’s risk appetite. Interest rates range from about 1% to 2% monthly, while others charge annual rates of up to 8%, calculated daily.
For lenders, collateral quality matters as much as collateral value. Bitcoin and Ether remain the preferred assets because they are easier to liquidate during periods of market stress than smaller cryptocurrencies, allowing lenders to recover loans more quickly if prices fall sharply.
Liquidation and consumer protection risks
The biggest risk in crypto-backed lending is liquidation. When crypto prices fall and a borrower’s collateral drops below required thresholds, lenders can automatically sell part or all of the assets pledged against the loan to recover their funds.
Babodor learned that lesson through experience.
“I’ve [been liquidated] before. It usually happens when you’re not watching your LTV ratio, which I wasn’t,” Babodor said. “I had some ETH in Aave, and I lost all of it. At first I thought I was over-collateralised, but that wasn’t it—It turned out I’d actually borrowed too much against my position. My LTV was at a very risky level, so when the price dropped sharply, I was liquidated.”
Due to crypto’s volatile nature, lenders are often exposed to collateral value swings, whether they hold the assets themselves or route loans through external protocols. Most platforms maintain collateral buffers to hedge against liquidation risk and unexpected under-collateralisation.
A sharp move in the price of Bitcoin, Solana, or Ether—major cryptocurrencies used for collateral—can trigger forced sales within hours. To cushion against losses, these platforms charge a penalty.
A liquidation penalty—imposed when a position falls below required collateral levels and is sold off—discourages strategic defaults, such as when borrowers choose not to top up collateral or repay a loan when prices fall. They get liquidated and still pay the penalty.
South Africa’s AltCoinTrader charges a 12% liquidation fee when collateral is sold off to cover a loan.
/* Scoped Styles for WordPress Compatibility & Mobile Responsiveness */
.tc-borrower-wrapper {
font-family: ‘Open Sans’, Helvetica, sans-serif;
width: 100%;
max-width: 500px; /* Constrains tool to be noticeably narrower */
margin: 0 auto;
background-color: #FFFFFF;
border: 1px solid #E3E8EF;
border-radius: 8px;
padding: 24px;
color: #151515;
box-shadow: 0 4px 12px rgba(0,0,0,0.05);
box-sizing: border-box;
overflow: hidden; /* Hard stop on external bleeding */
overflow-wrap: break-word;
}
/* Force box-sizing on all internal elements to prevent overflow */
.tc-borrower-wrapper * {
box-sizing: border-box;
}
.tc-b-header {
border-bottom: 2px solid #EA2D2E;
padding-bottom: 16px;
margin-bottom: 24px;
}
.tc-b-header h2 {
font-size: 1.5rem;
font-weight: 700;
margin: 0 0 8px 0;
color: #151515;
line-height: 1.3;
}
.tc-b-header p {
font-size: 0.875rem;
margin: 0;
color: #24292F;
line-height: 1.6;
}
.tc-b-token-row {
display: flex;
gap: 12px;
margin-bottom: 16px;
}
.tc-b-token-input {
flex: 1;
padding: 10px;
border: 1px solid #E3E8EF;
border-radius: 4px;
font-size: 0.875rem;
font-weight: 600;
width: 100%;
outline: none;
}
.tc-b-token-display {
background: #FFF;
padding: 10px;
border: 1px solid #E3E8EF;
border-radius: 4px;
font-weight: 700;
display: flex;
align-items: center;
justify-content: center;
min-width: 120px;
}
.tc-b-rate-grid, .tc-b-stats-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 12px;
margin-bottom: 16px;
}
.tc-b-stats-grid {
gap: 16px;
margin-bottom: 24px;
}
.tc-b-control-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 12px;
}
.tc-b-stat-card {
background: #F6F6F6;
padding: 16px;
border-radius: 4px;
text-align: center;
}
.tc-sim-header-row {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
align-items: center;
margin-bottom: 16px;
gap: 12px;
}
/* Strict Mobile Override: Pure Block Stacking */
@media (max-width: 600px) {
.tc-borrower-wrapper {
padding: 16px;
}
.tc-b-header h2 {
font-size: 1.25rem;
}
.tc-b-token-row {
flex-direction: column;
gap: 8px;
}
.tc-b-token-display {
width: 100%;
justify-content: flex-start;
padding-left: 12px;
}
.tc-b-rate-grid, .tc-b-stats-grid, .tc-b-control-grid {
grid-template-columns: 1fr;
gap: 10px;
}
.tc-sim-header-row {
flex-direction: column;
align-items: flex-start;
}
}
Become the Borrower: Crypto Loan Simulator
Crypto-backed loans let you borrow cash while keeping your assets. But if the market crashes, you could lose it all. Will your crypto-backed loan survive a real bear market? Set your terms and play through actual chronological sequences of historical crypto volatility.
Step 1: Configure Loan & Select Timeline
Prices up to date as of July 6, 2026
Bitcoin (BTC)
Ether (ETH)
Solana (SOL)
50%
2.0%
document.addEventListener(“DOMContentLoaded”, function() {
const assetEras = {
BTC: [
{value: ‘aug2010’, label: ‘Aug 2010 (The Genesis Era – Extreme Volatility)’},
{value: ‘jan2018’, label: ‘Jan 2018 (The Crypto Winter Crash)’},
{value: ‘mar2020’, label: ‘Mar 2020 (The COVID-19 Flash Crash)’},
{value: ‘nov2021’, label: ‘Nov 2021 (The Post-Peak Bear Market)’},
{value: ‘jan2024’, label: ‘Jan 2024 (The Spot ETF Bull Rally)’}
],
ETH: [
{value: ‘aug2015’, label: ‘Aug 2015 (The Genesis Era)’},
{value: ‘jan2018’, label: ‘Jan 2018 (The Crypto Winter Crash)’},
{value: ‘mar2020’, label: ‘Mar 2020 (The COVID-19 Flash Crash)’},
{value: ‘nov2021’, label: ‘Nov 2021 (The Post-Peak Bear Market)’},
{value: ‘jan2024’, label: ‘Jan 2024 (The Spot ETF Bull Rally)’}
],
SOL: [
{value: ‘apr2020’, label: ‘Apr 2020 (The Genesis Era)’},
{value: ‘nov2021’, label: ‘Nov 2021 (The Post-Peak Bear Market)’},
{value: ‘nov2022’, label: ‘Nov 2022 (The FTX Collapse Crash)’},
{value: ‘jan2024’, label: ‘Jan 2024 (The Bull Rally)’}
]
};
const timelineData = {
“BTC”: {
“aug2010”: [2.1099, 0.4409, 0.7333, 0.6538, -0.0877, 3.4609, 1.4971, 0.8421, -0.1708, -0.3858, -0.3732, -0.3677, -0.0862, 0.5892, 0.161, -0.1131, 0.0465, 0.2915, 0.3976, 0.0866, 0.2205, -0.0968, 0.1223, 0.0748],
“jan2018”: [-0.2588, 0.0067, -0.3286, 0.3325, -0.1885, -0.1471, 0.2079, -0.09, -0.0567, -0.0406, -0.3654, -0.0818, -0.0734, 0.1104, 0.0749, 0.297, 0.6085, 0.2641, -0.0681, -0.0484, -0.1365, 0.1048, -0.1755, -0.0464],
“mar2020”: [-0.2494, 0.3456, 0.0957, -0.0338, 0.2406, 0.0274, -0.0746, 0.2804, 0.4277, 0.4697, 0.1437, 0.3641, 0.3011, -0.0178, -0.3538, -0.0609, 0.1863, 0.1342, -0.0702, 0.399, -0.0722, -0.1875, -0.167, 0.1218],
“nov2021”: [-0.0722, -0.1875, -0.167, 0.1218, 0.0541, -0.173, -0.1556, -0.3732, 0.1695, -0.1399, -0.031, 0.0553, -0.1626, -0.0365, 0.3983, 0.0002, 0.231, 0.0273, -0.0696, 0.1197, -0.0407, -0.1127, 0.0395, 0.2851],
“jan2024”: [0.0884, 0.1209, 0.0073, 0.4366, 0.1661, -0.1495, 0.1131, -0.0707, 0.0298, -0.0874, 0.0739, 0.1096, 0.3717, -0.0295, 0.0105, -0.1074, -0.0217, 0.141, 0.1106, 0.0246, 0.0802, -0.0651, 0.0538, -0.039]
},
“ETH”: {
“aug2015”: [-0.17, -0.18, 0.25, 0.05, -0.02, 0.60, 0.40, 0.10, -0.15, 0.10, -0.05, -0.15, 0.12, -0.10, 0.05, 0.18, -0.05, 0.10, 0.35, 1.20, 0.80, 0.40, -0.10, -0.05],
“jan2018”: [-0.30, 0.05, -0.45, 0.60, -0.15, -0.20, 0.15, -0.15, -0.25, -0.10, -0.35, -0.15, -0.10, 0.15, 0.10, 0.25, 0.50, 0.15, -0.15, -0.05, -0.10, 0.10, -0.20, -0.05],
“mar2020”: [-0.40, 0.55, 0.10, -0.05, 0.50, 0.10, -0.10, 0.20, 0.45, 0.30, 0.60, 0.15, 0.25, 0.45, 0.10, -0.40, -0.05, 0.30, 0.10, -0.15, 0.45, -0.10, -0.20, -0.15],
“nov2021”: [-0.10, -0.20, -0.25, 0.15, 0.10, -0.25, -0.30, -0.45, 0.40, -0.10, -0.05, 0.15, -0.15, -0.05, 0.35, 0.02, 0.15, 0.05, -0.05, 0.10, -0.05, -0.10, 0.05, 0.20],
“jan2024”: [0.10, 0.15, 0.05, 0.45, 0.20, -0.15, 0.15, -0.10, 0.05, -0.10, 0.05, 0.15, 0.30, -0.05, 0.02, -0.15, -0.05, 0.10, 0.15, 0.05, 0.10, -0.05, 0.05, -0.05]
},
“SOL”: {
“apr2020”: [0.15, 0.20, -0.05, -0.10, 0.25, -0.15, 0.10, 0.40, -0.10, 0.20, 0.60, 0.30, -0.10, -0.25, 1.10, 0.80, 0.30, -0.20, 0.10, 1.20, -0.15, -0.30, 0.20, 0.40],
“nov2021”: [-0.20, -0.30, -0.35, 0.10, 0.15, -0.40, -0.35, -0.50, 0.30, -0.15, -0.10, 0.20, -0.20, -0.10, 0.50, 0.05, 0.20, 0.10, -0.10, 0.15, -0.10, -0.15, 0.10, 0.40],
“nov2022”: [-0.55, -0.15, 0.40, -0.05, 0.10, -0.10, -0.05, 0.20, -0.10, -0.15, 0.10, 0.25, 0.50, -0.10, 0.15, 0.30, 0.45, 0.10, -0.20, 0.15, -0.05, 0.10, -0.10, 0.20],
“jan2024”: [0.15, 0.25, 0.10, 0.60, 0.25, -0.20, 0.20, -0.15, 0.10, -0.15, 0.15, 0.20, 0.40, -0.10, 0.05, -0.20, -0.10, 0.15, 0.20, 0.10, 0.15, -0.10, 0.10, -0.10]
}
};
const eraDetails = {
aug2010: { startMonth: 7, startYear: 2010 },
aug2015: { startMonth: 7, startYear: 2015 },
jan2018: { startMonth: 0, startYear: 2018 },
mar2020: { startMonth: 2, startYear: 2020 },
apr2020: { startMonth: 3, startYear: 2020 },
nov2021: { startMonth: 10, startYear: 2021 },
nov2022: { startMonth: 10, startYear: 2022 },
jan2024: { startMonth: 0, startYear: 2024 }
};
const monthsList = [“Jan”, “Feb”, “Mar”, “Apr”, “May”, “Jun”, “Jul”, “Aug”, “Sep”, “Oct”, “Nov”, “Dec”];
// DOM Handles – Setup Screen
const assetSelect = document.getElementById(‘tc-asset-select’);
const tokenAmountInput = document.getElementById(‘tc-token-amount’);
const collateralFiatVal = document.getElementById(‘tc-collateral-fiat-val’);
const eraSelect = document.getElementById(‘tc-era-select’);
const ltvSlider = document.getElementById(‘tc-ltv-slider’);
const ltvLimitVal = document.getElementById(‘tc-ltv-limit-val’);
const borrowSlider = document.getElementById(‘tc-borrow-slider’);
const borrowValText = document.getElementById(‘tc-borrow-val’);
const maxBorrowLabel = document.getElementById(‘tc-max-borrow-label’);
const interestSlider = document.getElementById(‘tc-interest-slider’);
const interestVal = document.getElementById(‘tc-interest-val’);
const interestLabelType = document.getElementById(‘tc-interest-label-type’);
const typeMonthlyBtn = document.getElementById(‘tc-type-monthly’);
const typeAnnualBtn = document.getElementById(‘tc-type-annual’);
const startBtn = document.getElementById(‘tc-start-btn’);
// DOM Handles – Simulation Screen
const setupScreen = document.getElementById(‘tc-setup-screen’);
const simScreen = document.getElementById(‘tc-sim-screen’);
const eraValText = document.getElementById(‘tc-era-val’);
const monthCounterText = document.getElementById(‘tc-month-counter’);
const simAssetLabel = document.getElementById(‘tc-sim-asset-label’);
const assetPriceText = document.getElementById(‘tc-asset-price’);
const priceChangeLabel = document.getElementById(‘tc-price-change-label’);
const loanBalText = document.getElementById(‘tc-loan-bal’);
const ltvValText = document.getElementById(‘tc-ltv-val’);
const ltvBar = document.getElementById(‘tc-ltv-bar’);
const statusBadge = document.getElementById(‘tc-status-badge’);
const activeInterestLabel = document.getElementById(‘tc-active-interest-rate’);
const interestSubtext = document.getElementById(‘tc-interest-subtext’);
const controlButtons = document.getElementById(‘tc-control-buttons’);
const advanceBtn = document.getElementById(‘tc-advance-btn’);
const autorunBtn = document.getElementById(‘tc-autorun-btn’);
const crashBtn = document.getElementById(‘tc-crash-btn’);
const insightBox = document.getElementById(‘tc-insight-box’);
const insightTitle = document.getElementById(‘tc-insight-title’);
const insightDesc = document.getElementById(‘tc-insight-desc’);
const resetBtn = document.getElementById(‘tc-reset-btn’);
// State Setup
let currentCollateralFiat = 0;
let currentLoanBalance = 0;
let activeTimeline = [];
let currentStep = 0;
let loopMonth = 0;
let loopYear = 2021;
let worstHistoricalMonth = -0.3887;
let rateMode = ‘monthly’;
let selectedLTVPct = 50;
let baseInterestRate = 2.0;
let isLiquidated = false;
const formatCurrency = (num) => num.toLocaleString(‘en-US’, {maximumFractionDigits: 0});
const updateAssetContext = () => {
const selectedAsset = assetSelect.value;
// Auto-adjust token amount to keep fiat value around standard baseline for ease of UI
if (selectedAsset === ‘BTC’) tokenAmountInput.value = 1;
if (selectedAsset === ‘ETH’) tokenAmountInput.value = 35;
if (selectedAsset === ‘SOL’) tokenAmountInput.value = 780;
const options = assetEras[selectedAsset];
eraSelect.innerHTML = ”;
options.forEach((opt, idx) => {
const option = document.createElement(‘option’);
option.value = opt.value;
option.textContent = opt.label;
if (idx === options.length – 2) option.selected = true;
eraSelect.appendChild(option);
});
// Determine worst month dynamically to format crash button
let worst = 0;
Object.values(timelineData[selectedAsset]).forEach(eraArr => {
eraArr.forEach(val => {
if (val {
const price = parseFloat(assetSelect.options[assetSelect.selectedIndex].getAttribute(‘data-price’));
const tokens = parseFloat(tokenAmountInput.value) || 0;
const fiatValue = price * tokens;
collateralFiatVal.innerText = formatCurrency(fiatValue);
selectedLTVPct = parseInt(ltvSlider.value);
ltvLimitVal.innerText = selectedLTVPct;
const newMaxBorrow = fiatValue * (selectedLTVPct / 100);
borrowSlider.max = newMaxBorrow;
maxBorrowLabel.innerText = formatCurrency(newMaxBorrow);
if (parseInt(borrowSlider.value) > newMaxBorrow || parseInt(borrowSlider.value) === 0) {
borrowSlider.value = newMaxBorrow;
}
borrowValText.innerText = formatCurrency(parseInt(borrowSlider.value));
};
assetSelect.addEventListener(‘change’, updateAssetContext);
tokenAmountInput.addEventListener(‘input’, syncLTVAndBorrow);
ltvSlider.addEventListener(‘input’, syncLTVAndBorrow);
borrowSlider.addEventListener(‘input’, (e) => {
borrowValText.innerText = formatCurrency(parseInt(e.target.value));
});
const applyRateMode = (mode) => {
rateMode = mode;
if(mode === ‘monthly’) {
typeMonthlyBtn.style.backgroundColor = “#24292F”;
typeMonthlyBtn.style.color = “#FFF”;
typeMonthlyBtn.style.border = “none”;
typeAnnualBtn.style.backgroundColor = “#FFF”;
typeAnnualBtn.style.color = “#24292F”;
typeAnnualBtn.style.border = “1px solid #E3E8EF”;
interestLabelType.innerText = “Monthly”;
interestSlider.min = “1.0”;
interestSlider.max = “8.0”;
interestSlider.step = “0.1”;
interestSlider.value = “2.0”;
interestVal.innerText = “2.0”;
} else {
typeAnnualBtn.style.backgroundColor = “#24292F”;
typeAnnualBtn.style.color = “#FFF”;
typeAnnualBtn.style.border = “none”;
typeMonthlyBtn.style.backgroundColor = “#FFF”;
typeMonthlyBtn.style.color = “#24292F”;
typeMonthlyBtn.style.border = “1px solid #E3E8EF”;
interestLabelType.innerText = “Annual APR”;
interestSlider.min = “5.0”;
interestSlider.max = “20.0”;
interestSlider.step = “0.5”;
interestSlider.value = “10.0”;
interestVal.innerText = “10.0”;
}
};
typeMonthlyBtn.addEventListener(‘click’, () => applyRateMode(‘monthly’));
typeAnnualBtn.addEventListener(‘click’, () => applyRateMode(‘annual’));
interestSlider.addEventListener(‘input’, (e) => {
interestVal.innerText = parseFloat(e.target.value).toFixed(1);
});
// Populate initialization fields
updateAssetContext();
const updateDashboardDisplay = (lastMonthReturn = null) => {
const calculatedLTV = (currentLoanBalance / currentCollateralFiat) * 100;
eraValText.innerText = `${monthsList[loopMonth]} ${loopYear}`;
monthCounterText.innerText = currentStep;
assetPriceText.innerText = formatCurrency(currentCollateralFiat);
loanBalText.innerText = formatCurrency(currentLoanBalance);
ltvValText.innerText = calculatedLTV.toFixed(1);
let visualBarWidth = Math.min(calculatedLTV, 100);
ltvBar.style.width = visualBarWidth + ‘%’;
if (lastMonthReturn !== null) {
const formattedRet = (lastMonthReturn * 100).toFixed(1);
priceChangeLabel.innerText = formattedRet > 0 ? `+${formattedRet}% market shift` : `${formattedRet}% market shift`;
priceChangeLabel.style.color = formattedRet > 0 ? ‘#20C997’ : ‘#EA2D2E’;
} else {
priceChangeLabel.innerText = ‘Position Opened’;
priceChangeLabel.style.color = ‘inherit’;
}
if (calculatedLTV >= 80 && !isLiquidated) {
isLiquidated = true;
ltvBar.style.background = ‘#EA2D2E’;
statusBadge.innerText = ‘LIQUIDATED’;
statusBadge.style.background = ‘#EA2D2E’;
controlButtons.style.display = ‘none’;
insightBox.style.backgroundColor = ‘#FFE0E0’;
insightBox.style.borderLeft = ‘4px solid #EA2D2E’;
insightTitle.innerText = ‘Margin Call Triggered: Assets Sold’;
insightTitle.style.color = ‘#C71B1C’;
insightDesc.innerText = `At Month ${currentStep}, the market dropped your asset base value down to $${Math.round(currentCollateralFiat).toLocaleString()}. This pushed your active LTV to ${calculatedLTV.toFixed(1)}%, instantly triggering liquidation. A 12% execution penalty fee was applied to recover the lender’s funds.`;
insightBox.style.display = ‘block’;
} else if (calculatedLTV >= 65 && !isLiquidated) {
ltvBar.style.background = ‘#FFC52F’;
statusBadge.innerText = ‘AT RISK’;
statusBadge.style.background = ‘#FFC52F’;
statusBadge.style.color = ‘#151515’;
} else if (!isLiquidated) {
ltvBar.style.background = ‘#20C997’;
statusBadge.innerText = ‘HEALTHY’;
statusBadge.style.background = ‘#20C997’;
statusBadge.style.color = ‘#FFFFFF’;
}
if (currentStep >= activeTimeline.length && !isLiquidated) {
controlButtons.style.display = ‘none’;
insightBox.style.backgroundColor = ‘#E2F9F3’;
insightBox.style.borderLeft = ‘4px solid #20C997’;
insightTitle.innerText = ‘You Survived the Market!’;
insightTitle.style.color = ‘#1A7A60’;
insightDesc.innerText = ‘Congratulations! Your loan survived a full 24-month market cycle without getting liquidated. Surviving a 2-year term is a massive win—in reality, most crypto-backed loans are designed for much shorter tenors (typically 6 to 12 months) precisely because long-term market volatility is so hard to predict.’;
insightBox.style.display = ‘block’;
}
};
startBtn.addEventListener(‘click’, () => {
const price = parseFloat(assetSelect.options[assetSelect.selectedIndex].getAttribute(‘data-price’));
const tokens = parseFloat(tokenAmountInput.value) || 0;
const initialFiatValue = price * tokens;
currentLoanBalance = parseInt(borrowSlider.value);
baseInterestRate = parseFloat(interestSlider.value);
const selectedAsset = assetSelect.value;
const selectedEraKey = eraSelect.value;
activeTimeline = timelineData[selectedAsset][selectedEraKey];
const selectedEraConfig = eraDetails[selectedEraKey];
loopMonth = selectedEraConfig.startMonth;
loopYear = selectedEraConfig.startYear;
if (rateMode === ‘monthly’) {
activeInterestLabel.innerText = baseInterestRate.toFixed(1);
interestSubtext.innerText = `+${baseInterestRate.toFixed(1)}% active monthly`;
} else {
activeInterestLabel.innerText = (baseInterestRate / 12).toFixed(2);
interestSubtext.innerText = `+${(baseInterestRate / 12).toFixed(2)}% active monthly (${baseInterestRate.toFixed(1)}% APR)`;
}
currentCollateralFiat = initialFiatValue;
currentStep = 0;
isLiquidated = false;
setupScreen.style.display = ‘none’;
simScreen.style.display = ‘block’;
controlButtons.style.display = ‘grid’;
insightBox.style.display = ‘none’;
updateDashboardDisplay(null);
});
const tickMonth = (overrideReturn = null) => {
if (currentStep >= activeTimeline.length || isLiquidated) return;
if (rateMode === ‘monthly’) {
currentLoanBalance = currentLoanBalance * (1 + (baseInterestRate / 100));
} else {
currentLoanBalance = currentLoanBalance * (1 + ((baseInterestRate / 12) / 100));
}
const marketMovement = overrideReturn !== null ? overrideReturn : activeTimeline[currentStep];
currentCollateralFiat = currentCollateralFiat * (1 + marketMovement);
currentStep++;
loopMonth++;
if (loopMonth > 11) {
loopMonth = 0;
loopYear++;
}
updateDashboardDisplay(marketMovement);
};
advanceBtn.addEventListener(‘click’, () => tickMonth(null));
autorunBtn.addEventListener(‘click’, () => {
const fastForwardInterval = setInterval(() => {
if (currentStep >= activeTimeline.length || isLiquidated) {
clearInterval(fastForwardInterval);
return;
}
tickMonth(null);
}, 50);
});
crashBtn.addEventListener(‘click’, () => tickMonth(worstHistoricalMonth));
resetBtn.addEventListener(‘click’, () => {
insightBox.style.display = ‘none’;
simScreen.style.display = ‘none’;
setupScreen.style.display = ‘block’;
syncLTVAndBorrow();
});
});
Some platforms try to reduce the damage before liquidation happens. Omoniyi said most crypto lenders he has used send alerts and allow users to top up collateral, repay part of the loan, or voluntarily close positions.
Even so, losses are not always contained. A borrower who meets all collateral requirements at the start of a loan can still end up short if prices fall too quickly. In such cases, the sale of collateral may not fully cover the debt, leaving the borrower with an unsettled balance.
That gap is where legal complexity begins. A fintech lawyer, who requested anonymity because he was not authorised to speak to the media, said borrowers can still be held liable for outstanding amounts, depending on contract terms.
“Crypto [as collateral] introduces an additional layer of complexity because of its volatility,” he said. “A borrower may satisfy the lender’s collateral requirements at the outset of the loan but still face a shortfall if the value of the crypto asset declines significantly before or during enforcement.”
Depending on the agreed terms, lenders could decide to recover the outstanding balance through the courts or directly from a customer’s other crypto holdings.
“Interest may accrue daily and may be charged, capitalised, debited from available balances, deducted from Collateral proceeds, or otherwise collected by Blockchain.com in its sole discretion,” Blockchain.com, a new entrant into the crypto lending market, said in its terms.
Crypto’s volatility pushes risk management onto borrowers, who actively self-manage their loans to avoid liquidation and additional debt, making crypto-backed lending a complex product to use.
/* Scoped Styles for WordPress Compatibility & Mobile Responsiveness */
.tc-shortfall-wrapper {
font-family: ‘Open Sans’, Helvetica, sans-serif;
width: 100%;
max-width: 620px; /* Constrains max width */
margin: 0 auto;
background-color: #FFFFFF;
border: 1px solid #E3E8EF;
border-radius: 8px;
padding: 24px;
color: #151515;
box-shadow: 0 4px 12px rgba(0,0,0,0.05);
box-sizing: border-box;
overflow: hidden; /* Hard stop on external bleeding */
overflow-wrap: break-word;
}
/* Force box-sizing on all internal elements to prevent overflow */
.tc-shortfall-wrapper * {
box-sizing: border-box;
}
.tc-sf-header {
border-bottom: 2px solid #EA2D2E;
padding-bottom: 16px;
margin-bottom: 24px;
}
.tc-sf-header h2 {
font-size: 1.5rem;
font-weight: 700;
margin: 0 0 8px 0;
color: #151515;
}
.tc-sf-header p {
font-size: 0.875rem;
margin: 0;
color: #24292F;
line-height: 1.6;
}
.tc-sf-scenario {
background-color: #FFF3F3;
border-left: 3px solid #EA2D2E;
padding: 12px 16px;
margin-bottom: 24px;
border-radius: 0 4px 4px 0;
}
.tc-sf-scenario-title {
font-size: 0.75rem;
text-transform: uppercase;
letter-spacing: 0.5px;
color: #C71B1C;
margin-bottom: 6px;
font-weight: 700;
}
.tc-sf-scenario ul {
margin: 0;
padding-left: 16px;
font-size: 0.8rem;
color: #151515;
line-height: 1.5;
}
.tc-sf-waterfall {
background-color: #F6F6F6;
border-radius: 6px;
padding: 20px;
margin-bottom: 24px;
}
.tc-sf-step {
margin-bottom: 16px;
}
.tc-sf-step-hidden {
display: none;
opacity: 0;
transition: opacity 0.5s ease;
}
.tc-sf-step-title {
font-size: 0.75rem;
text-transform: uppercase;
letter-spacing: 0.5px;
color: #24292F;
margin-bottom: 8px;
font-weight: 600;
}
.tc-sf-step-title.alert {
color: #EA2D2E;
font-weight: 700;
}
.tc-sf-row {
display: flex;
justify-content: space-between;
align-items: flex-start;
font-size: 0.95rem;
margin-bottom: 4px;
gap: 12px;
}
.tc-sf-row.border-dashed {
border-bottom: 1px dashed #E3E8EF;
padding-bottom: 8px;
}
.tc-sf-row.border-solid {
border-bottom: 2px solid #151515;
padding-bottom: 8px;
}
.tc-sf-row span:last-child {
white-space: nowrap;
}
.tc-sf-subtext {
font-size: 0.75rem;
font-weight: 400;
color: #24292F;
display: inline-block;
}
.tc-sf-desc {
font-size: 0.8rem;
color: #151515;
border-bottom: 1px dashed #E3E8EF;
padding-bottom: 8px;
line-height: 1.5;
}
.tc-sf-final-row {
display: flex;
justify-content: space-between;
align-items: center;
gap: 12px;
}
.tc-waterfall-btn {
background-color: #151515;
color: #FFFFFF;
border: none;
padding: 14px 24px;
font-size: 1rem;
font-weight: 600;
border-radius: 4px;
cursor: pointer;
width: 100%;
transition: background-color 0.3s ease;
}
/* Strict Mobile Override: Receipt-Style Stacking */
@media (max-width: 600px) {
.tc-shortfall-wrapper {
padding: 16px;
}
.tc-sf-waterfall {
padding: 16px;
}
.tc-sf-row {
flex-direction: column;
justify-content: flex-start;
gap: 4px;
}
.tc-sf-row span:last-child {
text-align: left;
align-self: flex-start;
font-size: 1.1rem; /* Bumps size slightly for readability on mobile */
}
/* Force subtext to drop to a new line on mobile so it doesn’t crowd the label */
.tc-sf-subtext {
display: block;
margin-top: 2px;
}
.tc-sf-final-row {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}
.tc-sf-final-row > span:last-child {
align-self: flex-start;
}
}
Anatomy of a Liquidation Shortfall
When crypto prices crash, you don’t just lose your collateral. If the asset drops too fast, the forced sale might not cover your principal, interest, and penalties—leaving you legally liable for the difference.
- Initial Collateral: 1.0 BTC currently valued at $62,950
- Loan Terms: 50% LTV ($31,475 Borrowed) at 2% Monthly Interest
- Liquidation Trigger: LTV exceeds 80%
- Execution Penalty: 12% fee applied to collateral sale proceeds
- Stress Event: A severe assumed -55% drop in Bitcoin’s price
$62,950
-$31,475
-$1,889
$28,328
Lender alerts borrower to top up collateral or repay the loan to restore health. Because the price fell too quickly, the borrower cannot deploy capital in time.
+$28,328
-$3,399
Proceeds ($28,328) minus Total Debt ($36,763)
-$8,435
document.addEventListener(“DOMContentLoaded”, function() {
const btn = document.getElementById(‘tc-waterfall-btn’);
const steps = [
document.getElementById(‘tc-step-2’),
document.getElementById(‘tc-step-3’),
document.getElementById(‘tc-step-4’),
document.getElementById(‘tc-step-5’)
];
// Button states perfectly synced to what happens on the NEXT click
const buttonTexts = [
“Advance: The Flash Crash & Margin Call”,
“Advance: Lender Executes Liquidation”,
“Advance: Calculate Final Debt Shortfall”,
“Reset Scenario”
];
let currentStage = 0;
btn.addEventListener(‘click’, () => {
if (currentStage {
steps[currentStage].style.opacity = ‘1’;
}, 50);
// Update button text for the NEXT action
btn.innerText = buttonTexts[currentStage];
// Color coding the button for stress events
if (currentStage === 0) {
btn.style.backgroundColor = “#EA2D2E”; // Turn red indicating a crash is coming next
} else if (currentStage === 3) {
btn.style.backgroundColor = “#151515”; // Return to neutral for reset
}
currentStage++;
} else {
// Reset logic
currentStage = 0;
steps.forEach(step => {
step.style.opacity = ‘0’;
setTimeout(() => { step.style.display = ‘none’; }, 500);
});
btn.innerText = “Advance: 3 Months Pass”;
btn.style.backgroundColor = “#151515”;
}
});
});
Where the business breaks
Three structural constraints limit the crypto lending business. First is liquidity. For crypto lenders that directly lend, sourcing capital can be a hassle.
“The biggest headache in this business is sourcing liquidity,” Omoniyi said.
He added that lenders typically rely on a mix of their own capital, investor funds, and debt to build a pool of fiat or stablecoins large enough to lend. Without sufficient liquidity, they cannot issue new loans.
Collateral management presents another challenge.
When a crypto lender is over-collateralised and holds customers’ locked assets, it is tempting to put them to work rather than leave them idle.
That can include trading customer funds, commingling them with operating liquidity, or re-lending them to other borrowers (rehypothecation), increasing leverage across the lending system.
In May 2022, the collapse of Terra-LUNA’s algorithmic stablecoin, which offered yield up to 19.5%, triggered a crypto credit crisis. Celsius Network, a US-based crypto lender, became one of the sector’s biggest casualties. It had pooled customer deposits into risky investments, including Anchor Protocol, a lending platform on the Terra blockchain, and had re-lent assets to other borrowers.
When Terra-LUNA collapsed, Celsius froze withdrawals and filed for bankruptcy two months later. The crisis rippled through the industry, contributing to the collapse of firms, including Singapore-based hedge fund Three Arrows Capital (3AC), which owed debts to crypto lenders Voyager, Genesis, and BlockFi.
The third biggest constraint is usage and adoption.
The current wave of crypto-backed loans remains geared towards DeFi traders who need short-term liquidity without selling their positions. For the market to grow, however, startups must attract ordinary crypto holders. In Nigeria, only an estimated 25 million people use or have bought digital assets, shrinking the addressable market.
Omoniyi, who co-founded Bitmonie, believes crypto-backed loans could find a market beyond sophisticated traders, especially among Nigerians who hold crypto as a store of value but are reluctant to sell during periods of market volatility.
He cited a customer who borrowed ₦300,000 ($220) against their Bitcoin rather than sell during a period of price volatility. The startup, which is still in beta, claims to issue loans at up to 60% LTV.
He added that the product’s transparency, with borrowers able to see the LTV ratio and liquidation thresholds upfront, is another advantage.
However, Babodor, who is a DeFi trader, is sceptical that ordinary consumers will embrace crypto-backed lending at scale.
“I could be wrong, but I don’t think crypto-backed loans will see widespread adoption among ordinary Africans,” he said. “The risks and market dynamics make them more suited to experienced crypto users than everyday consumers.”
Yet, the growing number of African startups offering crypto-backed lending suggests either that the business presents an attractive revenue opportunity or that the customer retention benefits far outweigh the risks.
The harder question is whether the market can expand beyond traders and early adopters without exposing ordinary consumers to risks they do not fully understand.
The regulatory side of crypto-backed lending
Nigeria does not currently have a comprehensive framework dedicated specifically to crypto-backed lending.
Startups operating in the market are navigating a patchwork of existing rules that touch on securities regulation, consumer lending, anti-money laundering (AML) requirements, digital assets, and general contract law.
/* Scoped Styles for WordPress Compatibility & Absolute Containment */
.tc-credit-wrapper {
font-family: ‘Open Sans’, Helvetica, sans-serif;
width: 100% !important;
max-width: 750px !important;
margin: 0 auto !important;
background-color: #FFFFFF;
border: 1px solid #E3E8EF;
border-radius: 12px;
padding: 24px;
color: #151515;
box-shadow: 0 4px 12px rgba(0,0,0,0.05);
box-sizing: border-box !important;
overflow: hidden !important; /* Prevent anything inside from stretching out */
}
/* Strict Box-Sizing Enforcement */
.tc-credit-wrapper *,
.tc-credit-wrapper *::before,
.tc-credit-wrapper *::after {
box-sizing: border-box !important;
max-width: 100% !important;
}
/* Header & Title Layout */
.tc-credit-header {
border-bottom: 3px solid #EA2D2E;
padding-bottom: 16px;
margin-bottom: 24px;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
align-items: flex-start;
gap: 12px;
}
.tc-credit-title-group {
flex: 1;
min-width: 200px;
}
.tc-credit-title-group h2 {
font-size: 1.35rem;
font-weight: 800;
margin: 0 0 8px 0;
color: #151515;
letter-spacing: -0.5px;
line-height: 1.2;
}
.tc-credit-title-group p {
font-size: 0.9rem;
margin: 0;
color: #24292F;
line-height: 1.5;
}
.tc-credit-badge {
background-color: #151515;
color: #FFF;
padding: 6px 12px;
border-radius: 4px;
font-size: 0.7rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 1px;
white-space: nowrap;
}
/* Desktop Tabs Container */
.tc-credit-tabs-container {
display: flex;
flex-wrap: nowrap;
gap: 8px;
margin-bottom: 16px;
width: 100%;
}
.tc-db-tab {
background-color: #F6F6F6;
color: #151515;
border: 1px solid #E3E8EF;
padding: 8px 16px;
font-size: 0.85rem;
font-weight: 600;
border-radius: 20px;
cursor: pointer;
white-space: nowrap;
transition: all 0.2s ease;
}
.tc-db-tab.active {
background-color: #EA2D2E;
color: #FFF;
border: 1px solid #EA2D2E;
}
/* Desktop Flex Grid Container */
.tc-grid-container {
width: 100%;
border: 1px solid #E3E8EF;
border-radius: 8px;
overflow: hidden;
font-size: 0.85rem;
background-color: #FFFFFF;
}
.tc-grid-row {
display: flex;
width: 100%;
border-bottom: 1px solid #E3E8EF;
}
.tc-grid-row:last-child {
border-bottom: none;
}
.tc-grid-row.tc-striped {
background-color: #FAFAFA;
}
.tc-grid-header-row {
background-color: #FAFAFA;
font-weight: 700;
color: #24292F;
border-bottom: 2px solid #E3E8EF;
}
.tc-grid-cell {
padding: 12px 16px;
color: #24292F;
line-height: 1.5;
word-wrap: break-word !important;
overflow-wrap: break-word !important;
}
/* Desktop Grid Column Percentages */
.tc-col-1 { width: 20%; flex-shrink: 0; }
.tc-col-2 { width: 22%; flex-shrink: 0; }
.tc-col-3 { width: 28%; flex-shrink: 0; }
.tc-col-4 { width: 18%; flex-shrink: 0; }
.tc-col-5 { width: 12%; flex-shrink: 0; }
.fw-bold {
font-weight: 700;
color: #151515;
}
.tc-hidden-rate {
background-color: #F6F6F6;
color: #151515;
padding: 4px 8px;
border-radius: 4px;
font-weight: 600;
font-size: 0.75rem;
border: 1px solid #E3E8EF;
display: inline-block;
margin-bottom: 4px;
}
/* ABSOLUTE MOBILE OVERRIDE (For Screens under 650px) */
@media (max-width: 650px) {
.tc-credit-wrapper {
padding: 16px !important;
border: 1px solid #E3E8EF !important;
box-shadow: none !important;
}
/* Force Tabs to wrap dynamically on mobile to prevent stretching */
.tc-credit-tabs-container {
flex-wrap: wrap !important;
gap: 6px !important;
}
.tc-db-tab {
padding: 6px 12px !important;
font-size: 0.8rem !important;
white-space: normal !important; /* Allow layout wrapping if text is long */
}
.tc-grid-container {
border: none !important;
background: transparent !important;
}
.tc-grid-header-row {
display: none !important; /* Completely kill headers on mobile */
}
/* Break flex grid rows into standard isolated blocks */
.tc-grid-row {
display: block !important;
width: 100% !important;
margin-bottom: 16px !important;
border: 1px solid #E3E8EF !important;
border-radius: 8px !important;
background-color: #FFFFFF !important;
box-shadow: 0 2px 6px rgba(0,0,0,0.03) !important;
}
/* Break grid cells into full-width stacking rows */
.tc-grid-cell {
display: block !important;
width: 100% !important;
padding: 10px 14px !important;
border-bottom: 1px solid #F6F6F6 !important;
text-align: left !important;
}
.tc-grid-cell:last-child {
border-bottom: none !important;
}
/* Inject high-contrast dark mobile headers above cell text */
.tc-grid-cell::before {
content: attr(data-label) !important;
font-weight: 700 !important;
font-size: 0.75rem !important;
text-transform: uppercase !important;
color: #8D99A8 !important;
display: block !important;
margin-bottom: 4px !important;
}
}
The African Credit Landscape
A structural comparison of provider terms across crypto-backed, traditional secured, and unsecured digital loans.
document.addEventListener(“DOMContentLoaded”, function() {
const db = [
// CRYPTO & MIXED
{ cat: “crypto”, name: “Busha”, asset: “Bitcoin, Solana”, rate: “2% Monthly”, limit: “50% LTV”, tenor: “Revolving” },
{ cat: “crypto”, name: “Bitmonie”, asset: “Bitcoin”, rate: “Transparent”, limit: “60% LTV”, tenor: “Short-term” },
{ cat: “crypto”, name: “Blockchain.com”, asset: “Major Crypto”, rate: “~1.9% Annual”, limit: “Variable”, tenor: “Daily Accrual” },
{ cat: “crypto”, name: “AltCoinTrader”, asset: “Crypto”, rate: “Up to 7.95% Annual”, limit: “Variable (12% Liquidation Fee)”, tenor: “Revolving” },
{ cat: “crypto”, name: “TransferXO”, asset: “Crypto”, rate: “4.2% Default Rate”, limit: “Undisclosed”, tenor: “Revolving” },
{ cat: “crypto”, name: “Carrot Credit”, asset: “Stocks, Gov Bonds, Crypto”, rate: “Transparent”, limit: “40% LTV (Stocks) / 70% (Bonds)”, tenor: “Revolving” },
{ cat: “crypto”, name: “Geddes Capital”, asset: “Crypto”, rate: “Transparent”, limit: “50% LTV”, tenor: “Revolving” },
// TRADITIONAL SECURED
{ cat: “trad”, name: “Access Bank Vehicle Finance”, asset: “The Vehicle (10% Equity required)”, rate: “22% Annual”, limit: “50 Million Naira”, tenor: “24 to 48 Months” },
{ cat: “trad”, name: “Access Bank Device Finance”, asset: “Phone / Electronics”, rate: “30% Annual”, limit: “Not Published”, tenor: “3 to 12 Months” },
{ cat: “trad”, name: “FCMB Auto Loan”, asset: “The Vehicle (20% Equity required)”, rate: “33.5% Annual (Starting)”, limit: “30 Million Naira”, tenor: “Up to 60 Months” },
{ cat: “trad”, name: “Autochek Purchase Finance”, asset: “The Vehicle”, rate: “~15% Annual (Unverified)”, limit: “70% of Vehicle Value”, tenor: “Up to 60 Months” },
{ cat: “trad”, name: “Autochek Cash Loan”, asset: “Logbook / Car Title”, rate: “Not Published (Nigeria)“, limit: “2 Million to 50 Million Naira”, tenor: “3 to 48 Months” },
{ cat: “trad”, name: “First Bank Secured Term”, asset: “Mortgage, T-Bills, FDs”, rate: “Not Published (Discretionary)“, limit: “Conflicting (40M to 70M+ NGN)“, tenor: “Up to 36 Months” },
{ cat: “trad”, name: “Stanbic IBTC Smart Loan”, asset: “Money Market Fund”, rate: “Not Published“, limit: “Conflicting (20M to 200M NGN)“, tenor: “Not Published” },
{ cat: “trad”, name: “Standard Chartered Wealth”, asset: “Stocks, FDs, Life Insurance”, rate: “Not Published (+1% Fee)”, limit: “500 to 1,000,000 Dollars”, tenor: “Revolving (Margin Call)” },
{ cat: “trad”, name: “GTBank SME Invoice”, asset: “Business Receivables”, rate: “Not Published“, limit: “50 Million Naira (70% Invoice)”, tenor: “60 Days” },
// UNSECURED
{ cat: “unsec”, name: “Carbon”, asset: “None”, rate: “4.5% to 30% Monthly (Max 195% APR).
Late fee up to 0.0333% per day“, limit: “1M Naira (Personal) / 9.5M (Business)”, tenor: “61 Days to 12 Months” },
{ cat: “unsec”, name: “FairMoney”, asset: “None”, rate: “2.5% to 30% Monthly (Example: 24% APR)”, limit: “Up to 3 Million Naira (or 10M NGN)”, tenor: “30 to 180 Days” },
{ cat: “unsec”, name: “Renmoney”, asset: “None”, rate: “2.12% to 9.33% Monthly (25.4% to 35.7% APR)
+ 1% Management Fee“, limit: “Up to 10 Million Naira”, tenor: “91 to 365 Days” },
{ cat: “unsec”, name: “Aella Credit”, asset: “None”, rate: “2% to 20% Monthly (22% to 264% APR)”, limit: “2,000 to 1.5 Million Naira”, tenor: “30 to 90 Days” },
{ cat: “unsec”, name: “Branch”, asset: “None”, rate: “23% Monthly (34% to 271% APR)”, limit: “6,000 to 2 Million Naira”, tenor: “62 to 365 Days” },
{ cat: “unsec”, name: “OKash”, asset: “None”, rate: “3% to 15% Monthly (36.5% to 360% APR)”, limit: “3,000 to 3 Million Naira”, tenor: “91 to 365 Days” },
{ cat: “unsec”, name: “Easemoni”, asset: “None”, rate: “5% to 10% Monthly (60% to 120% APR).
20.4% on 30-day tenor“, limit: “3,000 to 2 Million Naira”, tenor: “30 to 180 Days” },
{ cat: “unsec”, name: “Aidacredit”, asset: “None”, rate: “20% to 30% Monthly (24% to 260% APR).
30% rate for 15-day tenure“, limit: “4,000 to 2 Million Naira”, tenor: “15 to 365 Days” },
{ cat: “unsec”, name: “FastFund Credit”, asset: “None”, rate: “69.35% APR (0.19% Daily Interest Rate)”, limit: “Up to 400,000 Naira”, tenor: “Not Specified” },
{ cat: “unsec”, name: “Palmpay”, asset: “None (Powered by Flexi MFB)”, rate: “9.1% Rate (Up to 36% Per Annum)”, limit: “2,000 to 500,000 Naira”, tenor: “61 to 180 Days” },
{ cat: “unsec”, name: “Sycamore”, asset: “None”, rate: “2.3% to 6% Monthly”, limit: “100,000 to 5 Million Naira”, tenor: “3 to 12 Months” },
{ cat: “unsec”, name: “Payhippo”, asset: “None”, rate: “~6% Monthly (Working Capital)”, limit: “Average ~$1,300”, tenor: “30 to 45 Days” },
{ cat: “unsec”, name: “GTBank Quick Credit”, asset: “None (Salary Domiciliation)”, rate: “18% Annual”, limit: “100% of Monthly Salary”, tenor: “Up to 12 Months” }
];
const tbody = document.getElementById(‘tc-db-body’);
const tabs = document.querySelectorAll(‘.tc-db-tab’);
const renderGrid = (filterCat) => {
tbody.innerHTML = “”;
const filteredData = db.filter(item => item.cat === filterCat);
filteredData.forEach((row, index) => {
const divRow = document.createElement(‘div’);
divRow.className = `tc-grid-row ${index % 2 === 1 ? ‘tc-striped’ : ”}`;
divRow.innerHTML = `
`;
tbody.appendChild(divRow);
});
};
tabs.forEach(tab => {
tab.addEventListener(‘click’, (e) => {
tabs.forEach(t => {
t.classList.remove(‘active’);
t.setAttribute(‘aria-selected’, ‘false’);
});
e.target.classList.add(‘active’);
e.target.setAttribute(‘aria-selected’, ‘true’);
renderGrid(e.target.getAttribute(‘data-target’));
});
});
// Default Render
renderGrid(“crypto”);
});
Part of the challenge is that crypto-backed lending is not a single product.
A borrower might take a Naira loan backed by Bitcoin. Another might borrow stablecoins against Ether. A third might borrow one cryptocurrency against another. A fourth might use decentralised protocols where smart contracts, rather than centralised intermediaries, manage the lending process.
Each variation raises different regulatory questions around custody, disclosure, enforcement, and consumer protection.
“The real issue is that many of the protections developed for traditional lending markets may not clearly apply to every crypto-backed lending arrangement, particularly where the provider operates from outside Nigeria or structures the product in a way that falls outside existing regulatory categories,” the fintech lawyer said.
“As a result, borrowers may have fewer regulatory remedies than they would with a traditional bank or other heavily regulated financial institution. The issue is less the complete absence of legal protection and more the existence of regulatory uncertainty and potential gaps in product-specific protections.”
Nigeria’s existing consumer lending rules were built for a different world.
The Federal Competition and Consumer Protection Commission’s (FCCPC) Digital, Electronic, Online, or Non‑Traditional Consumer Lending Regulations, which came into effect in July 2025, set binding standards on how digital lenders register, disclose terms, protect data, and recover debts.
The regulations were created with unsecured digital loans in mind; crypto‑backed products sit awkwardly in that framework, because the lender already holds collateral, the fintech lawyer noted.
Yet, borrowers are not entirely unprotected: general contract law, consumer protection rules, data protection obligations, and bans on deceptive practices still apply, but how well those safeguards work when crypto lenders, such as Aave and Kamino Finance, operate across borders remains unclear.
DeFi makes oversight complex. Some crypto-backed lenders rely on non-custodial protocols where smart contracts, rather than a central intermediary, govern how funds are issued and repaid.
While regulators can compel licenced exchanges to produce records and comply with directives, they have far fewer tools when lending happens on autonomous blockchain protocols.
“Most of these loans are non-custodial,” Babodor said. “The ones I’ve worked with use native DeFi protocols underneath. A lot of them just plug into Morpho or Aave in the background, so whatever you’re borrowing is really coming from those places.”
Morpho, a US-based DeFi lending protocol, claims it has facilitated about $3.5 billion in loans. Some crypto lenders connect to protocols such as Morpho to access liquidity and manage collateral positions in the background.
A layering of this sort complicates oversight. Regulators may supervise the crypto lender that interfaces with customers, but they have little direct authority over the decentralised protocols that ultimately provide liquidity or execute liquidations.
“I would expect the evolution [of crypto-backed lending] to follow an activity-based approach: regulators focusing on what a firm is actually doing (lending, custody, brokerage), rather than solely on the fact that the asset involved is crypto,” the fintech lawyer said.
Regulators are likely to focus on disclosure of liquidation risks, collateral management, lending thresholds such as LTV ratios, consumer protection rules, and AML and counter-terrorism financing controls, the fintech lawyer noted.
Users want liquidity without selling their assets. Exchanges want recurring revenue and stronger customer retention. Regulators want to encourage innovation without exposing consumers to poorly understood risks.
Balancing those incentives could prove to be the sub-sector’s most difficult challenge.
True scale demands moving beyond surface-level integrations to robust execution. We’ve filtered the noise out of Moonshot 2026, optimising the conference strictly for high-calibre connections between startup founders, global financial operators, enterprise leaders and individuals rewiring Africa’s technical frameworks.
Get 20% off Early Bird tickets for a limited time.

