use a set, not a list, for seenIDs (makes the language a little nicer).
remove redundant variables.
call IsWellFormedCurrencyCode() is the same way as the ES spec.
rename some variables, as they were ambiguous.
puts Abort the update into its own section.
Make it clear that "update a PaymentRequest's details algorithm" is running in parallel and let that algorithm control disabling the UI.
Fix buggy "update a PaymentRequest's details algorithm" step "In either case". Abort the update now handles state changes to request, and then can say "Abort the algorithm." Similarly, if update succeeds, then now it's just handled directly 👌
Editorial fixes:
Preview | Diff