             cb    : one_result('stripe_customer_id', opts.cb)
 
     ###
-    Stripe integration/sync:
+    Stripe Synchronization
+
     Get all info about the given account from stripe and put it in our own local database.
-    Call it with force right after the user does some action that will change their
-    account info status.  This will never touch stripe if the user doesn't have
-    a stripe_customer_id.   TODO: This should be replaced by webhooks...
+    Also call it right after the user does some action that will change their account info status.
+    Additionally, it checks the email address Stripe knows about the customer and updates it if it changes.
+
+    This will never touch stripe if the user doesn't have a stripe_customer_id.
+
+    TODO: This should be replaced by webhooks...
     ###
     stripe_update_customer: (opts) =>
         opts = defaults opts,

        )

    # Change the email address, unless the email_address we're changing to is already taken.
    change_email_address: (opts={}) =>
        opts = defaults opts,
            account_id    : required
            email_address : required
            cb            : required
        if not @_validate_opts(opts) then return
        @account_exists
            email_address : opts.email_address
            cb            : (err, exists) =>

            customer_id : undefined  # will be looked up if not known
            cb          : undefined
        customer = undefined
        email_address = undefined

        dbg = @_dbg("stripe_update_customer(account_id='#{opts.account_id}')")
        async.series([
            (cb) =>
