What happened
The first write set a $200,000 limit instead of $2,000 because the value read back was in cents.
Check units on every money field; re-read after writing.
The technical detail
POST spend_cap takes currency units; GET returns minor units (cents).