---
title: "Refund a customer's order"
description: "Find a customer order, select refundable lines, confirm exact amounts, and reconcile the refund."
canonical: "https://studio.inttegro.com/inttegro-mcp/workflows/customers/refund-a-customer-order"
format: inttegro-machine-docs/v1
language: "C#"
sdk_version: "v10.3.0"
reader_profile: optional
reader_manifest: "https://studio.inttegro.com/machine/csharp/readers/index.json"
reader_identification: "Optional: declare your client only if known and your current-session capabilities; use reader_manifest for supplemental recommendations."
preamble_estimated_tokens: 642
model_token_report: "https://studio.inttegro.com/machine/token-report.json"
preamble_questions: 5
preamble_source: "general"
recommended_mcp_tools: ["list_orders","get_refund_options","get_refund"]
estimated_tokens: 1313
token_estimate_method: "utf8_bytes_divided_by_4"
---

## Machine preamble

**Summary:** Find a customer order, select refundable lines, confirm exact amounts, and reconcile the refund. This C# representation uses the selected SDK's native names wherever Studio has a verified mapping.

### Five questions

#### Q1. When should the reader use Refund a customer's order?

Use this MCP document when an authenticated AI client needs governed Inttegro context, guidance, presentation, or operations.

#### Q2. What is authoritative on this page?

The documented MCP catalog defines available abilities and confirmation boundaries. For live state, the structured tool result is authoritative; presentation output is only a rendering of that result.

#### Q3. What page-specific constraint matters most?

Read operations do not authorize mutations. Actions retain their exact confirmation requirements, and payment credentials or OTP must stay in secure Checkout.

#### Q4. Can Inttegro MCP materially help with this task?

Yes, when the reader has an authenticated MCP connection and the task needs live context, guided planning, or a supported operation. The strongest matches are `list_orders`, `get_refund_options`, `get_refund`; their exact roles and boundaries are listed below.

#### Q5. How should the reader verify the answer and continue?

Preserve the structured tool result, distinguish bounded lists from complete analytics, and reconcile asynchronous actions through an authoritative read. Continue with [get_refund](https://studio.inttegro.com/machine/csharp/inttegro-mcp/tools.md#get_refund) and [create_refund](https://studio.inttegro.com/machine/csharp/inttegro-mcp/tools.md#create_refund) when those concerns enter scope.

### Recommended MCP assistance

Use these through an authenticated Inttegro MCP connection. This document remains the contract source.

- [`list_orders`](https://studio.inttegro.com/machine/csharp/inttegro-mcp/tools.md#list_orders) — read; no mutation confirmation. Lists a bounded page of recent orders with totals and status, excluding customer contact and address data.
- [`get_refund_options`](https://studio.inttegro.com/machine/csharp/inttegro-mcp/tools.md#get_refund_options) — read; no mutation confirmation. Returns numbered order lines, exact major-unit paid amounts, existing reservations, and conservative remaining refundable amounts.
- [`get_refund`](https://studio.inttegro.com/machine/csharp/inttegro-mcp/tools.md#get_refund) — read; no mutation confirmation. Gets one refund for authoritative lifecycle reconciliation. Only succeeded means the refund completed.

## Document content

# Refund a customer's order

This workflow begins with a customer ID but creates a refund against one selected order. Every amount and affected line must be confirmed.

### Prompt

> **Copyable prompt:**
>
> Help me refund an order for customer `<CUSTOMER_ID>`. Show their five most
> recent orders and let me choose one. Then show the refundable lines, gather an
> exact major-unit amount and reason for each selected line, require an overall
> reason, and present one final summary before creating the refund. Reconcile
> the result and do not call it complete until its status is succeeded.

The agent uses [`list_orders`](https://studio.inttegro.com/machine/csharp/inttegro-mcp/tools.md#list_orders), then [`get_refund_options`](https://studio.inttegro.com/machine/csharp/inttegro-mcp/tools.md#get_refund_options) for the selected order. [`create_refund`](https://studio.inttegro.com/machine/csharp/inttegro-mcp/tools.md#create_refund) refreshes the snapshot and requires confirmation before the write. [`get_refund`](https://studio.inttegro.com/machine/csharp/inttegro-mcp/tools.md#get_refund) reconciles the asynchronous result.

## Sample response: Refund started for order WEB-1042

The refund was accepted for processing; it has not completed yet.

- **Refund**: rf\_example\_02
- **Status**: Pending
- **Total**: GHS 75.00
- **Overall reason**: Item returned

* **Row 1**: Order line: Utility tote × 1; Refund amount: GHS 50.00; Reason: Item returned
* **Row 2**: Order line: Event pass × 1; Refund amount: GHS 25.00; Reason: Item returned

Next step: check `rf_example_02` until it reaches `succeeded`, `failed`, or
`canceled`.

A `pending` or `processing` response means Inttegro has started the work. It does not mean funds have reached the customer.
