Payments and returns
Payments and returns extensions render inside the payment status and return status cards on the Order status page. These cards appear alongside Shopify's native payment and return UI so customers see your extension content in direct context with their order's financial and return details.
Anchor to Use casesUse cases
- Payment reminders: Display notices about outstanding balances, payment terms, or upcoming due dates for orders with pending payments.
- Cost breakdowns: Show supplementary payment information such as installment details, loyalty point usage, or custom surcharges.
- Return status updates: Provide customers with additional context about their return, such as estimated refund timelines or return shipping instructions.
- Return processing details: Display app-specific return information, such as restocking status, exchange options, or return policy reminders.
- Order-specific messaging: Surface contextual messages related to payment or return activity on an order.

Anchor to Payments and returns targetsPayments and returns targets
Payments and returns targets render inside the payment status and return status cards on the Order status page. They're useful for adding contextual information about payments and returns tied to an order.
Anchor to Payment details (render after) ,[object Object]Payment details (render after) target
customer-account.order-status.payment-details.render-after
Renders after the payment details in the payment status card on the Order status page.
Use this target to display payment reminders, cost summaries, or supplementary payment information for an order. This target gives you access to the Order API and the Cart Lines API.
Supported components
- Abbreviation
- Announcement
- Avatar
- Badge
- Banner
- Box
- Button
- Button group
- Checkbox
- Chip
- Choice list
- Clickable
- Clickable chip
- Clipboard item
- Customer account action
- Date field
- Date picker
- Details
- Divider
- Drop zone
- Email field
- Form
- Grid
- Heading
- Icon
- Image
- Image group
- Link
- Map
- Menu
- Modal
- Money field
- Number field
- Ordered list
- Page
- Paragraph
- Password field
- Payment icon
- Phone field
- Popover
- Press button
- Product thumbnail
- Progress
- Qr code
- Query container
- Scroll box
- Section
- Select
- Sheet
- Skeleton paragraph
- Spinner
- Stack
- Switch
- Text
- Text area
- Text field
- Time
- Tooltip
- Unordered list
- Url field
Available APIs
- Addresses API
- Analytics API
- Attributes API
- Authenticated Account API
- Authentication State API
- Buyer Identity API
- Cart Lines API
- Checkout Settings API
- Cost API
- Customer Account API
- Customer Privacy API
- Discounts API
- Extension API
- Gift Cards API
- Intents API
- Localization API
- Metafields API
- Navigation API
- Note API
- Order API
- Order Status Localization API
- Require Login API
- Session Token API
- Settings API
- Shop API
- Storage API
- Storefront API
- Toast API
- Version API
Supported components
- Abbreviation
- Announcement
- Avatar
- Badge
- Banner
- Box
- Button
- Button group
- Checkbox
- Chip
- Choice list
- Clickable
- Clickable chip
- Clipboard item
- Customer account action
- Date field
- Date picker
- Details
- Divider
- Drop zone
- Email field
- Form
- Grid
- Heading
- Icon
- Image
- Image group
- Link
- Map
- Menu
- Modal
- Money field
- Number field
- Ordered list
- Page
- Paragraph
- Password field
- Payment icon
- Phone field
- Popover
- Press button
- Product thumbnail
- Progress
- Qr code
- Query container
- Scroll box
- Section
- Select
- Sheet
- Skeleton paragraph
- Spinner
- Stack
- Switch
- Text
- Text area
- Text field
- Time
- Tooltip
- Unordered list
- Url field
Available APIs
- Addresses API
- Analytics API
- Attributes API
- Authenticated Account API
- Authentication State API
- Buyer Identity API
- Cart Lines API
- Checkout Settings API
- Cost API
- Customer Account API
- Customer Privacy API
- Discounts API
- Extension API
- Gift Cards API
- Intents API
- Localization API
- Metafields API
- Navigation API
- Note API
- Order API
- Order Status Localization API
- Require Login API
- Session Token API
- Settings API
- Shop API
- Storage API
- Storefront API
- Toast API
- Version API
jsx
Examples
Description
Show a banner in the payment status card reminding customers about pending payment. This example reads order data from `shopify.order` to include the order name for context.
jsx
import '@shopify/ui-extensions/preact'; import {render} from 'preact'; export default async () => { render(<Extension />, document.body); }; function Extension() { const order = shopify.order.value; if (!order) { return null; } return ( <s-banner tone="warning"> Order {order.name} has an outstanding balance. Contact the merchant to complete your payment. </s-banner> ); }Description
Display a cost breakdown in the payment status card. This example reads cost data from `shopify.cost` and order data from `shopify.order` to display subtotal, shipping, tax, and total amounts.
jsx
import '@shopify/ui-extensions/preact'; import {render} from 'preact'; export default async () => { render(<Extension />, document.body); }; function Extension() { const order = shopify.order.value; const subtotal = shopify.cost.subtotalAmount.value; const shipping = shopify.cost.totalShippingAmount.value; const tax = shopify.cost.totalTaxAmount.value; const total = shopify.cost.totalAmount.value; if (!order) { return null; } return ( <s-stack direction="block" gap="base"> <s-heading>Payment summary for {order.name}</s-heading> <s-stack direction="block" gap="small"> <s-stack direction="inline" gap="base" justifyContent="space-between"> <s-text>Subtotal</s-text> <s-text> {subtotal.amount} {subtotal.currencyCode} </s-text> </s-stack> {shipping && ( <s-stack direction="inline" gap="base" justifyContent="space-between"> <s-text>Shipping</s-text> <s-text> {shipping.amount} {shipping.currencyCode} </s-text> </s-stack> )} {tax && ( <s-stack direction="inline" gap="base" justifyContent="space-between"> <s-text>Tax</s-text> <s-text> {tax.amount} {tax.currencyCode} </s-text> </s-stack> )} <s-divider /> <s-stack direction="inline" gap="base" justifyContent="space-between"> <s-text type="strong">Total</s-text> <s-text type="strong"> {total.amount} {total.currencyCode} </s-text> </s-stack> </s-stack> </s-stack> ); }
Anchor to Return details (render after) ,[object Object]Return details (render after) target
customer-account.order-status.return-details.render-after
Renders after the return details in the return status card on the Order status page. This card only appears when a return has been requested. A separate instance of this extension is rendered for each return.
Use this target to display return processing updates, refund estimates, or supplementary return information for a specific return. This target provides shopify.returnId to identify the current return, and also gives you access to the Order API and the Cart Lines API.
Supported components
- Abbreviation
- Announcement
- Avatar
- Badge
- Banner
- Box
- Button
- Button group
- Checkbox
- Chip
- Choice list
- Clickable
- Clickable chip
- Clipboard item
- Customer account action
- Date field
- Date picker
- Details
- Divider
- Drop zone
- Email field
- Form
- Grid
- Heading
- Icon
- Image
- Image group
- Link
- Map
- Menu
- Modal
- Money field
- Number field
- Ordered list
- Page
- Paragraph
- Password field
- Payment icon
- Phone field
- Popover
- Press button
- Product thumbnail
- Progress
- Qr code
- Query container
- Scroll box
- Section
- Select
- Sheet
- Skeleton paragraph
- Spinner
- Stack
- Switch
- Text
- Text area
- Text field
- Time
- Tooltip
- Unordered list
- Url field
Available APIs
- Addresses API
- Analytics API
- Attributes API
- Authenticated Account API
- Authentication State API
- Buyer Identity API
- Cart Lines API
- Checkout Settings API
- Cost API
- Customer Account API
- Customer Privacy API
- Discounts API
- Extension API
- Gift Cards API
- Intents API
- Localization API
- Metafields API
- Navigation API
- Note API
- Order API
- Order Status Localization API
- Require Login API
- Session Token API
- Settings API
- Shop API
- Storage API
- Storefront API
- Toast API
- Version API
Supported components
- Abbreviation
- Announcement
- Avatar
- Badge
- Banner
- Box
- Button
- Button group
- Checkbox
- Chip
- Choice list
- Clickable
- Clickable chip
- Clipboard item
- Customer account action
- Date field
- Date picker
- Details
- Divider
- Drop zone
- Email field
- Form
- Grid
- Heading
- Icon
- Image
- Image group
- Link
- Map
- Menu
- Modal
- Money field
- Number field
- Ordered list
- Page
- Paragraph
- Password field
- Payment icon
- Phone field
- Popover
- Press button
- Product thumbnail
- Progress
- Qr code
- Query container
- Scroll box
- Section
- Select
- Sheet
- Skeleton paragraph
- Spinner
- Stack
- Switch
- Text
- Text area
- Text field
- Time
- Tooltip
- Unordered list
- Url field
Available APIs
- Addresses API
- Analytics API
- Attributes API
- Authenticated Account API
- Authentication State API
- Buyer Identity API
- Cart Lines API
- Checkout Settings API
- Cost API
- Customer Account API
- Customer Privacy API
- Discounts API
- Extension API
- Gift Cards API
- Intents API
- Localization API
- Metafields API
- Navigation API
- Note API
- Order API
- Order Status Localization API
- Require Login API
- Session Token API
- Settings API
- Shop API
- Storage API
- Storefront API
- Toast API
- Version API
jsx
Examples
Description
Show a banner in the return status card informing customers about return processing. This example reads order data from `shopify.order` to include the order name for context.
jsx
import '@shopify/ui-extensions/preact'; import {render} from 'preact'; export default async () => { render(<Extension />, document.body); }; function Extension() { const order = shopify.order.value; if (!order) { return null; } return ( <s-banner tone="info"> Your return for order {order.name} is being processed. Refunds typically take 5–10 business days to appear on your statement. </s-banner> ); }Description
Display return shipping instructions specific to a return. This example uses `shopify.returnId` to reference the current return and provides contextual return information.
jsx
import '@shopify/ui-extensions/preact'; import {render} from 'preact'; export default async () => { render(<Extension />, document.body); }; function Extension() { const order = shopify.order.value; const returnId = shopify.returnId; if (!order) { return null; } return ( <s-stack direction="block" gap="base"> <s-heading>Return shipping instructions</s-heading> <s-text> Please ship your items back within 14 days. Include return reference{' '} {returnId} on the shipping label. </s-text> <s-text color="subdued"> Order {order.name} </s-text> </s-stack> ); }
Anchor to Best practicesBest practices
- Keep content contextual: These extensions render inside payment and return status cards, so content should be directly relevant to the payment or return being displayed.
- Guard against missing data: Always check that
shopify.order.valueis defined before rendering order-specific content. The order data loads asynchronously and may beundefinedon the initial render. - Avoid heavy rendering: These targets render inline within the Order status page. Avoid complex layouts or large data fetches that could cause layout shifts. Use banner or lightweight stack layouts for the best experience.