I recharged my account and tried to use top ups endpoint to send top ups. I'm getting this error
Developers · Troubleshooting
Getting "access_denied" on /topups? You're missing one header
A 401 error here has nothing to do with your wallet balance — it's almost always a missing or malformed Authorization header.
HTTP Status
401
Endpoint
/topups
Cause
Missing auth header
Wallet funded, ready to send a top-up, and instead you get this back:
{
"error": "access_denied",
"error_description": "Unauthorized"
}
Or, depending on the response, this slightly more detailed version:
{
"timeStamp": 1546683111038,
"status": 401,
"message": "Full authentication is required to access this resource",
"path": "/topups",
"errorCode": null
}
Why this happens
This has nothing to do with your wallet balance or account status. A 401 on /topups means the request itself is missing a valid Authorization header with your access token.
Authorization: Bearer YOUR_ACCESS_TOKEN
Important: without this header on every single request to /topups (and any other authenticated endpoint), the API has no way to know who's calling it, regardless of how much balance is in your wallet.
✅ How to fix it
Get a fresh access token first, then attach it as a Bearer token on the Authorization header of your top-up request. Follow our article on sending your first API request for the exact token request format, or check the official authentication & authorization guide for full reference.
❓ Frequently asked questions
My wallet has plenty of balance — why am I still getting this?
Balance has nothing to do with this error. A 401 happens before your request even reaches the part of the system that checks your wallet — it's purely about whether the request is authenticated.
I am sending an Authorization header — why is it still failing?
Double-check the token hasn't expired, that it was issued for the right audience/product, and that the header is formatted exactly as Authorization: Bearer YOUR_TOKEN with no typos or extra characters.
Where do I get the access token in the first place?
You exchange your client_id and client_secret for one at the auth endpoint — see our article on sending your first API request for the full request/response shape.
Still stuck after checking your header?
Our support team can take a look at your request.