Email API

Trial Expiring and Subscription Renewal Reminder Emails via API

When to send trial expiry and renewal reminder emails: the schedule, what auto-renewal rules expect, copy that converts without nagging, and the API request.

A trial ending or a subscription renewing is a moment the customer will judge you on: a surprise charge produces chargebacks, while a well-timed reminder produces upgrades. This guide gives you the reminder schedule for both cases, the legal minimum many jurisdictions now expect for auto-renewals, and the code that sends each message.

Quick answer

For trials, send a reminder 3 days before expiry and on the day it ends, then a single follow-up 2 days after. For paid renewals, send one notice 7 days before any charge (and 30 days before an annual one), stating the amount, the date, and how to cancel. Never charge a card without a prior notice email, and never send a reminder that lacks the exact date.

The trial sequence

  1. Day of signup: the welcome email. Include the trial end date in it; most people forget.
  2. Trial end minus 3 days: "Your trial ends on Thursday 21 Aug". Say what happens on that date (downgrade to free, or first charge if a card was collected), show what they have used so far, and link to the upgrade page.
  3. Trial end day: "Your trial ends today". Short, one button. If a card will be charged, restate the amount.
  4. Trial end plus 2 days, only if they did not convert: "Your account is now on the free plan" or "Your trial has ended", what they keep, what they lose, and a way to restart. Stop after this one.

The renewal notice

Several jurisdictions, including a number of US states and the EU under consumer protection rules, expect clear notice before an automatic renewal, and card networks look for it when a customer disputes a charge. A good renewal email states: the plan name, the amount and currency, the date the card will be charged, the card's last four digits, how to cancel or change the plan, and a link to the invoice history. For annual plans send it 30 days out and again 7 days out. For monthly plans one notice at 7 days is enough, and many products send it only on the first renewal and after any price change.

The send request

curl -X POST https://api.oqumail.com/api/v1/emails \
  -H "Authorization: Bearer $OQUMAIL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"from":"billing@yourdomain.com","to":"jane@example.com","subject":"Your Acme Pro annual plan renews on 21 Aug for USD 240.00","html":"<p>Hi Jane, your Acme Pro annual plan renews on <strong>21 Aug 2026</strong>. We will charge <strong>USD 240.00</strong> to your Visa ending 4242.</p><p>Nothing to do if you want to keep Acme. To change or cancel before then, visit <a href=\"https://app.yourdomain.com/billing\">Billing</a>.</p>","text":"Your Acme Pro annual plan renews on 21 Aug 2026 for USD 240.00 (Visa ending 4242). Change or cancel: https://app.yourdomain.com/billing"}'

Scheduling without duplicates

  • Run a daily job that selects subscriptions where the target date equals renews_at minus 7 days (or trial_ends_at minus 3 days) in the customer's local date, not UTC.
  • Record each reminder as a row (subscription_id, type, sent_at) and check for it before sending. A job that runs twice must not email twice.
  • Compute the amount from the upcoming invoice preview your billing system exposes, so proration and coupons are reflected. Do not hardcode the plan price.
  • If the plan changes after a reminder was sent, send a corrected notice rather than letting the old figure stand.
  • Skip reminders for cancelled or past-due subscriptions; they have their own sequences.

Copy that converts without nagging

Lead with the date and the amount, not with a benefit statement; people scan these emails for numbers. For trials, show usage ("you sent 1,240 messages during your trial") because concrete usage is the most persuasive argument for paying. Offer one action per email. Do not use countdown timers, red banners, or "last chance" language in a renewal notice; the tone should be a receptionist reminding you of an appointment, not a sale. A reply address matters here: "can I switch to monthly?" is a question people ask by replying.

Where the emails come from

Send billing and trial mail from billing@ on your own domain rather than a generic sender, because customers are rightly suspicious of anything mentioning a charge from an unfamiliar address. Set up SPF, DKIM and DMARC so the domain authenticates and keep billing@ as a working mailbox so replies are read. OquMail provides the send API and up to 15 mailboxes on the free plan, with guided DNS records and live verification, and each renewal notice shows up in the delivery log with the recipient server's response, which is the evidence you want when a customer disputes a renewal charge.

Common questions

Should I collect a card at trial start?

It raises conversion of the people who do sign up and lowers the number who sign up. Whichever you choose, the reminder emails must say clearly whether a charge is coming.

Can I skip renewal notices for monthly plans?

Legally it depends on where your customers are; practically, one notice on the first renewal and after any price change keeps disputes low. Annual plans should always get a notice.

What if the trial reminder bounces?

Check the delivery log for the SMTP response. If the address is invalid, prompt the user in-app to fix it; a trial user with a dead email address will churn silently otherwise.

Free business email on your own domain

OquMail gives you up to 15 mailboxes on your domain — free — with guided SPF/DKIM/DMARC, webmail, IMAP/SMTP for any mail app, and a send API. Most teams are live in under fifteen minutes. Start at oqumail.com.

Get started free

Ready for business email on your domain?

Up to 15 free mailboxes, guided DNS, webmail, and a transactional API — start in minutes.

Create your free workspace