> Documentation index: [Saleor](/llms.txt) · [This section](/developer/llms.txt)
> Source: https://docs.saleor.io/developer/payments/overview

# Transactions Overview

<a id="interacting-with-transactions"></a>

## Interacting with transactions

You can interact with transactions via your backend to build any type of payment flow, automation or business logic you wish using CRUD operation, see [Transaction API](/developer/payments/transactions.md).

Use case examples:

-   Automate refund logic
-   Recurring subscription logic
-   Custom payment flow, where **your backend** works directly with **your frontend** and only writes orders and payments to Saleor without using Saleor's checkout and payment APIs.

<a id="existing-payment-integrations"></a>

## Existing payment integrations

Payment integrations are front-end friendly APIs that allow you to process payments without the need to interact with payment providers directly without a backend. In this setup, Saleor [acts as a middleware](/developer/payments/payment-apps.md#processing-payments-with-the-payment-app) between your frontend and the payment app which talks to payment provider.

The vendor team and partners have a larger collection of payment integrations, which would eventually be documented. Currently, Saleor provides guides for the following:

[**Adyen guide** Advance enterprise ready integration](/developer/app-store/apps/adyen/overview.md)

[**Stripe guide** Basic payment flow including refunds.](/developer/app-store/legacy-plugins/stripe.md)

If you wish to use a different payment provider, please contact [our team](mailto:hello@saleor.io).

<a id="custom-payment-integrations"></a>

## Custom payment integrations

There are two main approaches (or mix of both) to build custom payment integrations:

<a id="saleor-as-middleware"></a>

### Saleor as middleware

Using [Saleor as middleware](/developer/payments/payment-apps.md) to communicate between **your storefront** and **your payment apps**. This approach provides the following advantages:

-   A generic interface for interacting with apps, making them interchangeable. For example, your Stripe and Paypal integrations can be swapped without changing your storefront.
-   Front-end developers or other microservices will not need to interact with your payment logic directly, which simplifies documentation and the need for additional endpoints.

[**Using payment apps**](/developer/payments/payment-apps.md)

[**Building payment apps**](/developer/extending/apps/building-payment-app.md)

<a id="your-backend"></a>

### Your backend

Your own backend that interacts with payment providers and your storefront. [Transaction API](/developer/payments/transactions.md) is only used to update `Transactions` in `Orders`. This way, you can create any logic or flow you wish, but it will cost more ownership.
