Back to list
git-tao

stripe

by git-tao

AI content factory pipeline for generating technically verified articles using Claude Code

0🍴 0📅 Jan 20, 2026

SKILL.md


name: stripe description: Stripe payment processing platform. Use for payment integrations, checkout, subscriptions, billing, Connect platforms, webhooks, and financial APIs.

Stripe Skill

Comprehensive assistance with stripe development, generated from official documentation.

When to Use This Skill

This skill should be triggered when:

  • Working with stripe
  • Asking about stripe features or APIs
  • Implementing stripe solutions
  • Debugging stripe code
  • Learning stripe best practices

Quick Reference

Common Patterns

Pattern 1: Retrieve a person v2Ask about this sectionCopy for LLMView as MarkdownRetrieves a Person associated with an Account.Learn more about calling API v2 endpoints. Parametersaccount_idstringRequiredThe Account the Person is associated with.idstringRequiredThe ID of the Person to retrieve.ReturnsResponse attributesidstringUnique identifier for the Person.objectstring, value is "v2.core.account_person"String representing the object’s type. Objects of the same type share the same value of the object field.accountstringThe account ID which the individual belongs to.additional_addressesnullable array of objectsAdditional addresses associated with the person.Show child attributesadditional_namesnullable array of objectsAdditional names (e.g. aliases) associated with the person.Show child attributesadditional_terms_of_servicenullable objectAttestations of accepted terms of service agreements.Show child attributesaddressnullable objectThe person’s residential address.Show child attributescreatedtimestampTime at which the object was created. Represented as a RFC 3339 date & time UTC value in millisecond precision, for example: 2022-09-18T13:22:18.123Z.date_of_birthnullable objectThe person’s date of birth.Show child attributesdocumentsnullable objectDocuments that may be submitted to satisfy various informational requests.Show child attributesemailnullable stringThe person’s email address.given_namenullable stringThe person’s first name.id_numbersnullable array of objectsThe identification numbers (e.g., SSN) associated with the person.Show child attributeslegal_gendernullable enumThe person’s gender (International regulations require either “male” or “female”).Possible enum valuesfemaleFemale gender person.maleMale gender person.livemodebooleanHas the value true if the object exists in live mode or the value false if the object exists in test mode.metadatanullable mapSet of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.nationalitiesnullable array of enumsThe countries where the person is a national. Two-letter country code (ISO 3166-1 alpha-2).phonenullable stringThe person’s phone number.political_exposurenullable enumThe person’s political exposure.Possible enum valuesexistingThe person has disclosed that they do have political exposure.noneThe person has disclosed that they have no political exposure.relationshipnullable objectThe relationship that this person has with the Account’s business or legal entity.Show child attributesscript_addressesnullable objectThe script addresses (e.g., non-Latin characters) associated with the person.Show child attributesscript_namesnullable objectThe script names (e.g. non-Latin characters) associated with the person.Show child attributessurnamenullable stringThe person’s last name.updatedtimestampTime at which the object was last updated. Represented as a RFC 3339 date & time UTC value in millisecond precision, for example: 2022-09-18T13:22:18.123Z.Error Codes400account_not_yet_compatible_with_v2Account is not yet compatible with V2 APIs.400accounts_v2_access_blockedAccounts v2 is not enabled for your platform.400v1_account_instead_of_v2_accountV1 Account ID cannot be used in V2 Account APIs.400v1_customer_instead_of_v2_accountV1 Customer ID cannot be used in V2 Account APIs.404not_foundThe resource wasn’t found.GET /v2/core/accounts/:id/persons/:idcurl https://api.stripe.com/v2/core/accounts/acct_1Nv0FGQ9RKHgCVdK/persons/person_test_61RS0CgWt1xBt8M1Q16RS0Cg0WSQO5ZXUVpZxZ9tAIbY \ -H "Authorization: Bearer sk_test_BQokikJ...2HlWgH4olfQ2sk_test_YOUR_TEST_KEY_HERE" \ -H "Stripe-Version: {{STRIPE_API_VERSION}}"Response{ "id": "person_test_61RS0CgWt1xBt8M1Q16RS0Cg0WSQO5ZXUVpZxZ9tAIbY", "object": "v2.core.account_person", "account": "acct_1Nv0FGQ9RKHgCVdK", "additional_addresses": [], "additional_names": [], "address": { "city": "Brothers", "country": "us", "line1": "27 Fredrick Ave", "postal_code": "97712", "state": "OR" }, "created": "2024-11-26T17:10:07.000Z", "date_of_birth": { "day": 28, "month": 1, "year": 2000 }, "email": "jenny.rosen@example.com", "given_name": "Jenny", "id_numbers": [ { "type": "us_ssn_last_4" } ], "livemode": true, "metadata": {}, "nationalities": [], "relationship": { "owner": true, "percent_ownership": "0.8", "representative": true, "title": "CEO" }, "surname": "Rosen", "updated": "2024-11-26T17:12:55.000Z"}List persons v2Ask about this sectionCopy for LLMView as MarkdownReturns a paginated list of Persons associated with an Account.Learn more about calling API v2 endpoints. Parametersaccount_idstringRequiredAccount the Persons are associated with.limitintegerThe upper limit on the number of accounts returned by the List Account request.pagestringThe page token to navigate to next or previous batch of accounts given by the list request.ReturnsResponse attributesdataarray of objectsA list of retrieved Person objects.Show child attributesnext_page_urlnullable stringURL with page token to navigate to next batch of Persons given by the list request.previous_page_urlnullable stringURL with page token to previous to next batch of Persons given by the list request.Error Codes400account_not_yet_compatible_with_v2Account is not yet compatible with V2 APIs.400accounts_v2_access_blockedAccounts v2 is not enabled for your platform.400v1_account_instead_of_v2_accountV1 Account ID cannot be used in V2 Account APIs.400v1_customer_instead_of_v2_accountV1 Customer ID cannot be used in V2 Account APIs.GET /v2/core/accounts/:id/personscurl https://api.stripe.com/v2/core/accounts/acct_1Nv0FGQ9RKHgCVdK/persons \ -H "Authorization: Bearer sk_test_BQokikJ...2HlWgH4olfQ2sk_test_YOUR_TEST_KEY_HERE" \ -H "Stripe-Version: {{STRIPE_API_VERSION}}"Response{ "data": [ { "id": "person_test_61RS0CgWt1xBt8M1Q16RS0Cg0WSQO5ZXUVpZxZ9tAIbY", "object": "v2.core.account_person", "account": "acct_1Nv0FGQ9RKHgCVdK", "additional_addresses": [], "additional_names": [], "address": { "city": "Brothers", "country": "us", "line1": "27 Fredrick Ave", "postal_code": "97712", "state": "OR" }, "created": "2024-11-26T17:10:07.000Z", "date_of_birth": { "day": 28, "month": 1, "year": 2000 }, "email": "jenny.rosen@example.com", "given_name": "Jenny", "id_numbers": [ { "type": "us_ssn_last_4" } ], "livemode": true, "metadata": {}, "nationalities": [], "relationship": { "owner": true, "percent_ownership": "0.8", "representative": true, "title": "CEO" }, "surname": "Rosen", "updated": "2024-11-26T17:12:55.000Z" } ]}Delete a person v2Ask about this sectionCopy for LLMView as MarkdownDelete a Person associated with an Account.Learn more about calling API v2 endpoints. Parametersaccount_idstringRequiredThe Account the Person is associated with.idstringRequiredThe ID of the Person to delete.ReturnsResponse attributesidstringPerson deleted.objectstringString representing the object’s type. Objects of the same type share the same value.deletedbooleanAlways true for a deleted object.Error Codes400account_not_yet_compatible_with_v2Account is not yet compatible with V2 APIs.400accounts_v2_access_blockedAccounts v2 is not enabled for your platform.400v1_account_instead_of_v2_accountV1 Account ID cannot be used in V2 Account APIs.400v1_customer_instead_of_v2_accountV1 Customer ID cannot be used in V2 Account APIs.404not_foundThe resource wasn’t found.DELETE /v2/core/accounts/:id/persons/:idcurl -X DELETE https://api.stripe.com/v2/core/accounts/acct_1Nv0FGQ9RKHgCVdK/persons/person_test_61RS0CgWt1xBt8M1Q16RS0Cg0WSQO5ZXUVpZxZ9tAIbY \ -H "Authorization: Bearer sk_test_BQokikJ...2HlWgH4olfQ2sk_test_YOUR_TEST_KEY_HERE" \ -H "Stripe-Version: {{STRIPE_API_VERSION}}"Response{ "id": "person_test_61RS0CgWt1xBt8M1Q16RS0Cg0WSQO5ZXUVpZxZ9tAIbY", "object": "v2.core.account_person", "deleted": true}Person event types v2Ask about this sectionCopy for LLMView as MarkdownThis is a list of all public thin events we currently send for updates to Person, which are continually evolving and expanding. The payload of thin events is unversioned. During processing, you must fetch the versioned event from the API or fetch the resource’s current state.Event typesTypeFilter events by typeTypev2.core.account_person.createdOccurs when a Person is created.v2.core.account_person.deletedOccurs when a Person is deleted.v2.core.account_person.updatedOccurs when a Person is updated.

female

Pattern 2: Use the Payment Intents API to build an integration that can handle complex payment flows with a status that changes over the PaymentIntent’s lifecycle. It tracks a payment from creation through checkout, and triggers additional authentication steps when required.Some of the advantages of using the Payment Intents API include:Automatic authentication handlingNo double chargesNo idempotency key issuesSupport for Strong Customer Authentication (SCA) and similar regulatory changesA complete set of APIs Use the Payment Intents API together with the Setup Intents and Payment Methods APIs. These APIs help you handle dynamic payments (for example, additional authentication like 3D Secure) and prepare you for expansion to other countries while allowing you to support new regulations and regional payment methods.Building an integration with the Payment Intents API involves two actions: creating and confirming a PaymentIntent. Each PaymentIntent typically correlates with a single shopping cart or customer session in your application. The PaymentIntent encapsulates details about the transaction, such as the supported payment methods, the amount to collect, and the desired currency.Creating a PaymentIntentTo get started, see the accept a payment guide. It describes how to create a PaymentIntent on the server and pass its client secret to the client instead of passing the entire PaymentIntent object.When you create the PaymentIntent, you can specify options like the amount and currency:Command LineSelect a languagecURLStripe CLIRubyPythonPHPJavaNode.jsGo.NET No resultscurl https://api.stripe.com/v1/payment_intents \ -u "sk_test_YOUR_TEST_KEY_HERE:" \ -d amount=1099 \ -d currency=usdBest practices We recommend creating a PaymentIntent as soon as you know the amount, such as when the customer begins the checkout process, to help track your purchase funnel. If the amount changes, you can update its amount. For example, if your customer backs out of the checkout process and adds new items to their cart, you may need to update the amount when they start the checkout process again.If the checkout process is interrupted and resumes later, attempt to reuse the same PaymentIntent instead of creating a new one. Each PaymentIntent has a unique ID that you can use to retrieve it if you need it again. In the data model of your application, you can store the ID of the PaymentIntent on the customer’s shopping cart or session to facilitate retrieval. The benefit of reusing the PaymentIntent is that the object state helps track any failed payment attempts for a given cart or session.Remember to provide an idempotency key to prevent the creation of duplicate PaymentIntents for the same purchase. This key is typically based on the ID that you associate with the cart or customer session in your application.Passing the client secret to the client side The PaymentIntent contains a client secret, a key that’s unique to the individual PaymentIntent. On the client side of your application, Stripe.js uses the client secret as a parameter when invoking functions (such as stripe.confirmCardPayment or stripe.handleCardAction) to complete the payment.Retrieve the client secretThe PaymentIntent includes a client secret that the client side uses to securely complete the payment process. You can use different approaches to pass the client secret to the client side.Single-page applicationServer-side renderingRetrieve the client secret from an endpoint on your server, using the browser’s fetch function. This approach is best if your client side is a single-page application, particularly one built with a modern frontend framework like React. Create the server endpoint that serves the client secret:main.rbSelect a languageRubyPythonPHPJavaNode.jsGo.NET No resultsget '/secret' do intent = # ... Create or retrieve the PaymentIntent {client_secret: intent.client_secret}.to_json endAnd then fetch the client secret with JavaScript on the client side:(async () => { const response = await fetch('/secret'); const {client_secret: clientSecret} = await response.json(); // Render the form using the clientSecret })();CautionYou can use the client secret to complete the payment process with the amount specified on the PaymentIntent. Don’t log it, embed it in URLs, or expose it to anyone other than the customer. Make sure that you have TLS on any page that includes the client secret.After the paymentAfter the client confirms the payment, it is a best practice for your server to monitor webhooks to detect when the payment successfully completes or fails.A PaymentIntent might have more than one Charge object associated with it if there were multiple payment attempts. For example, retries can create multiple Charges. For each charge you can inspect the outcome and details of the payment method used.Optimizing payment methods for future payments The setup_future_usage parameter saves payment methods to use again in the future. For cards, it also optimizes authorization rates in compliance with regional legislation and network rules, such as SCA. To determine which value to use, consider how you want to use this payment method in the future.How you intend to use the payment methodsetup_future_usage enum value to useOn-session payments onlyon_sessionOff-session payments onlyoff_sessionBoth on and off-session paymentsoff_sessionYou can still accept off-session payments with a card set up for on-session payments, but the bank is more likely to reject the off-session payment and require authentication from the cardholder.The following example shows how to create a PaymentIntent and specify setup_future_usage:Command LineSelect a languagecURLStripe CLIRubyPythonPHPJavaNode.jsGo.NET No resultscurl https://api.stripe.com/v1/payment_intents \ -u "sk_test_YOUR_TEST_KEY_HERE:" \ -d amount=1099 \ -d currency=usd \ -d setup_future_usage=off_sessionCautionSetups for off-session payments are more likely to incur additional friction. Use on-session setup if you don’t intend to accept off-session payments with the saved card.Dynamic statement descriptor By default, your Stripe account’s statement descriptor appears on customer statements whenever you charge their card. To provide a different description on a per-payment basis, include the statement_descriptor parameter.Command LineSelect a languagecURLStripe CLIRubyPythonPHPJavaNode.jsGo.NET No resultscurl https://api.stripe.com/v1/payment_intents \ -u "sk_test_YOUR_TEST_KEY_HERE:" \ -d amount=1099 \ -d currency=usd \ -d "payment_method_types[]"=card \ -d statement_descriptor="Custom descriptor"Statement descriptors are limited to 22 characters, can’t use the special characters <, >, ', ", or , and must not consist solely of numbers. When using dynamic statement descriptors, the dynamic text is appended to the statement descriptor prefix set in the Stripe Dashboard. An asterisk () and an empty space are also added to separate the default statement descriptor from the dynamic portion. These 2 characters count towards the 22 character limit.Storing information in metadata Stripe supports adding metadata to the most common requests you make, such as processing payments. Metadata isn’t shown to customers or factored into whether or not a payment is declined or blocked by our fraud prevention system.Through metadata, you can associate information that’s meaningful to you with Stripe activity.Any metadata you include is viewable in the Dashboard (for example, when looking at the page for an individual payment), and is also available in common reports. As an example, you can attach the order ID for your store to the PaymentIntent for that order. Doing so allows you to easily reconcile payments in Stripe to orders in your system.If you’re using Radar for Fraud Teams, consider passing additional customer information and order information as metadata. Then you can write Radar rules using metadata attributes and have more information available within the Dashboard, which can expedite your review process.When a PaymentIntent creates a charge, the PaymentIntent copies its metadata to the charge. Subsequent updates to the PaymentIntent’s metadata won’t modify the metadata of charges previously created by the PaymentIntent.Command LineSelect a languagecURLStripe CLIRubyPythonPHPJavaNode.jsGo.NET No resultscurl https://api.stripe.com/v1/payment_intents \ -u "sk_test_YOUR_TEST_KEY_HERE:" \ -d amount=1099 \ -d currency=usd \ -d "payment_method_types[]"=card \ -d "metadata[order_id]"=6735CautionDon’t store any sensitive information (personally identifiable information, card details, and so on) as metadata or in the description parameter of the PaymentIntent.See alsoAccept a payment onlineAccept a payment in an iOS appAccept a payment in an Android appSet up future payments

curl https://api.stripe.com/v1/payment_intents \
  -u "sk_test_YOUR_TEST_KEY_HERE:" \
  -d amount=1099 \
  -d currency=usd

Pattern 3: The following example shows how to create a PaymentIntent and specify setup_future_usage:

setup_future_usage

Pattern 4: Person Tokens v2Ask about this sectionCopy for LLMView as MarkdownPerson Tokens are single-use tokens which tokenize person information, and are used for creating or updating a Person.Learn more about calling API v2 endpoints. EndpointsPOST/v2/core/accounts/:id/person_tokensGET/v2/core/accounts/:id/person_tokens/:idThe PersonToken object Ask about this sectionCopy for LLMView as MarkdownAttributesidstringUnique identifier for the token.objectstring, value is "v2.core.account_person_token"String representing the object’s type. Objects of the same type share the same value of the object field.createdtimestampTime at which the token was created. Represented as a RFC 3339 date & time UTC value in millisecond precision, for example: 2022-09-18T13:22:18.123Z.expires_attimestampTime at which the token will expire.livemodebooleanHas the value true if the token exists in live mode or the value false if the object exists in test mode.usedbooleanDetermines if the token has already been used (tokens can only be used once).The PersonToken object{ "created": "2025-01-01T00:00:00.000Z", "expires_at": "2025-01-01T00:00:00.000Z", "id": "4242", "livemode": true, "object": "4242", "used": true}Create a person token v2Ask about this sectionCopy for LLMView as MarkdownCreates a Person Token associated with an Account.Learn more about calling API v2 endpoints. Parametersaccount_idstringRequiredThe Account the Person is associated with.additional_addressesarray of objectsAdditional addresses associated with the person.Show child parametersadditional_namesarray of objectsAdditional names (e.g. aliases) associated with the person.Show child parametersadditional_terms_of_serviceobjectAttestations of accepted terms of service agreements.Show child parametersaddressobjectThe person’s residential address.Show child parametersdate_of_birthobjectThe person’s date of birth.Show child parametersdocumentsobjectDocuments that may be submitted to satisfy various informational requests.Show child parametersemailstringEmail.given_namestringThe person’s first name.id_numbersarray of objectsThe identification numbers (e.g., SSN) associated with the person.Show child parameterslegal_genderenumThe person’s gender (International regulations require either “male” or “female”).Possible enum valuesfemaleFemale gender person.maleMale gender person.metadatamapSet of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.nationalitiesarray of enumsThe nationalities (countries) this person is associated with.phonestringThe phone number for this person.political_exposureenumThe person’s political exposure.Possible enum valuesexistingThe person has disclosed that they do have political exposure.noneThe person has disclosed that they have no political exposure.relationshipobjectThe relationship that this person has with the Account’s business or legal entity.Show child parametersscript_addressesobjectThe script addresses (e.g., non-Latin characters) associated with the person.Show child parametersscript_namesobjectThe script names (e.g. non-Latin characters) associated with the person.Show child parameterssurnamestringThe person’s last name.ReturnsResponse attributesidstringUnique identifier for the token.objectstring, value is "v2.core.account_person_token"String representing the object’s type. Objects of the same type share the same value of the object field.createdtimestampTime at which the token was created. Represented as a RFC 3339 date & time UTC value in millisecond precision, for example: 2022-09-18T13:22:18.123Z.expires_attimestampTime at which the token will expire.livemodebooleanHas the value true if the token exists in live mode or the value false if the object exists in test mode.usedbooleanDetermines if the token has already been used (tokens can only be used once).Error Codes400token_must_be_created_with_publishable_keyToken must be created with publishable key.POST /v2/core/accounts/:id/person_tokenscurl -X POST https://api.stripe.com/v2/core/accounts/acct_1Nv0FGQ9RKHgCVdK/person_tokens \ -H "Authorization: Bearer sk_test_BQokikJ...2HlWgH4olfQ2sk_test_YOUR_TEST_KEY_HERE" \ -H "Stripe-Version: {{STRIPE_API_VERSION}}" \ --json '{ "given_name": "Jenny", "surname": "Rosen", "email": "jenny.rosen@example.com", "address": { "line1": "27 Fredrick Ave", "city": "Brothers", "postal_code": "97712", "state": "OR", "country": "US" }, "id_numbers": [ { "type": "us_ssn_last_4", "value": "0000" } ], "relationship": { "owner": true, "percent_ownership": "0.8", "representative": true, "title": "CEO" } }'Response{ "id": "perstok_61RS0CgWt1xBt8M1Q16RS0Cg0WSQO5ZXUVpZxZ9tAIbY", "object": "v2.core.account_person_token", "created": "2025-11-17T14:00:00.000Z", "expires_at": "2025-11-17T14:10:00.000Z", "livemode": true, "used": false}Retrieve a person token v2Ask about this sectionCopy for LLMView as MarkdownRetrieves a Person Token associated with an Account.Learn more about calling API v2 endpoints. Parametersaccount_idstringRequiredThe Account the Person is associated with.idstringRequiredThe ID of the Person Token to retrieve.ReturnsResponse attributesidstringUnique identifier for the token.objectstring, value is "v2.core.account_person_token"String representing the object’s type. Objects of the same type share the same value of the object field.createdtimestampTime at which the token was created. Represented as a RFC 3339 date & time UTC value in millisecond precision, for example: 2022-09-18T13:22:18.123Z.expires_attimestampTime at which the token will expire.livemodebooleanHas the value true if the token exists in live mode or the value false if the object exists in test mode.usedbooleanDetermines if the token has already been used (tokens can only be used once).Error Codes404not_foundThe resource wasn’t found.GET /v2/core/accounts/:id/person_tokens/:idcurl https://api.stripe.com/v2/core/accounts/acct_1Nv0FGQ9RKHgCVdK/person_tokens/perstok_61RS0CgWt1xBt8M1Q16RS0Cg0WSQO5ZXUVpZxZ9tAIbY \ -H "Authorization: Bearer sk_test_BQokikJ...2HlWgH4olfQ2sk_test_YOUR_TEST_KEY_HERE" \ -H "Stripe-Version: {{STRIPE_API_VERSION}}"Response{ "id": "perstok_61RS0CgWt1xBt8M1Q16RS0Cg0WSQO5ZXUVpZxZ9tAIbY", "object": "v2.core.account_person_token", "created": "2025-11-17T14:00:00.000Z", "expires_at": "2025-11-17T14:10:00.000Z", "livemode": true, "used": true}

true

Pattern 5: The Account object Ask about this sectionCopy for LLMView as MarkdownAttributesidstringUnique identifier for the Account.objectstring, value is "v2.core.account"String representing the object’s type. Objects of the same type share the same value of the object field.applied_configurationsarray of enumsThe configurations that have been applied to this account.Possible enum valuescustomerThe Account can be used as a customer.merchantThe Account can be used as a merchant.recipientThe Account can be used as a recipient.closednullable booleanIndicates whether the account has been closed.configurationnullable objectAn Account represents a company, individual, or other entity that a user interacts with. Accounts store identity information and one or more configurations that enable product-specific capabilities. You can assign configurations at creation or add them later.Show child attributescontact_emailnullable stringThe default contact email address for the Account. Required when configuring the account as a merchant or recipient.createdtimestampTime at which the object was created. Represented as a RFC 3339 date & time UTC value in millisecond precision, for example: 2022-09-18T13:22:18.123Z.dashboardnullable enumA value indicating the Stripe dashboard this Account has access to. This will depend on which configurations are enabled for this account.Possible enum valuesexpressThe Account has access to the Express hosted dashboard.fullThe Account has access to the full Stripe hosted dashboard.noneThe Account does not have access to any Stripe hosted dashboard.defaultsnullable objectDefault values for settings shared across Account configurations.Show child attributesdisplay_namenullable stringA descriptive name for the Account. This name will be surfaced in the Stripe Dashboard and on any invoices sent to the Account.future_requirementsnullable objectInformation about the future requirements for the Account that will eventually come into effect, including what information needs to be collected, and by when.Show child attributesidentitynullable objectInformation about the company, individual, and business represented by the Account.Show child attributeslivemodebooleanHas the value true if the object exists in live mode or the value false if the object exists in test mode.metadatanullable mapSet of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.requirementsnullable objectInformation about the active requirements for the Account, including what information needs to be collected, and by when.Show child attributesThe Account object{ "id": "acct_1Nv0FGQ9RKHgCVdK", "object": "v2.core.account", "applied_configurations": [ "customer", "merchant" ], "configuration": { "customer": { "automatic_indirect_tax": { "exempt": "none", "location": { "country": "US", "state": "NY" }, "location_source": "identity_address" }, "billing": { "invoice": { "next_sequence": 1, "prefix": "5626C87C", "custom_fields": [] } }, "capabilities": { "automatic_indirect_tax": { "status": "active", "status_details": [] } } }, "merchant": { "card_payments": { "decline_on": { "avs_failure": false, "cvc_failure": false } }, "capabilities": { "card_payments": { "status": "active", "status_details": [] }, "stripe_balance": { "payouts": { "status": "active", "status_details": [] } } } } }, "contact_email": "furever@example.com", "created": "2025-03-28T19:59:16.000Z", "dashboard": "full", "identity": { "business_details": { "registered_name": "Furever", "address": { "country": "US", "postal_code": "10001" } }, "country": "US", "entity_type": "company" }, "defaults": { "currency": "usd", "responsibilities": { "fees_collector": "stripe", "losses_collector": "stripe", "requirements_collector": "stripe" } }, "display_name": "Furever"}Create an account v2Ask about this sectionCopy for LLMView as MarkdownAn Account is a representation of a company, individual or other entity that a user interacts with. Accounts contain identifying information about the entity, and configurations that store the features an account has access to. An account can be configured as any or all of the following configurations: Customer, Merchant and/or Recipient.Learn more about calling API v2 endpoints. Parametersaccount_tokenstringThe account token generated by the account token api.configurationobjectAn Account Configuration which allows the Account to take on a key persona across Stripe products.Show child parameterscontact_emailstringThe default contact email address for the Account. Required when configuring the account as a merchant or recipient.dashboardenumA value indicating the Stripe dashboard this Account has access to. This will depend on which configurations are enabled for this account.Possible enum valuesexpressThe Account has access to the Express hosted dashboard.fullThe Account has access to the full Stripe hosted dashboard.noneThe Account does not have access to any Stripe hosted dashboard.defaultsobjectDefault values to be used on Account Configurations.Show child parametersdisplay_namestringA descriptive name for the Account. This name will be surfaced in the Stripe Dashboard and on any invoices sent to the Account.identityobjectInformation about the company, individual, and business represented by the Account.Show child parametersincludearray of enumsAdditional fields to include in the response.Possible enum valuesconfiguration.customerInclude parameter to expose configuration.customer on an Account.configuration.merchantInclude parameter to expose configuration.merchant on an Account.configuration.recipientInclude parameter to expose configuration.recipient on an Account.defaultsInclude parameter to expose defaults on an Account.future_requirementsInclude parameter to expose future_requirements on an Account.identityInclude parameter to expose identity on an Account.requirementsInclude parameter to expose requirements on an Account.metadatamapSet of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.ReturnsResponse attributesidstringUnique identifier for the Account.objectstring, value is "v2.core.account"String representing the object’s type. Objects of the same type share the same value of the object field.applied_configurationsarray of enumsThe configurations that have been applied to this account.Possible enum valuescustomerThe Account can be used as a customer.merchantThe Account can be used as a merchant.recipientThe Account can be used as a recipient.closednullable booleanIndicates whether the account has been closed.configurationnullable objectAn Account represents a company, individual, or other entity that a user interacts with. Accounts store identity information and one or more configurations that enable product-specific capabilities. You can assign configurations at creation or add them later.Show child attributescontact_emailnullable stringThe default contact email address for the Account. Required when configuring the account as a merchant or recipient.createdtimestampTime at which the object was created. Represented as a RFC 3339 date & time UTC value in millisecond precision, for example: 2022-09-18T13:22:18.123Z.dashboardnullable enumA value indicating the Stripe dashboard this Account has access to. This will depend on which configurations are enabled for this account.Possible enum valuesexpressThe Account has access to the Express hosted dashboard.fullThe Account has access to the full Stripe hosted dashboard.noneThe Account does not have access to any Stripe hosted dashboard.defaultsnullable objectDefault values for settings shared across Account configurations.Show child attributesdisplay_namenullable stringA descriptive name for the Account. This name will be surfaced in the Stripe Dashboard and on any invoices sent to the Account.future_requirementsnullable objectInformation about the future requirements for the Account that will eventually come into effect, including what information needs to be collected, and by when.Show child attributesidentitynullable objectInformation about the company, individual, and business represented by the Account.Show child attributeslivemodebooleanHas the value true if the object exists in live mode or the value false if the object exists in test mode.metadatanullable mapSet of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.requirementsnullable objectInformation about the active requirements for the Account, including what information needs to be collected, and by when.Show child attributesError Codes400account_capability_not_supportedRequested capability is not available.400account_controller_express_dash_without_application_losses_or_feesIf dashboard is express, fees_collector must be application and losses_collector must be application.400account_controller_stripe_pricing_platform_liableIf losses_collector is application, fees_collector must also be application.400account_controller_ua_unsupported_configurationConnect integration combination is not supported when UA beta is enabled.400account_controller_unsupported_configurationConnect integration combination is not supported when UA beta is disabled.400account_controller_unsupported_configuration_private_previewResponsibility combinations is not supported in private preview.400account_country_unsupported_currencyCurrency is not allowed for the account’s country.400account_create_activation_requiredPlatform must be activated to create connected accounts.400account_creation_invalidAccount creation is invalid.400account_creation_liability_unacknowledgedAccount creation error - liability unacknowledged.400account_creation_requirement_collection_and_liability_unacknowledgedAccount creation error - requirement collection and liability unacknowledged.400account_creation_requirement_collection_unacknowledgedAccount creation error - requirement collection unacknowledged.400account_terms_of_service_not_acceptedTerms of service must be accepted before adding merchant configuration.400account_token_requiredAccount token required for platforms in mandated countries (e.g., France).400accounts_v2_access_blockedAccounts v2 is not enabled for your platform.400address_characters_invalidInvalid characters are provided for address fields.400address_country_identity_country_mismatchAddress country doesn’t match identity country.400address_postal_code_invalidAddress postal code is invalid.400address_state_invalidAddress state is invalid.400address_town_invalidAddress town is invalid.400bgn_bank_accounts_unsupportedCreating accounts with the BGN currency is no longer supported, as Bulgaria is now using the Euro as of 2026-01-01.400can_create_platform_owned_onboarding_accounts_requiredDormant accounts cannot create accounts where requirements collector is application (this is an account takeover prevention measure).400cannot_create_connected_accountPlatform is in an invalid state and cannot create connected accounts.400cannot_create_new_account_rejectedPlatform is in a rejected state and cannot create connected accounts.400capability_cannot_be_unrequested_due_to_other_capability_requirementFeature cannot be unrequested due to being a requirement for another feature.400capability_not_available_for_dashboard_typeFeature cannot be requested for the dashboard type.400capability_not_available_for_entity_type_in_countryRequested feature is not available for the entity type in your country.400capability_not_available_in_countryRequested capability is not available in your country.400capability_not_available_in_platform_countryFeature cannot be requested given the platform’s country.400capability_not_available_without_other_capabilityRequested feature is not available without also requesting a different feature.400capability_not_available_without_other_capability_in_countryRequested feature is not available without also requesting a different feature in your country.400configuration_creation_invalidCannot create an account with an invalid configuration.400connect_identity_not_verifiedPlatform is not verified and cannot create connected accounts.400connect_profile_not_submittedPlatform has not completed platform questionnaire and cannot create connected accounts.400cross_border_connected_account_creation_not_allowedCross-border connected account creation is not allowed for this platform/account country combination.400custom_account_betaCustom accounts cannot be created in certain countries.400date_of_birth_age_restrictionRepresentative date of birth does not meet the age limit.400date_of_birth_invalidRepresentative date of birth is provided an invalid date or a future date.400default_currency_immutableCannot change defaults.currency post account activation.400default_payment_method_invalidDefault payment method provided for a customer does not exist or is otherwise invalid.400default_payment_method_invalid_typeSpecified payment method exists but its type is not allowed to be the default payment method.400directorship_declaration_not_allowed_during_account_creationDirectorship declaration is not allowed during account creation.400document_invalidProvided file tokens for documents are invalid, not found, deleted, or belong to a different account.400document_purpose_invalidProvided file tokens for documents are of the wrong purpose.400email_domain_invalid_for_recipientEmail contains unsupported domain.400email_invalidIncorrect email is provided.400entity_type_not_supported_in_countryThe identity.entity_type value is not supported in a given identity.country.400high_risk_activities_none_cant_be_combined_with_other_optionsNONE is combined with another value in the HighRiskActivities list.400id_number_invalidProvided ID number is of the wrong format for the given type.400identity_country_requiredThe identity.country value is required but not provided.400incorrect_id_number_for_countryIncorrect ID number is provided for a country.400incorrect_token_wrong_typeThe incorrect token type is provided .400invalid_id_number_for_structureID number is provided that is not permitted for the Identity’s entity type and business structure.400invalid_id_number_registrarThe identity.business_details.id_numbers.registrar value is an invalid DE registrar.400invalid_konbini_payments_support_hoursKonbini Payments Support Hours is Invalid.400invalid_konbini_payments_support_phone_numberKonbini Payments Support Phone Number is Invalid.400invoice_rendering_template_invalidInvoice rendering template does not exist or is otherwise invalid.400ip_address_invalidInvalid IP address is provided.400mcc_invalidMCC is invalid for configuration.merchant.mcc.400non_jp_kana_kanji_addressKana Kanji script addresses must have JP country.400ownership_declaration_not_allowed_during_account_creationOwnership declaration is not allowed during account creation.400param_alongside_account_tokenParameter cannot be passed alongside account_token.400person_percent_ownership_invalidError returned when relationship.owner is set to true but the ownership percentage is set to 0%.400phone_invalidPhone number is invalid.400platform_registration_requiredPlatform has not signed up for Connect and cannot create connected accounts.400postal_code_required_for_jp_addressPostal code is required for Japanese addresses.400purpose_of_funds_description_must_be_empty_for_non_other_purpose_of_fundsPurposeOfFundsDescription is not empty while PurposeOfFunds is not OTHER.400script_characters_invalidProvided script characters are invalid for the script.400shipping_address_requiredShipping address is required within the shipping hash.400shipping_name_requiredShipping name is required within the shipping hash.400statement_descriptor_invalidStatement descriptor is invalid.400structure_incompatible_for_entity_type_countryThe business_details.structure value is not valid for identity.country and identity.entity_type.400test_clock_disallowed_on_live_modeCannot set a test clock on a livemode customer.400test_clock_invalidTest clock does not exist or is otherwise invalid.400test_clocks_advance_in_progressCannot modify a test clock that is currently advancing.400test_clocks_customer_limit_reachedCannot add customer to a test clock that has already reached its customer limit.400token_already_usedThe token is re-used with a different idempotency key.400token_expiredToken has expired.400tos_acceptance_on_behalf_not_allowedTOS cannot be accepted on behalf of accounts when requirement collection is stripe.400unsupported_field_for_configsCannot set responsibilities on the current configurations.400unsupported_identity_field_for_configsCannot set identity fields when the Account is only configured as a customer.400unsupported_postal_codeAddress is in an unsupported postal code.400unsupported_stateAddress is in an unsupported state.400url_invalidURL is invalid.400v1_token_invalid_in_v2A v1 token ID is passed in v2 APIs.403invalid_account_tokenInvalid account token.409idempotency_errorAn idempotent retry occurred with different request parameters.POST /v2/core/accountscurl -X POST https://api.stripe.com/v2/core/accounts \ -H "Authorization: Bearer sk_test_BQokikJ...2HlWgH4olfQ2sk_test_YOUR_TEST_KEY_HERE" \ -H "Stripe-Version: {{STRIPE_API_VERSION}}" \ --json '{ "contact_email": "furever@example.com", "display_name": "Furever", "identity": { "country": "us", "entity_type": "company", "business_details": { "registered_name": "Furever" } }, "configuration": { "customer": { "capabilities": { "automatic_indirect_tax": { "requested": true } } }, "merchant": { "capabilities": { "card_payments": { "requested": true } } } }, "defaults": { "responsibilities": { "fees_collector": "stripe", "losses_collector": "stripe" } }, "dashboard": "full", "include": [ "configuration.merchant", "configuration.customer", "identity", "defaults" ] }'Response{ "id": "acct_1Nv0FGQ9RKHgCVdK", "object": "v2.core.account", "applied_configurations": [ "customer", "merchant" ], "configuration": { "customer": { "applied": "2025-03-28T19:59:16.000Z", "automatic_indirect_tax": { "exempt": "none", "location_source": "identity_address" }, "billing": { "invoice": { "next_sequence": 1, "prefix": "5626C87C", "custom_fields": [] } }, "capabilities": { "automatic_indirect_tax": { "status": "active", "status_details": [] } } }, "merchant": { "applied": "2025-03-28T19:59:16.000Z", "card_payments": { "decline_on": { "avs_failure": false, "cvc_failure": false } }, "capabilities": { "card_payments": { "status": "active", "status_details": [] }, "stripe_balance": { "payouts": { "status": "active", "status_details": [] } } } } }, "contact_email": "furever@example.com", "created": "2025-03-28T19:59:16.000Z", "dashboard": "full", "identity": { "business_details": { "registered_name": "Furever" }, "country": "US", "entity_type": "company" }, "livemode": false, "defaults": { "currency": "usd", "responsibilities": { "fees_collector": "stripe", "losses_collector": "stripe", "requirements_collector": "stripe" } }, "display_name": "Furever"}Update an account v2Ask about this sectionCopy for LLMView as MarkdownUpdates the details of an Account.Learn more about calling API v2 endpoints. ParametersidstringRequiredThe ID of the Account to update.account_tokenstringThe account token generated by the account token api.configurationobjectAn Account Configuration which allows the Account to take on a key persona across Stripe products.Show child parameterscontact_emailstringThe default contact email address for the Account. Required when configuring the account as a merchant or recipient.dashboardenumA value indicating the Stripe dashboard this Account has access to. This will depend on which configurations are enabled for this account.Possible enum valuesexpressThe Account has access to the Express hosted dashboard.fullThe Account has access to the full Stripe hosted dashboard.noneThe Account does not have access to any Stripe hosted dashboard.defaultsobjectDefault values to be used on Account Configurations.Show child parametersdisplay_namestringA descriptive name for the Account. This name will be surfaced in the Stripe Dashboard and on any invoices sent to the Account.identityobjectInformation about the company, individual, and business represented by the Account.Show child parametersincludearray of enumsAdditional fields to include in the response.Possible enum valuesconfiguration.customerInclude parameter to expose configuration.customer on an Account.configuration.merchantInclude parameter to expose configuration.merchant on an Account.configuration.recipientInclude parameter to expose configuration.recipient on an Account.defaultsInclude parameter to expose defaults on an Account.future_requirementsInclude parameter to expose future_requirements on an Account.identityInclude parameter to expose identity on an Account.requirementsInclude parameter to expose requirements on an Account.metadatamapSet of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.ReturnsResponse attributesidstringUnique identifier for the Account.objectstring, value is "v2.core.account"String representing the object’s type. Objects of the same type share the same value of the object field.applied_configurationsarray of enumsThe configurations that have been applied to this account.Possible enum valuescustomerThe Account can be used as a customer.merchantThe Account can be used as a merchant.recipientThe Account can be used as a recipient.closednullable booleanIndicates whether the account has been closed.configurationnullable objectAn Account represents a company, individual, or other entity that a user interacts with. Accounts store identity information and one or more configurations that enable product-specific capabilities. You can assign configurations at creation or add them later.Show child attributescontact_emailnullable stringThe default contact email address for the Account. Required when configuring the account as a merchant or recipient.createdtimestampTime at which the object was created. Represented as a RFC 3339 date & time UTC value in millisecond precision, for example: 2022-09-18T13:22:18.123Z.dashboardnullable enumA value indicating the Stripe dashboard this Account has access to. This will depend on which configurations are enabled for this account.Possible enum valuesexpressThe Account has access to the Express hosted dashboard.fullThe Account has access to the full Stripe hosted dashboard.noneThe Account does not have access to any Stripe hosted dashboard.defaultsnullable objectDefault values for settings shared across Account configurations.Show child attributesdisplay_namenullable stringA descriptive name for the Account. This name will be surfaced in the Stripe Dashboard and on any invoices sent to the Account.future_requirementsnullable objectInformation about the future requirements for the Account that will eventually come into effect, including what information needs to be collected, and by when.Show child attributesidentitynullable objectInformation about the company, individual, and business represented by the Account.Show child attributeslivemodebooleanHas the value true if the object exists in live mode or the value false if the object exists in test mode.metadatanullable mapSet of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.requirementsnullable objectInformation about the active requirements for the Account, including what information needs to be collected, and by when.Show child attributesError Codes400account_capability_not_supportedRequested capability is not available.400account_controller_express_dash_without_application_losses_or_feesIf dashboard is express, fees_collector must be application and losses_collector must be application.400account_controller_stripe_pricing_platform_liableIf losses_collector is application, fees_collector must also be application.400account_controller_unsupported_configurationConnect integration combination is not supported when UA beta is disabled.400account_controller_unsupported_configuration_private_previewResponsibility combinations is not supported in private preview.400account_country_unsupported_currencyCurrency is not allowed for the account’s country.400account_not_yet_compatible_with_v2Account is not yet compatible with V2 APIs.400account_terms_of_service_not_acceptedTerms of service must be accepted before adding merchant configuration.400account_token_requiredAccount token required for platforms in mandated countries (e.g., France).400accounts_v2_access_blockedAccounts v2 is not enabled for your platform.400address_characters_invalidInvalid characters are provided for address fields.400address_country_identity_country_mismatchAddress country doesn’t match identity country.400address_postal_code_invalidAddress postal code is invalid.400address_state_invalidAddress state is invalid.400address_town_invalidAddress town is invalid.400attach_payment_method_to_customerDefault payment method is added to the customer config before attaching it to the account using /v1/payment_methods.400bgn_bank_accounts_unsupportedCreating accounts with the BGN currency is no longer supported, as Bulgaria is now using the Euro as of 2026-01-01.400can_create_platform_owned_onboarding_accounts_requiredDormant accounts cannot create accounts where requirements collector is application (this is an account takeover prevention measure).400cannot_use_validate_location_on_customer_createCannot set automatic_indirect_tax.validate_location when initially creating a customer configuration.400capability_cannot_be_unrequested_due_to_other_capability_requirementFeature cannot be unrequested due to being a requirement for another feature.400capability_not_available_for_dashboard_typeFeature cannot be requested for the dashboard type.400capability_not_available_for_entity_type_in_countryRequested feature is not available for the entity type in your country.400capability_not_available_in_countryRequested capability is not available in your country.400capability_not_available_in_platform_countryFeature cannot be requested given the platform’s country.400capability_not_available_without_other_capabilityRequested feature is not available without also requesting a different feature.400capability_not_available_without_other_capability_in_countryRequested feature is not available without also requesting a different feature in your country.400configuration_cannot_be_deactivatedConfiguration cannot be deactivated.400configuration_cannot_be_deactivated_due_to_other_capability_requirementConfiguration cannot be deactivated due to a dependency with another capability.400configuration_cannot_be_deactivated_due_to_other_configurationCannot deactivate a configuration due to another configuration depending on it.400configuration_cannot_be_updated_while_deactivatedConfiguration cannot be updated while deactivated.400configuration_creation_invalidCannot create an account with an invalid configuration.400cross_border_connected_account_creation_not_allowedCross-border connected account creation is not allowed for this platform/account country combination.400custom_account_betaCustom accounts cannot be created in certain countries.400customer_invalid_tax_locationInvalid customer tax location.400date_of_birth_age_restrictionRepresentative date of birth does not meet the age limit.400date_of_birth_invalidRepresentative date of birth is provided an invalid date or a future date.400default_currency_immutableCannot change defaults.currency post account activation.400default_outbound_destination_invalidOutbound Destination ID is invalid.400default_payment_method_invalidDefault payment method provided for a customer does not exist or is otherwise invalid.400document_invalidProvided file tokens for documents are invalid, not found, deleted, or belong to a different account.400document_purpose_invalidProvided file tokens for documents are of the wrong purpose.400duplicate_person_not_allowedDuplicate person is added to an account.400email_domain_invalid_for_recipientEmail contains unsupported domain.400email_invalidIncorrect email is provided.400entity_type_not_supported_in_countryThe identity.entity_type value is not supported in a given identity.country.400high_risk_activities_none_cant_be_combined_with_other_optionsNONE is combined with another value in the HighRiskActivities list.400id_number_invalidProvided ID number is of the wrong format for the given type.400identity_country_requiredThe identity.country value is required but not provided.400immutable_identity_paramIdentity param has been made immutable due to the state of the account.400incorrect_id_number_for_countryIncorrect ID number is provided for a country.400incorrect_token_wrong_typeThe incorrect token type is provided .400invalid_id_number_for_structureID number is provided that is not permitted for the Identity’s entity type and business structure.400invalid_id_number_registrarThe identity.business_details.id_numbers.registrar value is an invalid DE registrar.400invalid_konbini_payments_support_hoursKonbini Payments Support Hours is Invalid.400invalid_konbini_payments_support_phone_numberKonbini Payments Support Phone Number is Invalid.400ip_address_invalidInvalid IP address is provided.400mcc_invalidMCC is invalid for configuration.merchant.mcc.400non_jp_kana_kanji_addressKana Kanji script addresses must have JP country.400param_alongside_account_tokenParameter cannot be passed alongside account_token.400person_percent_ownership_invalidError returned when relationship.owner is set to true but the ownership percentage is set to 0%.400phone_invalidPhone number is invalid.400postal_code_required_for_jp_addressPostal code is required for Japanese addresses.400purpose_of_funds_description_must_be_empty_for_non_other_purpose_of_fundsPurposeOfFundsDescription is not empty while PurposeOfFunds is not OTHER.400script_characters_invalidProvided script characters are invalid for the script.400shipping_address_requiredShipping address is required within the shipping hash.400shipping_name_requiredShipping name is required within the shipping hash.400statement_descriptor_invalidStatement descriptor is invalid.400structure_incompatible_for_entity_type_countryThe business_details.structure value is not valid for identity.country and identity.entity_type.400test_clock_disallowed_on_live_modeCannot set a test clock on a livemode customer.400test_clock_invalidTest clock does not exist or is otherwise invalid.400token_already_usedThe token is re-used with a different idempotency key.400token_expiredToken has expired.400tos_acceptance_on_behalf_not_allowedTOS cannot be accepted on behalf of accounts when requirement collection is stripe.400total_person_ownership_exceededTotal ownership percentages of all Persons on the account exceeds 100%.400unsupported_field_for_configsCannot set responsibilities on the current configurations.400unsupported_identity_field_for_configsCannot set identity fields when the Account is only configured as a customer.400unsupported_postal_codeAddress is in an unsupported postal code.400unsupported_stateAddress is in an unsupported state.400url_invalidURL is invalid.400v1_account_instead_of_v2_accountV1 Account ID cannot be used in V2 Account APIs.400v1_customer_instead_of_v2_accountV1 Customer ID cannot be used in V2 Account APIs.400v1_token_invalid_in_v2A v1 token ID is passed in v2 APIs.403invalid_account_tokenInvalid account token.404not_foundThe resource wasn’t found.409idempotency_errorAn idempotent retry occurred with different request parameters.POST /v2/core/accounts/:idcurl -X POST https://api.stripe.com/v2/core/accounts/acct_1Nv0FGQ9RKHgCVdK \ -H "Authorization: Bearer sk_test_BQokikJ...2HlWgH4olfQ2sk_test_YOUR_TEST_KEY_HERE" \ -H "Stripe-Version: {{STRIPE_API_VERSION}}" \ --json '{ "defaults": { "profile": { "business_url": "http://accessible.stripe.com", "doing_business_as": "FurEver", "product_description": "Saas pet grooming platform at furever.dev using Connect embedded components" } }, "identity": { "business_details": { "structure": "sole_proprietorship", "id_numbers": [ { "type": "us_ein", "value": "000000000" } ] } }, "include": [ "defaults", "identity" ] }'Response{ "id": "acct_1Nv0FGQ9RKHgCVdK", "object": "v2.core.account", "applied_configurations": [ "customer", "merchant" ], "contact_email": "furever@example.com", "created": "2024-11-26T16:33:03.000Z", "dashboard": "full", "identity": { "business_details": { "id_numbers": [ { "type": "us_ein" } ], "registered_name": "Furever", "structure": "sole_proprietorship" }, "country": "us", "entity_type": "company" }, "defaults": { "currency": "usd", "locales": [], "profile": { "business_url": "http://accessible.stripe.com", "doing_business_as": "FurEver", "product_description": "Saas pet grooming platform at furever.dev using Connect embedded components" }, "responsibilities": { "fees_collector": "stripe", "losses_collector": "stripe", "requirements_collector": "stripe" } }, "display_name": "Furever", "livemode": true, "metadata": {}}Retrieve an account v2Ask about this sectionCopy for LLMView as MarkdownRetrieves the details of an Account.Learn more about calling API v2 endpoints. ParametersidstringRequiredThe ID of the Account to retrieve.includearray of enumsAdditional fields to include in the response.Possible enum valuesconfiguration.customerInclude parameter to expose configuration.customer on an Account.configuration.merchantInclude parameter to expose configuration.merchant on an Account.configuration.recipientInclude parameter to expose configuration.recipient on an Account.defaultsInclude parameter to expose defaults on an Account.future_requirementsInclude parameter to expose future_requirements on an Account.identityInclude parameter to expose identity on an Account.requirementsInclude parameter to expose requirements on an Account.ReturnsResponse attributesidstringUnique identifier for the Account.objectstring, value is "v2.core.account"String representing the object’s type. Objects of the same type share the same value of the object field.applied_configurationsarray of enumsThe configurations that have been applied to this account.Possible enum valuescustomerThe Account can be used as a customer.merchantThe Account can be used as a merchant.recipientThe Account can be used as a recipient.closednullable booleanIndicates whether the account has been closed.configurationnullable objectAn Account represents a company, individual, or other entity that a user interacts with. Accounts store identity information and one or more configurations that enable product-specific capabilities. You can assign configurations at creation or add them later.Show child attributescontact_emailnullable stringThe default contact email address for the Account. Required when configuring the account as a merchant or recipient.createdtimestampTime at which the object was created. Represented as a RFC 3339 date & time UTC value in millisecond precision, for example: 2022-09-18T13:22:18.123Z.dashboardnullable enumA value indicating the Stripe dashboard this Account has access to. This will depend on which configurations are enabled for this account.Possible enum valuesexpressThe Account has access to the Express hosted dashboard.fullThe Account has access to the full Stripe hosted dashboard.noneThe Account does not have access to any Stripe hosted dashboard.defaultsnullable objectDefault values for settings shared across Account configurations.Show child attributesdisplay_namenullable stringA descriptive name for the Account. This name will be surfaced in the Stripe Dashboard and on any invoices sent to the Account.future_requirementsnullable objectInformation about the future requirements for the Account that will eventually come into effect, including what information needs to be collected, and by when.Show child attributesidentitynullable objectInformation about the company, individual, and business represented by the Account.Show child attributeslivemodebooleanHas the value true if the object exists in live mode or the value false if the object exists in test mode.metadatanullable mapSet of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.requirementsnullable objectInformation about the active requirements for the Account, including what information needs to be collected, and by when.Show child attributesError Codes400account_not_yet_compatible_with_v2Account is not yet compatible with V2 APIs.400accounts_v2_access_blockedAccounts v2 is not enabled for your platform.400v1_account_instead_of_v2_accountV1 Account ID cannot be used in V2 Account APIs.400v1_customer_instead_of_v2_accountV1 Customer ID cannot be used in V2 Account APIs.404not_foundThe resource wasn’t found.GET /v2/core/accounts/:idcurl -G https://api.stripe.com/v2/core/accounts/acct_1Nv0FGQ9RKHgCVdK \ -H "Authorization: Bearer sk_test_BQokikJ...2HlWgH4olfQ2sk_test_YOUR_TEST_KEY_HERE" \ -H "Stripe-Version: {{STRIPE_API_VERSION}}" \ -d "include[0]"=defaults \ -d "include[1]"=identity \ -d "include[2]"="configuration.merchant"Response{ "id": "acct_1Nv0FGQ9RKHgCVdK", "object": "v2.core.account", "applied_configurations": [ "customer", "merchant" ], "configuration": { "merchant": { "applied": "2024-11-26T16:33:03.000Z", "card_payments": { "decline_on": { "avs_failure": false, "cvc_failure": false } }, "capabilities": { "card_payments": { "status": "restricted", "status_details": [ { "code": "requirements_past_due", "resolution": "provide_info" } ] } }, "statement_descriptor": { "descriptor": "accessible.stripe.com" } } }, "contact_email": "furever@example.com", "created": "2024-11-26T16:33:03.000Z", "dashboard": "full", "identity": { "business_details": { "address": { "country": "us" }, "id_numbers": [ { "type": "us_ein" } ], "structure": "sole_proprietorship" }, "country": "us", "entity_type": "company" }, "defaults": { "currency": "usd", "locales": [], "profile": { "business_url": "http://accessible.stripe.com", "doing_business_as": "FurEver", "product_description": "Saas pet grooming platform at furever.dev using Connect embedded components" }, "responsibilities": { "fees_collector": "stripe", "losses_collector": "stripe", "requirements_collector": "stripe" } }, "display_name": "Furever", "livemode": true, "metadata": {}}List accounts v2Ask about this sectionCopy for LLMView as MarkdownReturns a list of Accounts.Learn more about calling API v2 endpoints. Parametersapplied_configurationsarray of enumsFilter only accounts that have all of the configurations specified. If omitted, returns all accounts regardless of which configurations they have.Possible enum valuescustomerThe Account can be used as a customer.merchantThe Account can be used as a merchant.recipientThe Account can be used as a recipient.closedbooleanFilter by whether the account is closed. If omitted, returns only Accounts that are not closed.limitintegerThe upper limit on the number of accounts returned by the List Account request.pagestringThe page token to navigate to next or previous batch of accounts given by the list request.ReturnsResponse attributesdataarray of objectsA list of retrieved Account objects.Show child attributesnext_page_urlnullable stringURL with page token to navigate to next batch of accounts given by the list request.previous_page_urlnullable stringURL with page token to navigate to previous batch of accounts given by the list request.Error Codes400accounts_v2_access_blockedAccounts v2 is not enabled for your platform.GET /v2/core/accountscurl -G https://api.stripe.com/v2/core/accounts \ -H "Authorization: Bearer sk_test_BQokikJ...2HlWgH4olfQ2sk_test_YOUR_TEST_KEY_HERE" \ -H "Stripe-Version: {{STRIPE_API_VERSION}}" \ -d limit=2 \ -d "applied_configurations[0]"=customerResponse{ "data": [ { "id": "acct_1QP3oLBUFVXWiKFB", "object": "v2.core.account", "applied_configurations": [ "customer" ], "contact_email": "jenny.rosen@example.com", "created": "2024-11-25T15:02:50.000Z", "display_name": "Jenny Rosen", "livemode": true, "metadata": {} }, { "id": "acct_1QO24tPeVxUa6gV6", "object": "v2.core.account", "applied_configurations": [ "recipient", "customer", "merchant" ], "contact_email": "jenny.rosen@example.com", "created": "2024-11-22T18:59:45.000Z", "dashboard": "none", "display_name": "Jenny Rosen 2", "livemode": true, "metadata": { "my_key": "my_value" } } ], "next_page_url": "/v2/core/accounts?page=page_5dr8SFDbv7rZ2aj4ZSGuf4J1Dv58yE0YM4BhBqb2tg94CD5PDoUA7RD2AE7VBEH5C0E0qGJi1wMFPf9MEBbh6M125&limit=2&applied_configurations=customer"}

customer

Pattern 6: Time at which the object was created. Represented as a RFC 3339 date & time UTC value in millisecond precision, for example: 2022-09-18T13:22:18.123Z.

express

Pattern 7: Retrieve an account v2Ask about this sectionCopy for LLMView as MarkdownRetrieves the details of an Account.Learn more about calling API v2 endpoints. ParametersidstringRequiredThe ID of the Account to retrieve.includearray of enumsAdditional fields to include in the response.Possible enum valuesconfiguration.customerInclude parameter to expose configuration.customer on an Account.configuration.merchantInclude parameter to expose configuration.merchant on an Account.configuration.recipientInclude parameter to expose configuration.recipient on an Account.defaultsInclude parameter to expose defaults on an Account.future_requirementsInclude parameter to expose future_requirements on an Account.identityInclude parameter to expose identity on an Account.requirementsInclude parameter to expose requirements on an Account.ReturnsResponse attributesidstringUnique identifier for the Account.objectstring, value is "v2.core.account"String representing the object’s type. Objects of the same type share the same value of the object field.applied_configurationsarray of enumsThe configurations that have been applied to this account.Possible enum valuescustomerThe Account can be used as a customer.merchantThe Account can be used as a merchant.recipientThe Account can be used as a recipient.closednullable booleanIndicates whether the account has been closed.configurationnullable objectAn Account represents a company, individual, or other entity that a user interacts with. Accounts store identity information and one or more configurations that enable product-specific capabilities. You can assign configurations at creation or add them later.Show child attributescontact_emailnullable stringThe default contact email address for the Account. Required when configuring the account as a merchant or recipient.createdtimestampTime at which the object was created. Represented as a RFC 3339 date & time UTC value in millisecond precision, for example: 2022-09-18T13:22:18.123Z.dashboardnullable enumA value indicating the Stripe dashboard this Account has access to. This will depend on which configurations are enabled for this account.Possible enum valuesexpressThe Account has access to the Express hosted dashboard.fullThe Account has access to the full Stripe hosted dashboard.noneThe Account does not have access to any Stripe hosted dashboard.defaultsnullable objectDefault values for settings shared across Account configurations.Show child attributesdisplay_namenullable stringA descriptive name for the Account. This name will be surfaced in the Stripe Dashboard and on any invoices sent to the Account.future_requirementsnullable objectInformation about the future requirements for the Account that will eventually come into effect, including what information needs to be collected, and by when.Show child attributesidentitynullable objectInformation about the company, individual, and business represented by the Account.Show child attributeslivemodebooleanHas the value true if the object exists in live mode or the value false if the object exists in test mode.metadatanullable mapSet of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.requirementsnullable objectInformation about the active requirements for the Account, including what information needs to be collected, and by when.Show child attributesError Codes400account_not_yet_compatible_with_v2Account is not yet compatible with V2 APIs.400accounts_v2_access_blockedAccounts v2 is not enabled for your platform.400v1_account_instead_of_v2_accountV1 Account ID cannot be used in V2 Account APIs.400v1_customer_instead_of_v2_accountV1 Customer ID cannot be used in V2 Account APIs.404not_foundThe resource wasn’t found.GET /v2/core/accounts/:idcurl -G https://api.stripe.com/v2/core/accounts/acct_1Nv0FGQ9RKHgCVdK \ -H "Authorization: Bearer sk_test_BQokikJ...2HlWgH4olfQ2sk_test_YOUR_TEST_KEY_HERE" \ -H "Stripe-Version: {{STRIPE_API_VERSION}}" \ -d "include[0]"=defaults \ -d "include[1]"=identity \ -d "include[2]"="configuration.merchant"Response{ "id": "acct_1Nv0FGQ9RKHgCVdK", "object": "v2.core.account", "applied_configurations": [ "customer", "merchant" ], "configuration": { "merchant": { "applied": "2024-11-26T16:33:03.000Z", "card_payments": { "decline_on": { "avs_failure": false, "cvc_failure": false } }, "capabilities": { "card_payments": { "status": "restricted", "status_details": [ { "code": "requirements_past_due", "resolution": "provide_info" } ] } }, "statement_descriptor": { "descriptor": "accessible.stripe.com" } } }, "contact_email": "furever@example.com", "created": "2024-11-26T16:33:03.000Z", "dashboard": "full", "identity": { "business_details": { "address": { "country": "us" }, "id_numbers": [ { "type": "us_ein" } ], "structure": "sole_proprietorship" }, "country": "us", "entity_type": "company" }, "defaults": { "currency": "usd", "locales": [], "profile": { "business_url": "http://accessible.stripe.com", "doing_business_as": "FurEver", "product_description": "Saas pet grooming platform at furever.dev using Connect embedded components" }, "responsibilities": { "fees_collector": "stripe", "losses_collector": "stripe", "requirements_collector": "stripe" } }, "display_name": "Furever", "livemode": true, "metadata": {}}List accounts v2Ask about this sectionCopy for LLMView as MarkdownReturns a list of Accounts.Learn more about calling API v2 endpoints. Parametersapplied_configurationsarray of enumsFilter only accounts that have all of the configurations specified. If omitted, returns all accounts regardless of which configurations they have.Possible enum valuescustomerThe Account can be used as a customer.merchantThe Account can be used as a merchant.recipientThe Account can be used as a recipient.closedbooleanFilter by whether the account is closed. If omitted, returns only Accounts that are not closed.limitintegerThe upper limit on the number of accounts returned by the List Account request.pagestringThe page token to navigate to next or previous batch of accounts given by the list request.ReturnsResponse attributesdataarray of objectsA list of retrieved Account objects.Show child attributesnext_page_urlnullable stringURL with page token to navigate to next batch of accounts given by the list request.previous_page_urlnullable stringURL with page token to navigate to previous batch of accounts given by the list request.Error Codes400accounts_v2_access_blockedAccounts v2 is not enabled for your platform.GET /v2/core/accountscurl -G https://api.stripe.com/v2/core/accounts \ -H "Authorization: Bearer sk_test_BQokikJ...2HlWgH4olfQ2sk_test_YOUR_TEST_KEY_HERE" \ -H "Stripe-Version: {{STRIPE_API_VERSION}}" \ -d limit=2 \ -d "applied_configurations[0]"=customerResponse{ "data": [ { "id": "acct_1QP3oLBUFVXWiKFB", "object": "v2.core.account", "applied_configurations": [ "customer" ], "contact_email": "jenny.rosen@example.com", "created": "2024-11-25T15:02:50.000Z", "display_name": "Jenny Rosen", "livemode": true, "metadata": {} }, { "id": "acct_1QO24tPeVxUa6gV6", "object": "v2.core.account", "applied_configurations": [ "recipient", "customer", "merchant" ], "contact_email": "jenny.rosen@example.com", "created": "2024-11-22T18:59:45.000Z", "dashboard": "none", "display_name": "Jenny Rosen 2", "livemode": true, "metadata": { "my_key": "my_value" } } ], "next_page_url": "/v2/core/accounts?page=page_5dr8SFDbv7rZ2aj4ZSGuf4J1Dv58yE0YM4BhBqb2tg94CD5PDoUA7RD2AE7VBEH5C0E0qGJi1wMFPf9MEBbh6M125&limit=2&applied_configurations=customer"}Close an account v2Ask about this sectionCopy for LLMView as MarkdownRemoves access to the Account and its associated resources. Closed Accounts can no longer be operated on, but limited information can still be retrieved through the API in order to be able to track their history.Learn more about calling API v2 endpoints. ParametersidstringRequiredThe ID of the Account to close.applied_configurationsarray of enumsConfigurations on the Account to be closed. All configurations on the Account must be passed in for this request to succeed.Possible enum valuescustomerThe Account can be used as a customer.merchantThe Account can be used as a merchant.recipientThe Account can be used as a recipient.ReturnsResponse attributesidstringUnique identifier for the Account.objectstring, value is "v2.core.account"String representing the object’s type. Objects of the same type share the same value of the object field.applied_configurationsarray of enumsThe configurations that have been applied to this account.Possible enum valuescustomerThe Account can be used as a customer.merchantThe Account can be used as a merchant.recipientThe Account can be used as a recipient.closednullable booleanIndicates whether the account has been closed.configurationnullable objectAn Account represents a company, individual, or other entity that a user interacts with. Accounts store identity information and one or more configurations that enable product-specific capabilities. You can assign configurations at creation or add them later.Show child attributescontact_emailnullable stringThe default contact email address for the Account. Required when configuring the account as a merchant or recipient.createdtimestampTime at which the object was created. Represented as a RFC 3339 date & time UTC value in millisecond precision, for example: 2022-09-18T13:22:18.123Z.dashboardnullable enumA value indicating the Stripe dashboard this Account has access to. This will depend on which configurations are enabled for this account.Possible enum valuesexpressThe Account has access to the Express hosted dashboard.fullThe Account has access to the full Stripe hosted dashboard.noneThe Account does not have access to any Stripe hosted dashboard.defaultsnullable objectDefault values for settings shared across Account configurations.Show child attributesdisplay_namenullable stringA descriptive name for the Account. This name will be surfaced in the Stripe Dashboard and on any invoices sent to the Account.future_requirementsnullable objectInformation about the future requirements for the Account that will eventually come into effect, including what information needs to be collected, and by when.Show child attributesidentitynullable objectInformation about the company, individual, and business represented by the Account.Show child attributeslivemodebooleanHas the value true if the object exists in live mode or the value false if the object exists in test mode.metadatanullable mapSet of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.requirementsnullable objectInformation about the active requirements for the Account, including what information needs to be collected, and by when.Show child attributesError Codes400account_not_yet_compatible_with_v2Account is not yet compatible with V2 APIs.400accounts_v2_access_blockedAccounts v2 is not enabled for your platform.400cannot_delete_account_with_balanceAccount with Merchant or Recipient configuration with transfers feature cannot be closed because the account has a cash balance.400cannot_delete_customer_with_available_cash_balanceAccount with Customer configuration cannot be closed because the customer has a cash balance.400configs_must_match_to_closeAccount cannot be closed without specifying the right configurations.400pending_transactions_cannot_be_deletedAccount cannot be closed due to other pending resources.400platform_registration_requiredPlatform has not signed up for Connect and cannot create connected accounts.400stripe_loss_liable_cannot_be_deletedAccount with Stripe-owned loss liability and dashboard cannot be deleted.400v1_account_instead_of_v2_accountV1 Account ID cannot be used in V2 Account APIs.400v1_customer_instead_of_v2_accountV1 Customer ID cannot be used in V2 Account APIs.404not_foundThe resource wasn’t found.POST /v2/core/accounts/:id/closecurl -X POST https://api.stripe.com/v2/core/accounts/acct_1Nv0FGQ9RKHgCVdK/close \ -H "Authorization: Bearer sk_test_BQokikJ...2HlWgH4olfQ2sk_test_YOUR_TEST_KEY_HERE" \ -H "Stripe-Version: {{STRIPE_API_VERSION}}" \ --json '{ "applied_configurations": [ "merchant" ] }'Response{ "id": "acct_1Nv0FGQ9RKHgCVdK", "object": "v2.core.account", "applied_configurations": [ "merchant" ], "contact_email": "jenny.rosen@example.com", "created": "2024-11-26T16:33:03.000Z", "dashboard": "none", "display_name": "Jenny Rosen", "livemode": true, "metadata": {}}Account event types v2Ask about this sectionCopy for LLMView as MarkdownThis is a list of all public thin events we currently send for updates to Account, which are continually evolving and expanding. The payload of thin events is unversioned. During processing, you must fetch the versioned event from the API or fetch the resource’s current state.Event typesTypeFilter events by typeTypev2.core.account.closedThis event occurs when an account is closed.v2.core.account.createdOccurs when an Account is created.v2.core.account.updatedOccurs when an Account is updated.v2.core.account[configuration.customer].capability_status_updatedOccurs when the status of an Account's customer configuration capability is updated.v2.core.account[configuration.customer].updatedOccurs when an Account's customer configuration is updated.v2.core.account[configuration.merchant].capability_status_updatedOccurs when the status of an Account's merchant configuration capability is updated.v2.core.account[configuration.merchant].updatedOccurs when an Account's merchant configuration is updated.v2.core.account[configuration.recipient].capability_status_updatedOccurs when the status of an Account's recipient configuration capability is updated.v2.core.account[configuration.recipient].updatedOccurs when a Recipient's configuration is updated.v2.core.account[defaults].updatedThis event occurs when account defaults are created or updated.v2.core.account[future_requirements].updatedOccurs when an Account's future requirements are updated.v2.core.account[identity].updatedOccurs when an Identity is updated.v2.core.account[requirements].updatedOccurs when an Account's requirements are updated.

configuration.customer

Pattern 8: NoteFor a more immersive guide including details on server driven integration using only the Stripe API, check out the sample integration.A Stripe Terminal integration starts with your point-of-sale application running at a physical location. Your point-of-sale application communicates with a reader through the Terminal SDK to collect in-person payments from your customers. Your backend works with your point-of-sale application to authenticate the Terminal SDK and finalize payments.Before starting your own integration, we recommend setting up one of the Terminal example applications. This will give you a better feel for how the components of a Terminal integration fit together and show you the interactions between the SDK, the reader, your point-of-sale application, and your backend code.Deploy the example backendTo get started with the example applications, set up the Sinatra-based example backend by following the instructions in the README. You can either run the backend locally or deploy it to Render with a free account. The example backend works with the example application to authenticate the Terminal SDK and finalize payments.Run the example applicationBuild and run one of the example applications:JavaScriptiOSAndroidReact NativeClone the example from GitHub:Command Linegit clone https://github.com/stripe/stripe-terminal-js-demo.gitRun the following commands to run the example: Command Linecd stripe-terminal-js-demo npm install npm run startIn the running example, enter the URL of the example backend that you deployed in step 1. Connect to a simulated readerJavaScriptiOSAndroidReact NativeAfter you have the example running, select Use simulator to connect to a simulated reader.The JavaScript example app connected to a simulated readerThe simulated reader handles events just like a physical reader, so you can continue to collecting your first payment.The simulated reader functionality is built into the SDK, so you can use it to develop and test your own point-of-sale application without connecting to a physical device.Collect your first paymentCollect your first payment using the example application and a simulated reader. Each of the examples features an event log for you to reference as you integrate Terminal in your own application. As you collect your first payment, you’ll see the following sequence:Create payment: The example application collects a payment method using the SDK.Collect payment method: The simulated reader receives a card.Process and capture: The example application and backend finalize the payment.Note(Optional) Use separate authorization and capture to add a reconciliation step before finalizing the transaction. You can also automatically capture Terminal transactions.JavaScriptiOSAndroidReact NativeCollecting a payment, using the JavaScript example app and a simulated readerNext stepsDesign an integration

git clone https://github.com/stripe/stripe-terminal-js-demo.git

Example Code Patterns

Example 1 (javascript):

const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY, {
  apiVersion: '2025-11-17.preview'
});

Example 2 (javascript):

const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY, {
  apiVersion: '2025-11-17.preview'
});

Reference Files

This skill includes comprehensive documentation in references/:

  • api.md - Api documentation
  • billing.md - Billing documentation
  • checkout.md - Checkout documentation
  • connect.md - Connect documentation
  • getting_started.md - Getting Started documentation
  • other.md - Other documentation
  • payments.md - Payments documentation
  • security.md - Security documentation
  • testing.md - Testing documentation
  • webhooks.md - Webhooks documentation

Use view to read specific reference files when detailed information is needed.

Working with This Skill

For Beginners

Start with the getting_started or tutorials reference files for foundational concepts.

For Specific Features

Use the appropriate category reference file (api, guides, etc.) for detailed information.

For Code Examples

The quick reference section above contains common patterns extracted from the official docs.

Resources

references/

Organized documentation extracted from official sources. These files contain:

  • Detailed explanations
  • Code examples with language annotations
  • Links to original documentation
  • Table of contents for quick navigation

scripts/

Add helper scripts here for common automation tasks.

assets/

Add templates, boilerplate, or example projects here.

Notes

  • This skill was automatically generated from official documentation
  • Reference files preserve the structure and examples from source docs
  • Code examples include language detection for better syntax highlighting
  • Quick reference patterns are extracted from common usage examples in the docs

Updating

To refresh this skill with updated documentation:

  1. Re-run the scraper with the same configuration
  2. The skill will be rebuilt with the latest information

Score

Total Score

50/100

Based on repository quality metrics

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

0/10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

0/5

Reviews

💬

Reviews coming soon