---
title: Refund confirmation
description: Report a recorded refund while distinguishing it from payment-method settlement.
---

This application recipe uses the [shared transactional layout](/ui/components#shared-recipe-layout). It returns a rendering Effect containing HTML and plain text; it does not submit email or implement the business operation.

```ts
import { renderReactEmail } from "@corven/email-sdk/react";
import { transactionalEmailLayout } from "./react-layout.js";

export const refundConfirmedEmail = (input: {
  reference: string;
  amount: string;
  detailsUrl: string;
}) =>
  renderReactEmail(
    transactionalEmailLayout({
      heading: "Refund confirmation",
      preview: "Your refund has been recorded.",
      paragraphs: [
        `Refund reference: ${input.reference}.`,
        `Amount: ${input.amount}. Your payment method may take additional time to show it.`,
      ],
      action: { href: input.detailsUrl, label: "View refund" },
    }),
  );
```

## Supply authorized data

Use the billing system’s confirmed state and settlement wording. An email receipt is not proof that funds have reached the recipient, and the SDK cannot predict bank settlement time.

Keep URLs and template inputs under host control. React text escaping is not URL validation or a consent check. Treat the rendered body as private message content.

## Send the rendered body

Yield the rendering Effect in your application, then supply its body to `Email.send` with explicit sender and recipients. Apply ordinary [provider validation](/providers/capabilities), [submission policy](/reference/options) and any required approval. The [React integration](/integrations/react) shows this composition.

These recipes are application examples, not additional template exports from the SDK. Rendering and compilation do not establish delivery or compatibility with every email client.
