Pay for Vercel, Render or Railway
Your app is finished, the free tier has run out, and the card is declined. This is the most common wall Nigerian developers hit, and it has almost nothing to do with your code.
Why the card fails
Three separate things get called "the card was declined", and the fix for each is different.
The bank blocked it. Most naira debit cards issued in Nigeria have a low international spending limit or none at all. The charge never reaches the hosting company; your bank refuses it. Nothing on the hosting side can fix this.
The processor blocked it. Some platforms decline prepaid and virtual cards outright, regardless of balance. A card that works on one site fails on another for this reason alone.
It went through, and cost more than the sticker price. A dollar charge on a naira account is converted at your bank's rate, and the bank usually adds a markup on top. The $20 you agreed to is not the amount that leaves your account.
That last one is the quiet cost. A declined payment is at least honest about being a problem.
If you must pay in dollars
There is no trick that makes a Nigerian naira card behave like an American one. The options people actually use are:
- A dollar card from a Nigerian bank, funded from a domiciliary account. This works, and it is the only route that does not add a third party to your billing.
- A virtual dollar card from a fintech. These work until the issuer's provider changes policy, which happens often enough that your production hosting should not depend on it.
Both leave you paying an FX-converted bill every month for infrastructure you could have priced in naira.
The other option: don't
If your app is a Node.js service, a Next.js app or a static build, it can run on OneBit Deploy and be billed in naira through Paystack. The Free plan is ₦0, needs no card at all, and includes 5 apps, 1 GB of memory, 5 GB of storage, automatic HTTPS, custom domains and live logs. Paid plans are ₦10,000 (Starter, always-on), ₦30,000 (Hobby, managed databases) and ₦89,000 (Enterprise) a month; prices exclude tax, and Nigerian VAT of 7.5% is added at checkout.
Moving an app is usually three things: the repository, the environment variables, and the domain.
# 1. Make sure it builds and starts locally the way the platform will run it
npm install
npm run build
npm startYour start script must listen on the port the platform gives it, not a hard-coded 3000:
{
"scripts": {
"start": "node server.js"
}
}// server.js — read the port from the environment
const port = process.env.PORT || 3000;
app.listen(port, () => console.log(`listening on ${port}`));Then connect the repository. Deploying from GitHub covers the connection and the build settings, and environment variables covers moving your secrets across without pasting them into a commit.
Limits worth knowing before you move
OneBit Deploy runs in a single region — there is no multi-region routing or geo-failover. It builds Node.js, Next.js and Python (early access) apps and static sites; Go and PHP are not available yet. On the Free plan an app scales to zero when it is idle, so the first request after a quiet period waits for the app to start. Paid plans stay warm. The full list is in limits.
If those are acceptable, the payment problem stops being a monthly event.
Related
- Plans and quotas — what each plan includes.
- Custom domains and SSL — pointing your domain at the app.
- A Railway alternative billed in naira.