# Recurring payments

Charge a credit or debit card on a recurring basis.

## Overview

Recurring payments allow you to charge a customer's card multiple times using stored card information. This is essential for subscription services, instalments, and scenarios where you need to charge a customer after the initial transaction.

## Understanding transaction types

When processing recurring payments, it's important to understand the distinction between different transaction types based on who initiates the payment and whether the cardholder is present.

There are two types of recurring transactions:

- [Card-on-file transactions](#card-on-file-cof-transactions)
- [Merchant-initiated transactions](#merchant-initiated-transactions-mits)


### Card-on-file (COF) transactions

**Card-on-file transactions** are payments where the cardholder is present and actively initiates the payment using their previously stored card details. These are also called customer-initiated transactions (CITs).

Strong Customer Authentication (SCA) is required for both the initial card storage and subsequent cardholder-initiated payments.

Common use cases include:

- **One-click checkout:** The customer selects their saved card to complete a purchase.
- **Manual payments:** The customer triggers a payment using previously stored credentials.
- **Additional purchases:** The customer buys extra services or products using their saved payment method.
- **In-app purchases:** The customer confirms and completes a transaction within an application


Use COF processing models (`cardOnFileShopperConsent` and `cardOnFileShopperInitiated`) when your customer is actively making a purchase decision and completing the transaction themselves.

### Merchant-initiated transactions (MITs)

**Merchant-initiated transactions** are payments where you initiate the charge without the cardholder being present, using their previously stored card details and consent.

SCA is required for the initial setup transaction, but not required for subsequent merchant-initiated transactions. This exemption from SCA is what makes MITs suitable for automated recurring payments.

Common use cases include:

- **Subscriptions:** Monthly streaming service charges, annual memberships
- **Instalments:** Payment plans split over several months
- **Delayed charges:** Hotel mini-bar charges added after checkout, rental car damage fees
- **No-show fees:** Restaurant or hotel reservation no-show penalties
- **Automatic top-ups:** Account balance replenishment when it falls below a threshold
- **Usage-based billing:** Utility bills charged at the end of a billing period


Use MIT processing models (all `merchantInitiated*` models) when you need to charge the customer automatically without their active involvement in each transaction.

### The card-on-file to MIT workflow

The typical workflow involves two stages:

1. **Initial setup (requires SCA):**
  - The customer completes a transaction with their card details.
  - The customer provides consent for you to store their card information.
  - You use `cardOnFileShopperConsent` or `merchantInitiatedInitialRecurring`.
  - You receive a `gatewayTokenId` and scheme transaction identifiers in the response.
  - You store these values for future use.
2. **Subsequent transactions:**
  - If the customer initiates, use `cardOnFileShopperInitiated` (requires SCA).
  - If you initiate, use the appropriate `merchantInitiated*` model (no SCA required).
  - In both cases, include the `gatewayTokenId` and scheme transaction identifiers from the initial transaction.


Card scheme rules require you to link each MIT back to the original card-on-file transaction using scheme transaction identifiers. This ensures proper tracking and compliance.

## Scheme transaction identifiers

When setting up the initial card-on-file payment, you'll receive scheme transaction identifiers in the `providerResponse`. You must store these values and include them in all subsequent merchant-initiated transactions.

| Parameter  | Required by  | Description  |
|  --- | --- | --- |
| `schemeTransactionId` | All schemes | A unique identifier assigned by the card scheme for tracking, reconciliation, and managing the transaction lifecycle. Examples include the Visa Transaction Identifier and MasterCard Banknet Reference Number. Required for all merchant-initiated transactions. |
| `settlementDate` | MasterCard only | The settlement date from the original card-on-file transaction, formatted as `YYYY-MM-DD`. Required for MasterCard merchant-initiated transactions. |
| `schemeTransactionLinkId` | MasterCard (from 1 June 2026) | Returns the Transaction Link Identifier (TLID), a 22-character unique identifier that will become the primary method for linking card-on-file transactions to merchant-initiated transactions. You must store this value for all card-not-present MasterCard transactions. Required for PSD2 SCA compliance and offers benefits including higher approval rates and fewer chargebacks. |
| `schemeTransactionId` | Diners (from 1 July 2026) | Returns the Network Reference ID (NRID). You must store this value for all Diners transactions as it's required alongside the Retrieval Reference Number when submitting subsequent merchant-initiated or recurring payments. Mandatory for PSD2 SCA compliance and Diners card scheme rules. |


## Processing models

The **processing model** describes the type of recurring payment associated with a transaction.

There are two categories of processing models:

* **Card-on-file (COF):** the cardholder initiates the transaction after saving their card details.
* **Merchant-initiated:** you initiate the transaction using a cardholder's previously saved card details.


The following table describes the supported processing models.

| Parameter  | Description |
|  --- | --- |
| `cardOnFileShopperConsent` | The cardholder is consenting to you saving their card details so they don't have to re-enter them. For example, by ticking a box while on the payment screen. You should then use the `cardOnFileShopperInitiated` parameter in subsequent request. |
| `cardOnFileShopperInitiated` | The cardholder is making a transaction and has previously consented to you saving their card details. |
| `merchantInitiatedReAuthorisation` | You have previously saved a customer's details and want to request a new authorisation. For example, if the initial authorisation is about to expire for a transaction that hasn't bee completed yet. |
| `merchantInitiatedResubmission` | You have previously saved a customer's details and want to retry a transaction that was previously declined due to temporary issues. For example, in case of technical issues or insufficient funds. |
| `merchantInitiatedDelayedCharge` | You have previously saved a customer's card details and need to add additional charges after the initial transaction has occurred. For example, to recover damage fees for a rented card. |
| `merchantInitiatedNoShow` | You have previously saved a customer's card details and need to charge them a no-show fee. For example, if they have failed to show up after making a hotel reservation. |
| `merchantInitiatedInitialRecurring` | You are saving a customer's card details so that you can take recurring payments in the future. You should then use the `merchantInitiatedSubsequentRecurring` parameter in subsequent requests. |
| `merchantInitiatedSubsequentRecurring` | You have previously saved a customer's card details and are processing a standard recurring payment, such as a subscription. |


## Set up a merchant-initiated recurring payment

/v1/transactions

### Request examples

Subscription
To set up a merchant-initiated subscription, you'll need to add the `recurring` object to the payload of your first transaction request and provide the full card details in the `fundingData.card` object. In the response, you'll receive a `gatewayTokenId` containing the tokenised details of the card.

For subsequent charges, you'll have to provide an updated `recurring` object and the `gatewayTokenId` rather than the full card details.


```json Initial recurring
{
  "merchant": "MERCHANT-1",
  "site": "SITE-1",
  "merchantTransactionId": "ECOM_001",
  "merchantTransactionDate": "2025-01-27 08:51:02.826445+00:00",
  "transactionMethod": {
    "intent": "Authorisation",
    "entryType": "Ecom",
    "fundingType": "Card"
  },  
  "fundingData": {
    "card": {
      "primaryAccountNumber": "4111111111111111",
      "expiryMonth": "09",
      "expiryYear": "2025",
      "cardVerificationCode": "788",
      "holderName": "John Doe"
    }
  },
  "amounts": {
    "transaction": 5,
    "currencyCode": "GBP"
  },
  "recurring": {
    "processingModel": "merchantInitiatedInitialRecurring",
    "frequencyInDays": 30,
    "frequencyExpiration": "2025-12-31"
  }
}
```


```json Subsequent charges
{
  "merchant": "MERCHANT-1",
  "site": "SITE-1",
  "merchantTransactionId": "ECOM_001",
  "merchantTransactionDate": "2025-01-27 08:51:02.826445+00:00",
  "transactionMethod": {
    "intent": "Authorisation",
    "entryType": "Ecom",
    "fundingType": "Card"
  },     
  "fundingData": {
    "card": {
      "gatewayTokenId": "5fbd77ce-02c1-40ed-94bc-1016660b7512"
    }
  },
  "amounts": {
    "transaction": 5,
    "currencyCode": "GBP"
  },
  "recurring": {
    "processingModel": "merchantInitiatedSubsequentRecurring",
    "schemeTransactionId": "TX1234567890123456"
  }
}
```

| Parameter | Description |
|  --- | --- |
| `merchant`string (≤ 20 characters) | Your unique merchant identifier, as assigned by PXP. |
| `site`string (≤ 20 characters) | Your unique site identifier, as assigned by PXP. |
| `merchantTransactionId`string (≤ 50 characters) | A unique identifier for this transaction. |
| `merchantTransactionDate`date-time | The date and time when the transaction happened, in ISO 8601 format. |
| `transactionMethod`object | Details about the transaction method. |
| `transactionMethod.entryType`string | The entry type. For e-commerce transactions, this is always `Ecom`. |
| `transactionMethod.fundingType`string | The funding type. For card transactions, this is always `Card`. |
| `transactionMethod.intent`string | The payment intent. [Learn more about intents](/guides/transactions/how-it-works#intents). Possible values:`Authorisation``EstimatedAuthorisation``Purchase``Payout``Refund` |
| `fundingData`object | Details about the payment method used for the transaction. |
| `fundingData.card`object | Details about the card. |
| `fundingData.card.primaryAccountNumber`string (10-19 characters) | The unique number assigned to a payment card, such as a credit or debit card. This number typically contains 16 digits, structured in a specific format to indicate the card network, issuing bank, and account number. |
| `fundingData.card.expiryMonth`string (2 characters) | The expiry month (`MM`) of the card. |
| `fundingData.card.expiryYear`string (4 characters) | The expiry year (`YYYY`) of the card. |
| `fundingData.card.cardVerificationCode`string (3-4 characters) | The Card Verification Code (CVC) associated with the payment card, which is used to verify that the cardholder is in possession of the card during non-face-to-face transactions. |
| `fundingData.card.holderName`string (≤ 100 characters) | The full name of the individual who owns the payment card. This name is printed on the physical card and is used for verifying the cardholder's identity during transactions. |
| `fundingData.card.gatewayTokenId`string | A securely stored token that corresponds to a previously saved payment card. This token is generated and maintained by PXP to facilitate recurring transactions or transactions using stored card details, ensuring enhanced security and convenience. When a transaction is performed with a saved card, this token ID should be provided instead of the full card details. |
| `amounts`object | Details about the transaction amount |
| `amounts.transaction`number | The transaction amount. The numbers after the decimal will be zero padded if they are less than the expected `currencyCode` exponent. For example, GBP 1.1 = GBP 1.10, EUR 1 = EUR 1.00, or BHD 1.3 = 1.300. The transaction will be rejected if numbers after the decimal are greater than the expected `currencyCode` exponent (e.g., GBP 1.234), or if a decimal is supplied when the `currencyCode` of  the exponent does not require it (e.g., JPY 1.0). |
| `amounts.currencyCode`string (1-3 characters) | The currency code associated with the transaction, in ISO 4217 format. |
| `recurring`object | Details about the recurring payment details associated with the transaction. |
| `recurring.processingModel`string (enum) | Indicates the type of recurring payment associated with the transaction. When you first create a token, this indicates what type of recurring payment the token is intended for. For subsequent payments, it indicates the type of recurring payment. Specifically, the `frequencyInDays` and `frequencyExpiration` properties are applicable only when this is set to `merchantInitiatedInitialRecurring`.Possible values:`cardOnFileShopperConsent``cardOnFileShopperInitiated``merchantInitiatedReAuthorisation``merchantInitiatedResubmission``merchantInitiatedDelayedCharge``merchantInitiatedNoShow``merchantInitiatedInitialRecurring``merchantInitiatedSubsequentRecurring` |
| `recurring.schemeTransactionId`string | A unique identifier from the card scheme that links this merchant-initiated transaction to the original card-on-file transaction. For tracking, reconciliation, and managing the transaction lifecycle. This value is returned in `providerResponse.schemeTransactionId` of the initial COF transaction response. |
| `recurring.frequencyInDays`integer | The interval (in days) between each recurring transaction for the `merchantInitiatedInitialRecurring` processing model. This defines how often the recurring payments are attempted following the initial charge. |
| `recurring.frequencyExpiration`date | The expiration date for the recurring transaction authorisation specific to the `merchantInitiatedInitialRecurring` processing model. After this date, no further recurring transactions are processed. |
| `recurring.settlementDate`date | The settlement date from the original card-on-file transaction, formatted as `YYYY-MM-DD`. Required for MasterCard transactions only. This value is returned in `providerResponse.settlementDate` of the initial COF transaction response. |
| `recurring.schemeTransactionLinkId`string | The Transaction Link Identifier (TLID) for MasterCard transactions. From 1 June 2026, store and include this value for all card-not-present MasterCard transactions to link card-on-file transactions to merchant-initiated transactions. Offers benefits including higher approval rates and fewer chargebacks. This value is returned in `providerResponse.schemeTransactionLinkId` of the initial COF transaction response. |


Reauthorisation
Use the following payload to submit a reauthorisation request.


```json
{
  "merchant": "MERCHANT-1",
  "site": "SITE-1",
  "merchantTransactionId": "ECOM_001",
  "merchantTransactionDate": "2025-01-27 08:51:02.826445+00:00",
  "transactionMethod": {
    "intent": "Authorisation",
    "entryType": "Ecom",
    "fundingType": "Card"
  },
  "fundingData": {
    "card": {
      "gatewayTokenId": "5fbd77ce-02c1-40ed-94bc-1016660b7512"
    }
  },
  "amounts": {
    "transaction": 5,
    "currencyCode": "GBP"
  },
  "recurring": {
    "processingModel": "merchantInitiatedReAuthorisation",
    "schemeTransactionId": "TX1234567890123456"
  }
}
```

| Property | Description |
|  --- | --- |
| `merchant`string (≤ 20 characters) | Your unique merchant identifier, as assigned by PXP. |
| `site`string (≤ 20 characters) | Your unique site identifier, as assigned by PXP. |
| `merchantTransactionId`string (≤ 50 characters) | A unique identifier for this transaction. |
| `merchantTransactionDate`date-time | The date and time when the transaction happened, in ISO 8601 format. |
| `transactionMethod`object | Details about the transaction method. |
| `transactionMethod.entryType`string | The entry type. For e-commerce transactions, this is always `Ecom`. |
| `transactionMethod.fundingType`string | The funding type. For card transactions, this is always `Card`. |
| `transactionMethod.intent`string | The payment intent. [Learn more about intents](/guides/transactions/how-it-works#intents).  Possible values: `Authorisation``EstimatedAuthorisation``Purchase``Payout``Refund` |
| `fundingData`object | Details about the payment method used for the transaction. |
| `fundingData.card`object | Details about the card. |
| `fundingData.card.gatewayTokenId`string | A securely stored token that corresponds to a previously saved payment card. This token is generated and maintained by PXP to facilitate recurring transactions or transactions using stored card details, ensuring enhanced security and convenience. When a transaction is performed with a saved card, this token ID should be provided instead of the full card details. |
| `amounts`object | Details about the transaction amount |
| `amounts.transaction`number | The transaction amount. The numbers after the decimal will be zero padded if they are less than the expected `currencyCode` exponent. For example, GBP 1.1 = GBP 1.10, EUR 1 = EUR 1.00, or BHD 1.3 = 1.300. The transaction will be rejected if numbers after the decimal are greater than the expected `currencyCode` exponent (e.g., GBP 1.234), or if a decimal is supplied when the `currencyCode` of  the exponent does not require it (e.g., JPY 1.0). |
| `amounts.currencyCode`string (1-3 characters) | The currency code associated with the transaction, in ISO 4217 format. |
| `recurring`object | Details about the recurring payment details associated with the transaction. |
| `recurring.processingModel`string (enum) | Indicates the type of recurring payment associated with the transaction. When you first create a token, this indicates what type of recurring payment the token is intended for. For subsequent payments, it indicates the type of recurring payment. Specifically, the `frequencyInDays` and `frequencyExpiration` properties are applicable only when this is set to `merchantInitiatedInitialRecurring`.Possible values:`cardOnFileShopperConsent``cardOnFileShopperInitiated``merchantInitiatedReAuthorisation``merchantInitiatedResubmission``merchantInitiatedDelayedCharge``merchantInitiatedNoShow``merchantInitiatedInitialRecurring``merchantInitiatedSubsequentRecurring` |
| `recurring.schemeTransactionId`string | A unique identifier from the card scheme that links this merchant-initiated transaction to the original card-on-file transaction. For tracking, reconciliation, and managing the transaction lifecycle. This value is returned in `providerResponse.schemeTransactionId` of the initial COF transaction response. |
| `recurring.settlementDate`date | The settlement date from the original card-on-file transaction, formatted as `YYYY-MM-DD`. Required for MasterCard transactions only. This value is returned in `providerResponse.settlementDate` of the initial COF transaction response. |
| `recurring.schemeTransactionLinkId`string | The Transaction Link Identifier (TLID) for MasterCard transactions. From 1 June 2026, store and include this value for all card-not-present MasterCard transactions to link card-on-file transactions to merchant-initiated transactions. Offers benefits including higher approval rates and fewer chargebacks. This value is returned in `providerResponse.schemeTransactionLinkId` of the initial COF transaction response. |


Resubmission
Use the following payload to resubmit an authorisation request.


```json
{
  "merchant": "MERCHANT-1",
  "site": "SITE-1",
  "merchantTransactionId": "ECOM_001",
  "merchantTransactionDate": "2025-01-27 08:51:02.826445+00:00",
  "transactionMethod": {
    "intent": "Authorisation",
    "entryType": "Ecom",
    "fundingType": "Card"
  },
  "fundingData": {
    "card": {
      "gatewayTokenId": "5fbd77ce-02c1-40ed-94bc-1016660b7512"
    }
  },
  "amounts": {
    "transaction": 5,
    "currencyCode": "GBP"
  },
  "recurring": {
    "processingModel": "merchantInitiatedResubmission",
    "schemeTransactionId": "TX1234567890123456"
  }
}
```

| Property | Description |
|  --- | --- |
| `merchant`string (≤ 20 characters) | Your unique merchant identifier, as assigned by PXP. |
| `site`string (≤ 20 characters) | Your unique site identifier, as assigned by PXP. |
| `merchantTransactionId`string (≤ 50 characters) | A unique identifier for this transaction. |
| `merchantTransactionDate`date-time | The date and time when the transaction happened, in ISO 8601 format. |
| `transactionMethod`object | Details about the transaction method. |
| `transactionMethod.entryType`string | The entry type. For e-commerce transactions, this is always `Ecom`. |
| `transactionMethod.fundingType`string | The funding type. For card transactions, this is always `Card`. |
| `transactionMethod.intent`string | The payment intent. [Learn more about intents](/guides/transactions/how-it-works#intents). Possible values:`Authorisation``EstimatedAuthorisation``Purchase``Payout``Refund` |
| `fundingData`object | Details about the payment method used for the transaction. |
| `fundingData.card`object | Details about the card. |
| `fundingData.card.gatewayTokenId`string | A securely stored token that corresponds to a previously saved payment card. This token is generated and maintained by PXP to facilitate recurring transactions or transactions using stored card details, ensuring enhanced security and convenience. When a transaction is performed with a saved card, this token ID should be provided instead of the full card details. |
| `amounts`object | Details about the transaction amount |
| `amounts.transaction`number | The transaction amount. The numbers after the decimal will be zero padded if they are less than the expected `currencyCode` exponent. For example, GBP 1.1 = GBP 1.10, EUR 1 = EUR 1.00, or BHD 1.3 = 1.300. The transaction will be rejected if numbers after the decimal are greater than the expected `currencyCode` exponent (e.g., GBP 1.234), or if a decimal is supplied when the `currencyCode` of  the exponent does not require it (e.g., JPY 1.0). |
| `amounts.currencyCode`string (1-3 characters) | The currency code associated with the transaction, in ISO 4217 format. |
| `recurring`object | Details about the recurring payment details associated with the transaction. |
| `recurring.processingModel`string (enum) | Indicates the type of recurring payment associated with the transaction. When you first create a token, this indicates what type of recurring payment the token is intended for. For subsequent payments, it indicates the type of recurring payment. Specifically, the `frequencyInDays` and `frequencyExpiration` properties are applicable only when this is set to `merchantInitiatedInitialRecurring`.Possible values:`cardOnFileShopperConsent``cardOnFileShopperInitiated``merchantInitiatedReAuthorisation``merchantInitiatedResubmission``merchantInitiatedDelayedCharge``merchantInitiatedNoShow``merchantInitiatedInitialRecurring``merchantInitiatedSubsequentRecurring` |
| `recurring.schemeTransactionId`string | A unique identifier from the card scheme that links this merchant-initiated transaction to the original card-on-file transaction. For tracking, reconciliation, and managing the transaction lifecycle. This value is returned in `providerResponse.schemeTransactionId` of the initial COF transaction response. |
| `recurring.settlementDate`date | The settlement date from the original card-on-file transaction, formatted as `YYYY-MM-DD`. Required for MasterCard transactions only. This value is returned in `providerResponse.settlementDate` of the initial COF transaction response. |
| `recurring.schemeTransactionLinkId`string | The Transaction Link Identifier (TLID) for MasterCard transactions. From 1 June 2026, store and include this value for all card-not-present MasterCard transactions to link card-on-file transactions to merchant-initiated transactions. Offers benefits including higher approval rates and fewer chargebacks. This value is returned in `providerResponse.schemeTransactionLinkId` of the initial COF transaction response. |


Delayed charge
Use the following payload to request an authorisation for a delayed charge.


```json
{
  "merchant": "MERCHANT-1",
  "site": "SITE-1",
  "merchantTransactionId": "ECOM_001",
  "merchantTransactionDate": "2025-01-27 08:51:02.826445+00:00",
  "transactionMethod": {
    "intent": "Authorisation",
    "entryType": "Ecom",
    "fundingType": "Card"
  },
  "fundingData": {
    "card": {
      "gatewayTokenId": "5fbd77ce-02c1-40ed-94bc-1016660b7512"
    }
  },
  "amounts": {
    "transaction": 5,
    "currencyCode": "GBP"
  },
  "recurring": {
    "processingModel": "merchantInitiatedDelayedCharge",
    "schemeTransactionId": "TX1234567890123456"
  }
}
```

| Property | Description |
|  --- | --- |
| `merchant`string (≤ 20 characters) | Your unique merchant identifier, as assigned by PXP. |
| `site`string (≤ 20 characters) | Your unique site identifier, as assigned by PXP. |
| `merchantTransactionId`string (≤ 50 characters) | A unique identifier for this transaction. |
| `merchantTransactionDate`date-time | The date and time when the transaction happened, in ISO 8601 format. |
| `transactionMethod`object | Details about the transaction method. |
| `transactionMethod.entryType`string | The entry type. For e-commerce transactions, this is always `Ecom`. |
| `transactionMethod.fundingType`string | The funding type. For card transactions, this is always `Card`. |
| `transactionMethod.intent`string | The payment intent. [Learn more about intents](/guides/transactions/how-it-works#intents).  Possible values:`Authorisation``EstimatedAuthorisation``Purchase``Payout``Refund` |
| `fundingData`object | Details about the payment method used for the transaction. |
| `fundingData.card`object | Details about the card. |
| `fundingData.card.gatewayTokenId`string | A securely stored token that corresponds to a previously saved payment card. This token is generated and maintained by PXP to facilitate recurring transactions or transactions using stored card details, ensuring enhanced security and convenience. When a transaction is performed with a saved card, this token ID should be provided instead of the full card details. |
| `amounts`object | Details about the transaction amount |
| `amounts.transaction`number | The transaction amount. The numbers after the decimal will be zero padded if they are less than the expected `currencyCode` exponent. For example, GBP 1.1 = GBP 1.10, EUR 1 = EUR 1.00, or BHD 1.3 = 1.300. The transaction will be rejected if numbers after the decimal are greater than the expected `currencyCode` exponent (e.g., GBP 1.234), or if a decimal is supplied when the `currencyCode` of  the exponent does not require it (e.g., JPY 1.0). |
| `amounts.currencyCode`string (1-3 characters) | The currency code associated with the transaction, in ISO 4217 format. |
| `recurring`object | Details about the recurring payment details associated with the transaction. |
| `recurring.processingModel`string (enum) | Indicates the type of recurring payment associated with the transaction. When you first create a token, this indicates what type of recurring payment the token is intended for. For subsequent payments, it indicates the type of recurring payment. Specifically, the `frequencyInDays` and `frequencyExpiration` properties are applicable only when this is set to `merchantInitiatedInitialRecurring`.Possible values:`cardOnFileShopperConsent``cardOnFileShopperInitiated``merchantInitiatedReAuthorisation``merchantInitiatedResubmission``merchantInitiatedDelayedCharge``merchantInitiatedNoShow``merchantInitiatedInitialRecurring``merchantInitiatedSubsequentRecurring` |
| `recurring.schemeTransactionId`string | A unique identifier from the card scheme that links this merchant-initiated transaction to the original card-on-file transaction. For tracking, reconciliation, and managing the transaction lifecycle. This value is returned in `providerResponse.schemeTransactionId` of the initial COF transaction response. |
| `recurring.settlementDate`date | The settlement date from the original card-on-file transaction, formatted as `YYYY-MM-DD`. Required for MasterCard transactions only. This value is returned in `providerResponse.settlementDate` of the initial COF transaction response. |
| `recurring.schemeTransactionLinkId`string | The Transaction Link Identifier (TLID) for MasterCard transactions. From 1 June 2026, store and include this value for all card-not-present MasterCard transactions to link card-on-file transactions to merchant-initiated transactions. Offers benefits including higher approval rates and fewer chargebacks. This value is returned in `providerResponse.schemeTransactionLinkId` of the initial COF transaction response. |


No show
Use the following payload to request an authorisation for a no show.


```json
{
  "merchant": "MERCHANT-1",
  "site": "SITE-1",
  "merchantTransactionId": "ECOM_001",
  "merchantTransactionDate": "2025-01-27 08:51:02.826445+00:00",
  "transactionMethod": {
    "intent": "Authorisation",
    "entryType": "Ecom",
    "fundingType": "Card"
  },
  "fundingData": {
    "card": {
      "gatewayTokenId": "5fbd77ce-02c1-40ed-94bc-1016660b7512"
    }
  },
  "amounts": {
    "transaction": 5,
    "currencyCode": "GBP"
  },
  "recurring": {
    "processingModel": "merchantInitiatedNoShow",
    "schemeTransactionId": "TX1234567890123456"
  }
}
```

| Property | Description |
|  --- | --- |
| `merchant`string (≤ 20 characters) | Your unique merchant identifier, as assigned by PXP. |
| `site`string (≤ 20 characters) | Your unique site identifier, as assigned by PXP. |
| `merchantTransactionId`string (≤ 50 characters) | A unique identifier for this transaction. |
| `merchantTransactionDate`date-time | The date and time when the transaction happened, in ISO 8601 format. |
| `transactionMethod`object | Details about the transaction method. |
| `transactionMethod.entryType`string | The entry type. For e-commerce transactions, this is always `Ecom`. |
| `transactionMethod.fundingType`string | The funding type. For card transactions, this is always `Card`. |
| `transactionMethod.intent`string | The payment intent. [Learn more about intents](/guides/transactions/how-it-works#intents).  Possible values:`Authorisation``EstimatedAuthorisation``Purchase``Payout``Refund` |
| `fundingData`object | Details about the payment method used for the transaction. |
| `fundingData.card`object | Details about the card. |
| `fundingData.card.gatewayTokenId`string | A securely stored token that corresponds to a previously saved payment card. This token is generated and maintained by PXP to facilitate recurring transactions or transactions using stored card details, ensuring enhanced security and convenience. When a transaction is performed with a saved card, this token ID should be provided instead of the full card details. |
| `amounts`object | Details about the transaction amount. |
| `amounts.transaction`number | The transaction amount. The numbers after the decimal will be zero padded if they are less than the expected `currencyCode` exponent. For example, GBP 1.1 = GBP 1.10, EUR 1 = EUR 1.00, or BHD 1.3 = 1.300. The transaction will be rejected if numbers after the decimal are greater than the expected `currencyCode` exponent (e.g., GBP 1.234), or if a decimal is supplied when the `currencyCode` of  the exponent does not require it (e.g., JPY 1.0). |
| `amounts.currencyCode`string (1-3 characters) | The currency code associated with the transaction, in ISO 4217 format. |
| `recurring`object | Details about the recurring payment details associated with the transaction. |
| `recurring.processingModel`string (enum) | Indicates the type of recurring payment associated with the transaction. When you first create a token, this indicates what type of recurring payment the token is intended for. For subsequent payments, it indicates the type of recurring payment. Specifically, the `frequencyInDays` and `frequencyExpiration` properties are applicable only when this is set to `merchantInitiatedInitialRecurring`.Possible values:`cardOnFileShopperConsent``cardOnFileShopperInitiated``merchantInitiatedReAuthorisation``merchantInitiatedResubmission``merchantInitiatedDelayedCharge``merchantInitiatedNoShow``merchantInitiatedInitialRecurring``merchantInitiatedSubsequentRecurring` |
| `recurring.schemeTransactionId`string | A unique identifier from the card scheme that links this merchant-initiated transaction to the original card-on-file transaction. For tracking, reconciliation, and managing the transaction lifecycle. This value is returned in `providerResponse.schemeTransactionId` of the initial COF transaction response. |
| `recurring.settlementDate`date | The settlement date from the original card-on-file transaction, formatted as `YYYY-MM-DD`. Required for MasterCard transactions only. This value is returned in `providerResponse.settlementDate` of the initial COF transaction response. |
| `recurring.schemeTransactionLinkId`string | The Transaction Link Identifier (TLID) for MasterCard transactions. From 1 June 2026, store and include this value for all card-not-present MasterCard transactions to link card-on-file transactions to merchant-initiated transactions. Offers benefits including higher approval rates and fewer chargebacks. This value is returned in `providerResponse.schemeTransactionLinkId` of the initial COF transaction response. |


### Response examples

Reauthorisation
If your request is successful, you'll receive a `200` response that includes the transaction's `state`. You'll also receive a Transaction (Card Authorised) webhook notification.


```json
{
  "state": "Authorised",
  "stateData": {},
  "approvalCode": "210693",
  "merchantTransactionDate": "2025-04-07T15:27:53",
  "merchantTransactionId": "34036779-08d2-4f92-88ad-e025fc6998d7",
  "systemTransactionId": "635b1b51-4a27-4d23-8c9f-8150ff7eb9dd",
  "fundingData": {
    "cardScheme": "MasterCard",
    "expiryMonth": null,
    "expiryYear": null,
    "gatewayTokenId": "5fbd77ce-02c1-40ed-94bc-1016660b7512",
    "providerResponse": {
      "provider": "pxpfinancial",
      "code": "00",
      "emvDataResponse": {},
      "paymentAccountReference": "637607302178175469",
      "electronicCommerceIndicatorAdjustment": "07",
      "merchantAdvice": {},
      "authorisedAmount": 5,
      "schemeTransactionId": "MC123456789012345678",
      "schemeTransactionLinkId": "TLID1234567890123456789012",
      "settlementDate": "2025-04-08T00:00:00"
    },
    "processorTransactionId": "c2dbfd3d-837d-48f7-b4e6-9e37c226c2d6"
  }
}
```

Resubmission
If your request is successful, you'll receive a `200` response that includes the transaction's `state`. You'll also receive a Transaction (Card Authorised) webhook notification.


```json
{ 
  "state": "Authorised",
  "stateData": {},
  "approvalCode": "178558",
  "merchantTransactionDate": "2025-04-07T15:25:50",
  "merchantTransactionId": "23e64c73-6257-45be-b7ac-1c36d91824e5",
  "systemTransactionId": "ad8eee1d-b788-4c9a-b275-186253b76f55",
  "fundingData": {
    "cardScheme": "MasterCard",
    "expiryMonth": null,
    "expiryYear": null,
    "gatewayTokenId": "5fbd77ce-02c1-40ed-94bc-1016660b7512",
    "providerResponse": {
      "provider": "pxpfinancial",
      "code": "00",
      "emvDataResponse": {},
      "paymentAccountReference": "637607302178175469",
      "electronicCommerceIndicatorAdjustment": "07",
      "merchantAdvice": {},
      "authorisedAmount": 5,
      "schemeTransactionId": "MC123456789012345678",
      "schemeTransactionLinkId": "TLID1234567890123456789012",
      "settlementDate": "2025-04-08T00:00:00"
    },
    "processorTransactionId": "7f9db397-eff6-40d3-948a-fd53ce35dcd6"
  }
}
```

Delayed charge
If your request is successful, you'll receive a `200` response that includes the transaction's `state`. You'll also receive a Transaction (Card Authorised) webhook notification.


```json
{
  "state": "Authorised",
  "stateData": {},
  "approvalCode": "174277",
  "merchantTransactionDate": "2025-04-07T15:23:51",
  "merchantTransactionId": "185e6800-c02f-4372-bbf0-ffcbd424dfcd",
  "systemTransactionId": "894baddf-e07c-43ce-9991-eccf8d5744d5",
  "fundingData": {
    "cardScheme": "MasterCard",
    "expiryMonth": null,
    "expiryYear": null,
    "gatewayTokenId": "5fbd77ce-02c1-40ed-94bc-1016660b7512",
    "providerResponse": {
      "provider": "pxpfinancial",
      "code": "00",
      "emvDataResponse": {},
      "paymentAccountReference": "637607302178175469",
      "electronicCommerceIndicatorAdjustment": "07",
      "merchantAdvice": {},
      "authorisedAmount": 5,
      "schemeTransactionId": "MC123456789012345678",
      "schemeTransactionLinkId": "TLID1234567890123456789012",
      "settlementDate": "2025-04-08T00:00:00"
    },
    "processorTransactionId": "c638a168-3821-41b2-bf52-cd6b891dd854"
  }
}
```

No show
If your request is successful, you'll receive a `200` response that includes the transaction's `state`. You'll also receive a Transaction (Card Authorised) webhook notification.


```json
{
  "state": "Authorised",
  "stateData": {},
  "approvalCode": "136551",
  "merchantTransactionDate": "2025-04-07T15:20:25",
  "merchantTransactionId": "1ec60178-adda-43dc-882f-45a6f196f6dc",
  "systemTransactionId": "d8cfaf02-2564-460c-8a2b-e6184401336d",
  "fundingData": { 
    "cardScheme": "MasterCard",
    "expiryMonth": null,
    "expiryYear": null,
    "gatewayTokenId": "5fbd77ce-02c1-40ed-94bc-1016660b7512",
    "providerResponse": {
      "provider": "pxpfinancial",
      "code": "00",
      "emvDataResponse": {},
      "paymentAccountReference": "637607302178175469",
      "electronicCommerceIndicatorAdjustment": "07",
      "merchantAdvice": {},
      "authorisedAmount": 5,
      "schemeTransactionId": "MC123456789012345678",
      "schemeTransactionLinkId": "TLID1234567890123456789012",
      "settlementDate": "2025-04-08T00:00:00"
    },
    "processorTransactionId": "9b46128f-8472-4772-84cc-50561fe8e3dc"
  }
}
```

## Set up a card-on-file recurring payment

/v1/transactions

### Request examples

To set up a card-on-file recurring payment, you'll need to add the `recurring` object to the payload of your first transaction request and provide the full card details in the `fundingData.card` object. In the response, you'll receive a `gatewayTokenId` containing the tokenised details of the card.

For subsequent charges, you'll have to provide an updated `recurring` object and the `gatewayTokenId` rather than the full card details.

Shopper's consent

```json
{
  "merchant": "MERCHANT-1",
  "site": "SITE-1",
  "merchantTransactionId": "ECOM_001",
  "merchantTransactionDate": "2025-01-27 08:51:02.826445+00:00",
  "transactionMethod": {
    "intent": "Authorisation",
    "entryType": "Ecom",
    "fundingType": "Card"
  },
  "fundingData": {
    "card": {
      "primaryAccountNumber": "4111111111111111",
      "expiryMonth": "09",
      "expiryYear": "2025",
      "cardVerificationCode": "788",
      "holderName": "John Doe"
    }
  },
  "amounts": {
    "transaction": 5,
    "currencyCode": "GBP"
  },
  "recurring": {
    "processingModel": "cardOnFileShopperConsent"
  }
}
```

Shopper-initiated

```json
{
  "merchant": "MERCHANT-1",
  "site": "SITE-1",
  "merchantTransactionId": "ECOM_001",
  "merchantTransactionDate": "2025-01-27 08:51:02.826445+00:00",
  "transactionMethod": {
    "intent": "Authorisation",
    "entryType": "Ecom",
    "fundingType": "Card"
  },
  "fundingData": {
    "card": {
      "gatewayTokenId": "5fbd77ce-02c1-40ed-94bc-1016660b7512"
    }
  },
  "amounts": {
    "transaction": 5,
    "currencyCode": "GBP"
  },
  "recurring": {
    "processingModel": "cardOnFileShopperInitiated"
  }
}
```

| Parameter | Description |
|  --- | --- |
| `merchant`string (≤ 20 characters) | Your unique merchant identifier, as assigned by PXP. |
| `site`string (≤ 20 characters) | Your unique site identifier, as assigned by PXP. |
| `merchantTransactionId`string (≤ 50 characters) | A unique identifier for this transaction. |
| `merchantTransactionDate`date-time | The date and time when the transaction happened, in ISO 8601 format. |
| `transactionMethod`object | Details about the transaction method. |
| `transactionMethod.entryType`string | The entry type. For e-commerce transactions, this is always `Ecom`. |
| `transactionMethod.fundingType`string | The funding type. For card transactions, this is always `Card`. |
| `transactionMethod.intent`string | The payment intent. [Learn more about intents](/guides/transactions/how-it-works#intent).  Possible values:`Authorisation``EstimatedAuthorisation``Purchase``Payout``Refund` |
| `fundingData`object | Details about the payment method used for the transaction. |
| `fundingData.card`object | Details about the card. |
| `fundingData.card.primaryAccountNumber`string (10-19 characters) | The unique number assigned to a payment card, such as a credit or debit card. This number typically contains 16 digits, structured in a specific format to indicate the card network, issuing bank, and account number. |
| `fundingData.card.expiryMonth`string (2 characters) | The expiry month (`MM`) of the card. |
| `fundingData.card.expiryYear`string (4 characters) | The expiry year (`YYYY`) of the card. |
| `fundingData.card.cardVerificationCode`string (3-4 characters) | The Card Verification Code (CVC) associated with the payment card, which is used to verify that the cardholder is in possession of the card during non-face-to-face transactions. |
| `fundingData.card.holderName`string (≤ 100 characters) | The full name of the individual who owns the payment card. This name is printed on the physical card and is used for verifying the cardholder's identity during transactions. |
| `fundingData.gatewayTokenId`string (≤ 100 characters) | A securely stored token that corresponds to a previously saved payment card. This token is generated and maintained by PXP to facilitate recurring transactions or transactions using stored card details, ensuring enhanced security and convenience. When a transaction is performed with a saved card, this token ID should be provided instead of the full card details. |
| `amounts`object | Details about the transaction amount. |
| `amounts.transaction`number | The transaction amount. The numbers after the decimal will be zero padded if they are less than the expected `currencyCode` exponent. For example, GBP 1.1 = GBP 1.10, EUR 1 = EUR 1.00, or BHD 1.3 = 1.300. The transaction will be rejected if numbers after the decimal are greater than the expected `currencyCode` exponent (e.g., GBP 1.234), or if a decimal is supplied when the `currencyCode` of  the exponent does not require it (e.g., JPY 1.0). |
| `amounts.currencyCode`string (1-3 characters) | The currency code associated with the transaction, in ISO 4217 format. |
| `recurring`object | Details about the recurring payment details associated with the transaction. |
| `recurring.processingModel`string (enum) | Indicates the type of recurring payment associated with the transaction. When you first create a token, this indicates what type of recurring payment the token is intended for. For subsequent payments, it indicates the type of recurring payment. Specifically, the `frequencyInDays` and `frequencyExpiration` properties are applicable only when this is set to `merchantInitiatedInitialRecurring`.Possible values:`cardOnFileShopperConsent``cardOnFileShopperInitiated``merchantInitiatedReAuthorisation``merchantInitiatedResubmission``merchantInitiatedDelayedCharge``merchantInitiatedNoShow``merchantInitiatedInitialRecurring``merchantInitiatedSubsequentRecurring` |


### Response examples

If your request is successful, you'll receive a `200` response that includes the transaction's `state`. You'll also receive a Transaction (Card Authorised) webhook notification.

Shopper's consent

```json
{ 
  "state": "Authorised",
  "stateData": {},
  "approvalCode": "182765",
  "merchantTransactionDate": "2025-04-07T09:18:01",
  "merchantTransactionId": "003cd998-38a2-4da3-9a5f-5540ba76d653",
  "systemTransactionId": "0283ae6a-1bc1-46a7-96fe-1f3ab0765850",
  "fundingData": {
    "cardScheme": "MasterCard",
    "expiryMonth": null,
    "expiryYear": null,
    "gatewayTokenId": "5fbd77ce-02c1-40ed-94bc-1016660b7512",
    "providerResponse": {
      "provider": "pxpfinancial",
      "code": "00",
      "emvDataResponse": {},
      "paymentAccountReference": "637607302178175469",
      "electronicCommerceIndicatorAdjustment": "07",
      "merchantAdvice": {},
      "authorisedAmount": 5,
      "schemeTransactionId": "MC123456789012345678",
      "schemeTransactionLinkId": "TLID1234567890123456789012",
      "settlementDate": "2025-04-08T00:00:00"
    },"processorTransactionId": "50f52fd5-9059-4a96-94ce-b5ede7ce7799"
  }
}
```

Shopper-initiated

```json
{
  "state": "Authorised",
  "stateData": {},
  "approvalCode": "305331",
  "merchantTransactionDate": "2025-04-08T15:51:00",
  "merchantTransactionId": "01634a6b-0d11-46fd-8597-b7ec264a6bf4",
  "systemTransactionId": "5d0f7b76-cbad-4096-b723-94293a90a0cf",
  "fundingData":{ 
    "cardScheme": "MasterCard",
    "expiryMonth": null,
    "expiryYear": null,
    "gatewayTokenId": "5fbd77ce-02c1-40ed-94bc-1016660b7512",
    "addressVerificationServiceResult": "NoInformationAvailable",
    "providerResponse": {
      "provider": "pxpfinancial",
      "code":"00",
      "addressVerificationServiceResult": "X",
      "emvDataResponse": {},
      "paymentAccountReference": "637607302178175469",
      "electronicCommerceIndicatorAdjustment": "05",
      "merchantAdvice": {},
      "authorisedAmount": 5,
      "schemeTransactionId": "MC123456789012345678",
      "schemeTransactionLinkId": "TLID1234567890123456789012",
      "settlementDate": "2025-04-09T00:00:00"},
      "processorTransactionId": "47902a98-9198-4175-a1d9-782d86b3ef8d"
  }
}
```