List the incentives an organisation's participants earned under its programs, newest recorded first.
An incentive is visible to an organisation when its scheme belongs to one of the organisation's programs. A participant who moves to another organisation's program leaves their earlier incentives with the organisation they were earned under. An incentive whose scheme has no program, or that has no scheme, is never returned.
Only organisation-scoped callers see incentives, such as a client credentials token linked to an organisation. A user token, or an organisation token sent with an EvEnergy-User header, returns an empty list.
By default the list leaves out adjustments (is_adjustment is true) and zero-value incentives. include_adjustments and include_zero add them back. Every other filter narrows the list, and an incentive must match all the filters set.
An unknown query parameter, a value a parameter cannot parse, or any filter other than status sent more than once, returns a 400 problem.
expand=scheme and expand=user inline the linked scheme and participant. Send each as its own expand parameter (?expand=scheme&expand=user); a comma-joined value returns a 400 problem. An expanded user reads as null once the participant is no longer a member of the organisation; unexpanded it stays their URL, and their incentive stays in the list.
Filter incentives to one participant, given as a User ID from /users, not an internal numeric ID. A participant who has since left your programs still matches the incentives they earned under them. A User ID with no incentives you can see, including one that does not exist, yields an empty page. Any other value, including an empty one or me, will be rejected with an invalid-query-parameter-value problem.
Filter incentives to one scheme, given as an Incentive Scheme ID. A scheme outside your programs, including one that does not exist, yields an empty page. Any other value, including an empty one or a numeric ID, will be rejected with an invalid-query-parameter-value problem.
Filter incentives by payout_status. Repeat the parameter to match any of several statuses, for example status=NEEDS_ATTENTION&status=UNSETTLED. The filter reads the same value as the payout_status field, so every incentive returned carries one of the requested statuses. NOT_PAYABLE still respects the default view: it returns zero-value incentives and adjustments only when include_zero or include_adjustments is also set. Any other value will be rejected with an invalid-query-parameter-value problem.
Filter incentives to those whose period_month is this month or earlier, as YYYY-MM. Each month is bounded in its scheme's timezone. A period_to before period_from yields an empty page. Any other format will be rejected with an invalid-query-parameter-value problem.
Include adjustments, the incentives whose is_adjustment is true. They are left out by default. Send true or false; an empty value counts as absent. Other spellings, such as yes or 1, will be rejected with an invalid-query-parameter-value problem.
- Mock serverhttps://developers.ev.energy/_mock/ev.energy-api-v2/incentives
- Live API for both production and sandbox requests.https://api.ev.energy/v2/incentives
- Staging server for internal testing only.https://api-staging.ev.energy/v2/incentives
curl -i -X GET \
'https://developers.ev.energy/_mock/ev.energy-api-v2/incentives?page_before=xmpl01HNFZM7Q8FXASZXYZ6XM3TQRR&page_after=xmpl01HNFZM7Q8FXASZXYZ6XM3TQRR&page_size=10&user_id=user01J9X4K2M7Q8R3T5V6W7Y8Z9A0&scheme_id=incs01HZ8Y7X6W5V4A3T2S1R0Q9P8N&status=NEEDS_ATTENTION&period_from=2026-01&period_to=2026-08&include_adjustments=true&include_zero=true&expand=scheme' \
-H 'Accept-Language: string' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'EvEnergy-Version: 2'Returns a list of incentives, sorted newest recorded first.
Provides links to the previous and next pages of data, if they exist.
Indicates the version of the API that generated this response. If EvEnergy-Version was not specified in the request, this will be your OAuth application's default version.
The maximum number of requests that can be made to this endpoint per hour. Defaults to 1000 but may vary per client.
The number of requests remaining until this client's rate limit is reached.
Unique identifier for the incentive. It sorts by when the incentive was recorded.
URL of the participant who earned the incentive, or the participant itself with ?expand=user. Expanded, it is null once the participant is no longer a member of the calling organisation, because they left it or moved to another organisation.
URL of the incentive scheme the incentive was earned under, or the scheme itself with ?expand=scheme. The URL names the scheme by its incs id; the API does not yet serve a single incentive scheme at it.
The month, YYYY-MM, the incentive was recorded in, in the scheme's timezone.
Start of the period the incentive covers. Null for a one-off incentive.
End of the period the incentive covers. Null for a one-off incentive.
The incentive's value in the minor unit of currency, for example cents for USD. Null when no value was recorded.
Why the incentive was recorded. Null for incentives recorded before a reason was kept.
Whether the incentive has been paid, derived from payout_status_detail.
SETTLED: paid, or as settled as ev.energy can tell (PAID,PAID_EXTERNALLY,SENT_TO_UTILITY).UNSETTLED: earned and on track, no action needed (SCHEDULED,BATCHED).NEEDS_ATTENTION: earned but stuck, support should act (BLOCKED,FAILED,RETURNED,ON_HOLD,UNCLAIMED).NOT_PAYABLE: nothing to pay (NOT_PAYABLE).
The fine-grained payout status, for investigating one incentive.
PAID: PayPal paid the participant.PAID_EXTERNALLY: marked as paid outside ev.energy.SENT_TO_UTILITY: sent to the utility to credit the participant's bill. ev.energy does not confirm the credit reached the bill.BATCHED: in a payout that has not completed.SCHEDULED: due to be added to the next payout.BLOCKED: held by ev.energy, because the participant has no payout method or must be verified first.FAILED: the payment failed.RETURNED: the payment was returned, refunded or reversed.ON_HOLD: PayPal is holding the payment.UNCLAIMED: the participant has not claimed the PayPal payment.NOT_PAYABLE: nothing to pay, because the value is missing, zero or negative, the incentive is an adjustment or excluded from payouts, or ev.energy does not pay the scheme.
When PayPal processed a successful payment of the incentive. Null otherwise.
When the incentive was added to a payout. After a failed or returned PayPal payment, when it was added to the payout that failed. Null if it was never added to one.
Whether, and how, the participant sees the incentive in the ev.energy app.
VISIBLE: the app shows the incentive.UNRELEASED_MONTH: the month has not been released to participants yet.SHOWN_AS_EVENTS: the scheme shows earnings as in-month events, so the participant sees the earning but never this incentive.HIDDEN: the scheme is not shown in the app, or the incentive is a hidden adjustment.
[ { "id": "inct01JA2B3C4D5E6F7G8H9J0K1N2M", "user": "https://api.ev.energy/v2/users/user01J9X4K2M7Q8R3T5V6W7Y8Z9A0", "scheme": "https://api.ev.energy/v2/incentive_schemes/incs01HZ8Y7X6W5V4A3T2S1R0Q9P8N", "period_month": "2026-08", "period_start": "2026-08-01T04:00:00Z", "period_end": "2026-09-01T04:00:00Z", "amount": 2500, "currency": "USD", "rationale": "PROCESSED_EVENTS_FOR_PERIOD", "is_adjustment": false, "payout_status": "NEEDS_ATTENTION", "payout_status_detail": "RETURNED", "paid_at": null, "batched_at": "2026-08-15T14:02:11Z", "driver_visibility": "SHOWN_AS_EVENTS" } ]