Skip to main content

Overview

Users can convert their points to mobile money (GHS) sent directly to their phone. This is the primary redemption path for the mgPass rewards program.

How Cashback Works

Initiating a Cashback

curl -X POST https://pass.mediageneral.digital/api/account/cashback/redeem \
  -H "Authorization: Bearer USER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "points": 1000,
    "phone_number": "+233241234567",
    "network": "mtn"
  }'

Response

{
  "redemption_id": "rdm_abc123",
  "status": "pending",
  "points": 1000,
  "tier": "silver",
  "rate": 0.05,
  "gross_amount": 50.00,
  "fee_rate": 0.02,
  "fee_amount": 1.00,
  "net_amount": 49.00
}

Calculation

gross_amount = points * tier_rate
fee_amount = gross_amount * processing_fee_rate
net_amount = gross_amount - fee_amount

Example

FieldValue
Points1,000
TierSilver
Rate0.05 GHS/point
Gross50.00 GHS
Fee Rate2%
Fee1.00 GHS
Net (sent to user)49.00 GHS
Rates and fees are configured per tier by MG Digital admins.

Supported Networks

NetworkValue
MTN Mobile Moneymtn
Telecel Cashtelecel
AirtelTigo Moneyairteltigo

Fraud Protection

The cashback engine enforces several safety checks:
CheckDefaultDescription
Minimum points250Minimum points to redeem
Max daily redemptions3Per user per day
Max daily amount500 GHSTotal cashback per user per day
Cooldown60 minMinimum wait between redemptions
If any check fails, you’ll receive a 429 response:
{
  "error": "fraud_check_failed",
  "message": "Please wait 45 minutes before your next cashback redemption"
}

Redemption Status

StatusDescription
pendingCreated, awaiting processing
processingSent to payment provider
completedCash delivered to user
failedPayment provider rejected — points refunded
cancelledCancelled by admin — points refunded

Callback (Payment Provider)

The payment provider sends a callback when the transfer completes:
POST /api/cashback/callback

{
  "cashback_ID": "rdm_abc123",
  "status": "processed",
  "reason": null
}
On rejected status, points are automatically refunded to the user’s balance.
The callback endpoint is unauthenticated. In production, implement IP allowlisting for your payment provider.

Tracking Redemptions

Users can check their redemption history:
curl https://pass.mediageneral.digital/api/account/rewards/redemptions \
  -H "Authorization: Bearer USER_TOKEN"