recordPaymentWithShelby starts recording. PAY_BILL_SUCCESS or
PAY_BILL_FAILURE completes it only while loading is true; the local
failure action always stores its error. Contact clearing, recording reset,
a new lookup, and sessionReset restore the initial state.
Tracks Shelby payment recording as
{ loading: boolean, recorded: boolean, error?: string }.