---
title: "Make a payment"
description: "Learn how to process online and in-person payments in combination with your Issuing integration."
url: "https://docs.adyen.com/issuing/add-manage-funds/process-payments/make-a-payment"
source_url: "https://docs.adyen.com/issuing/add-manage-funds/process-payments/make-a-payment.md"
canonical: "https://docs.adyen.com/issuing/add-manage-funds/process-payments/make-a-payment"
last_modified: "2026-06-01T15:33:15+02:00"
language: "en"
---

# Make a payment

Learn how to process online and in-person payments in combination with your Issuing integration.

[View source](/issuing/add-manage-funds/process-payments/make-a-payment.md)

Using Adyen's payment processing platform, you can process online or in-person payments from your customers. The revenue from these payments are booked to your balance platform, and can be used to fund your Adyen-issued cards.

## Requirements

Take into account the following requirements, limitations, and preparations to start processing payments.

| Requirement                                                     | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| --------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Integration type**                                            | **For online payments**: You must have an Adyen [online payments integration and a checkout UI](/online-payments/build-your-integration). **For in-person payments**: For in-person payments with Adyen, your POS app must be integrated with the [Terminal API](/point-of-sale/design-your-integration/terminal-api) and then either use [payment terminals](/point-of-sale/what-we-support/select-your-terminals) or a [Mobile solution](/point-of-sale/ipp-mobile). The standalone solution can serve as a fallback. |
| **[API credentials](/development-resources/api-credentials/)**  | You must have credentials for the following APIs:- [Checkout API](https://docs.adyen.com/api-explorer/Checkout/latest/overview) (for online payments)
- [Terminal API](https://docs.adyen.com/api-explorer/terminal-api/latest/overview) (for in-person payments)
- [Transfers API](https://docs.adyen.com/api-explorer/transfers/latest/overview)                                                                                                                                                                      |
| **[Webhooks](/development-resources/webhooks)**                 | Ensure that your server can receive and accept [standard webhooks](/development-resources/webhooks). Subscribe to any of the following webhooks:- [Transfer webhooks](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/overview)
- [Transaction webhooks](https://docs.adyen.com/api-explorer/transaction-webhooks/latest/overview)                                                                                                                                                                         |
| **[Capabilities](/issuing/verification-overview/capabilities)** | Make sure that your account holders have the following capabilities:- **receivePayments**
- **receiveFromPlatformPayments**
- **sendToTransferInstrument**                                                                                                                                                                                                                                                                                                                                                              |

## Online payments

To process an online payment from your customer:

1. Make a POST [/payments](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments) or POST [/sessions](https://docs.adyen.com/api-explorer/Checkout/latest/post/sessions) request, specifying the following parameters:

   | Parameter                                                                                                    | Required                                                                                    | Description                                                                           |
   | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- |
   | [amount](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-amount)                   | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The value and currency of the payment, in minor units.                                |
   | [merchantAccount](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-merchantAccount) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The unique identifier of the merchant account through which the payment is processed. |
   | [paymentMethod](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-paymentMethod)     | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The type and required details of a payment method your customer used.                 |
   | [reference](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-reference)             | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | Your unique reference to identify the payment.                                        |
   | [returnUrl](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-returnUrl)             | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The URL to return to in case of a redirection.                                        |

   The following example shows the payment request you must make when a customer makes a payment of EUR 200.00:

   **Payment request for EUR 200.00**

   ```bash
   curl https://checkout-test.adyen.com/v68/payments \
   -H 'x-api-key: ADYEN_API_KEY' \
   -H 'content-type: application/json' \
   -X POST \
   -d '{
            "paymentMethod":{
                "type":"scheme",
                "number":"4400 0000 0000 0008",
                "expiryMonth":"03",
                "expiryYear":"2030",
                "holderName":"John Smith",
                "cvc":"737"
            },
            "amount":{
                "value":20000,
                "currency":"EUR"
            },
            "reference":"YOUR_REFERENCE_NUMBER",
            "merchantAccount":"YOUR_MERCHANT_ACCOUNT",
            "returnUrl": "https://your-company.example.com"
   }'
   ```

2. Note the response, which informs you if the payment was successful.

## In-person payments

To process an in-person payment from your customer:

1. Make a POST [PaymentRequest](https://docs.adyen.com/api-explorer/terminal-api/latest/post/payment) request. In your request, specify:

   * The standard [`SaleToPOIRequest.MessageHeader` ](/point-of-sale/design-your-integration/terminal-api#request-message-header)object, with `MessageClass` set to **Service** and `MessageCategory` set to **Payment**.

     | Parameter         | Required                                                                                    | Description                                                                                                                                                 |
     | ----------------- | ------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
     | `ProtocolVersion` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | **3.0**                                                                                                                                                     |
     | `MessageClass`    | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | **Service**                                                                                                                                                 |
     | `MessageCategory` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | **Payment**                                                                                                                                                 |
     | `MessageType`     | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | **Request**                                                                                                                                                 |
     | `ServiceID`       | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | Your unique ID for this request, consisting of 1-10 alphanumeric characters. Must be unique within the last 48 hours for the terminal (`POIID`) being used. |
     | `SaleID`          | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | Your unique ID for the POS system component to send this request from.                                                                                      |
     | `POIID`           | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The unique ID of the terminal to send this request to. Format: *\[device model]-\[serial number]*.                                                          |

   * The [PaymentRequest](https://docs.adyen.com/api-explorer/terminal-api/latest/post/payment) object with:

     | Parameter                       | Required                                                                                    | Description                                                                                                                                                                                                                                                                                                                                                                   |
     | ------------------------------- | ------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
     | `SaleData.SaleTransactionID`    | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | An object with:- `TransactionID`: Your reference to identify a payment. We recommend using a unique value per payment. In your Customer Area and Adyen reports, this will show as the **merchant reference** for the transaction.
     - `TimeStamp`: The date and time of the request in [UTC format](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_\(UTC\)). |
     | `PaymentTransaction.AmountsReq` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | An object with:- `Currency`: The transaction [currency](/development-resources/currency-codes).
     - `RequestedAmount`: The transaction amount. Specify the amount with a decimal point. Do not use minor units. For example, for an amount of USD 10, enter **10.00** (not *1000*).                                                                                             |

   The following example shows the payment request you must make when a customer makes a payment of EUR 200.00:

   **Payment request with split instructions**

   ```json
   {
       "SaleToPOIRequest": {
           "MessageHeader": {
               "ProtocolVersion": "3.0",
               "MessageClass": "Service",
               "MessageCategory": "Payment",
               "MessageType": "Request",
               "ServiceID": "0207111104",
               "SaleID": "POSSystemID12345",
               "POIID": "V400m-324688179"
           },
           "PaymentRequest": {
               "SaleData": {
                   "SaleTransactionID": {
                       "TransactionID": "27908",
                       "TimeStamp": "2025-10-20T10:11:04+00:00"
                   }
               },
               "PaymentTransaction": {
                   "AmountsReq": {
                       "Currency": "EUR",
                       "RequestedAmount": 200.00
                   }
               }
           }
       }
   }
   ```

   The payment request is routed to the terminal or mobile device, for the customer to complete the payment. The payment is approved, and then sent to the Adyen payments platform for processing.

2. When you receive the [PaymentResponse](https://docs.adyen.com/api-explorer/terminal-api/latest/post/payment#responses-200), check the following parameters:

   * `POIData.POITransactionID.TransactionID`: The transaction identifier for the payment consisting of the [tender reference](/get-started-with-adyen/adyen-glossary#tender) followed by the [PSP reference](/get-started-with-adyen/adyen-glossary#psp-reference). For example, in the transaction identifier **BV0q001765198054002.CWBC43ZX2VTFWR82**, the PSP reference is CWBC43ZX2VTFWR82.
   * `Response.Result`: **Success**
   * `PaymentReceipt`: The object with data you can use to [generate a receipt](/point-of-sale/basic-tapi-integration/generate-receipts).

   **Payment split successful**

   ```json
   {
     "SaleToPOIResponse": {
       "MessageHeader": {...},
       "PaymentResponse": {
         "POIData": {
           "POITransactionID": {
             "TimeStamp": "...",
             "TransactionID":"BV0q001765198054002.CWBC43ZX2VTFWR82"
           }
         },
         "PaymentReceipt": [...],
         "PaymentResult": {...},
         "Response": {
           "AdditionalResponse": "...posAuthAmountCurrency=USD&posAuthAmountValue=8000&...pspReference=CWBC43ZX2VTFWR82...",
           "Result": "Success",
         },
         "SaleData": {...}
       }
     }
   }
   ```

   You can also view this information in your [Customer Area](https://ca-test.adyen.com/). To view the details of the payment, go to **Transactions** > **Payments**.

## Webhooks

Adyen sends webhooks to inform you of payment-related events that occur in your balance platform. Subscribe to the [Transfer webhooks](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/overview) and [Transaction webhooks](https://docs.adyen.com/api-explorer/transaction-webhooks/latest/overview) to keep track of these events and their status.
