Two ways to integrate.
Pick what fits your stack.
Connect payroll data with Deel Local Payroll (formerly PaySpace) for automatic employee sync, or integrate directly with our REST API for full programmatic control.
HR platform integration
Connect Deel Local Payroll, formerly PaySpace
If your team already runs payroll on Deel Local Payroll, this is the fastest path to live. No manual employee list, no CSV upload, no custom integration work on your side.
Connect Deel Local Payroll
Authorise the connection from your RibiRewards dashboard. No custom development, no CSV to prepare.
Employees sync automatically
Names, dates of birth, work start dates, and addresses sync from your payroll data, ready to use for rewards.
See upcoming milestones
Your dashboard shows upcoming birthdays and work anniversaries the moment your team syncs, no manual tracking.
Fund your wallet, start sending
Once synced, fund your wallet and send rewards straight from the milestone list. No separate spreadsheet to manage.
Direct API integration
Prefer to build it yourself? Use the API directly.
Full programmatic control over sending rewards, tracking status, and handling events. Works with any language or framework.
Get your API key
Sign up and navigate to Settings, then API Keys, in your dashboard. Generate a key for the sandbox environment to start.
// Your API key const RIBI_API_KEY = 'sk_live_your_key_here';
Make your first API call
Install the SDK or use plain HTTP. Send a reward to a test recipient to verify your setup.
const response = await fetch(
'https://api.ribirewards.com/v1/rewards',
{
method: 'POST',
headers: {
'Authorization': `Bearer ${RIBI_API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
recipient: 'amaka@company.ng',
type: 'choice_card',
amount: 10000,
currency: 'NGN'
})
}
);Configure webhooks
Add your endpoint URL in the dashboard and subscribe to events. Every reward lifecycle event will POST to your URL.
// Your webhook handler
app.post('/ribi-webhook', (req, res) => {
const { event, data } = req.body;
if (event === 'reward.redeemed') {
await db.rewards.update(data.reward_id, {
status: 'redeemed',
redeemedAt: data.redeemed_at
});
}
res.status(200).send('OK');
});Go live
Switch from sandbox to production keys. Update your base URL. Rewards are now flowing for real.
// Switch to production
const ribi = new RibiRewards({
apiKey: process.env.RIBI_LIVE_KEY,
// baseUrl defaults to production
});Stuck on integration?
Our developer support team responds within 4 hours on business days.
Contact Developer Support →