Updating Accounts and Services Agreement Acceptance

    Learn how to update the Connect accounts you manage through the API and how to best handle acceptance of the Stripe Connected Account Agreement. If you need help after reading this, search our documentation or check out answers to common questions. You can even chat live with other developers in #stripe on freenode.

    Working with Express and Custom accounts provides platforms with a lot of power: almost every Stripe account property is available via the API.

    Platforms need to update connected Express and Custom accounts to:

    • Indicate acceptance of the Stripe Connected Account Agreement (by Custom accounts)
    • Handle identity verification (of Custom accounts)
    • Manage the connected business’s information, such as the name, logo, and URL
    • Set some charge behaviors
    • Establish payout handling

    All the above can be done through an update account call, demonstrated in the next code example, although identity verification and payouts are more complex.

    curl https://api.stripe.com/v1/accounts/{CONNECTED_STRIPE_ACCOUNT_ID} \
       -u {PLATFORM_SECRET_KEY}: \
       -d metadata[internal_id]=42
    
    # Set your secret key: remember to change this to your live secret key in production
    # See your keys here: https://dashboard.stripe.com/account/apikeys
    Stripe.api_key = "sk_test_BQokikJOvBiI2HlWgH4olfQ2"
    
    acct = Stripe::Account.retrieve({CONNECTED_STRIPE_ACCOUNT_ID})
    acct.metadata = {"internal_id" => 42}
    acct.save
    
    # Set your secret key: remember to change this to your live secret key in production
    # See your keys here: https://dashboard.stripe.com/account/apikeys
    stripe.api_key = "sk_test_BQokikJOvBiI2HlWgH4olfQ2"
    
    acct = stripe.Account.retrieve({CONNECTED_STRIPE_ACCOUNT_ID})
    acct.metadata={"internal_id": 42}
    acct.save()
    
    // Set your secret key: remember to change this to your live secret key in production
    // See your keys here: https://dashboard.stripe.com/account/apikeys
    \Stripe\Stripe::setApiKey("sk_test_BQokikJOvBiI2HlWgH4olfQ2");
    
    $acct = \Stripe\Account::retrieve({CONNECTED_STRIPE_ACCOUNT_ID});
    $acct->metadata = array("internal_id", 42);
    $acct->save();
    
    // Set your secret key: remember to change this to your live secret key in production
    // See your keys here: https://dashboard.stripe.com/account/apikeys
    Stripe.apiKey = "sk_test_BQokikJOvBiI2HlWgH4olfQ2";
    
    Account acct = Account.retrieve({CONNECTED_STRIPE_ACCOUNT_ID});
    
    Map<String, String> metadata = new HashMap<String, String>();
    metadata.put("internal_id", 42);
    
    Map<String, Object> params = new HashMap<String, Object>();
    params.put("metadata", metadata);
    acct.update(params);
    
    // Set your secret key: remember to change this to your live secret key in production
    // See your keys here: https://dashboard.stripe.com/account/apikeys
    var stripe = require("stripe")("sk_test_BQokikJOvBiI2HlWgH4olfQ2");
    
    stripe.accounts.update(
      {CONNECTED_STRIPE_ACCOUNT_ID},
      metadata: {internal_id: 42},
    }).then(function(acct) {
      // asynchronously called
    });
    
    // Set your secret key: remember to change this to your live secret key in production
    // See your keys here: https://dashboard.stripe.com/account/apikeys
    stripe.Key = "sk_test_BQokikJOvBiI2HlWgH4olfQ2"
    
    params := &stripe.AccountParams{}
    params.AddMeta("internal_id", 42)
    acct, err := account.Update({CONNECTED_STRIPE_ACCOUNT_ID}, params)
    

    Viewing an account’s Dashboard

    Platforms can update some account settings without using the API by viewing the connected account’s Stripe Dashboard:

    1. Go to the Connected accounts section of your Dashboard.
    2. Click the ID of the connected account to use to see more details about that account.
    3. On the resulting page, click View dashboard as.

    This allows you—or your support team—to see the status of payouts and update some of the connected account’s information if needed. The particulars of what information can be viewed and changed depends upon the type of connected account.

    Stripe services agreement acceptance

    Stripe requires that all Custom accounts accept the Stripe Connected Account Agreement. It is your responsibility to ensure your users agree to it before accepting payments through Stripe on your platform.

    Referencing the agreement

    Your users must minimally be presented with a link to the agreement and expressly consent to the agreement prior to using Stripe, such as at the point of activating their account. For example:

    By registering your account, you agree to our Services Agreement and the Stripe Connected Account Agreement.

    Adding Stripe to your services agreement

    We also suggest you add a section to your services agreement making it clear that their acceptance of payments is provided subject to the Stripe Connected Account Agreement. One way to achieve this is by including a clear reference and link to the Stripe Connected Account Agreement. For example:

    Payment processing services for [account holder term, e.g. drivers or sellers] on [platform name] are provided by Stripe and are subject to the Stripe Connected Account Agreement, which includes the Stripe Terms of Service (collectively, the “Stripe Services Agreement”). By agreeing to [this agreement / these terms / etc.] or continuing to operate as a [account holder term] on [platform name], you agree to be bound by the Stripe Services Agreement, as the same may be modified by Stripe from time to time. As a condition of [platform name] enabling payment processing services through Stripe, you agree to provide [platform name] accurate and complete information about you and your business, and you authorize [platform name] to share it and transaction information related to your use of the payment processing services provided by Stripe.

    Les services de paiement pour les [terme désignant les détenteurs de compte: marchands, chauffeurs, porteurs de projet…] officiant sur [nom de la plateforme] sont fournis par Stripe et soumis à l’Accord sur les comptes Stripe Connected (Stripe Connected Account Agreement), qui inclut les Modalités de service de Stripe (l’ensemble étant appelé les “Conditions Générales d’Utilisation Stripe” - “Stripe Services Agreement”.) En agréant aux présentes [Conditions Générales d’Utilisation / de Vente] ou en continuant à opérer en tant que [terme désignant les détenteurs de compte] officiant sur [nom de la plateforme], vous acceptez d’être lié aux Conditions Générales d’Utilisation Stripe, celles-ci pouvant occasionnellement faire l’objet de modifications de la part de Stripe. Du fait que [nom de la plateforme] permette d’effectuer les paiements via Stripe, vous acceptez de fournir à [nom de la plateforme] des informations précises et complètes sur vous et votre activité, et autorisez [nom de la plateforme] à partager ces informations ainsi que celles concernant les transactions effectuées via la solution de paiement fournie par Stripe.

    Los servicios de procesamiento de pago para [término de titular de cuenta, p.ej. conductor o vendedor] en [nombre de plataforma] son proporcionados por Stripe y están sujetos al Acuerdo de cuentas conectadas de Stripe (Stripe Connected Account Agreement), que incluye los Términos de servicio de Stripe (Stripe Terms of Service), en conjunto, el “Acuerdo de servicio de Stripe” (“Stripe Services Agreement”). Al aceptar [este acuerdo / estos términos / etc.] o seguir operando como [término de titular de cuenta] en [nombre de plataforma], usted acepta cumplir las obligaciones del Acuerdo de servicios de Stripe, que puede ser modificado por Stripe de tanto en tanto. Para que [nombre de plataforma] pueda ofrecer servicios de procesamiento de pagos a través de Stripe, usted acepta proporcionar a [nombre de plataforma] información completa y exacta sobre usted y su negocio, y autoriza a [nombre de plataforma] a compartir dicha información y los datos de las transacciones relacionadas con el uso de los servicios de procesamiento de pago proporcionados por Stripe.

    I servizi di elaborazione dei pagamenti per [termine definito dal proprietario dell’account, come “conducenti”, “venditori”, ecc.] su [nome piattaforma] sono forniti da Stripe e sono soggetti alle condizioni dell’Accordo relativo agli account connessi Stripe (Stripe Connected Account Agreement), che include i Termini del servizio Stripe (Stripe Terms of Service), collettivamente detti “Accordo sui servizi Stripe” (“Stripe Services Agreement”). Accettando [questo accordo, i suddetti termini, ecc.] o continuando a operare in qualità di [termine definito dal proprietario dell’account] su [nome piattaforma], l’utente accetta di essere vincolato all’Accordo sui servizi Stripe e alle eventuali modifiche apportate da Stripe di tanto in tanto. Affinché [nome piattaforma] possa offrire detti servizi di elaborazione dei pagamenti tramite Stripe, l’utente accetta di fornire a [nome piattaforma] informazioni accurate e complete sull’utente e sulla sua azienda, e autorizza [nome piattaforma] a condividere tali informazioni e i dati delle transazioni correlate con l’utilizzo dei servizi di elaborazione dei pagamenti forniti da Stripe.

    Os serviços de processamento de pagamento de [account holder term, e.g. drivers or sellers] em [platform name] são fornecidos pela Stripe e estão sujeitos ao Stripe Connected Account Agreement (Contrato de Conta Vinculada da Stripe), que inclui os Stripe Terms of Service(Termos de Serviço da Stripe, conjuntamente, “Stripe Services Agreement”, Contrato de Serviços da Stripe). Ao concordar com [this agreement / these terms / etc.] ou continuar a operar como [account holder term] em [platform name], você aceita o Contrato de Serviços da Stripe, que pode ser alterado pela Stripe periodicamente. Como condição da utilização de serviços de processamento de pagamento pela [platform name] por meio da Stripe, você concorda em fornecer a [platform name] informações precisas e completas sobre você e sua empresa e autoriza [platform name] a compartilhá-las, além das informações de transações relacionadas ao seu uso dos serviços de processamento de pagamento fornecidos pela Stripe.

    Zahlungsdienstleistungen für [Beschreibung des Account-Inhabers, z.B. Reinigungskraft oder Verkäufer] auf [Name der Plattform] werden von Stripe erbracht und unterliegen der Stripe Connected Account Vereinbarung (Stripe Connected Account Agreement), welche die Stripe Nutzungsbedingungen (Stripe Terms of Service) beinhaltet (zusammengefasst unter dem Sammelbegriff “Stripe Services Agreement”). Durch die Zustimmung zu den vorliegenden [Nutzungsbedingungen, Bedingungen, …] oder das weitere agieren als [Beschreibung des Account-Inhaber, z.B. Reinigungskraft oder Verkäufer] auf [Name der Plattform], akzeptieren Sie die Bedingungen der Vereinbarung “Stripe Services Agreement”, welche von Stripe von Zeit zu Zeit angepasst werden darf. Als Voraussetzung, dass [Name der Plattform] die Zahlungsdienstleistungen von Stripe in Anspruch nehmen kann, stimmen Sie zu, vollständige und komplette Informationen über sich und ihr Unternehmen für [Name der Plattform] bereitzustellen, und sie autorisieren [Name der Plattform], diese Informationen und Transaktionsinformationen, die im Zusammenhang mit ihrer Nutzung der von Stripe offerierten Zahlungsdienstleistungen stehen, weiterzugeben.

    [プラットフォームの名称]における[アカウント所有者を示す文言(例えばドライバー又は売り手)]向けの支払処理サービスは、Stripeが提供し、Stripe Connectアカウント契約Stripe利用規約を含み、総称して「Stripeサービス契約」といいます。)に従うものとします。[本契約、本条件等]への同意又は[プラットフォームの名称]において[アカウント所有者を示す文言]としての取引の継続により、お客様はStripeサービス契約(随時Stripeにより修正されることがあり、その場合には修正されたものを含みます。)に拘束されることに同意するものとします。 Stripeを通じた支払処理サービスを[プラットフォームの名称]ができるようにするための条件として、お客様は、[プラットフォームの名称]に対してお客様及びお客様の事業に関する正確かつ完全な情報を提供することに同意し、[プラットフォームの名称]が当該情報及びStripeが提供する支払処理サービスのお客様による使用に関連する取引情報を共有することを認めるものとします。

    Indicating acceptance on their Stripe account

    To indicate to Stripe that a connected account accepted the Stripe Connected Account Agreement, perform an update account call, providing the acceptance date (as a timestamp) and user’s IP address:

    curl https://api.stripe.com/v1/accounts/{CONNECTED_STRIPE_ACCOUNT_ID} \
       -u sk_test_BQokikJOvBiI2HlWgH4olfQ2: \
       -d tos_acceptance[date]=1498361187 \
       -d tos_acceptance[ip]="8.8.8.8"
    
    # Set your secret key: remember to change this to your live secret key in production
    # See your keys here: https://dashboard.stripe.com/account/apikeys
    Stripe.api_key = "sk_test_BQokikJOvBiI2HlWgH4olfQ2"
    
    acct = Stripe::Account.retrieve({CONNECTED_STRIPE_ACCOUNT_ID})
    acct.tos_acceptance.date = Time.now.to_i
    acct.tos_acceptance.ip = request.remote_ip # Assumes you're not using a proxy
    acct.save
    
    # Set your secret key: remember to change this to your live secret key in production
    # See your keys here: https://dashboard.stripe.com/account/apikeys
    stripe.api_key = "sk_test_BQokikJOvBiI2HlWgH4olfQ2"
    
    import time
    acct = stripe.Account.retrieve({CONNECTED_STRIPE_ACCOUNT_ID})
    acct.tos_acceptance.date = int(time.time())
    acct.tos_acceptance.ip = '8.8.8.8' # Depends on what web framework you're using
    acct.save()
    
    // Set your secret key: remember to change this to your live secret key in production
    // See your keys here: https://dashboard.stripe.com/account/apikeys
    \Stripe\Stripe::setApiKey("sk_test_BQokikJOvBiI2HlWgH4olfQ2");
    
    $acct = \Stripe\Account::retrieve({CONNECTED_STRIPE_ACCOUNT_ID});
    $acct->tos_acceptance->date = time();
    // Assumes you're not using a proxy
    $acct->tos_acceptance->ip = $_SERVER['REMOTE_ADDR'];
    $acct->save();
    
    Account acct = Account.retrieve({CONNECTED_STRIPE_ACCOUNT_ID});
    
    Map<String, Object> tosAcceptanceParams = new HashMap<String, Object>();
    tosAcceptanceParams.put("date", (long) System.currentTimeMillis() / 1000L);
    tosAcceptanceParams.put("ip", request.getRemoteAddr()); // Assumes you're not using a proxy
    
    Map<String, Object> params = new HashMap<String, Object>();
    params.put("tos_acceptance", tosAcceptanceParams);
    
    acct.update(accountParams);
    
    // Set your secret key: remember to change this to your live secret key in production
    // See your keys here: https://dashboard.stripe.com/account/apikeys
    var stripe = require("stripe")("sk_test_BQokikJOvBiI2HlWgH4olfQ2");
    
    stripe.accounts.update(
      {CONNECTED_STRIPE_ACCOUNT_ID},
      {
        tos_acceptance: {
          date: Math.floor(Date.now() / 1000),
          ip: request.connection.remoteAddress // Assumes you're not using a proxy
        }
      }
    );
    
    // Set your secret key: remember to change this to your live secret key in production
    // See your keys here: https://dashboard.stripe.com/account/apikeys
    stripe.Key = "sk_test_BQokikJOvBiI2HlWgH4olfQ2"
    
    params := &stripe.AccountParams{
      TOSAcceptance: &stripe.TOSAcceptanceParams{
        Date: time.Now(),
        IP: http.Request.RemoteAddr, // Assumes you're not using a proxy
      }
    }
    acct, err := account.Update({CONNECTED_STRIPE_ACCOUNT_ID}, params)
    

    Next steps

    Now that you know how to update a connected account, you may want to read: