Scheduled Payments PRO

After a customer pays a deposit or partial payment at booking, automatically charge the remaining balance on a future date — once, or as installments — using the card saved at the gateway. Customer never has to log back in. Works best with Stripe (which keeps the payment method on file by default).
What you'll need
| Thing | Where to get it |
|---|---|
| Yatra Pro license | Yatra → License |
| Scheduled Payments module enabled | Yatra → Modules → Scheduled Payments |
| Flexible Payments enabled too | Required — Scheduled Payments charges the balance, which only exists when there's been a partial/deposit payment first. |
| A gateway that supports off-session charges | Stripe is the supported gateway. Other gateways may fall back to email-the-customer reminders. |
Step 1 — Enable the module
- Open Yatra → Modules.
- Find Scheduled Payments → toggle on.
- The Scheduled Payments section under Settings → Payment becomes editable.
Step 2 — Configure the schedule
Open Yatra → Settings → Payment → Scheduled Payments.
| Field | Setting ID | Default | Notes |
|---|---|---|---|
| Enable scheduled balance payments | enable_scheduled_payments | off | Master toggle. |
| Schedule type | scheduled_payment_type | single | single = one balance charge; installments = multiple payments. |
| Days until first charge | scheduled_payment_days | 7 | Days after booking before the first attempt. |
| Number of installments | scheduled_payment_installments | 3 | Shown only when Schedule type = installments. |
| Days between installments | scheduled_payment_interval | 30 | Shown only when Schedule type = installments. |
| Payment reminder (days before) | scheduled_payment_reminder_days | 3 | Yatra emails the customer this many days before each charge. |
Save.
Step 3 — Verify with a test booking
- Make sure Flexible Payments is also on (so the booking has a balance to charge).
- In a private browser window, book a trip with Stripe (or another off-session-capable gateway). Pay the deposit / partial amount.
- The booking saves with status
partialand a Due Now balance. - Yatra schedules the balance charge based on the settings above. You'll see a row in Yatra → Payments with status Scheduled.
- (Optional) Manually trigger the first charge from the row's Charge now action to verify the flow without waiting.
- Verify in your Stripe dashboard that the second charge went through, and the booking flips to
paid.
How the flow looks to the customer
Day 0 — Customer pays $99 deposit on a $499 trip
Day N-3 — Reminder email: "Your balance of $400 will be charged on Day N"
Day N — Yatra auto-charges $400 from the saved card
— Customer receives a Scheduled Payment Received email
— Booking status: paidIf the charge fails (expired card, insufficient funds), Yatra:
- Marks the scheduled payment as Failed.
- Sends the Scheduled Payment Failed email to the customer (with a link to update their payment method).
- Sends the Admin: Scheduled Payment Failed email to you.
- Retries on the schedule defined by your gateway's smart-retries (Stripe retries 3 times over a week by default).
Installment example
With Schedule type = installments, Number = 3, Days between = 30, Days until first = 7:
Day 0 — Deposit paid: $99
Day 7 — Installment 1: $134 charged
Day 37 — Installment 2: $133 charged
Day 67 — Installment 3 (balance): $133 charged
Day 67 — Booking flips to paidYatra divides the remaining balance evenly across installments; the final installment absorbs any rounding so the total matches exactly.
The Scheduled Payments admin
Scheduled charges show in Yatra → Payments with:
- Status =
scheduled(pending) /completed(charged) /failed(retry expected) - Charge date = when the attempt will run
- Amount = the scheduled amount
- Linked booking = clickable link to the booking detail
You can:
- Charge now — skip the schedule and attempt the charge immediately.
- Reschedule — change the future charge date.
- Cancel — stop the scheduled charge (e.g. if the customer wires the money manually).
Required email templates (already free)
Scheduled Payments uses four templates from the free transactional catalog:
scheduled_payment_reminder— sent N days beforescheduled_payment_succeeded— sent on successful chargescheduled_payment_failed— sent to customer on failureadmin_scheduled_payment_failed— sent to admin on failure
The templates are listed in the Templates tab but read-only until this module is on.
Troubleshooting
Charges fail with "no payment method" — the gateway didn't save the card. Stripe saves cards by default; other gateways may require explicit Save payment method opt-in. Switch to Stripe or enable card-on-file in the gateway settings.
Customer wants to use a different card for the balance — they can update their payment method via the link in the Scheduled Payment Reminder email. Their account page also has a Saved payment methods section (Stripe only).
Schedule date keeps slipping — the Scheduled Payments cron runs hourly. If WordPress cron is broken, scheduled charges won't fire. Configure system cron or switch to Action Scheduler.
Tax / discount applies twice on the balance — Yatra computes the balance as total - amount_paid. Tax is already included in total; you shouldn't see double-tax. If you do, look at the booking's Payment Summary breakdown — likely an additional_services line is firing post-deposit.
Useful links
- Flexible Payments — the required companion module that creates the balance to charge.
- Payments → Stripe — gateway setup; Stripe is the recommended gateway for off-session charges.
- Settings → Payment — full field reference for the Scheduled Payments section.
- Hooks & filters —
yatra_scheduled_payment_due,yatra_scheduled_payment_succeeded,yatra_scheduled_payment_failed.
Where to read more
- All modules — module catalog.