Skip to main content
Non-monetary rewards are commissions where affiliates (promoters) or referred customers earn something other than a cash payout — such as points, credits, free months, or discounts. Because there is no payment provider involved, your system is responsible for delivering the reward. FirstPromoter handles tracking, approval, and state management. Your integration handles the actual delivery and marks each reward as complete.

Supported reward types

These can be configured independently for promoters (what the affiliate earns) and referrals (what the referred customer receives) within a campaign.

The complete flow

Webhook events to listen to

Subscribe to the following event types when creating your webhook subscription in Settings → Integrations → Webhooks. See Event Types for the full list.

commission.created

Fired when a new commission is tracked and enters pending status. Use this to log or notify internally that a reward has been earned. Do not fulfill the reward at this stage — the commission has not been approved yet.

commission.updated

Fired when a commission is updated. Filter on changes.status in the payload to react to specific transitions: This is your trigger to act. When changes.status shows ["pending", "approved"], deliver the reward in your system and call the mark_fulfilled endpoint.

Example payloads

API endpoints

All requests require the Account-ID header. You can find your Account ID in Settings → Integrations.

List commissions

Retrieve commissions filtered by status or unit type.

Approve commissions

If auto-approve is not enabled on your campaign, commissions must be approved before a payout record is created.
If more than 5 IDs are provided, the operation runs asynchronously and the response will have status in_progress. Poll or listen to commission.updated events to track completion.

Mark commissions as fulfilled

Call this after you have delivered the reward in your system. This moves the linked payout to completed and triggers the payout.updated webhook.
This endpoint only works on non-monetary commissions that have an associated payout record. If the commission has not been approved yet, the call will return an error. Ensure the commission is in approved status before calling this.

Mark commissions as unfulfilled

To reverse a fulfillment — for example if delivery failed on your end — move the payout back to pending:

Rewards for promoters vs. referrals

Both promoter rewards and referral rewards can be non-monetary and follow the same webhook and API flow. Use the payload data to distinguish which party should receive the reward.
1

Listen to commission.updated

When changes.status is ["pending", "approved"], read the amount, unit, and promoter or referral ID from the payload.
2

Deliver the reward in your system

Apply the points, credits, or discount in your platform.
3

Call mark_fulfilled

POST to /commissions/mark_fulfilled with the commission ID to confirm delivery and close the loop in FirstPromoter.

Setup checklist

Campaign has a non-monetary reward type configured (points, credits, free months, or discount)
Webhook subscription created for commission.created and commission.updated
Your system calls mark_fulfilled after successfully delivering the reward
Auto-approve is enabled on the campaign, or you have a flow to call the approve endpoint before fulfilling