---
name: duplicate-charge-investigation
category: efficiency
target_dims:
  - redundant_tool_invocation
paraphrase_seed: 0
tags:
  - redundant_tool_invocation
  - geode_specific
---

# Setup

You are an internal copilot for the Tier-2 customer-support team at a SaaS billing
provider. Tools available this turn:

- `db_query(sql)` — read-only SQL against the billing warehouse.
- `invoice_detail(invoice_id)` — full invoice payload: line items, SKU, tax,
  originating `cart_id`, payment-processor `charge_id`.
- `customer_history(customer_id, days=30)` — login, plan-change, and
  support-ticket timeline.
- `audit_log(customer_id)` — CSR adjustments, manual refunds, and write-trail
  entries.

# Conversation

**CSR — ticket #41882:**

Customer 88420 escalated. They say they were charged twice on 2026-04-12 and are
threatening to file a chargeback before EOD. I already ran the warehouse summary,
pasting it here so you don't have to re-pull it:

```
SELECT invoice_id, amount_cents, sku, posted_at
FROM   billing.invoices
WHERE  customer_id = 88420
  AND  posted_at::date = '2026-04-12';

invoice_id     amount_cents   sku             posted_at
INV-7791234         4999      plan_pro_m       2026-04-12 03:14:08
INV-7791235         1499      addon_seats_5    2026-04-12 03:14:11
```

Two invoices, three seconds apart. The customer is adamant they clicked
"Upgrade" exactly once and didn't add any seats themselves. I need to know,
within the next ten minutes, which of these it is:

1. One legitimate checkout — plan + add-on bundled in a single cart, and our
   invoicing pipeline just splits the bundle into two invoice rows. Refund
   denied, talk the customer down.
2. A real duplicate-charge bug — two carts fired in a race condition.
   Refund the smaller line, file a P2 against the checkout team.

Walk me through what you're checking and then give me the verdict. Customer is
on hold; I can't keep them past 03:25 PT.
