> ## Documentation Index
> Fetch the complete documentation index at: https://dokumentation.websale.de/llms.txt
> Use this file to discover all available pages before exploring further.

# API reference Stripe onboarding

> Manage connected Stripe accounts via the Admin Interface API: create entries, generate onboarding links, and update or remove account records.

The `payment/stripeonboarding` endpoint provides an interface for managing connected Stripe accounts for shops. It lets you create, view, update and delete these accounts. Additionally, the API generates onboarding links with return and refresh URLs. Access is protected by fine-grained permissions (read/write/create/delete); responses are returned as JSON.

***

## Supported methods

List of all supported methods.

| **Command/Info** | **Endpoints**            | **GET**               | **POST**              | **PUT**               | **DELETE**            |
| ---------------- | ------------------------ | --------------------- | --------------------- | --------------------- | --------------------- |
| **Requests**     | payment/stripeonboarding | <Icon icon="check" /> | <Icon icon="check" /> | <Icon icon="check" /> | <Icon icon="check" /> |

## Stripe onboarding process

Global parameters such as the operating mode are stored in the `payment.stripe` configuration.

#### Data fields of an entry

| **Name**             | **Type** | **Usage**                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| -------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **id**               | Integer  | Internal primary key of the onboarding entry.                                                                                                                                                                                                                                                                                                                                                                                                   |
| **accountId**        | String   | Stripe connected account ID (e.g. `acct_1S6Qs6P7aiy99C1h`).                                                                                                                                                                                                                                                                                                                                                                                     |
| **status**           | Integer  | Current onboarding status, derived from email confirmation, payment capability and response validity, among other things. <br /> Possible values: <br /> `0` = MissingData (mandatory data missing during onboarding) <br /> `1` = MissingTos (terms of service not accepted) <br /> `2` = ChargesDisabled (payment acceptance disabled) <br /> `3` = PayoutDisabled (payouts disabled) <br /> `4` = PayoutEnabled (payments & payouts enabled) |
| **mode**             | Integer  | Operating mode of the entry (determined from the configuration): Production or Test. <br /> Possible values: <br /> `0` = Sandbox <br /> `1` = Live                                                                                                                                                                                                                                                                                             |
| **email**            | String   | Email address of the Stripe account.                                                                                                                                                                                                                                                                                                                                                                                                            |
| **tosAccepted**      | Boolean  | Indicates whether the Stripe terms of service have been accepted.                                                                                                                                                                                                                                                                                                                                                                               |
| **detailsSubmitted** | Boolean  | Indicates whether the onboarding form has been "submitted" at Stripe (`details_submitted`).                                                                                                                                                                                                                                                                                                                                                     |
| **chargesEnabled**   | Boolean  | Indicates whether payments may be created/captured.                                                                                                                                                                                                                                                                                                                                                                                             |
| **payoutsEnabled**   | Boolean  | Indicates whether payouts to the bank account are enabled.                                                                                                                                                                                                                                                                                                                                                                                      |
| **capabilities**     | Object   | Mirror of the Stripe capabilities (e.g. `card_payments`, `transfers`) with status (`active/pending/inactive`). Detailed competence matrix of the account.                                                                                                                                                                                                                                                                                       |
| **paymentMethods**   | Array    | Enabled payment methods.                                                                                                                                                                                                                                                                                                                                                                                                                        |
| **businessType**     | String   | Type of company according to Stripe (`individual`, `company`, `non_profit`, …). May be empty if not yet set.                                                                                                                                                                                                                                                                                                                                    |
| **createdAt**        | String   | Time of creation (ISO 8601 format, UTC).                                                                                                                                                                                                                                                                                                                                                                                                        |
| **updatedAt**        | String   | Time of the last update of the entry (ISO 8601 format, UTC).                                                                                                                                                                                                                                                                                                                                                                                    |
| **deletedAt**        | String   | Time of deletion (ISO 8601 format, UTC). **Note:** The default value `1970-01-01T00:00:00.000Z` signals "not deleted".                                                                                                                                                                                                                                                                                                                          |
| **rawResponse**      | Object   | Complete, unfiltered response of the Stripe Account API (as JSON object) for tracking/debugging.                                                                                                                                                                                                                                                                                                                                                |

#### Example

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
    "accountId": "acct_1S6Qs6P7aiy99C1h",
    "businessType": "",
    "capabilities": {},
    "chargesEnabled": false,
    "createdAt": "2025-09-12T06:54:17.000Z",
    "deletedAt": "1970-01-01T00:00:00.000Z",
    "detailsSubmitted": false,
    "email": "",
    "id": 1,
    "mode": 0,
    "paymentMethods": [
        {
            "available": false,
            "type": "alipay"
        },
        {
            "available": true,
            "type": "amazon_pay"
        },
        {
            "available": true,
            "type": "apple_pay"
        },
        ...
    ],
    "payoutsEnabled": false,
    "rawResponse": { ... },
    "status": 0,
    "tosAccepted": true,
    "updatedAt": "2025-09-12T06:54:17.000Z"
}
```

#### Example of rawResponse

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
    "business_profile": {
        "annual_revenue": null,
        "estimated_worker_count": null,
        "mcc": null,
        "minority_owned_business_designation": null,
        "name": null,
        "support_address": null,
        "support_email": null,
        "support_phone": null,
        "support_url": null,
        "url": null
    },
    "business_type": null,
    "capabilities": {},
    "charges_enabled": false,
    "controller": {
        "fees": {
            "payer": "account"
        },
        "is_controller": true,
        "losses": {
            "payments": "stripe"
        },
        "requirement_collection": "stripe",
        "stripe_dashboard": {
            "type": "full"
        },
        "type": "application"
    },
    "country": "DE",
    "created": 1757660056,
    "default_currency": "eur",
    "details_submitted": false,
    "email": null,
    "external_accounts": {
        "data": [],
        "has_more": false,
        "object": "list",
        "total_count": 0,
        "url": "/v1/accounts/acct_1S6Qs6P7aiy99C1h/external_accounts"
    },
    "future_requirements": {
        "alternatives": [],
        "current_deadline": null,
        "currently_due": [],
        "disabled_reason": null,
        "errors": [],
        "eventually_due": [],
        "past_due": [],
        "pending_verification": []
    },
    "id": "acct_1S6Qs6P7aiy99C1h",
    "metadata": {},
    "object": "account",
    "payouts_enabled": false,
    "requirements": {
        "alternatives": [],
        "current_deadline": null,
        "currently_due": [
            "business_profile.product_description",
            "business_profile.support_phone",
            "business_profile.url",
            "external_account",
            "tos_acceptance.date",
            "tos_acceptance.ip"
        ],
        "disabled_reason": "requirements.past_due",
        "errors": [],
        "eventually_due": [
            "business_profile.product_description",
            "business_profile.support_phone",
            "business_profile.url",
            "external_account",
            "tos_acceptance.date",
            "tos_acceptance.ip"
        ],
        "past_due": [
            "business_profile.product_description",
            "business_profile.support_phone",
            "business_profile.url",
            "external_account",
            "tos_acceptance.date",
            "tos_acceptance.ip"
        ],
        "pending_verification": []
    },
    "settings": {
        "bacs_debit_payments": {
            "display_name": null,
            "service_user_number": null
        },
        "branding": {
            "icon": null,
            "logo": null,
            "primary_color": null,
            "secondary_color": null
        },
        "card_issuing": {
            "tos_acceptance": {
                "date": null,
                "ip": null
            }
        },
        "card_payments": {
            "decline_on": {
                "avs_failure": false,
                "cvc_failure": false
            },
            "statement_descriptor_prefix": null,
            "statement_descriptor_prefix_kana": null,
            "statement_descriptor_prefix_kanji": null
        },
        "dashboard": {
            "display_name": null,
            "timezone": "Etc/UTC"
        },
        "invoices": {
            "default_account_tax_ids": null,
            "hosted_payment_method_save": "offer"
        },
        "payments": {
            "statement_descriptor": null,
            "statement_descriptor_kana": null,
            "statement_descriptor_kanji": null
        },
        "payouts": {
            "debit_negative_balances": true,
            "schedule": {
                "delay_days": 7,
                "interval": "daily"
            },
            "statement_descriptor": null
        },
        "sepa_debit_payments": {}
    },
    "tos_acceptance": {
        "date": null
    },
    "type": "standard"
}
```

## Methods for Stripe onboarding

This section describes the endpoints for managing individual Stripe onboarding entries.

### GET payment/stripeonboarding

This endpoint can be used to load a list of existing onboarding entries for the current shop.

Search and filter parameters from the request are taken into account and limited to `deleted=false`.

To use it, read permissions for Stripe onboarding data are required.

#### Example

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
https://www.<your-shop>.de/admin/api/v1/payment/stripeonboarding?size=100
```

#### Response

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
    "endReached": true,
    "items": [
        {
            "accountId": "acct_1S6Qs6P7aiy99C1h",
            "businessType": "",
            "capabilities": {},
            "chargesEnabled": false,
            "createdAt": "2025-09-12T06:54:17.000Z",
            "deletedAt": "1970-01-01T00:00:00.000Z",
            "detailsSubmitted": false,
            "email": "",
            "id": 1,
            "mode": 0,
            "paymentMethods": [],
            "payoutsEnabled": false,
            "rawResponse": {},
            "status": 0,
            "tosAccepted": false,
            "updatedAt": "2025-09-12T06:54:17.000Z"
        },
        {
            "accountId": "acct_1S6Qs70EemSb0vRy",
            "businessType": "",
            "capabilities": {},
            "chargesEnabled": false,
            "createdAt": "2025-09-12T06:54:18.000Z",
            "deletedAt": "1970-01-01T00:00:00.000Z",
            "detailsSubmitted": false,
            "email": "",
            "id": 2,
            "mode": 0,
            "paymentMethods": [],
            "payoutsEnabled": false,
            "rawResponse": {},
            "status": 0,
            "tosAccepted": false,
            "updatedAt": "2025-09-12T06:54:18.000Z"
        },
        ...
    ],
    "nextPageToken": "Mw",
    "totalCount": 4
}
```

#### Error codes

| **Error**        | **Type**            | **Reason**                                                                                                                        |
| ---------------- | ------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| 401 Unauthorized |                     | Not authorized: you are not logged in.                                                                                            |
| 403 Forbidden    |                     | You do not have the required permissions to read Stripe onboarding data.                                                          |
| 400 Bad Request  | "invalidValue"      | `sort` direction is invalid (not "asc" or "desc"). <br /> `size` ∉ \[1;300] <br /> `pageToken` is not a number or is less than 0. |
| 400 Bad Request  | "unknownDataField"  | A filter or sort field is invalid.                                                                                                |
| 400 Bad Request  | "unknownOperation"  | A filter type is invalid.                                                                                                         |
| 400 Bad Request  | "invalidCharacters" | `size` is not an integer. <br /> A filter value is invalid.                                                                       |
| 400 Bad Request  | "syntaxError"       | `sort` contains more than one or no ":".                                                                                          |

### GET payment/stripeonboarding/\{id}

This endpoint can be used to load a single onboarding entry by its ID.

To use this endpoint, read permissions for Stripe onboarding data are required.

#### Example

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
https://www.<your-shop>.de/admin/api/v1/payment/stripeonboarding/1
```

#### Response

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
    "accountId": "acct_1S6Qs6P7aiy99C1h",
    "businessType": "",
    "capabilities": {},
    "chargesEnabled": false,
    "createdAt": "2025-09-12T06:54:17.000Z",
    "deletedAt": "1970-01-01T00:00:00.000Z",
    "detailsSubmitted": false,
    "email": "",
    "id": 1,
    "mode": 0,
    "paymentMethods": [],
    "payoutsEnabled": false,
    "rawResponse": {},
    "status": 0,
    "tosAccepted": false,
    "updatedAt": "2025-09-12T06:54:17.000Z"
}
```

#### Error codes

| **Error**        | **Type** | **Reason**                                                               |
| ---------------- | -------- | ------------------------------------------------------------------------ |
| 401 Unauthorized |          | Not authorized: you are not logged in.                                   |
| 403 Forbidden    |          | You do not have the required permissions to read Stripe onboarding data. |
| 404 Not Found    |          | The data was not found.                                                  |

### POST payment/stripeonboarding

This endpoint creates a connected Stripe account and creates a local onboarding entry in live or sandbox mode.

The result is an onboarding link (URL) through which the setup can be completed at Stripe.

To use this endpoint, create permissions for Stripe onboarding data are required.

#### Example

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
https://www.<your-shop>.de/admin/api/v1/payment/stripeonboarding
```

#### Request body

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{}
```

#### Response

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
    "url": "https://connect.stripe.com/setup/s/acct_1S7cvB14358LTRqf/0LSOodpShtzK"
}
```

#### Error codes

| **Error**               | **Type**             | **Reason**                                                                           |
| ----------------------- | -------------------- | ------------------------------------------------------------------------------------ |
| 401 Unauthorized        |                      | Not authorized: you are not logged in.                                               |
| 403 Forbidden           |                      | You do not have the required permissions to create Stripe onboarding data.           |
| 503 Service Unavailable | "serviceUnavailable" | No Stripe account could be created. <br /> The onboarding link could not be created. |
| 503 Service Unavailable | "internalError"      | Saving data in the WEBSALE database failed.                                          |

### PUT payment/stripeonboarding/\{id}

This endpoint updates an existing onboarding entry by its ID and distinguishes two meaningful use cases via the `type` field in the request body:\
– `type = "finish"`: The entry is synchronized with the current state of the connected Stripe account. Submitted master data, ToS acceptance, payment enablement and payouts are checked and translated into an understandable status (e.g. "missing data", "ToS not accepted", "payments/payouts disabled" or "payouts enabled"). Additionally, email, capabilities, the default configuration of payment methods and the unchanged raw response are saved. The result is the updated entry as JSON.\
– `type = "refresh"`: A new onboarding link is created so that the merchant can seamlessly continue the setup at Stripe (e.g. after an interruption or when further details are required).

To use this endpoint, write permissions for Stripe onboarding data are required.

#### Example

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
https://www.<your-shop>.de/admin/api/v1/payment/stripeonboarding/2
```

#### Request body

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
    "type": "finish"
}
```

#### Response when `type` equals `"finish"`

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
    "accountId": "acct_1S7cvB14358LTRqf",
    "businessType": "",
    "capabilities": {},
    "chargesEnabled": false,
    "createdAt": "2025-09-15T13:58:24.000Z",
    "deletedAt": "1970-01-01T00:00:00.000Z",
    "detailsSubmitted": false,
    "email": "",
    "id": 2,
    "mode": 0,
    "paymentMethods": [
        {
            "available": false,
            "type": "alipay"
        },
        {
            "available": false,
            "type": "amazon_pay"
        },
        {
            "available": true,
            "type": "apple_pay"
        },
        {
            "available": false,
            "type": "bancontact"
        },
        {
            "available": false,
            "type": "billie"
        },
        {
            "available": false,
            "type": "blik"
        },
        {
            "available": true,
            "type": "card"
        },
        {
            "available": false,
            "type": "cartes_bancaires"
        },
        {
            "available": false,
            "type": "customer_balance"
        },
        {
            "available": false,
            "type": "eps"
        },
        {
            "available": false,
            "type": "giropay"
        },
        {
            "available": false,
            "type": "google_pay"
        },
        ...
    ],
    "payoutsEnabled": false,
    "rawResponse": {
        "business_profile": {
            "annual_revenue": null,
            "estimated_worker_count": null,
            "mcc": null,
            "minority_owned_business_designation": null,
            "name": null,
            "support_address": null,
            "support_email": null,
            "support_phone": null,
            "support_url": null,
            "url": null
        },
        "business_type": null,
        "capabilities": {},
        "charges_enabled": false,
        "controller": {
            "fees": {
                "payer": "account"
            },
            "is_controller": true,
            "losses": {
                "payments": "stripe"
            },
            "requirement_collection": "stripe",
            "stripe_dashboard": {
                "type": "full"
            },
            "type": "application"
        },
        "country": "DE",
        "created": 1757944702,
        "default_currency": "eur",
        "details_submitted": false,
        "email": null,
        "external_accounts": {
            "data": [],
            "has_more": false,
            "object": "list",
            "total_count": 0,
            "url": "/v1/accounts/acct_1S7cvB14358LTRqf/external_accounts"
        },
        "future_requirements": {
            "alternatives": [],
            "current_deadline": null,
            "currently_due": [],
            "disabled_reason": null,
            "errors": [],
            "eventually_due": [],
            "past_due": [],
            "pending_verification": []
        },
        "id": "acct_1S7cvB14358LTRqf",
        "metadata": {},
        "object": "account",
        "payouts_enabled": false,
        "requirements": {
            "alternatives": [],
            "current_deadline": null,
            "currently_due": [
                "business_profile.product_description",
                "business_profile.support_phone",
                "business_profile.url",
                "external_account",
                "tos_acceptance.date",
                "tos_acceptance.ip"
            ],
            "disabled_reason": "requirements.past_due",
            "errors": [],
            "eventually_due": [
                "business_profile.product_description",
                "business_profile.support_phone",
                "business_profile.url",
                "external_account",
                "tos_acceptance.date",
                "tos_acceptance.ip"
            ],
            "past_due": [
                "business_profile.product_description",
                "business_profile.support_phone",
                "business_profile.url",
                "external_account",
                "tos_acceptance.date",
                "tos_acceptance.ip"
            ],
            "pending_verification": []
        },
        "settings": {
            "bacs_debit_payments": {
                "display_name": null,
                "service_user_number": null
            },
            "branding": {
                "icon": null,
                "logo": null,
                "primary_color": null,
                "secondary_color": null
            },
            "card_issuing": {
                "tos_acceptance": {
                    "date": null,
                    "ip": null
                }
            },
            "card_payments": {
                "decline_on": {
                    "avs_failure": false,
                    "cvc_failure": false
                },
                "statement_descriptor_prefix": null,
                "statement_descriptor_prefix_kana": null,
                "statement_descriptor_prefix_kanji": null
            },
            "dashboard": {
                "display_name": null,
                "timezone": "Etc/UTC"
            },
            "invoices": {
                "default_account_tax_ids": null,
                "hosted_payment_method_save": "offer"
            },
            "payments": {
                "statement_descriptor": null,
                "statement_descriptor_kana": null,
                "statement_descriptor_kanji": null
            },
            "payouts": {
                "debit_negative_balances": true,
                "schedule": {
                    "delay_days": 7,
                    "interval": "daily"
                },
                "statement_descriptor": null
            },
            "sepa_debit_payments": {}
        },
        "tos_acceptance": {
            "date": null
        },
        "type": "standard"
    },
    "status": 0,
    "tosAccepted": true,
    "updatedAt": "2025-09-15T13:58:24.000Z"
}
```

#### Response when `type` equals `"refresh"`

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
    "url": "https://connect.stripe.com/setup/s/acct_1S7dWp1yCkcDDzUj/biADCkORd6Jm"
}
```

#### Error codes

| **Error**               | **Type**             | **Reason**                                                                                                                 |
| ----------------------- | -------------------- | -------------------------------------------------------------------------------------------------------------------------- |
| 401 Unauthorized        |                      | Not authorized: you are not logged in.                                                                                     |
| 403 Forbidden           |                      | You do not have the required permissions to write Stripe onboarding data.                                                  |
| 400 Bad Request         |                      | Request body could not be loaded.                                                                                          |
| 400 Bad Request         | "invalidValue"       |                                                                                                                            |
| 404 Not Found           |                      | `id` is missing or is not an integer. <br /> The entry was not found in the WEBSALE database. <br /> Updating data failed. |
| 503 Service Unavailable | "serviceUnavailable" | The Stripe account could not be loaded. <br /> The onboarding link could not be created.                                   |

### DELETE payment/stripeonboarding/\{id}

This endpoint can be used to remove an existing onboarding entry by its ID.

The account at Stripe remains, but the current shop will no longer process payments for this account.

To use this endpoint, delete permissions for Stripe onboarding data are required.

#### Example

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
https://www.<your-shop>.de/admin/api/v1/payment/stripeonboarding/3
```

#### Response

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
    "success": true
}
```

#### Error codes

| **Error**        | **Type** | **Reason**                                                                 |
| ---------------- | -------- | -------------------------------------------------------------------------- |
| 401 Unauthorized |          | Not authorized: you are not logged in.                                     |
| 403 Forbidden    |          | You do not have the required permissions to delete Stripe onboarding data. |
| 404 Not Found    |          | No entry was found, or the deletion failed.                                |

## Support

Bei technischen Fragen und Hilfestellungen ist unser Support-Team für Sie erreichbar: [Zum Kundenportal](https://websale.atlassian.net/servicedesk/customer/portal/6)

Bitte senden Sie uns eine möglichst detaillierte Beschreibung sowie Screenshots, Requests/Antworten, damit wir Ihre Anfrage zeitnah und zielführend beantworten können.
