Skip to content

Flexible Payments PRO

Yatra → Settings → Payment — Partial Payment and Deposit sections

Take a deposit or a partial payment at booking time instead of demanding the full amount upfront. The customer reserves their seat with the smaller charge and pays the balance later — either manually from My Account, via a one-click "pay balance" link you email them, or automatically with the companion Scheduled Payments module.

Deposit vs Partial — which one do I want?

Both options offer the same outcome (customer pays part now, the rest later) but they're aimed at different business models. Pick one — or enable both and let the customer choose.

AspectDepositPartial
Mental model"Secure your spot with a deposit""Split your payment flexibly"
Configured howSite-wide and per-tripSite-wide only
Absolute amount possible?✅ "always $200, regardless of total"❌ percentage only
Per-trip percentage?✅ trip A can be 10%, trip B 30%❌ one site-wide percentage
Booking-form labelPay 25% Deposit or Pay $200 DepositPay 50% Now
Booking-form descriptionPay deposit now, rest laterPartial payment option
Best forHigh-ticket trips, expensive expeditions, group bookings, anywhere you want a per-trip leverSites with one consistent split (e.g. always 50/50) where simplicity beats per-trip control
Customer flow afterIdentical — both create a partial-status booking with a Pay balance link in My AccountIdentical

Why we keep both

A common question — "they look the same, why ship two?" Two reasons.

  1. Pricing strategy. "Pay 25% deposit" reads as a deposit to lock something in. "Pay 50% now" reads as a split payment. Different psychology, different conversion rates, different markets. Some operators want one, some the other.
  2. Per-trip flexibility. Deposit has dedicated columns on the trip row (deposit_amount, deposit_percentage, payment_terms) — so a 14-day Himalayan trek can demand $500 while a half-day city tour demands 15%. Partial is intentionally one global knob — fewer levers, less to misconfigure.

If you want per-trip control: Deposit. If you want one simple split across the whole catalogue: Partial.

What you'll need

ThingWhere to get it
Yatra Pro licenseYatra → License
Flexible Payments module enabledYatra → Modules → Flexible Payments
A working payment gatewayPayPal or any Pro gateway. See Payments.

Step 1 — Enable the module

  1. Open Yatra → Modules.
  2. Find Flexible Payments → toggle on.
  3. The Partial Payment and Deposit sections under Settings → Payment become editable; the Deposit & Payment Terms section on the Trip Edit screen unlocks.

Discoverability for free-plugin users

Even when Flexible Payments isn't active, the Trip Edit form still shows the "Deposit & Payment Terms" section with a PRO badge and an Upgrade to Pro / Activate module CTA — fields are read-only. So operators on the free plugin can see the feature exists; nothing they type into it would affect checkout while the module is off.

Step 2 — Configure site-wide defaults

Open Yatra → Settings → Payment.

Partial Payment

FieldSetting keyNotes
Enable Partial Paymentpartial_paymentMaster toggle. Adds a Pay X% Now radio next to Pay in Full on the booking form.
Partial Payment Percentagepartial_payment_percentageDefault 30. Customer pays this % at checkout, the rest is recorded as the remaining balance.

Deposit

FieldSetting keyNotes
Enable Depositdeposit_requiredMaster toggle. Adds a Pay X% Deposit radio next to Pay in Full on the booking form.
Deposit Percentagedeposit_percentageDefault 20. Used when a trip has no per-trip override.

Both radios are opt-in for the customer — they're shown alongside Pay in Full and the customer picks. Neither setting forces a deposit-only flow.

Step 3 — Per-trip Deposit override (optional)

Per-trip overrides exist only for Deposit, not for Partial.

  1. Open a trip → Pricing tab.
  2. Scroll to Deposit & Payment Terms.
  3. Fill in any combination of:
    • Deposit Amount — absolute amount in your store currency (e.g. 200 for a flat $200 deposit).
    • Deposit Percentage — percentage of trip total (e.g. 15).
    • Payment Terms — free-text instructions shown on the booking confirmation (e.g. "Balance due 30 days before departure"). Not enforced by code; it's a customer-facing note.

Resolution order when a customer picks the deposit option on a trip:

  1. Per-trip deposit_amount (absolute) wins if > 0. Capped at the trip total.
  2. Per-trip deposit_percentage wins if > 0.
  3. Site-wide deposit_percentage from Pro settings (only consulted if deposit_required is on).
  4. Upstream default (typically the full price).

Worked examples on a $1,000 trip:

Trip configurationCustomer charged at checkout
deposit_amount = 200$200
deposit_percentage = 15, no amount$150
both set$200 (amount wins)
both empty, site-wide = 20%$200
both empty, site-wide deposit offfull $1,000 (deposit option won't appear)

Step 4 — Verify the customer experience

  1. Open a trip in a private window → Book Now.
  2. On the booking summary you should see, depending on what you configured:
    • Pay in Full (always)
    • Pay X% Deposit or Pay $X Deposit — the X reflects per-trip values if set, otherwise the site-wide percentage.
    • Pay X% Now — only when Partial is enabled site-wide.
  3. Pick one of the smaller options. The order summary refreshes:
    • Net Amount = full trip price.
    • Due Now = the deposit/partial amount.
  4. Complete payment.
  5. On the booking detail page you should see:
    • Amount Paid = the deposit / partial amount
    • Remaining Balance = the rest
    • Payment Status = partial

Payment summary on a booking with partial payment — amount paid vs due now

How the balance gets collected

Identical mechanism for Deposit and Partial — both create a booking in partial status.

ApproachWhat happens
Customer self-serveThey open My Account → Bookings, click Pay balance on the row, and complete the second charge. Yatra flips the status to Paid.
Token link in emailEvery partial booking gets a /{remaining_checkout_prefix}/{token}/ URL (default prefix: pay-balance). Email it manually, or let Yatra's transactional emails do it. Customers don't need to be logged in to use this link.
AutomatedEnable Scheduled Payments. It auto-charges the saved card on a date you configure (e.g. 14 days before travel). Required: the gateway used for the first charge supports off-session payments (Stripe, PayPal Vaulting).

The payment_terms per-trip text isn't enforced by code — it's a customer-facing note rendered on the booking confirmation. If you need an enforced due date for the balance, use Scheduled Payments.

Common patterns

GoalSettings combo
Soft incentive — give customers a choice of full or 30%Partial Payment on, 30%, Deposit off
Hard incentive on every trip — 20% depositDeposit on, 20%, Partial off
Flat $200 deposit per trip regardless of totalDeposit on at any % (so the option appears); per-trip deposit_amount = 200 on each trip you want this on
Different deposit per trip type (10% day tours, 30% multi-day)Deposit on at site-wide 10%; per-trip deposit_percentage = 30 on multi-day trips
Deposit + auto-charge the rest 30 days before travelDeposit on + Scheduled Payments configured for 30d

Troubleshooting

The deposit/partial radio doesn't appear on the booking page

  • Module enabled? Yatra → Modules → Flexible Payments.
  • The corresponding master toggle on? Deposit needs deposit_required OR a per-trip value; Partial needs partial_payment.
  • For Deposit only: if both the global flag and per-trip fields are empty, the radio is intentionally hidden.

Per-trip values aren't sticking after I save the Trip Edit form

  • The free plugin's TripValidator allowlists these fields, but only on free 3.0.5+. Earlier versions silently dropped them. Update the free plugin first, then Pro.

Booking status stuck on partial after the second payment

  • Confirm the booking's amount_paid matches total_amount. Yatra flips to paid only when they're equal. If you marked a cash payment manually, double-check the amount on the Payments admin entry.

Deposit field says "PRO" and won't let me type even though Pro is installed

  • The module is installed but not enabled. Yatra → Modules → toggle Flexible Payments on. Reload the trip edit page.

My customers want to pay the balance but the "Pay balance" link returns a 404

  • Check the prefix under Settings → Permalinks. The default is pay-balance. If you've customised it and not flushed rewrites, do Settings → Permalinks → Save once.

Legacy: the standalone Yatra Partial Payment plugin

If you ran Yatra 2.x you may have a standalone plugin called Yatra Partial Payment (wp-content/plugins/yatra-partial-payment/). It used different option keys (yatra_first_installment_payment*) and stored a payment_type = 'partial' post-meta value. From Yatra 3.x onward, that plugin's behaviour is superseded by this module — it is no longer wired into the booking flow and can be deactivated. Its database options are harmless to leave in place; if you want a clean state, delete options matching yatra_first_installment_payment% after migrating.

Where to read more