night-owl-mvqxivzz826@example.com charged $64.00 twice for cart cart-92468

Status
Needs you
At risk
$64.00
Detected (detector clock)
2026-11-23 18:30

Diagnosis

AI agent (anthropic/claude-haiku-5.5)

The buyer was charged $64.00 twice for the same Roaster's Choice box, 18 seconds apart on October 27. Both charges are completed and neither order has shipped, so nothing has gone out yet. If nobody acts, the buyer keeps $128.00 charged for one box and will likely dispute the second charge, which can cost the shop the $64.00 plus a dispute fee.

Decisions

The agent proposes, the policy gate decides, the executor calls PayPal.

Refund capture

$64.0018F10635SV226950JWaiting for you

Agent proposed

The second capture (order 9DA59200AL576183S) duplicates the first for the same cart and the order has not shipped, so returning the extra $64.00 removes the double charge before the buyer disputes it.

Note: Refunding the duplicate $64.00 charge for cart-92468 (Roaster's Choice box). Sorry for the double charge.

Policy said

Needs approval
  • Refunds send money back to the buyer and cannot be reversed, so the owner approves every one.

PayPal returned

Not called yet.

Exact API call (PayPal-Request-Id ns-3a2a51f86dca8e6177f82478084e369e)
POST /v2/payments/captures/18F10635SV226950J/refund
{
  "amount": {
    "currency_code": "USD",
    "value": "64.00"
  },
  "note_to_payer": "Refunding the duplicate $64.00 charge for cart-92468 (Roaster's Choice box). Sorry for the double charge."
}

Edited amounts go back through the policy gate before anything is sent to PayPal.

Ask the owner

Waiting for you

Agent proposed

Only the owner knows whether the box will ship and whether the buyer should keep the first charge, so this needs confirmation before any money moves.

Note: Both orders for cart-92468 are unshipped. Do you want to keep the first charge (order 6LR58694J58438925) and ship one box, and then approve the refund of the second charge (capture 18F10635SV226950J, $64.00)?

Policy said

Needs approval
  • The agent asked for a human decision.

PayPal returned

No PayPal call for this action.

Evidence

Captures 4GW95639RL649183H (order 6LR58694J58438925) and 18F10635SV226950J (order 9DA59200AL576183S) charged the same payer $64.00 for the same cart reference cart-92468 18 seconds apart. A buyer who sees two charges files a dispute.

payer
night-owl-mvqxivzz826@example.com
cart ref
cart-92468
amount
$64.00
first capture id
4GW95639RL649183H
first order id
6LR58694J58438925
first captured at
2026-10-27T16:58:29.000Z
duplicate capture id
18F10635SV226950J
duplicate order id
9DA59200AL576183S
duplicate captured at
2026-10-27T16:58:47.000Z
seconds apart
18
same cart reference
true
order6LR58694J58438925capture4GW95639RL649183Horder9DA59200AL576183Scapture18F10635SV226950J

All ids are real PayPal sandbox objects; GET them with your sandbox credentials to check.

Audit trail

Detected, diagnosed, decided, executed. Live.

Detected: night-owl-mvqxivzz826@example.com charged $64.00 twice for cart cart-92468
Detector
Captures 4GW95639RL649183H (order 6LR58694J58438925) and 18F10635SV226950J (order 9DA59200AL576183S) charged the same payer $64.00 for the same cart reference cart-92468 18 seconds apart. A buyer who sees two charges files a dispute.
Agent started triage
Agent
Agent read ledger_lookup
Agent
ledger_lookupNightshift ledgerok
args { "order_id": "9DA59200AL576183S" }
Result
{"order":{"id":"9DA59200AL576183S","intent":"CAPTURE","status":"COMPLETED","amountCents":6400,"currency":"USD","payer":"night-owl-mvqxivzz826@example.com","cartRef":"cart-92468","description":"Roaster's Choice box, monthly","fulfillment":"unfulfilled","shippedAt":null,"createdAt":"2026-10-27T16:58:47.000Z","updatedAt":"2026-10-27T18:30:25.251Z","source":"sweep"},"buyer_note_untrusted":null,"authorizations":[],"captures":[{"id":"18F10635SV226950J","orderId":"9DA59200AL576183S","authorizationId":null,"status":"COMPLETED","statusReason":null,"amountCents":6400,"currency":"USD","finalCapture":true,"createdAt":"2026-10-27T16:58:47.000Z","updatedAt":"2026-10-27T18:30:25.254Z"}],"refunds":[],"failed_capture_attempts":[]}
Agent read get_capture
Agent
get_capturevia Nightshift REST clientok
args { "capture_id": "18F10635SV226950J" }
Result
{"id":"18F10635SV226950J","amount":{"currency_code":"USD","value":"64.00"},"final_capture":true,"seller_protection":{"status":"NOT_ELIGIBLE"},"seller_receivable_breakdown":{"gross_amount":{"currency_code":"USD","value":"64.00"},"paypal_fee":{"currency_code":"USD","value":"2.80"},"net_amount":{"currency_code":"USD","value":"61.20"}},"custom_id":"cart-92468","status":"COMPLETED","supplementary_data":{"related_ids":{"order_id":"9DA59200AL576183S"}},"payee":{"email_address":"sb-djk8i53501233@business.example.com","merchant_id":"D8M8MT98DPNNG"},"create_time":"2026-10-27T16:58:47Z","update_time":"2026-10-27T16:58:47Z","links":[{"href":"https://api.sandbox.paypal.com/v2/payments/captures/18F10635SV226950J","rel":"self","method":"GET"},{"href":"https://api.sandbox.paypal.com/v2/payments/captures/18F10635SV226950J/refund","rel":"refund","method":"POST"},{"href":"https://api.sandbox.paypal.com/v2/checkout/orders/9DA59200AL576183S","rel":"up","method":"GET"}]}
Agent read ledger_lookup
Agent
ledger_lookupNightshift ledgerok
args { "order_id": "6LR58694J58438925" }
Result
{"order":{"id":"6LR58694J58438925","intent":"CAPTURE","status":"COMPLETED","amountCents":6400,"currency":"USD","payer":"night-owl-mvqxivzz826@example.com","cartRef":"cart-92468","description":"Roaster's Choice box, monthly","fulfillment":"unfulfilled","shippedAt":null,"createdAt":"2026-10-27T16:58:29.000Z","updatedAt":"2026-10-27T18:30:24.450Z","source":"sweep"},"buyer_note_untrusted":null,"authorizations":[],"captures":[{"id":"4GW95639RL649183H","orderId":"6LR58694J58438925","authorizationId":null,"status":"COMPLETED","statusReason":null,"amountCents":6400,"currency":"USD","finalCapture":true,"createdAt":"2026-10-27T16:58:29.000Z","updatedAt":"2026-10-27T18:30:24.453Z"}],"refunds":[],"failed_capture_attempts":[]}
Agent read get_capture
Agent
get_capturevia Nightshift REST clientok
args { "capture_id": "4GW95639RL649183H" }
Result
{"id":"4GW95639RL649183H","amount":{"currency_code":"USD","value":"64.00"},"final_capture":true,"seller_protection":{"status":"NOT_ELIGIBLE"},"seller_receivable_breakdown":{"gross_amount":{"currency_code":"USD","value":"64.00"},"paypal_fee":{"currency_code":"USD","value":"2.80"},"net_amount":{"currency_code":"USD","value":"61.20"}},"custom_id":"cart-92468","status":"COMPLETED","supplementary_data":{"related_ids":{"order_id":"6LR58694J58438925"}},"payee":{"email_address":"sb-djk8i53501233@business.example.com","merchant_id":"D8M8MT98DPNNG"},"create_time":"2026-10-27T16:58:29Z","update_time":"2026-10-27T16:58:29Z","links":[{"href":"https://api.sandbox.paypal.com/v2/payments/captures/4GW95639RL649183H","rel":"self","method":"GET"},{"href":"https://api.sandbox.paypal.com/v2/payments/captures/4GW95639RL649183H/refund","rel":"refund","method":"POST"},{"href":"https://api.sandbox.paypal.com/v2/checkout/orders/6LR58694J58438925","rel":"up","method":"GET"}]}
Agent diagnosis
Agent
The buyer was charged $64.00 twice for the same Roaster's Choice box, 18 seconds apart on October 27. Both charges are completed and neither order has shipped, so nothing has gone out yet. If nobody acts, the buyer keeps $128.00 charged for one box and will likely dispute the second charge, which can cost the shop the $64.00 plus a dispute fee.
Agent proposed: Refund capture $64.00
Agent
The second capture (order 9DA59200AL576183S) duplicates the first for the same cart and the order has not shipped, so returning the extra $64.00 removes the double charge before the buyer disputes it.
Policy said: needs the owner's approval
Policy gate
  • Refunds send money back to the buyer and cannot be reversed, so the owner approves every one.
Agent proposed: Ask the owner
Agent
Only the owner knows whether the box will ship and whether the buyer should keep the first charge, so this needs confirmation before any money moves.
Policy said: needs the owner's approval
Policy gate
  • The agent asked for a human decision.