Confirm a loyalty-points contribution only after the partner has successfully deducted the customer’s points.
Contribution identities
Each identity has a distinct purpose:
Idempotency-Key is the transport request-idempotency header. The same header with the same canonical payload returns the original result. Conflicting immutable request data returns idempotency_conflict.
partner_event_id is the partner-supplied contribution uniqueness and recovery key. The same value with the same immutable request data returns the original contribution. Conflicting immutable request data returns partner_event_conflict.
partner_order_ref is a stable, non-PII order correlation. Only one confirmed contribution is allowed per partner, environment, and order. A conflict returns partner_order_conflict.
Confirm a contribution
Send POST {baseUrl}/v1/impact-transactions with X-API-Key, Idempotency-Key, and Content-Type: application/json.
Without an emissions estimate:
With an optional calculation_id:
An optional calculation_id must not invalidate an otherwise valid contribution.
points must be a positive whole number with a minimum value of 1. An invalid shape returns invalid_point_amount, and no failed contribution record is persisted.
Successful confirmation returns HTTP 201:
Contribution statuses
pending is exceptional and non-final.
confirmed is terminal and non-refundable.
failed is terminal. Only then may the partner restore points.
confirmed and failed do not interchange.
Recover a contribution
Use partner_event_id as the primary recovery key:
GET {baseUrl}/v1/impact-transactions?partner_event_id=evt_contrib_01HZX5A1B2C3D4E5F6G7H8J9
A secondary lookup is available by transaction ID:
GET {baseUrl}/v1/impact-transactions/{transaction_id}
See Errors & Recovery before restoring points after a timeout or unknown result.