# Monitoring: 2026-09-12, 13:30 to 14:30 UTC

Dashboards: `merchant-api / refunds`, `postgres / locks`, `scheduler / jobs`. Values read from the panels at 14:35 UTC.

## Panel: POST /v1/refunds latency (service side, ms)

| Window | p50 | p95 | p99 | max |
|---|---|---|---|---|
| 13:30 to 13:40 | 390 | 620 | 880 | 1,240 |
| 13:40 to 13:50 | 402 | 640 | 910 | 1,310 |
| 13:50 to 14:00 | 388 | 615 | 870 | 1,190 |
| 14:00 to 14:10 | 1,840 | 31,200 | 39,100 | 39,612 |
| 14:10 to 14:20 | 380 | 610 | 910 | 1,220 |
| 14:20 to 14:30 | 395 | 625 | 890 | 1,260 |

Annotation on the panel at 14:00:00: `job ledger_daily_reconciliation started`. Annotation at 14:03:51: `job finished`.

## Panel: edge gateway, status codes for /v1/refunds

| Window | 2xx | 4xx | 504 |
|---|---|---|---|
| 13:50 to 14:00 | 204 | 3 | 0 |
| 14:00 to 14:10 | 185 | 0 | 27 |
| 14:10 to 14:20 | 196 | 2 | 0 |

Gateway upstream timeout: 30,000 ms (configured). Merchant API request timeout: 60,000 ms (configured).

## Panel: PostgreSQL lock waits (primary)

| Window | sessions waiting on lock (max) | longest wait (s) | relation |
|---|---|---|---|
| 13:50 to 14:00 | 0 | 0 | |
| 14:00 to 14:10 | 41 | 39.5 | ledger_entries |
| 14:10 to 14:20 | 0 | 0 | |

## Panel: same time window, previous 7 days (POST /v1/refunds p99, 14:00 to 14:10)

| Day | p99 (ms) | 504s |
|---|---|---|
| 2026-09-05 | 6,400 | 0 |
| 2026-09-06 | 5,900 | 0 |
| 2026-09-07 | 6,100 | 0 |
| 2026-09-08 | 6,300 | 0 |
| 2026-09-09 | 6,800 | 0 |
| 2026-09-10 | 6,500 | 0 |
| 2026-09-11 | 7,100 | 0 |

Note: a daily p99 bump at 14:00 has been visible on this panel for weeks. No alert is configured on refund latency. The 5xx alert fires at 5% of requests over 15 minutes; 27 of 212 in a 10 minute window did not trigger it.
