---
updatedAt: 2026-05-19T14:59:48.000Z
agentTools:
  projectIndex: https://docs.truelayer.com/llms.txt
---

# Payment basics

Learn about the types of payments that you can accept using the Payments API.

There are two types of single payment that end users can make through TrueLayer:

* A **closed-loop pay-in**, where they make a single payment into your merchant account.
* A **single payment**, where they pay a beneficiary using the relevant bank details.\
  This is also known as a 'single domestic payment' or 'single international payment', as defined in the <a href="https://standards.openbanking.org.uk/" target="_blank">Open Banking Standards</a>.

[block:image]
{
  "images": [
    {
      "image": [
        "https://files.readme.io/2b1cccb-Closed-loop-pay-in-and-single-payment.png",
        "",
        "The payment flow for a closed-loop account pay-in vs a single payment. The extra layer between your business account and the user in a merchant account pay-in enables additional functionality."
      ],
      "align": "center",
      "caption": "The payment flow for a closed-loop pay-in vs a single payment. The extra layer between your business account and the user in a merchant account pay-in enables additional functionality."
    }
  ]
}
[/block]

To create a closed-loop pay-in or single payment request, you send a POST request to the <a href="https://docs.truelayer.com/reference/create-payment" target="_blank">`/v3/payments`</a> endpoint. Your request should contain information about the payment, such as its value, whether it's a bank transfer or payment on a mandate, and information about the remitter. [Learn more about how to configure your payment requests](/docs/create-a-payment).

When you create a payment, most of the request is the same for either a merchant account pay-in or a single payment. However, you need to provide a different value for the `payment_method.beneficiary.type` parameter in your API request.

* For a **closed-loop pay-in**, use `merchant_account`.
* For a **single payment**, use `external_account`.\
  You can still make a single payment into an account that you own.

## Info to provide in your request

When you create a payment, you must include the mandatory fields below depending on its type:

[block:parameters]
{
  "data": {
    "h-0": "Payment type",
    "h-1": "Required details",
    "0-0": "Closed-loop pay-in",
    "0-1": "- The value of the payment\n- The currency that the payment is in\n- `bank_transfer` set as the payment method\n- A merchant account as the beneficiary, and the associated `id`\n- What banks are selectable\n- What schemes your user can select\n- Some user information about the remitter",
    "1-0": "Single payment",
    "1-1": "- The value of the payment\n- The currency that the payment is in\n- `bank_transfer` set as the payment method\n- An external account as the beneficiary, with the following details:<br>1. The name of the external account holder<br>2. The sort code and account number, IBAN, BBAN or NRB of the external account<br>3. A reference, which appears on the bank statement of the remitter and beneficiary<br>- What banks are selectable, or a single bank `id`<br>- What payment schemes your user can select<br>-Some user information about the remitter"
  },
  "cols": 2,
  "rows": 2,
  "align": [
    "left",
    "left"
  ]
}
[/block]

For a complete guide to payment creation requests, including optional fields to fill out for more functionality, read our [Create a payment](/docs/create-a-payment) guide or see the [API reference](/reference/create-payment).

## Extra features for closed-loop pay-ins

If you choose to receive payments from your users as closed-loop pay-ins, you get access to more features, such as:

* [Payment risk and credit notifications](/docs/payment-risk-and-credit-notifications), which tell you when you can safely credit a user even if a payment won't settle for some time.
* [Payment verification](/docs/name-and-age-verification-before-payment#how-to-add-verification-to-a-payment), where a payment is taken through a holding account, and only arrives in your account after the user's age or address are verified.
* [Low balance notifications](/docs/low-balance-notifications), which tell you when you need to top up your account to ensure you can continue paying your users.

Closed-loop pay-ins enable other TrueLayer products such as [refunds](/docs/refund-a-payment), [closed-loop payouts](/docs/make-a-payout-to-an-account-that-paid-in), and [payment links](https://docs.truelayer.com/docs/payment-links-docs).

## Payment lifecycle

After you [authenticate](/docs/request-authentication) a payment, a payment moves through three stages. These are the same for merchant account pay-ins and single payments.

1. **Payment creation**: [Configure your payment](/docs/payment-configuration) and send an API request to create it.
2. **Authorisation**: After the payment is created, the user logs into their bank and [authorises the payment](/docs/payment-authorisation-basics) being made from their account.
3. **Payment monitoring**: After the payment is authorised, monitor its progress. Payments that succeed move into the states `executed` or `settled`. Payments that fail move into the `failed` state.\
   We recommend that [you use webhooks](/docs/configure-webhooks-for-your-integration) to keep track of payments and to get data about why failed payments didn't succeed.