Task: https://hola-tech.sg.larksuite.com/record/DAEMrDOe3e486KcyNVSlCrzVgNf
Fix: A sufficient USD wallet does not guarantee available card funding. Add an optional sanitized maxTransferAmount to the existing 422 CARD_FUNDING_UNAVAILABLE response, captured at the locked reserve check and rounded down to cents. Only wallet-to-card deposits opt in, and only when required debit equals gross amount. The app displays the current maximum, handles availability below its minimum, and preserves legacy/withdrawal errors. No hardcoded 700 USD cap, new client hard cap, changed fees, ledger guards or money movement.
Verified: 1,581 frontend tests, FE typecheck/full lint; 585 related backend tests, changed-file lint and Nest build; independent code/security review APPROVE. Native iOS Maestro smoke: synthetic wallet 19,981 / request 19,970 shows 699.99 USD maximum, lower retry succeeds, 1,250.50 formatting, zero availability and legacy response fallback. 62 reported commands; local API fixture uses the real backend error mapper payload.
Existing baseline: Full backend has the same 75 failed tests as develop in admin-lending.risk.spec.ts and treasury.config.spec.ts (3,545 passed on this branch, zero new failures). Backend TypeScript remains at 89 existing diagnostics with zero added.
Limits: Funding is a changing snapshot, not a personal policy allowance or settlement guarantee. Live staging/provider balances, Android and physical devices were not verified. Deploy both BE and FE for the numeric notification; older responses keep their generic message.