$20.00 refunded twice on the same capture, 2s apart

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

Diagnosis

AI agent (anthropic/claude-haiku-5.5)

The $20.00 refund on the espresso order was sent twice, two seconds apart, so the buyer has received $40.00 back on an $80.00 payment. Both refunds show as completed in PayPal, so the extra $20.00 has already left your account and Nightshift cannot reverse it. Nothing else will be charged again, but the order shows as not shipped, so you should decide what to do about the remaining $40.00 and whether to ask the buyer to return the extra $20.00.

Decisions

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

Ask the owner

Waiting for you

Agent proposed

The duplicate refund has already been paid out and reversing it or refunding again needs the owner's decision about the buyer and the order.

Note: Refund 5S6700976C744830E ($20.00) duplicated refund 4MY1415300692472S for the same capture 0WJ19842VW508425P, so the buyer has been refunded $40.00 of $80.00. Do you want to ask the buyer to return the extra $20.00, or absorb it? Also, the order is marked

Policy said

Needs approval
  • The agent asked for a human decision.

PayPal returned

No PayPal call for this action.

Evidence

Refunds 4MY1415300692472S and 5S6700976C744830E both returned $20.00 from capture 0WJ19842VW508425P 2 seconds apart. That pattern usually means a retry without an idempotency key, not two decisions.

capture id
0WJ19842VW508425P
order id
71G06685W4966362K
first refund id
4MY1415300692472S
first refund at
2026-10-27T16:59:07.000Z
duplicate refund id
5S6700976C744830E
duplicate refund at
2026-10-27T16:59:09.000Z
amount
$20.00
seconds apart
2
order71G06685W4966362Kcapture0WJ19842VW508425Prefund4MY1415300692472Srefund5S6700976C744830E

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

Audit trail

Detected, diagnosed, decided, executed. Live.

Detected: $20.00 refunded twice on the same capture, 2s apart
Detector
Refunds 4MY1415300692472S and 5S6700976C744830E both returned $20.00 from capture 0WJ19842VW508425P 2 seconds apart. That pattern usually means a retry without an idempotency key, not two decisions.
Agent started triage
Agent
Agent read get_refund
Agent
get_refundvia PayPal Agent Toolkitok
args { "refund_id": "5S6700976C744830E" }
Result
{"id":"5S6700976C744830E","amount":{"currency_code":"USD","value":"20.00"},"note_to_payer":"Sorry about the crushed bag","seller_payable_breakdown":{"gross_amount":{"currency_code":"USD","value":"20.00"},"paypal_fee":{"currency_code":"USD","value":"0.00"},"net_amount":{"currency_code":"USD","value":"20.00"},"total_refunded_amount":{"currency_code":"USD","value":"40.00"}},"custom_id":"cart-28281","status":"COMPLETED","create_time":"2026-10-27T09:59:09-07:00","update_time":"2026-10-27T09:59:09-07:00","payer":{"email_address":"sb-djk8i53501233@business.example.com","merchant_id":"D8M8MT98DPNNG"},"links":[{"href":"https://api.sandbox.paypal.com/v2/payments/refunds/5S6700976C744830E","rel":"self","method":"GET"},{"href":"https://api.sandbox.paypal.com/v2/payments/captures/0WJ19842VW508425P","rel":"up","method":"GET"}]}
Agent read get_refund
Agent
get_refundvia PayPal Agent Toolkitok
args { "refund_id": "4MY1415300692472S" }
Result
{"id":"4MY1415300692472S","amount":{"currency_code":"USD","value":"20.00"},"note_to_payer":"Sorry about the crushed bag","seller_payable_breakdown":{"gross_amount":{"currency_code":"USD","value":"20.00"},"paypal_fee":{"currency_code":"USD","value":"0.00"},"net_amount":{"currency_code":"USD","value":"20.00"},"total_refunded_amount":{"currency_code":"USD","value":"40.00"}},"custom_id":"cart-28281","status":"COMPLETED","create_time":"2026-10-27T09:59:07-07:00","update_time":"2026-10-27T09:59:07-07:00","payer":{"email_address":"sb-djk8i53501233@business.example.com","merchant_id":"D8M8MT98DPNNG"},"links":[{"href":"https://api.sandbox.paypal.com/v2/payments/refunds/4MY1415300692472S","rel":"self","method":"GET"},{"href":"https://api.sandbox.paypal.com/v2/payments/captures/0WJ19842VW508425P","rel":"up","method":"GET"}]}
Agent read get_capture
Agent
get_capturevia Nightshift REST clientok
args { "capture_id": "0WJ19842VW508425P" }
Result
{"id":"0WJ19842VW508425P","amount":{"currency_code":"USD","value":"80.00"},"final_capture":true,"seller_protection":{"status":"NOT_ELIGIBLE"},"seller_receivable_breakdown":{"gross_amount":{"currency_code":"USD","value":"80.00"},"paypal_fee":{"currency_code":"USD","value":"3.42"},"net_amount":{"currency_code":"USD","value":"76.58"}},"custom_id":"cart-28281","status":"PARTIALLY_REFUNDED","supplementary_data":{"related_ids":{"order_id":"71G06685W4966362K"}},"payee":{"email_address":"sb-djk8i53501233@business.example.com","merchant_id":"D8M8MT98DPNNG"},"create_time":"2026-10-27T16:59:05Z","update_time":"2026-10-27T16:59:09Z","links":[{"href":"https://api.sandbox.paypal.com/v2/payments/captures/0WJ19842VW508425P","rel":"self","method":"GET"},{"href":"https://api.sandbox.paypal.com/v2/payments/captures/0WJ19842VW508425P/refund","rel":"refund","method":"POST"},{"href":"https://api.sandbox.paypal.com/v2/checkout/orders/71G06685W4966362K","rel":"up","method":"GET"}]}
Agent read ledger_lookup
Agent
ledger_lookupNightshift ledgerok
args { "order_id": "71G06685W4966362K" }
Result
{"order":{"id":"71G06685W4966362K","intent":"CAPTURE","status":"COMPLETED","amountCents":8000,"currency":"USD","payer":"night-owl-mvqxjoly502@example.com","cartRef":"cart-28281","description":"Espresso sampler, 4 x 250g","fulfillment":"unfulfilled","shippedAt":null,"createdAt":"2026-10-27T16:59:05.000Z","updatedAt":"2026-10-27T18:30:26.080Z","source":"sweep"},"buyer_note_untrusted":null,"authorizations":[],"captures":[{"id":"0WJ19842VW508425P","orderId":"71G06685W4966362K","authorizationId":null,"status":"PARTIALLY_REFUNDED","statusReason":null,"amountCents":8000,"currency":"USD","finalCapture":true,"createdAt":"2026-10-27T16:59:05.000Z","updatedAt":"2026-10-27T18:30:26.086Z"}],"refunds":[{"id":"4MY1415300692472S","captureId":"0WJ19842VW508425P","orderId":"71G06685W4966362K","status":"COMPLETED","amountCents":2000,"currency":"USD","createdAt":"2026-10-27T16:59:07.000Z","updatedAt":"2026-10-27T18:30:26.089Z"},{"id":"5S6700976C744830E","captureId":"0WJ19842VW508425P","orderId":"71G06685W4966362K","status":"COMPLETED","amountCents":2000,"currency":"USD","createdAt":"2026-10-27T16:59:09.000Z","updatedAt":"2026-10-27T18:30:26.092Z"}],"failed_capture_attempts":[]}
Agent diagnosis
Agent
The $20.00 refund on the espresso order was sent twice, two seconds apart, so the buyer has received $40.00 back on an $80.00 payment. Both refunds show as completed in PayPal, so the extra $20.00 has already left your account and Nightshift cannot reverse it. Nothing else will be charged again, but the order shows as not shipped, so you should decide what to do about the remaining $40.00 and whether to ask the buyer to return the extra $20.00.
Agent proposed: Ask the owner
Agent
The duplicate refund has already been paid out and reversing it or refunding again needs the owner's decision about the buyer and the order.
Policy said: needs the owner's approval
Policy gate
  • The agent asked for a human decision.