API · Create recurring plan
API v1POST /api/v1/createPlanRepeatWhat it does#
Creates a subscription plan: charge frequency, currency, trial period, modalities and webhooks.
Authentication#
Requires the API bearer token in the Authorization header — see authentication.
Parameters#
Tilopay integration key.
Recurring plan title.
Plan description.
Charge frequency.
| Code | Value |
|---|---|
| 1 | Daily |
| 2 | Weekly |
| 3 | Monthly |
| 4 | Yearly |
| 5 | Fortnightly |
| 6 | Every two months |
| 7 | Quarterly |
| 8 | Every four months |
| 9 | Every six months |
Currency code in ISO 4217 format.
Initial payment amount.
Enables the free trial period: 0 no, 1 yes.
Days of the free trial period.
Number of retries for failed charges.
Array of plan modalities.
Optional field. The merchant's own thank-you URL; it must support the GET method.
Optional field. Webhook URL, over POST, that receives the callback in the request body when a customer successfully takes out a subscription. Example of the data sent: {'id_plan' : 1, 'email' : 'email@email.com', 'modality' : 'ModalityName', 'amount' : 25, 'frequency' : '', 'coupon' : '5HT5W8YT', 'free_trial' : 1, 'next_payment_date' : '2023-02-25'}
Optional field. Webhook URL, over POST, that receives the callback in the request body when the customer is charged successfully. Example of the data sent: {'id_plan' : 1, 'email' : 'email@email.com', 'amount' : 25, 'auth' : '123456', 'orderNumber' : 'PRE123456'}
Optional field. Webhook URL, over POST, that receives the callback in the request body when a payment fails. Example of the data sent: {'id_plan' : 1, 'email' : 'email@email.com', 'amount' : 25}
Optional field. Webhook URL, over POST, that receives the callback in the request body when a customer cancels the subscription to one of their plans. Example of the data sent: {'id_plan' : 1, 'email' : 'email@email.com', 'expire' : '2023-02-25'}
Optional field. Webhook URL, over POST, that receives the callback in the request body when a customer reactivates the subscription to one of their plans. Example of the data sent: {'id_plan' : 1, 'email' : 'email@email.com', 'next_payment_date' : '2023-02-25'}
End date of the recurring plan, d-m-Y format (for example 25-09-2022). When the plan has no end date, send it empty.
Set to 1 it adds the notify_detail and notify_note text to the notification email. Set to 0 it adds neither.
Detail text in Spanish. Optional when notify is 0.
Detail text in English. Optional when notify is 0.
Notes text in Spanish. Optional when notify is 0.
Notes text in English. Optional when notify is 0.
Request example#
The <...> values are placeholders: replace them with your own credentials and data.
{
"key": "<api_key>",
"title": "Plan title",
"description": "Plan description",
"frecuency": 1,
"currency": "USD",
"first_amount": 0,
"trial": 0,
"trial_days": 0,
"attempts": 1,
"modality": [
{
"title": "Basic",
"amount": 10
},
{
"title": "Premium",
"amount": 30
}
],
"thanks_url": "",
"webhook_subscribe": "",
"webhook_payment": "",
"webhook_rejected": "",
"webhook_unsubscribe": "",
"webhook_reactive": "",
"end_at": "25-10-2023",
"notify": 0,
"notify_detail_es": "",
"notify_detail_en": "",
"notify_note_es": "",
"notify_note_en": ""
}Response#
{
"type": "200",
"status": 1,
"message": "Success",
"id": 624,
"url": "https://app.tilopay.com/link/TmpJMHwx"
}To interpret a response that is not a success, see how to read an error response.
Last verified: 2026-08-29 · Owner: equipo-integraciones