title: Stripe : Error: Received unknown parameter: bank_account[bank_name]
body: <p>I have been trying to add a <code>bank_name</code> to my Stripe Connect user's external account, but I keep getting an error as if I am misreading the documentation on the function. </p>
  
  <p><code>Error: Received unknown parameter: bank_account[bank_name]</code></p>
  
  <p>The documentation shows that I should be able to access the <code>bank_name</code> from the <code>bank_account</code> object, but my error is narrowed down to it being null. My <code>console.log(newValue.externalAccount.bankName)</code> returns the bankName as expected that was entered, so it isn't null going in. Any idea why I am getting this error?</p>
  
  <p><strong>Firebase Function:</strong></p>
  
  <pre><code>exports.createStripeAccount = functions.firestore
    .document("users/{userId}")
    .onUpdate(async (change, context) =&gt; {
      const newValue = change.after.data();
      const previousValue = change.before.data();
      if (newValue.state === "technician" &amp;&amp; previousValue.state === "client") {
        try {
          const account_add_response = await stripe.accounts.create(
            {
              type: "custom",
              country: "US",
              requested_capabilities: ["platform_payments"],
              email: newValue.email,
              tos_acceptance: newValue.stripeTosAcceptance,
              business_type: "individual",
              business_profile: {
                url: newValue.socialLinks.linkedin
              },
              individual: {
                first_name: newValue.firstName,
                last_name: newValue.lastName,
                gender: newValue.gender,
                email: newValue.email,
                phone: newValue.phone,
                address: {
                  line1: newValue.address.line1,
                  line2: newValue.address.line2,
                  city: newValue.address.city,
                  state: newValue.address.state,
                  postal_code: newValue.address.zip,
                  country: newValue.address.country
                },
                ssn_last_4: newValue.technician.ssnLast4,
                dob: {
                  day: newValue.dob.day,
                  month: newValue.dob.month,
                  year: newValue.dob.year
                }
              }
            },
            async function(error, account) {
              if (error) {
                return console.error(error);
              } else {
                console.log(
                  "Writing account.id " + account.id + " to user DB..."
                );
                console.log("newValue.externalAccount.bankName: " + newValue.externalAccount.bankName)
                const bank_add_response = await stripe.accounts.createExternalAccount(
                  account.id,
                  {
                    external_account: {
                      object: "bank_account",
                      country: "US",
                      currency: "USD",
                      account_holder_name:
                        newValue.externalAccount.accountHolderName, // Have user input manually, might be different than user's name
                      account_holder_type: "individual",
                      bank_name: newValue.externalAccount.bankName,
                      routing_number: newValue.externalAccount.routingNumber,
                      account_number: newValue.externalAccount.accountNumber
                    }
                  },
                  function(error, bank_account) {
                    if (error) {
                      return console.error(error);
                    } else {
                      console.log(
                        "Writing bank_account.id " +
                          bank_account.id +
                          " to user DB..."
                      );
                      return admin
                        .firestore()
                        .collection("users")
                        .doc(context.params.userId)
                        .set(
                          {
                            connectId: account.id,
                            externalAccount: {
                              bankAccountId: bank_account.id,
                              bankName: bank_account.bank_name,
                              last4: bank_account.last4,
                            }
                          },
                          { merge: true }
                        );
                    }
                  }
                );
              }
            }
          );
        } catch (error) {
          console.log(error);
          await change.ref.set(
            { error: userFacingMessage(error) },
            { merge: true }
          );
          return reportError(error, { user: context.params.userId });
        }
      }
    });
  </code></pre>