Billing Timing and Scheduling

This guide covers when customers are charged and how to configure billing schedules for your offers. Understanding these timing controls will help you create predictable subscription models, trial offers, and complex billing schedules that match your business needs.

Setting Up Basic Billing

Configure billing timing at the offer cycle level through the Offer's Configuration tab:

  1. Navigate to your Offer's Configuration tab
  2. Set the Charge Frequency (how often to bill)
  3. Set the Charge Trigger (what starts the next billing)
  4. Set the Time to Trigger (when it happens)

Charge Trigger Types

Time of Scheduled

Next transaction is scheduled X days (based on the Charge Frequency defined) from attempt 1 of the previous cycle, whether the attempt was successful or declined.

Example: Customer has a Monthly subscription. If the January 1st charge declines and succeeds on January 5th, the February 1st charge will still be scheduled based on the January 1st attempt date.

Time of Completed

Next transaction is scheduled after the last completed charge has been successful.

Example: Customer has a 30-day subscription. If their January 1st charge fails and succeeds on January 5th, their next charge will be scheduled for February 4th (30 days from the successful charge).

Delivered Package

Next transaction is scheduled X days (based on the Charge Frequency defined) from when the shipment was delivered, based on the Carrier data.

Example: Customer receives their monthly vitamin shipment on January 15th. With a 30-day frequency, their next charge will be scheduled for February 14th, regardless of when they were originally charged.

🚧

Pay Attention

When using Time of Scheduled, there may be times where a transaction is scheduled but not processed due to various conditions:

  • Merchant is inactive
  • Monthly processing limits exceeded (caps)
  • Daily rebill limits reached
  • Company account past due
  • Consent required but not provided
  • BIN restrictions (card type blocks)
  • Previous transaction still pending

When the charge is eventually processed, the next renewal will still be scheduled based on the original attempt date, maintaining the consistent billing schedule regardless of any processing delays.

Standard Billing Frequencies

  • Every X Days: Common intervals like 30, 60, or 90 days
  • Weekly: Every 7, 14, 21, or 28 days
  • Monthly: Same day each month
  • Quarterly/Annual: Every 3, 6, or 12 months

Custom Timeframes

Create custom timeframes for your offer if the pre-built ones do not suite your business needs.

→ Learn how: Creating Custom Timeframes

Charge Timing

In addition to determining what day to charge, you can also set what time of day charges are processed. This is configured separately from timeframes and allows you to schedule charges at specific hours (e.g., 2 AM for lower decline rates or to align with your operational schedule).

Payment Recovery

When a payment fails, your configured dunning schedule automatically retries the payment at configured intervals, helping you recover revenue that would otherwise be lost.

Configured at the offer level, the dunning schedule determines:

  • How many retry attempts to make
  • Time intervals between retries
  • What happens after all retries fail (cancel, pause, or continue)
  • Which responders to send at each retry stage

For detailed dunning configuration, see: Dunning Profiles Configuration Guide

Note: If a dunning schedule is configured on your offer, decline responders won't be sent - the dunning system uses its own responder configuration instead.

Transaction Scheduling System

Understanding how Vrio schedules the next charge after a transaction (successful or failed) is crucial for predictable billing cycles and customer expectations.

How Next Transactions Are Scheduled

When a transaction is processed, the system follows a two-step process to determine when to schedule the next charge.

Step 1: Determine the FROM Date

First, the system determines what date to use as the starting point for calculating the next charge based on these factors:

For Successful Transactions

  • After Dunning Recovery: When "Use Original Attempt Date" is enabled on the dunning profile associated with the offer → Uses the date scheduled from the original failed attempt on the cycle
  • Admin Override: If "schedule from today" is selected when manually processing a transaction either in the UI or the API → Uses current date
  • Schedule from Complete: If the offer cycle is configured to schedule from completion date → Uses current date
  • All Else: Uses the transaction's scheduled date

For Failed Transactions

  • External Dunning Provider: When configured (like FlexPay), the provider determines the optimal retry date using machine learning
  • With Dunning: Uses the transaction's scheduled date as the base for retry calculations
  • Without Dunning: Subscription is cancelled immediately

Step 2: Calculate the Next Schedule Date

Once we have the FROM date, the system applies your billing configuration to determine when the next transaction should occur:

For Successful Transactions

  1. Check for Final Cycle: If this was the final billing cycle, mark subscription complete and stop
  2. Apply Charge Frequency: Add the configured billing interval (days, weeks, months) to the FROM date
  3. Apply Timeframe Rules: Use custom timeframes if configured (specific day of week/month, etc.) - Note: when using a timeframe with the Month operator, it will always schedule the transaction on the same day of the month as the previous
  4. Set Charge Time: Apply the configured trigger hour for time of day
  5. Create Next Transaction: Schedule new transaction with calculated date

For Failed Transactions

  1. Check External Dunning Provider: If configured (like FlexPay), send to provider for smart retry scheduling and use their recommended date
  2. Check Standard Dunning Configuration: Verify dunning is set up, cancel if not
  3. Load Retry Settings: Get dunning cycle configuration for current attempt number
  4. Calculate Retry Date: Add dunning wait period to FROM date
  5. Apply Retry Time: Use dunning trigger hour configuration
  6. Create Retry Transaction: Schedule retry attempt with calculated date

Troubleshooting Billing Issues

Customer charged at wrong time

  • Check trigger hour configuration
  • Review any manual "schedule from today" overrides

Billing dates drifting later

  • Enable "Use Original Attempt Date" in dunning configuration
  • Check that FROM date calculations use date_scheduled not date_complete
  • Review any reactivation or pause/unpause activities
  • Look for manual schedule adjustments by admins

Related Documentation