# Problem ## `StripeAccountController`: - `PUT` with a `verification_document_id` - Pattern match against the `verification_document_id` in `handle_update` - `handle_update` will call `StripeAccountService.add_verification_document()` ## `StripeAccountService.add_verification_document()` ### `with` - Pattern match against the `verification_document_id` and the Stripe Account information - Use `verification_document_id` to fetch the file with `Stripe.FileUpload.retrieve` (to ensure proper secure data coming from the client) - Call `Stripe.Account.update` with `verification[document]` set to the `id` from `%Stripe.FileUpload{}` ### `do` Inside a transaction: - Use the returned `%Stripe.FileUpload{}` to insert a `%CodeCorps.FileUpload{}` - Use the returned `%Stripe.Account{}` to update our `%CodeCorps.StripeAccount{}`