Reward Networks Reward Networks Developer Hub

Catalog & history

Read-only endpoints for configuring your till and reconciling at end of day.

Catalog

Scope: catalog.read.

Branches

curl "https://staging.app.rewards.network/api/partner/v1/branches" -H "Authorization: Bearer rn_live_..."
{ "success": true, "data": { "branches": [ { "branch_id": 45, "branch_name": "Main Street", "business_address": "12 Main St", "branch_phone": "0312345678", "is_active": true } ] } }

Cache the list; branch_id is required on every commit and redeem.

Campaign status

curl "https://staging.app.rewards.network/api/partner/v1/campaigns/status" -H "Authorization: Bearer rn_live_..."

Flags such as loyalty_running, stamp_running, has_campaigns with their date ranges. Use it to hide loyalty UI on the till when nothing is running, and to explain a NO_ACTIVE_RULES preview.

Vouchers

curl "https://staging.app.rewards.network/api/partner/v1/vouchers?per_page=50" -H "Authorization: Bearer rn_live_..."

The merchant's voucher campaigns (campaign_id, title, discount_percent, discount_amount, min_purchase_amount, max_discount_amount, valid_from, valid_to, terms_text, applies_to_all_branches, remaining_count, is_available, campaign_status) with pagination meta.

Reward catalog

curl "https://staging.app.rewards.network/api/partner/v1/rewards/catalog" -H "Authorization: Bearer rn_live_..."
{
  "success": true,
  "data": {
    "loyalty_items": [ { "item_id": 9, "campaign_id": 17, "campaign_name": "Coffee Points", "item_name": "Free flat white", "item_image_url": null, "points_required": 500 } ],
    "stamp_milestones": [ { "milestone_id": 3, "campaign_id": 18, "campaign_name": "Pastry Card", "stamps_required": 5, "reward_name": "Free pastry", "reward_description": null } ]
  }
}

Only items and milestones from campaigns running right now.

History

Scope: history.read.

Transactions

curl "https://staging.app.rewards.network/api/partner/v1/transactions?date_from=2026-09-22&date_to=2026-09-22&per_page=100" \
  -H "Authorization: Bearer rn_live_..."
Query Values
type all (default), points, stamps
date_from, date_to Y-m-d
search customer name
per_page, page pagination
sort_by, sort_dir ordering

Each item is one ledger movement:

{
  "id": "pl_88213",
  "type": "EARN_POINTS",
  "delta": 43,
  "unit": "points",
  "customer_id": 123,
  "customer_name": "Jane Doe",
  "description": "+43 points given",
  "source": "EARN",
  "txn_id": 9901,
  "created_at": "2026-09-22T10:41:07+00:00"
}

source is the ledger entry type (EARN, REDEEM, VOID); txn_id links back to the transaction you committed, so match it against your qr_scan_id records via the commit response.

Redemptions

curl "https://staging.app.rewards.network/api/partner/v1/redemptions?status=COMPLETED&branch_id=45" -H "Authorization: Bearer rn_live_..."
curl "https://staging.app.rewards.network/api/partner/v1/redemptions/5512" -H "Authorization: Bearer rn_live_..."

Filters: type (POINTS, STAMPS, VOUCHER), status (PENDING, COMPLETED or ALL; expired and cancelled QR codes are not kept in this list, so EXPIRED / CANCELLED return an empty list), branch_id, per_page (1–100, default 15), page. Each redemption carries redemption_id, user_id, branch_id, campaign_id, redemption_type, status, points_used, stamps_used, voucher_code, voucher_title, expires_at, redeemed_at, created_at.

Redemptions of other merchants are never visible, even by id (404).