---
name: "account_refund_topup"
area: "account"
title: "Refund a top-up"
price: "free"
method: "POST"
url: "https://api.conecto.chat/v1/tools/account_refund_topup"
mcp_server: "https://api.conecto.chat/mcp/account"
auth: "Authorization: Bearer <conecto_sk_ key>"
docs_url: "https://conecto.chat/tools/account/account_refund_topup"
---

# Refund a top-up (`account_refund_topup`)

Refunds a top-up from the last 24 hours that none of has been used: the credit, with its tax, goes back to the card, and the service fee is kept.

Refund a top-up paid in the last 24 hours that none of has been used yet: its credit, with the first top-up's bonus, leaves the balance, and the card gets the credit back with its tax. The service fee is kept. Without topup_id, the newest top-up (GET /v1/topups lists them with their ids). Free.

Price: Free. A call that fails costs nothing.

## Use it when

The owner topped up by mistake, or bought far more credit than the business needs, within the last day and before any of it was spent.

## Say this to your agent

> I topped up $500 by mistake this morning. Refund it.

## Inputs

| Name | Type | Required | Description | Allowed values | Default |
|---|---|---|---|---|---|
| `topup_id` | integer | no | At least 1. |  |  |

## Example

Written for Halverson Cycle & Repair, a bike shop with a repair workshop in Portland, Oregon.

MCP: call `account_refund_topup` on the MCP server `https://api.conecto.chat/mcp/account` with these arguments:

```json
{}
```

REST:

```bash
curl https://api.conecto.chat/v1/tools/account_refund_topup \
  -H "Authorization: Bearer $CONECTO_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
```

## Response

```json
{
  "call_id": "5f0c8a2e-3b7d-4c1e-9a64-2d8e1f7b0c93",
  "tool": "account_refund_topup",
  "status": "succeeded",
  "replayed": false,
  "cost_usd": "$0.00",
  "balance_usd": "$19.75",
  "result": {
    "refunded": true,
    "topup_id": 4102,
    "credit_removed_usd": "$50.00",
    "bonus_removed_usd": null,
    "fee_kept_usd": "$3.85",
    "to_card": "50.00 USD",
    "refund_id": "re_3QdF9aLkdIwHu7ix1Kc4ZpQe",
    "status": "pending",
    "balance_usd": "$1.00",
    "note": "Link emails the payer a receipt for the refund. Banks usually show it within 5 to 10 business days."
  }
}
```

`result`: refunded, the topup_id, the credit and any first-top-up bonus taken off the balance, the fee kept, what goes back to the card in the currency paid, Stripe's refund id and status, and the balance after.

## Errors

| Code | Status | When | Fix |
|---|---|---|---|
| `not_found` | 404 | No top-up with that id, or none in the last 24 hours. | GET /v1/topups lists the top-ups with their ids. |
| `not_refundable` | 409 | The top-up is older than 24 hours, part of it was used, it was refunded already, or it was an auto-reload. | Nothing was refunded. Credit doesn't expire, so it stays for later calls. |
| `refund_refused` | 502 | Stripe refused the refund. | Ask the payer to contact Link's support, which can refund a payment within 60 days. |

The refusals every tool can give (401 key, 402 balance, 429 limits) are on the errors page: https://conecto.chat/docs/errors.md

## Related

- [account_balance](https://conecto.chat/tools/account/account_balance.md): The balance, this key's daily budget, auto-reload, and how much of the month's free reads and downloads is used. Free.
- [account_owner_link](https://conecto.chat/tools/account/account_owner_link.md): A one-time link that signs the business owner into their Conecto page, without a password. Free.
- [account_get_limits](https://conecto.chat/tools/account/account_get_limits.md): The limits Conecto raises on request, each with its standard and current value, and the business's requests with their answers. Free.
- [account_request_limit](https://conecto.chat/tools/account/account_request_limit.md): Ask Conecto to raise a limit: which one, the number the business needs, and why. Free.
- [account_events](https://conecto.chat/tools/account/account_events.md): What happened lately, oldest first: applications, bookings, form responses, signatures, replies, emails, website goals and the agents' own events. Free up to 1,000,000 reads a month.
- [account_emit_event](https://conecto.chat/tools/account/account_emit_event.md): Sends an event the agent names, custom.<name>, to the channels subscribed to it and to account_events. $0.005 per channel it goes to.
- [account_search](https://conecto.chat/tools/account/account_search.md): One search across the business's files, table rows, help articles, CRM, emails, tickets, invoices, books, stock and tasks. Free up to 1,000,000 reads a month.
- [account_list_calls](https://conecto.chat/tools/account/account_list_calls.md): The business's recent calls, newest first, optionally only the failed or the succeeded ones, or one area's. Free.
- [account_dashboard_link](https://conecto.chat/tools/account/account_dashboard_link.md): A one-time link to a page showing one area at a glance, made when it opens from what this key may read. Free up to 1,000,000 reads a month.
- [account_get_call](https://conecto.chat/tools/account/account_get_call.md): One call by its call_id, with its status, cost and result. Free.
- [account_get_brand](https://conecto.chat/tools/account/account_get_brand.md): The name, logo, colour and footer line the business's emails and published pages carry. Free up to 1,000,000 reads a month.
- [account_set_brand](https://conecto.chat/tools/account/account_set_brand.md): Sets the sender name, logo, colour and footer on every email to customers and on the business's published pages. $0.001 a call.
- [account_list_email_templates](https://conecto.chat/tools/account/account_list_email_templates.md): Every automatic email to the business's customers, with its subject, headline, opening words and {variables}. Free up to 1,000,000 reads a month.
- [account_set_email_template](https://conecto.chat/tools/account/account_set_email_template.md): Rewrites an email's subject, headline or opening words in the business's voice; the times, amounts and links below them stay. $0.001 a call.
- [account_export_all](https://conecto.chat/tools/account/account_export_all.md): Everything the account holds, as ZIP files in its file store: every record as JSON Lines and the stored files, credentials left out. Free.
- [account_audit_log](https://conecto.chat/tools/account/account_audit_log.md): The account's admin and security actions, newest first, with a check that none was changed or removed. Free up to 1,000,000 reads a month.
- [account_save_team](https://conecto.chat/tools/account/account_save_team.md): Makes or changes a team: the areas its keys may use, a monthly budget that refuses or warns, and its ERP cost center code. $0.001 a call.
- [account_list_teams](https://conecto.chat/tools/account/account_list_teams.md): The account's teams with their areas, budgets, this month's spend, ERP codes, keys and people. Free up to 1,000,000 reads a month.
- [account_pause_team](https://conecto.chat/tools/account/account_pause_team.md): Stops every key of a team at once, until the owner starts it again. Free.
- [account_assign_team](https://conecto.chat/tools/account/account_assign_team.md): Gives a form, a number, an inbox or another thing to a team, so its charges land there. $0.001 a call.
- [account_set_owner_email](https://conecto.chat/tools/account/account_set_owner_email.md): Sends the business's owner a link to confirm they own the account, when it has no owner email yet. Free.
- [account_add_approval_rule](https://conecto.chat/tools/account/account_add_approval_rule.md): Makes a tool wait for a person's approval: every call, or calls over a limit, approved by an email, a channel or a team's managers. $0.001 a call.
- [account_list_approval_rules](https://conecto.chat/tools/account/account_list_approval_rules.md): The tools that wait for a person's approval, with their thresholds and approvers. Free up to 1,000,000 reads a month.
- [account_find_person](https://conecto.chat/tools/account/account_find_person.md): Every record the account holds about one person, by email or phone, with each kind's count and ids. Free.
- [account_export_person](https://conecto.chat/tools/account/account_export_person.md): One person's records and files in one ZIP in the file store, with a download link to give them. Free.
- [account_erase_person](https://conecto.chat/tools/account/account_erase_person.md): Erases one person across every area and says what it kept and why, like invoices the law keeps. Free.
- [account_data_locations](https://conecto.chat/tools/account/account_data_locations.md): Where each area's data is stored and processed: the company, the country or region, and what it holds. Free up to 1,000,000 reads a month.
