4 refunds in 24h, 50% of captures

Status
Needs you
At risk
$80.00
Detected (detector clock)
2026-11-23 17:06

Diagnosis

AI agent (anthropic/claude-haiku-5.5)

Two espresso sampler orders (each $80.00, paid 3 seconds and 3 minutes apart on 27 Oct) were each refunded $40.00 in two separate $20.00 refunds issued within seconds of each other, with the same note "Sorry about the crushed bag." That is $80.00 returned in total. Both orders show as not shipped, and the refunds went out before any shipment, so the refunds look unusual rather than like normal returns. The money is already back with the buyers and PayPal does not let us reverse a completed refund, so nothing more is lost unless more refunds follow. Please check whether these refunds were intended, and whether the refund button or a staff member issued them by mistake.

Decisions

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

Ask the owner

Waiting for you

Agent proposed

Whether these refunds were deliberate or a duplicate or fraud pattern is something only the owner knows, and refunds cannot be reversed by the tools available.

Note: Four refunds totalling $80.00 went out on 27 Oct for two unshipped espresso sampler orders (cart-84908 and cart-40759). Each order was refunded $40 in two $20 refunds seconds apart, all noted 'Sorry about the crushed bag', and the refunds went out before

Policy said

Needs approval
  • The agent asked for a human decision.

PayPal returned

No PayPal call for this action.

Evidence

4 refunds totalling $80.00 against 8 captures in the 24 hours up to 2026-10-27T17:06:42.000Z. Threshold: 30% with at least 3 refunds.

refunds
4
captures
8
refund rate
0.5
refunded total
$80.00
window end
2026-10-27T17:06:42.000Z
refund5AK95525WH343112Rrefund5XA57134M1951843Brefund4KS79453UN7234100refund05X192964S9961805

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

Audit trail

Detected, diagnosed, decided, executed. Live.

Detected: 4 refunds in 24h, 50% of captures
Detector
4 refunds totalling $80.00 against 8 captures in the 24 hours up to 2026-10-27T17:06:42.000Z. Threshold: 30% with at least 3 refunds.
Agent started triage
Agent
Agent read get_refund
Agent
get_refundvia PayPal Agent Toolkitok
args { "refund_id": "5AK95525WH343112R" }
Result
{"id":"5AK95525WH343112R","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-84908","status":"COMPLETED","create_time":"2026-10-27T10:03:39-07:00","update_time":"2026-10-27T10:03:39-07:00","payer":{"email_address":"sb-djk8i53501233@business.example.com","merchant_id":"D8M8MT98DPNNG"},"links":[{"href":"https://api.sandbox.paypal.com/v2/payments/refunds/5AK95525WH343112R","rel":"self","method":"GET"},{"href":"https://api.sandbox.paypal.com/v2/payments/captures/67B24395JS343504U","rel":"up","method":"GET"}]}
Agent read get_refund
Agent
get_refundvia PayPal Agent Toolkitok
args { "refund_id": "5XA57134M1951843B" }
Result
{"id":"5XA57134M1951843B","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-84908","status":"COMPLETED","create_time":"2026-10-27T10:03:41-07:00","update_time":"2026-10-27T10:03:41-07:00","payer":{"email_address":"sb-djk8i53501233@business.example.com","merchant_id":"D8M8MT98DPNNG"},"links":[{"href":"https://api.sandbox.paypal.com/v2/payments/refunds/5XA57134M1951843B","rel":"self","method":"GET"},{"href":"https://api.sandbox.paypal.com/v2/payments/captures/67B24395JS343504U","rel":"up","method":"GET"}]}
Agent read get_refund
Agent
get_refundvia PayPal Agent Toolkitok
args { "refund_id": "4KS79453UN7234100" }
Result
{"id":"4KS79453UN7234100","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-40759","status":"COMPLETED","create_time":"2026-10-27T10:06:39-07:00","update_time":"2026-10-27T10:06:39-07:00","payer":{"email_address":"sb-djk8i53501233@business.example.com","merchant_id":"D8M8MT98DPNNG"},"links":[{"href":"https://api.sandbox.paypal.com/v2/payments/refunds/4KS79453UN7234100","rel":"self","method":"GET"},{"href":"https://api.sandbox.paypal.com/v2/payments/captures/8KD70378CW893191L","rel":"up","method":"GET"}]}
Agent read get_refund
Agent
get_refundvia PayPal Agent Toolkitok
args { "refund_id": "05X192964S9961805" }
Result
{"id":"05X192964S9961805","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-40759","status":"COMPLETED","create_time":"2026-10-27T10:06:42-07:00","update_time":"2026-10-27T10:06:42-07:00","payer":{"email_address":"sb-djk8i53501233@business.example.com","merchant_id":"D8M8MT98DPNNG"},"links":[{"href":"https://api.sandbox.paypal.com/v2/payments/refunds/05X192964S9961805","rel":"self","method":"GET"},{"href":"https://api.sandbox.paypal.com/v2/payments/captures/8KD70378CW893191L","rel":"up","method":"GET"}]}
Agent is thinking
Agent
The four refunds are paired: two $20 refunds on each of two captures, with the same note and seconds apart. I'll check the captures and our ledger to see whether these are duplicates.
Agent read get_capture
Agent
get_capturevia Nightshift REST clientok
args { "capture_id": "67B24395JS343504U" }
Result
{"id":"67B24395JS343504U","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-84908","status":"PARTIALLY_REFUNDED","supplementary_data":{"related_ids":{"order_id":"6GL03991ND044991H"}},"payee":{"email_address":"sb-djk8i53501233@business.example.com","merchant_id":"D8M8MT98DPNNG"},"create_time":"2026-10-27T17:03:38Z","update_time":"2026-10-27T17:03:41Z","links":[{"href":"https://api.sandbox.paypal.com/v2/payments/captures/67B24395JS343504U","rel":"self","method":"GET"},{"href":"https://api.sandbox.paypal.com/v2/payments/captures/67B24395JS343504U/refund","rel":"refund","method":"POST"},{"href":"https://api.sandbox.paypal.com/v2/checkout/orders/6GL03991ND044991H","rel":"up","method":"GET"}]}
Agent read get_capture
Agent
get_capturevia Nightshift REST clientok
args { "capture_id": "8KD70378CW893191L" }
Result
{"id":"8KD70378CW893191L","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-40759","status":"PARTIALLY_REFUNDED","supplementary_data":{"related_ids":{"order_id":"0X918673CW044800D"}},"payee":{"email_address":"sb-djk8i53501233@business.example.com","merchant_id":"D8M8MT98DPNNG"},"create_time":"2026-10-27T17:06:38Z","update_time":"2026-10-27T17:06:42Z","links":[{"href":"https://api.sandbox.paypal.com/v2/payments/captures/8KD70378CW893191L","rel":"self","method":"GET"},{"href":"https://api.sandbox.paypal.com/v2/payments/captures/8KD70378CW893191L/refund","rel":"refund","method":"POST"},{"href":"https://api.sandbox.paypal.com/v2/checkout/orders/0X918673CW044800D","rel":"up","method":"GET"}]}
Agent read ledger_lookup
Agent
ledger_lookupNightshift ledgererror
args { "order_id": "cart-84908" }
Result
{"error":"Order cart-84908 is not in the ledger"}
Agent read ledger_lookup
Agent
ledger_lookupNightshift ledgererror
args { "order_id": "cart-40759" }
Result
{"error":"Order cart-40759 is not in the ledger"}
Agent is thinking
Agent
The ledger lookup failed because I used the cart names instead of PayPal order ids. I'll retry with the order ids from the captures.
Agent read ledger_lookup
Agent
ledger_lookupNightshift ledgerok
args { "order_id": "6GL03991ND044991H" }
Result
{"order":{"id":"6GL03991ND044991H","intent":"CAPTURE","status":"COMPLETED","amountCents":8000,"currency":"USD","payer":"night-owl-mvqxpgoo350@example.com","cartRef":"cart-84908","description":"Espresso sampler, 4 x 250g","fulfillment":"unfulfilled","shippedAt":null,"createdAt":"2026-10-27T17:03:38.000Z","updatedAt":"2026-10-27T17:06:50.181Z","source":"scenario","scenario":"lab_mvqxnfgj"},"buyer_note_untrusted":null,"authorizations":[],"captures":[{"id":"67B24395JS343504U","orderId":"6GL03991ND044991H","authorizationId":null,"status":"PARTIALLY_REFUNDED","statusReason":null,"amountCents":8000,"currency":"USD","finalCapture":true,"createdAt":"2026-10-27T17:03:38.000Z","updatedAt":"2026-10-27T17:06:50.184Z"}],"refunds":[{"id":"5AK95525WH343112R","captureId":"67B24395JS343504U","orderId":"6GL03991ND044991H","status":"COMPLETED","amountCents":2000,"currency":"USD","createdAt":"2026-10-27T17:03:39.000Z","updatedAt":"2026-10-27T17:06:50.187Z"},{"id":"5XA57134M1951843B","captureId":"67B24395JS343504U","orderId":"6GL03991ND044991H","status":"COMPLETED","amountCents":2000,"currency":"USD","createdAt":"2026-10-27T17:03:41.000Z","updatedAt":"2026-10-27T17:06:50.190Z"}],"failed_capture_attempts":[]}
Agent read ledger_lookup
Agent
ledger_lookupNightshift ledgerok
args { "order_id": "0X918673CW044800D" }
Result
{"order":{"id":"0X918673CW044800D","intent":"CAPTURE","status":"COMPLETED","amountCents":8000,"currency":"USD","payer":"night-owl-mvqxter5839@example.com","cartRef":"cart-40759","description":"Espresso sampler, 4 x 250g","fulfillment":"unfulfilled","shippedAt":null,"createdAt":"2026-10-27T17:06:38.000Z","updatedAt":"2026-10-27T17:06:54.242Z","source":"webhook"},"buyer_note_untrusted":null,"authorizations":[],"captures":[{"id":"8KD70378CW893191L","orderId":"0X918673CW044800D","authorizationId":null,"status":"PARTIALLY_REFUNDED","statusReason":null,"amountCents":8000,"currency":"USD","finalCapture":true,"createdAt":"2026-10-27T17:06:38.000Z","updatedAt":"2026-10-27T17:06:54.245Z"}],"refunds":[{"id":"4KS79453UN7234100","captureId":"8KD70378CW893191L","orderId":"0X918673CW044800D","status":"COMPLETED","amountCents":2000,"currency":"USD","createdAt":"2026-10-27T17:06:39.000Z","updatedAt":"2026-10-27T17:06:54.248Z"},{"id":"05X192964S9961805","captureId":"8KD70378CW893191L","orderId":"0X918673CW044800D","status":"COMPLETED","amountCents":2000,"currency":"USD","createdAt":"2026-10-27T17:06:42.000Z","updatedAt":"2026-10-27T17:06:54.251Z"}],"failed_capture_attempts":[]}
Agent diagnosis
Agent
Two espresso sampler orders (each $80.00, paid 3 seconds and 3 minutes apart on 27 Oct) were each refunded $40.00 in two separate $20.00 refunds issued within seconds of each other, with the same note "Sorry about the crushed bag." That is $80.00 returned in total. Both orders show as not shipped, and the refunds went out before any shipment, so the refunds look unusual rather than like normal returns. The money is already back with the buyers and PayPal does not let us reverse a completed refund, so nothing more is lost unless more refunds follow. Please check whether these refunds were intended, and whether the refund button or a staff member issued them by mistake.
Agent proposed: Ask the owner
Agent
Whether these refunds were deliberate or a duplicate or fraud pattern is something only the owner knows, and refunds cannot be reversed by the tools available.
Policy said: needs the owner's approval
Policy gate
  • The agent asked for a human decision.