> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://ixopay.ferndocs.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://ixopay.ferndocs.com/_mcp/server.

# Stripe

This page provides an overview of the payments methods provided by the Stripe adapter in the IXOPAY platform. It also includes a full list of all configuration options available to you when integrating Stripe within your payments landscape, as well as an overview of the parameters required when submitting a transaction via IXOPAY's API.

## Payment Methods

| Payment Method              | Transaction Flows                         | Transaction Types                                     |
| --------------------------- | ----------------------------------------- | ----------------------------------------------------- |
| Creditcard                  | payment.js Integration                    | All                                                   |
| Giropay                     | Full-page Redirect                        | Debit                                                 |
| iDeal                       | Full-page Redirect                        | Debit                                                 |
| Sofort                      | Full-page Redirect                        | Debit                                                 |
| Bancontact                  | Full-page Redirect                        | Debit                                                 |
| DirectDebit                 | Server-to-Server                          | Register, Debit, Refund                               |
| Pre-Authorized debit (ACSS) | Full-page Redirect & Server-to-Server     | Register, Debit, Refund                               |
| ACH                         | Full-page Redirect & Server-to-Server     | Register, Debit, Refund                               |
| ACH Credit Transfer         | Server-to-Server and push-in transactions | Register, Debit (pushed via Stripe's Webhook), Refund |

> **Note**
>
> NOTE: the payment.js integration differs from the general implementation.
>
> Stripe does not support to render card number and CVC/CVV fields in different DIV elements, but uses a standard widget to collect card data. Hence, only the `numberDivId` will be considered, and the `cvvDivId` is ignored.

## Additional Parameters

### ACSS/Pre-Authorized debit ("PAD")

Prior to being able to charge the customer, the merchant must verify that the account is owned by the customer and obtain a mandate. This may be either achieved with a successful `Register` transaction or a`Debit` transaction with the `withRegister` flag set.

Additionally, the merchant is required to pass on the following data when trying to acquire the initial mandate.

| Transaction fields                    | Required                                                                    | Description                                                                                                                                                                      |
| ------------------------------------- | --------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `customer.email`                      | **true**                                                                    |                                                                                                                                                                                  |
| `customer.firstName`                  | **true**                                                                    |                                                                                                                                                                                  |
| `customer.lastName`                   | **true**                                                                    |                                                                                                                                                                                  |
| `extraData.acss_transaction_type`     | **true**                                                                    | The type of the mandate. Valid values are `personal` (B2C) and `business` (B2B)                                                                                                  |
| `extraData.acss_payment_schedule`     | **true**                                                                    | The [Payment schedule](https://stripe.com/docs/payments/acss-debit#payment-schedule) for the mandate. Valid values are `spoardic`, `interval` or `combined`                      |
| `extraData.acss_interval_description` | **true** , if `extraData.acss_payment_schedule` is `interval` or `combined` | A description, based on which criteria the interval-related payments may be triggered (refer to [Stripe's documentation](https://stripe.com/docs/payments/acss-debit#mandates)). |

For subsequent transactions, these data are not required anymore.

### ACH

Prior to being able to charge the customer, the merchant must verify that the account is owned by the customer and obtain a mandate. This may be either achieved with a successful `Register` transaction or a`Debit` transaction with the `withRegister` flag set.

Additionally, the merchant is required to pass on the following data when trying to acquire the initial mandate.

| Transaction fields   | Required | Description |
| -------------------- | -------- | ----------- |
| `customer.email`     | **true** |             |
| `customer.firstName` | **true** |             |
| `customer.lastName`  | **true** |             |

For subsequent transactions, these data are not required anymore.

### ACH Credit Transfer

In order to provision and retrieve a VBAN from Stripe, send a `Register` transaction. The bank data are included in the response object.

| Transaction fields | Required | Description               |
| ------------------ | -------- | ------------------------- |
| `customer.email`   | **true** | for register transactions |

### Creditcard

| Parameter                       | Required  | Description                                                                                                                     |
| ------------------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `extradata.isFinalCapture`      | **false** | Boolean parameter that can be sent with the \`Capture' API request to indicate if it should be a final capture                  |
| `extradata.statementDescriptor` | **false** | In case of using the connector setting 'Use extraData statementDescriptor', statement descriptor will be mapped from this field |

### Postback Extra Data for Credit Card

| Parameter                       | Value                                                                                                                                                                                                                                                |
| ------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `authentication_flow`           | For authenticated transactions: how the customer was authenticated by the issuing bank. For possible values see [Stripe API reference](https://stripe.com/docs/api/charges/object#charge_object-payment_method_details-card-three_d_secure)          |
| `electronic_commerce_indicator` | A protocol-level field indicating what degree of authentication was performed. For possible values see [Stripe API reference](https://stripe.com/docs/api/charges/object#charge_object-payment_method_details-card-three_d_secure)                   |
| `exemption_indicator`           | The exemption requested via 3DS and accepted by the issuer at authentication time. For possible values see [Stripe API reference](https://stripe.com/docs/api/charges/object#charge_object-payment_method_details-card-three_d_secure)               |
| `exemption_indicator_applied`   | Whether Stripe requested the value of exemption\_indicator in the transaction. For possible values see [Stripe API reference](https://stripe.com/docs/api/charges/object#charge_object-payment_method_details-card-three_d_secure)                   |
| `result`                        | Indicates the outcome of 3D Secure authentication. For possible values see [Stripe API reference](https://stripe.com/docs/api/charges/object#charge_object-payment_method_details-card-three_d_secure)                                               |
| `result_reason`                 | Additional information about why 3D Secure succeeded or failed based on the result. For possible values see [Stripe API reference](https://stripe.com/docs/api/charges/object#charge_object-payment_method_details-card-three_d_secure)              |
| `transaction_id`                | The 3D Secure 1 XID or 3D Secure 2 Directory Server Transaction ID (dsTransId) for this payment. For possible values see [Stripe API reference](https://stripe.com/docs/api/charges/object#charge_object-payment_method_details-card-three_d_secure) |
| `version`                       | The version of 3D Secure that was used. For possible values see [Stripe API reference](https://stripe.com/docs/api/charges/object#charge_object-payment_method_details-card-three_d_secure)                                                          |

### Account Funding Transactions (AFTs)

Refer to: [https://docs.stripe.com/payments/aft](https://docs.stripe.com/payments/aft) (page restricted; request access from Stripe)

For description of Stripe request fields refer to: [https://docs.stripe.com/payments/aft/integration-guide](https://docs.stripe.com/payments/aft/integration-guide) (page restricted; request access from Stripe)

It's required to enable AFT transactions by marking "Enable Account Funding Transactions" checkbox in connector Config (for PCI connectors in Vault Setup).

| Parameter                             | Required  | Value              | Stripe request field                                                            |
| ------------------------------------- | --------- | ------------------ | ------------------------------------------------------------------------------- |
| `extradata.recipientFirstName`        | **false** |                    | `recipient_details.first_name`                                                  |
| `extradata.recipientLastName`         | **false** |                    | `recipient_details.last_name`                                                   |
| `extradata.recipientEmail`            | **false** |                    | `recipient_details.email`                                                       |
| `extradata.recipientPhone`            | **false** |                    | `recipient_details.phone`                                                       |
| `extradata.recipientAddress1`         | **false** |                    | `recipient_details.address.line1`                                               |
| `extradata.recipientAddress2`         | **false** |                    | `recipient_details.address.line2`                                               |
| `extradata.recipientCity`             | **false** |                    | `recipient_details.address.city`                                                |
| `extradata.recipientState`            | **false** |                    | `recipient_details.address.state`                                               |
| `extradata.recipientCountry`          | **false** |                    | `recipient_details.address.country`                                             |
| `extradata.recipientZip`              | **false** |                    | `recipient_details.address.postal_code`                                         |
| `extradata.recipientAccountReference` | **false** |                    | `recipient_details.account_details.unique_identifier.identifier`                |
| `extradata.recipientCardFirst6`       | **false** |                    | `recipient_details.account_details.card.first6`                                 |
| `extradata.recipientCardLast4`        | **false** |                    | `recipient_details.account_details.card.last4`                                  |
| `extradata.recipientBankAccount`      | **false** |                    | `recipient_details.account_details.bank.account_number`                         |
| `customer.firstName`                  | **false** |                    | `sender_details.first_name`                                                     |
| `customer.lastName `                  | **false** |                    | `sender_details.last_name`                                                      |
| `customer.birthDate`                  | **false** | format: YYYY-MM-DD | `sender_details.dob.year`, `sender_details.dob.month`, `sender_details.dob.day` |
| `customer.billingAddress1`            | **false** |                    | `sender_details.address.line1`                                                  |
| `customer.billingAddress2`            | **false** |                    | `sender_details.address.line2`                                                  |
| `customer.billingCity`                | **false** |                    | `sender_details.address.city`                                                   |
| `customer.billingCountry`             | **false** |                    | `sender_details.address.country`                                                |
| `customer.email`                      | **false** |                    | `sender_details.email`                                                          |
| `extradata.senderOccupation`          | **false** |                    | `sender_details.occupation`                                                     |
| `extradata.senderNationality`         | **false** |                    | `sender_details.nationality`                                                    |
| `extradata.senderBirthCountry`        | **false** |                    | `sender_details.birth_country`                                                  |

## Extended Authorization

| Parameter                              | Required | Description                                                                      |
| -------------------------------------- | -------- | -------------------------------------------------------------------------------- |
| extraData.requestExtendedAuthorization | optional | Overwrites the connector configuration. Possible values: `if_available`, `never` |

Refer to [https://docs.stripe.com/payments/extended-authorization](https://docs.stripe.com/payments/extended-authorization)

### Postback/Response Extra Data for Extended Authorization

refer to [https://docs.stripe.com/terminal/features/extended-authorizations](https://docs.stripe.com/terminal/features/extended-authorizations)

| Extra Data Parameter                                                      | Value                                                 |
| ------------------------------------------------------------------------- | ----------------------------------------------------- |
| charges.data.payment\_method\_details.card.extended\_authorization.status | Extended authorization status                         |
| charges.data.payment\_method\_details.card.capture\_before                | Validity window for an authorisation - UNIX timestamp |

```json
Example
  "extraData": {
      "charges.data.payment_method_details.card.extended_authorization.status": "enabled",
      "charges.data.payment_method_details.card.capture_before": 1732878746
  },
```