Offer fulfillment allows you to initiate, update, and retrieve the lifecycle of an offer fulfillment, after a personalized offer has been accepted. Whether the personalized offer triggers a direct billing change, a hosted checkout flow, or a redirect-based workflow, these APIs track acceptance, execution status, and completion, providing a consistent interface for fulfillment tracking and notifications.
in_progress
, completed
, failed
).{
"personalized_offer_id": "a52ge40b",
"option_id": "b3b4741d",
"processing_type": "checkout",
"status": "in_progress"
}
This API notifies that a user has accepted an offer, logs an accepted event immediately for reporting, and triggers a backend processing depending on the offer’s processing_type.
You can call this API when a user accepts an offer (e.g., the user clicked Accept Offer or a similar confirmation).
This API will record an accepted event as soon as the API is called and initiate the appropriate fulfillment mechanism according to processing_type
:
billing_update
: Initiates subscription or billing record updates (e.g., applying a discount or changing a plan) asynchronously.checkout
: Returns a hosted_page
object in the response, which contains a URL to render the hosted checkout flow.url_redirect
: Returns a redirect_url. You are responsible for managing fulfillment on your end and must call the Update Offer Fulfillment API to report either completion or failure.webhook
: Sends a webhook, and you must also manage fulfillment on your end. Be sure to call the Update Offer Fulfillment API to report completion or failure.email
: Sends an email containing the offer details as configured. You are responsible for handling fulfillment on your side and must call the Update Offer Fulfillment API to report completion or failure.You can poll the Retrieve Offer Fulfillment endpoint for final status on billing_update
and checkout flows
.
Upon actual fulfillment completion, the system logs a fulfilled
event and sends notifications (webhook, Slack, email, Segment) as configured.
This API is used to update the status of offer fulfillment for the processing types url_redirect
, webhook
and email
as Chargebee cannot automatically fulfill these offers.
If status = failed
, you must include a failure_reason
to explain why the fulfillment did not succeed. The system logs a fulfilled
event when status = completed
or a failed
event when status = failed
.
Note: If the offer fulfillment is not marked as complted or failed within 7 days, Chargebee will mark the offer fulfillment as failed with the error code as external_fulfillment_failed
.