Endpoint to receive webhook notifications for subscription events. Xendit will send webhooks to this URL when plan or cycle status changes occur.
Plan Events:
recurring.plan.activated- Plan successfully activatedrecurring.plan.inactivated- Plan deactivated
Cycle Events:
recurring.cycle.created- New cycle createdrecurring.cycle.retrying- Cycle payment failed, retry scheduledrecurring.cycle.succeeded- Cycle payment completedrecurring.cycle.failed- Cycle payment failed after all retriesrecurring.cycle.force_attempt_failed- Forced payment attempt failed
Webhook payload containing either a plan or cycle event.
Webhook event names for recurring plan status updates.
Business ID of Xendit.
Timestamp of webhook delivery attempt in ISO 8601 date-time format.
API version used for this webhook.
Merchant-provided identifier for the recurring plan.
Xendit-generated customer ID.
ISO 4217 currency code (e.g., IDR, PHP).
Amount to be charged in each recurring cycle.
Frequency of the recurring cycles.
Number of intervals between consecutive cycles.
Total number of cycles (optional; runs indefinitely if null).
Start date for the recurring schedule (ISO 8601 format), max allowed day of the month is 28. Supports time offset and UTC zero.
Interval between retry attempts for failed payments.
Number of retry intervals between consecutive retries.
Maximum number of retries for failed cycles.
Notifications triggered at specific retry attempts.
ID for payment token.
Order in which payment tokens will be attempted (1 to 5).
Payment taken upon recurring plan creation. Failing the payment will inactivate the plan.
Determines if the plan should be terminated when a cycle fails. RESUME continues, STOP inactivates the plan.
Channels to notify end user.
ISO 639-1 two-letter codes for language of notifications to be sent to end user
Whether a payment link is generated for failed cycle attempts.
Additional JSON properties. Max 20 keys, with key names up to 40 characters and values up to 80 characters.
Custom description of the recurring plan.
Details of items included in the recurring plan.
Type of item.
Name of the item.
Net amount charged per unit. Negative values for discounts.
Number of units of the item.
URL of the item, must be HTTPS or HTTP.
Merchant category for the item.
Subcategory for the item.
Description of the item.
Additional JSON properties. Max 20 keys, with key names up to 40 characters and values up to 80 characters.
Xendit-generated recurring plan ID.
Status of the recurring plan.
Failure code for failed plan creation
Country code for the plan
Payment session ID for plans that require account linking
Number of cycles generated for this plan.
Array of objects containing URLs for end users to complete the recurring plan.
Describes the purpose of the action. AUTH triggers payment account linking.
Type of URL, optimized for desktop or web interface.
Generated URL to perform the action.
HTTP method for calling the URL.
ISO 8601 date time format
ISO 8601 date time format
Webhook event names for recurring cycle status updates.
Business ID of Xendit.
Timestamp of webhook delivery attempt in ISO 8601 date-time format.
API version used for this webhook.
Xendit-generated recurring cycle ID.
Indicates whether the cycle was charged as part of plan creation
Inherited from Plan reference_id
ID of the associated recurring plan.
Xendit-generated customer ID.
The order of the current cycle within the plan
Status of the recurring cycle.
Details of any attempt actions made on the cycle.
Order of the attempt within the cycle. The current action belongs to this attempt.
Order of the action within an attempt. An attempt can have multiple actions. In general, one action corresponds to one unique payment token within the same attempt.
The type of payment attempt made on the cycle. INITIAL represents the first system generated attempt on the cycle. RETRY represents all subsequent system generated attempt after first attempt failed. FORCED represents explicit request made by the merchant to perform a payment attempt on the cycle. PAYMENT_LINK represents a payment link sent to the end user to solicit payment.
The date time that the payment action was performed.
This field used to indicate the payment ID created from cycle
The payment token ID used for this payment action.
The status of the action
If payment action encounters an error, the failure reason will be shown here.
The date time that the next RETRY attempt should be created for this cycle.
Contains details of payment links sent to the end user.
Payment session id created when the cycle attempt failed
This URL will lead the end user to a checkout page to complete the payment.
number of attempts made on the cycle so far
number of forced attempts made on the cycle so far
The scheduled date and time that the cycle will be executed. Always in UTC zero.
ISO 4217 currency code (e.g., IDR, PHP).
Amount charged in the cycle.
ISO 8601 date time format
ISO 8601 date time format
Webhook received successfully. Return 200 to acknowledge receipt.
Server error - webhook will be retried.