---
title: "Pay By Bank"
description: "Fabrick Pay by Bank is an A2A payment method based on standard or instant SEPA credit transfers, compliant with PSD2. In this guide you will learn how to activate it, configure it on Fabrick Payment Orchestra and integrate it correctly into your e-commerce."
url: "https://docs.fabrick.com/en/payment-hub-and-orchestra/ecommerce/alternative-payments/pay-by-bank/"
language: "en"
---

# Pay By Bank

## Why choose Pay By Bank

**Fabrick Pay by Bank** is an **A2A (Account-to-Account)** payment method based on standard or instant SEPA credit transfers, compliant with PSD2 and integrated into Fabrick Payment Orchestra.

It allows merchants to receive funds directly into their bank account — whether held with Banca Sella or with another institution — through a smooth and secure payment experience, with no need for the buyer to log in to their internet banking manually.

> **Learn more**
>
> For further information see the [official Fabrick documentation](https://www.fabrick.com/it-it/prodotti/pay-by-bank/)

---

## Services and features available through the Fabrick integration

Integrating Pay By Bank with Fabrick Payment Orchestra gives you access to the following features:

- **A2A payment via SEPA credit transfer**: the payment is initiated directly from the buyer's bank account, as a standard or instant transfer, depending on what their bank supports.
- **PSD2 and Open Banking compliance**: authentication and authorization of the payment take place through a direct connection with the buyer's bank, in line with PSD2.
- **Irrevocable payment**: once confirmed, the transfer cannot be reversed by the buyer. The risk of disputes and chargebacks for the merchant is effectively eliminated.
- **Lower costs than cards and wallets**: operating costs are lower than on traditional schemes, an advantage that grows with the transaction amount.
- **Choice of transfer type**: standard, instant or both, depending on the shop configuration and on the `Method` field of the request (see [ProviderPaymentDetails](https://docs.fabrick.com/en/payment-hub-and-orchestra/ecommerce/alternative-payments/pay-by-bank/#providerpaymentdetails)).
- **Structured payment reference**: the bank reference is always populated by Payment Orchestra, with the option of adding a custom value (see [Payment reference](https://docs.fabrick.com/en/payment-hub-and-orchestra/ecommerce/alternative-payments/pay-by-bank/#payment-reference)).
- **Automatic reconciliation**: available to merchants with a Banca Sella account, thanks to direct visibility of the credit (see [Reconciliation and credit visibility](https://docs.fabrick.com/en/payment-hub-and-orchestra/ecommerce/alternative-payments/pay-by-bank/#reconciliation-and-credit-visibility)).
- **Asynchronous outcome notification**: the payment outcome is notified through a server-to-server notification, including for standard transfers, once the receiving bank has confirmed it.
- **Guided user experience**: the flow takes the buyer through each step, on mobile too, using the bank authentication they already know.

> **Accounts outside Banca Sella**
>
> The method can be used with an account held at an institution other than Banca Sella, but Fabrick **does not receive updates on the actual credit** of the transfer: reconciliation must be carried out manually by the merchant.

### Payment experience for the buyer

1. At checkout the buyer selects **Fabrick Pay by Bank** as the payment method
2. They choose their bank
3. Where the configuration allows it, they select the transfer type (standard or instant)
4. They complete the authentication through **Strong Customer Authentication (SCA)**
5. At the end of the operation, the buyer sees the outcome of the payment

> **Pre-filled data**
>
> By populating `CustomerDetail` in the payment request, the buyer **skips the step of entering their details manually**, reducing friction at checkout (see [CustomerDetail](https://docs.fabrick.com/en/payment-hub-and-orchestra/ecommerce/alternative-payments/pay-by-bank/#customerdetail)).

### Payment reference

The bank reference is **always populated** by Fabrick Payment Orchestra, in the following format:

```text
AAMMGGn shopTransactionID bankID
```

The `AAMMGGn` prefix is made up of the date and a unique number:

| Component | Description                                      |
| --------- | ------------------------------------------------ |
| `AA`      | Last two digits of the year (e.g. `25` for 2025) |
| `MM`      | Two-digit month (e.g. `04` for April)            |
| `GG`      | Two-digit day (e.g. `17`)                        |
| `n`       | Incremental daily counter (`1`, `2`, `3`…)       |

The **Shop Transaction ID** and the **Bank ID** are appended to the prefix:

```text
2504171 123456423 123
```

- `2504171` — fixed prefix
- `123456423` — Shop Transaction ID
- `123` — Bank ID

> **Custom payment reference**
>
> You can replace the Shop Transaction ID and the Bank ID with text of your choice by populating the `BankTransferDescription` field in the payment request (see [BankTransferDescription](https://docs.fabrick.com/en/payment-hub-and-orchestra/ecommerce/alternative-payments/pay-by-bank/#banktransferdescription)).

### Payment statuses

| Payment Orchestra status | Payment Orchestra result | Fabrick Dashboard status | Meaning                               |
| ------------------------ | ------------------------ | ------------------------ | ------------------------------------- |
| `AUT`                    | `XX` (Pending)           | Pending                  | Payment started but not yet confirmed |
| `AUT`                    | `KO`                     | Failed                   | Payment unsuccessful                  |
| `MOV`                    | `OK`                     | Captured                 | Payment confirmed                     |

**Pending.** For a **standard transfer** the outcome depends on the timings of the buyer's bank and on the time of the authorization. For an **instant transfer** the outcome arrives within seconds or minutes: for Banca Sella accounts the update is immediate, for other banks it may take longer.

**Captured.** For Banca Sella accounts this means the amount has been credited to the merchant's account. For other institutions it means the buyer's bank has confirmed the execution of the payment, without Fabrick having visibility of the actual credit.

> **Captured ≠ credited**
>
> For merchants with an account at an institution other than Banca Sella, the *Captured* status (`MOV` / `OK`) does not certify the credit: it only attests that the buyer's bank has executed the transfer. Verifying the actual credit and reconciling it remain the merchant's responsibility.

### Reconciliation and credit visibility

| Account type          | Reconciliation | *Captured* status = credit |
| --------------------- | -------------- | -------------------------- |
| **Banca Sella**       | Automatic      | ✅ Yes                      |
| **Other institution** | Manual         | ❌ No                       |

**Merchants with a Banca Sella account.** Fabrick has direct visibility of the account: the credit is detected automatically and matched to the transaction. The *Captured* status is assigned **only after the actual credit has been verified**.

**Merchants with an account at other institutions.** Fabrick has no access to the merchant's account, so reconciliation is manual. The *Captured* status is assigned once the transfer has been successfully executed by the payer's bank, but it does not imply that the credit has been verified.

> **Buyer IBAN**
>
> For Pay By Bank transactions, the **Buyer IBAN** field is available in the Dashboard, showing the IBAN the payment was made from.

---

## Pay By Bank on Fabrick Payment Orchestra: activation and integration types

### Activation request

To start accepting Pay By Bank payments, you can request the activation:

- By contacting your sales representative
- By contacting support at the following [link](https://landing.fabrick.com/fabrick-dashboard-support)

Once the required procedures are complete:

- Fabrick enables Pay By Bank on the shop and informs the merchant.
- You can verify that the payment method is active in the Dashboard, under **Workspace → Shops → \[Select shop] → Settings**

![Pay By Bank - Activation](https://docs.fabrick.com/en/assets/images/pbb-attivazione-89e8b5cf6226e351f1085db0b20a3c49.png)

> **Activation complete**
>
> From this moment on, your e-commerce is ready to accept Pay By Bank payments through Fabrick Payment Orchestra.

### Integration types

Fabrick offers two integration types for Pay By Bank:

- **Hosted integration**

  ### Supported integrations

  ✓ — Checkout Page

  ✓ — Pay By Link

  ✓ — Web Component

  ✓ — Lightbox

  Pay By Bank is displayed directly on the Fabrick payment page, with no development work required on the merchant's side. Fabrick handles the display of the payment method and the entire processing phase.

- **API integration**

  ### Supported integrations

  ✓ — API Only

  The redirect to Pay By Bank is handled directly through the API. You need to initialise the transaction with `payment/create`, setting the `paymentType` field to the **`FABRICKPASS`** tag, and handle the buyer's redirect.

> **Testing Pay By Bank in the sandbox environment**
>
> In the test environment you can simulate successful, failed and pending outcomes using the Mock bank credentials, with no real transfers executed. See [Test environment](https://docs.fabrick.com/en/payment-hub-and-orchestra/ecommerce/alternative-payments/pay-by-bank/#test-environment).

---

## Hosted integration

**Pay By Bank is displayed directly on the Fabrick payment page**, with no additional development work on the merchant's side. Fabrick handles the display of the payment method and the entire transaction processing phase.

To set up the call for the hosted integration, go to the [creating the transaction and redirecting to Pay By Bank](https://docs.fabrick.com/en/payment-hub-and-orchestra/ecommerce/alternative-payments/pay-by-bank/#creating-the-transaction-and-redirecting-to-pay-by-bank) section and **remove the `paymentType` field** from the `payment/create` call.

![Payment page with Pay By Bank](https://docs.fabrick.com/en/assets/images/checkout-page-pbb-c7de6784e811fd16cf960952847b117b.png)

When the user selects Pay By Bank, they are redirected to the service to complete the payment.

![Payment page with Pay By Bank](https://docs.fabrick.com/en/assets/images/pbb-1-82d116a65dd31e7d08a9352e7981eca0.png)

---

## API integration

To request a Pay By Bank payment using the API integration, you need to initialise the transaction with `payment/create` using the **`FABRICKPASS`** tag in the `paymentType` field.

### Creating the transaction and redirecting to Pay By Bank

**Request**

```http
POST /api/v1/payment/create
Host (sandbox): sandbox.gestpay.net
Host (production): ecomms2s.sella.it
Authorization: apikey ****************
Content-Type: application/json
```

```json
{
    "shopLogin": "GESPAY12345",
    "amount": "10",
    "currency": "EUR",
    "shopTransactionID": "FBK_OrderID",
    "paymentType": ["FABRICKPASS"], // Remove this line for the hosted integration
    "paymentChannel": { "channelType": ["LINK"] },
    "OrderDetails": {
        "CustomerDetail": {
            "FirstName": "John",
            "Lastname": "Doe",
            "PrimaryEmail": "buyer@email.com",
            "Iban": "IT74M0339512900052633342960"
        },
        "BankTransferDescription": "reference 123",
        "ProviderPaymentDetails": {
            //"Method": "sepa-credit-transfers"
            "Method": "instant-sepa-credit-transfers"
        }
    }
}
```

> **Method field**
>
> The `Method` field is optional. If it is populated, the mode it specifies is binding (see [ProviderPaymentDetails](https://docs.fabrick.com/en/payment-hub-and-orchestra/ecommerce/alternative-payments/pay-by-bank/#providerpaymentdetails)).

> **Pay By Bank button**
>
> The returned link can be used under a *Pay with Pay By Bank* button, in line with the [brand usage guidelines](https://www.fabrick.com/en-gb/pay-by-bank/).

### Checking the payment outcome

The outcome of the transaction can be checked through the `GET payment/detail` call or directly from the Fabrick Dashboard.

**Request**

```http
GET /api/v1/payment/detail/{paymentID}
Host (sandbox): sandbox.gestpay.net
Host (production): ecomms2s.sella.it
Authorization: apikey ****************
Content-Type: application/json
```

> **Interpreting the status**
>
> For merchants with a Banca Sella account the *Captured* status corresponds to the actual credit. For merchants with an account at other banks it only indicates that execution has been confirmed by the buyer's bank (see [Reconciliation and credit visibility](https://docs.fabrick.com/en/payment-hub-and-orchestra/ecommerce/alternative-payments/pay-by-bank/#reconciliation-and-credit-visibility)).

---

## Fields to send in the call to Pay By Bank

Pay By Bank requires no specific fields beyond those common to all transactions: the parameters described below are **all optional** and let you customise the behaviour of the payment.

### ProviderPaymentDetails

In the payment creation request you can include the optional field `OrderDetails.ProviderPaymentDetails.Method`, which defines the payment mode to be used.

| Value                           | Type              |
| ------------------------------- | ----------------- |
| `sepa-credit-transfers`         | Standard transfer |
| `instant-sepa-credit-transfers` | Instant transfer  |

> **Binding field**
>
> If the `Method` field is populated, the mode it specifies is **binding**: the payment is executed with that mode only and the buyer cannot change it during the payment.

If the field is not populated, the buyer chooses between standard and instant transfer, based on what their own bank offers.

### CustomerDetail

Populating `CustomerDetail` in full allows the buyer to skip entering their details manually during the payment flow.

![Payment page with Pay By Bank CustomerDetail](https://docs.fabrick.com/en/assets/images/pbb-2-9a320b0d40514013fa1c4ea900470223.png)

| Field                                      | Description                                                                                      |
| ------------------------------------------ | ------------------------------------------------------------------------------------------------ |
| `OrderDetails.CustomerDetail.FirstName`    | Buyer's first name                                                                               |
| `OrderDetails.CustomerDetail.Lastname`     | Buyer's last name                                                                                |
| `OrderDetails.CustomerDetail.PrimaryEmail` | E-mail of the account holder                                                                     |
| `OrderDetails.CustomerDetail.Iban`         | IBAN of the account the buyer pays from. If it is populated, the buyer skips the IBAN entry page |

> **PrimaryEmail**
>
> `PrimaryEmail` identifies the **account holder** and can be left empty in the request: in that case it is requested directly on the payment page.

### BankTransferDescription

The `OrderDetails.BankTransferDescription` field lets you **replace the variable part of the payment reference** with text defined by the merchant. When it is populated, Payment Orchestra appends this value to the fixed prefix in place of the Shop Transaction ID and the Bank ID (see [Payment reference](https://docs.fabrick.com/en/payment-hub-and-orchestra/ecommerce/alternative-payments/pay-by-bank/#payment-reference)).

| Field                                  | Max | Description                                                                                                          |
| -------------------------------------- | --- | -------------------------------------------------------------------------------------------------------------------- |
| `OrderDetails.BankTransferDescription` | 120 | Custom value of the payment reference. Without it, the prefix is followed by the Shop Transaction ID and the Bank ID |

Sending `"BankTransferDescription": "reference 123"` produces the following reference:

```text
2504171 reference 123
```

- `2504171` — fixed prefix, generated by Payment Orchestra
- `reference 123` — value sent by the merchant

The custom value is useful when the reference needs to carry something the merchant or their customer can recognise — an order number, a contract code, the name of a subscription service — instead of the technical identifiers generated by the gateway.

> **Allowed characters**
>
> Only **alphanumeric characters and the space** are allowed in the custom value of the payment reference. Using other special characters may cause errors when generating the reference, or issues in the receiving banking systems.

---

## Test environment

To test the payment method:

1. Initialise the transaction with `payment/create`, setting the **amount** shown in the **Test data** table according to the outcome you want to obtain
2. Select the transfer type — `instant-sepa-credit-transfers` or `sepa-credit-transfers` — by populating the `Method` field in the call, or select the mode directly on the payment page
3. Complete the payment using the **user**, **password** and **OTP** shown in the same row of the table: it is the combination of user and amount that determines the outcome

### Test data

**Instant transfer**

| Bank | User     | Password   | OTP        | Amount       | Authentication        | Wait (s) | Outcome   |
| ---- | -------- | ---------- | ---------- | ------------ | --------------------- | -------- | --------- |
| Mock | `user05` | `passwd05` | `22222222` | any          | Redirect - IBAN IT09Y | 0        | ✅ OK      |
| Mock | `user04` | `passwd04` | `11111111` | 2, 20 or 200 | Redirect/Embedded     | 60       | ⏳ XX → OK |
| Mock | `user04` | `passwd04` | `11111111` | 5, 50 or 500 | Redirect/Embedded     | 60       | ❌ XX → KO |
| Mock | `user06` | `passwd06` | `33333333` | any          | Embedded              | 0        | ❌ KO      |

**Standard transfer**

| Bank | User     | Password   | OTP        | Amount       | Authentication        | Wait (s) | Outcome   |
| ---- | -------- | ---------- | ---------- | ------------ | --------------------- | -------- | --------- |
| Mock | `user05` | `passwd05` | `22222222` | any          | Redirect - IBAN IT41K | 0        | ✅ OK      |
| Mock | `user04` | `passwd04` | `11111111` | 2, 20 or 200 | Redirect/Embedded     | 120      | ⏳ XX → OK |
| Mock | `user04` | `passwd04` | `11111111` | 5, 50 or 500 | Redirect/Embedded     | 120      | ❌ XX → KO |
| Mock | `user06` | `passwd06` | `33333333` | any          | Embedded              | 0        | ❌ KO      |

> **Pending status (XX)**
>
> In the rows with outcome `XX → OK` and `XX → KO` the transaction stays temporarily in **pending** status before the final outcome arrives: this is the typical behaviour of payments with an asynchronous outcome, which Pay By Bank is one of.
>
> In this scenario the merchant receives **two server-to-server notifications**: the first with status `XX`, at the time of the authorization, the second when the outcome becomes final (`OK` or `KO`).
>
> While the status is `XX`, do not ship the goods or deliver the service: wait for the second notification. The buyer is redirected to the success URL in any case, so the redirect alone is not enough to consider the order paid

![Selecting the Mock bank in the test environment](https://docs.fabrick.com/en/assets/images/pbb-3-028fe69d4cec3c8427ace5902c360bbd.png)

![Confirming the payment with the Mock bank](https://docs.fabrick.com/en/assets/images/pbb-4-b7b29d70e55ad1dd997ba189d653fce2.png)

---

## FAQ

**Can I offer instant transfers only, or standard transfers only?**

Yes. The merchant can ask Fabrick to configure only one of the two modes. In that case the buyer sees no choice and the payment is executed with the transfer type configured.

**Can the buyer choose the transfer type?**

Only if both modes are enabled for the shop **and** the `Method` field is not populated in the request. If `Method` is populated, the mode it specifies is binding and the buyer cannot change it.

**Does the "Captured" status always guarantee the credit?**

Only for Banca Sella accounts, where Fabrick reads the credit directly on the merchant's account. For merchants with an account at other institutions the status indicates that the payment has been executed, but reconciliation remains the merchant's responsibility.

**Can I use special characters in the custom value of the payment reference?**

No. Only alphanumeric characters should be used: entering special characters may compromise the correct processing of the transfer.

**Can the buyer request a reversal of the transfer?**

No. A SEPA credit transfer is irrevocable once confirmed: this is the characteristic that eliminates the chargeback risk for the merchant.

**Which language is the payment page displayed in?**

The language of the Pay By Bank page adapts automatically to the language of the buyer's browser.

---

## Support

**Fabrick**

- **Status page**: [https://status.fabrick.com/](https://status.fabrick.com/)
- **Support**: [https://landing.fabrick.com/fabrick-dashboard-support](https://landing.fabrick.com/fabrick-dashboard-support)
