
Order shipped
A shipping notice with the order number, carrier and delivery estimate in a details table.
A declined charge, with the amount, the card, the retry date and what happens next.

We could not charge your card for {{productName}}
Your payment did not go through
We tried to charge {{amount}} for {{productName}} and the card ending {{cardLast4}} was declined. This is usually an expired card or a bank blocking an unfamiliar charge rather than anything to do with your account.
We will try again on {{retryDate}}. {{consequence}}
Update payment method [{{actionUrl}}]
{{footerNote}}Shown with sample values. The HTML and plain-text tabs keep the placeholders.
About
Send it when a charge is declined. It names the amount and the card, explains the usual causes calmly, says when the next attempt will be, and gives one button to update the payment method.
Values
Required values have to come with every send. The rest fall back to the default shown here.
| Placeholder | Kind | Required | Default |
|---|---|---|---|
{{productName}} | Text | Required | None |
{{amount}} | Text | Required | None |
{{cardLast4}} | Text | Optional | •••• |
{{retryDate}} | Text | Required | None |
{{consequence}} | Text | Optional | If it fails again your plan pauses, and nothing is deleted. |
{{actionUrl}} | Link | Required | None |
{{footerNote}} | Text | Optional | You are receiving this because you have an active subscription. |
API
Create a template from this design once, then send it with the values for each message.
import { init, openemail } from '@openemail/sdk' init({ apiKey: process.env.OPENEMAIL_API_KEY }) const template = await openemail.templates.create({ name: 'Payment failed', starter: 'payment-failed', publish: true,}) const sent = await openemail.templates.send(template.slug, { from: 'Northwind <[email protected]>', to: '[email protected]', props: { productName: 'Northwind', amount: '£49.00', cardLast4: '4242', retryDate: '4 October', actionUrl: 'https://example.com/billing', },}) console.log(sent.id, sent.status)Orders and billing

A shipping notice with the order number, carrier and delivery estimate in a details table.

A dispatch notice with the carrier, a tracking number set in mono and the delivery address.

An order confirmation with up to three line items and a total.

A receipt with the amount charged, what it was for, the card used and a link to the invoice.

An invoice notice with the number, issue date, due date and amount due.

Advance notice of a renewal, with the plan, the date and the amount.

A trial reminder that says what actually happens on the last day.
Start from one
Every template opens in the editor as blocks you can move, restyle or delete, and sends through the API with the values filled in.
Email infrastructure for businesses, AI, agents and personal email. Built for scale, privacy and control. Everything email should have had from day one.