**Last updated**: 30 March 2026 | [**Change log**](/access/products/card-payments/changelog/)

# Manage payments

New API Version
This documentation is for version 7 of the Card Payments API. If you're using [version 6](/access/products/card-payments/v6/authorize-a-payment), you can find information on how to upgrade in our [migration guide](/access/products/card-payments/v7-migration-guide).

This document gives an overview on how to cancel, settle, refund or reverse payments.

Best practice
To manage your payments we recommend using our [events service](/access/products/events) to receive the latest status of your payment to your server in real-time.

br
## Increase an authorization

You can send an incremental authorization request to increase an initial estimated authorization amount (submitted with `estimated`: "true").

POST to the `cardPayments:increaseAuthorizedAmount` action link, returned in your estimated authorization response, to increase the authorization amount.

Note
You can only increase an authorized amount which is not `settled`.

### Incremental authorization request

Send the amount to cancel and the authorization currency in the body.

`POST`  `https://try.access.worldpay-bsh.securedataplatform.com/payments/authorizations/incrementalAuthorizations/eyJrIjoiazNhYjYzMiJ9`


```json
{
  "value": {
    "amount": 125,
    "currency": "GBP"
  }
}
```

### Incremental authorization response

#### Successful response

In the response you get:

* a `202` HTTP code which confirms the request was successfully received.
* an "outcome": "authorized"
* an issuer authorization code
* a scheme reference
* links to: [settle](/access/products/card-payments/manage-payments#settle-an-authorization), [partially settle](/access/products/card-payments/manage-payments#partially-settle-an-authorization), [cancel](/access/products/card-payments/manage-payments#cancel-an-authorization), [partially cancel](/access/products/card-payments/manage-payments#partially-cancel-an-authorization) or [query a payment](/access/products/card-payments/query-a-payment)


Note
You must use the latest next action links returned by the incremental authorization response to settle (full/partial) and cancel (full/partial) the increased authorized amount.

Using the next action links returned in your estimated authorization response will not use any increased amounts.


```json
{
    "outcome": "authorized",
    "balance": {
        "totalAuthorized": 1100,
        "currency": "GBP"
    },
    "issuer": {
        "authorizationCode": "T91252"
    },
    "scheme": {
        "reference": "MCCRU3I5U0701  "
    },
    "_links": {
        "cardPayments:increaseAuthorizedAmount": {
            "href": "https://try.access.worldpay-bsh.securedataplatform.com/payments/authorizations/incrementalAuthorizations/eyJrIjoiazNhYjYzMiJ9"
        },
        "cardPayments:cancel": {
            "href": "https://try.access.worldpay-bsh.securedataplatform.com/payments/authorizations/cancellations/eyJrIjoiazNhYjYzMiJ9"
        },
        "cardPayments:partialCancel": {
            "href": "https://try.access.worldpay-bsh.securedataplatform.com/payments/authorizations/cancellations/partials/eyJrIjoiazNhYjYzMiJ9"
        },
        "cardPayments:settle": {
            "href": "https://try.access.worldpay-bsh.securedataplatform.com/payments/settlements/full/eyJrIjoiazNhYjYzMiJ9"
        },
        "cardPayments:partialSettle": {
            "href": "https://try.access.worldpay-bsh.securedataplatform.com/payments/settlements/partials/eyJrIjoiazNhYjYzMiJ9"
        },
        "cardPayments:events": {
            "href": "https://try.access.worldpay-bsh.securedataplatform.com/payments/events/eyJrIjoiazNhYjYzMiJ9"
        },
        "curies": [
           {
             "name": "cardPayments",
              "href": "https://try.access.worldpay-bsh.securedataplatform.com/rels/cardPayments/{rel}",
              "templated": true
           }
         ]
     }
}
```

#### Refused response

In the response you get:

* a `202` HTTP code which confirms the request was successfully received.
* an "outcome": "refused"
* a `refusalCode`
* a `refusalDescription` which gives additional context on the refusal


br
## Cancel an authorization

If you don't want to proceed with a payment, you can send a cancel request.

POST to the `cardPayments:cancel` action link, returned in any of your authorization responses, to cancel the authorization.

Note
You can only cancel a payment which is `authorized`. If the payment is settled, you must create a [refund](#fully-refund-a-payment).

### Cancel request

`POST`  `https://try.access.worldpay-bsh.securedataplatform.com/payments/authorizations/cancellations/eyJrIjoiazNhYjYzMiJ9`

Note
No request body is needed for this request.

### Cancel response

In the response you get a `202` HTTP code which confirms we have received your request. The request has not processed at this stage. You must [query](/access/products/card-payments/query-a-payment) the payment to check the status.
You can find a link for this in the response body.

Best practice
If you're using our [events service](/access/products/events), as per our best practice, you should already have the latest payment status.


```json
{
    "_links": {
        "cardPayments:events": {
            "href": "https://try.access.worldpay-bsh.securedataplatform.com/payments/events/eyJrIjoiazNhYjYzMiJ9"
        },
        "curies": [
            {
                "name": "cardPayments",
                "href": "https://try.access.worldpay-bsh.securedataplatform.com/rels/cardPayments/{rel}",
                "templated": true
            }
        ]
    }
}
```

br
## Partially cancel an authorization

If you don't want to proceed with the full payment cancellation, you can send a partial cancel request.

POST to the `cardPayments:partialCancel` action link, returned in any of your authorization responses, to cancel the authorization.

Note
You can only cancel a payment which is `authorized`. If the payment is settled, you must create a [refund](#fully-refund-a-payment).

### Partial cancel request

Send the amount to cancel and the authorization currency in the body.

`POST`  `https://try.access.worldpay-bsh.securedataplatform.com/payments/authorizations/cancellations/partials/eyJrIjoiazNhYjYzMiJ9`


```json
{
  "value": {
    "amount": 125,
    "currency": "GBP"
  },
  "reference": "partial-cancel-reference"
}
```

### Partial cancel response

In the response you get a `202` HTTP code which confirms we have received your request. The request has not processed at this stage. You must [query](/access/products/card-payments/query-a-payment) the payment to check the status.
You can find a link for this in the response body.

Best practice
If you're using our [events service](/access/products/events/), as per our best practice, you should already have the latest payment status.


```json
{
  "_links": {
    "cardPayments:events": {
      "href": "https://try.access.worldpay-bsh.securedataplatform.com/payments/events/eyJrIjoiazNhYjYzMiJ9"
    },
    "cardPayments:partialCancel": {
      "href": "https://try.access.worldpay-bsh.securedataplatform.com/payments/authorizations/cancellations/partials/eyJrIjoiazNhYjYzMiJ9"
    },
    "cardPayments:partialSettle": {
      "href": "https://try.access.worldpay-bsh.securedataplatform.com/payments/settlements/partials/eyJrIjoiazNhYjYzMiJ9"
    },
    "curies": [
      {
        "name": "cardPayments",
        "href": "https://try.access.worldpay-bsh.securedataplatform.com/rels/cardPayments/{rel}",
        "templated": true
      }
    ]
  }
}
```

br
## Settle an authorization

To receive all the funds from the customer, send us a settle request.

You can only do this if you set `"requestAutoSettlement"` to `false` in your initial request.

POST to the `cardPayments:settle` action link, returned in any of the authorization responses, to settle an authorization.

### Settle request

`POST`  `https://try.access.worldpay-bsh.securedataplatform.com/payments/settlements/full/eyJrIjoiazNhYjYzMiJ9`

Note
No request body is needed for this request.

Marketplaces can optionally provide a body containing [marketplace data](/access/products/reference/formatting#marketplace-format) for settlement requests:


```json
{
    "merchant": {
        "marketplace": {
            "sellerCountryCode": "GB",
            "splitFundingReference": "Your split funding reference"
        }
    }
}
```

When you make your settle request, the payment event changes to `sentForSettlement`.

### Settle response

In the response you get a `202` HTTP code which confirms we have received your request. The request has not processed at this stage. You must [query](/access/products/card-payments/query-a-payment) the payment to check the status.
You can find a link for this in the response body, as well as links to [refund and partially refund](#fully-refund-a-payment).

Best practice
If you're using our [events service](/access/products/events), as per our best practice, you should already have the latest payment status.

We also return:

* `paymentId` - a unique identifier generated by us for a single payment. Generated at authorization, and maintained through successive payment actions
* `commandId` - a unique identifier generated by us for a single instance of an interaction (command) with our API



```json
{
  "paymentId": "pay7TLP6nGrpumEKxy7NiuOx0",
  "commandId": "cmdp9D1t-ENYQxVnJkh0YPRC0",
  "_links": {
    "cardPayments:refund": {
      "href": "/payments/settlements/refunds/full/:linkData"
    },
    "cardPayments:partialRefund": {
      "href": "/payments/settlements/refunds/partials/:linkData"
    },
    "cardPayments:reverse": {
      "href": "/payments/authorizations/reversals/:linkData"
    },
    "cardPayments:events": {
      "href": "/payments/events/:linkData"
    },
    "curies": [
      {
        "name": "payments",
        "href": "/rels/payments/{rel}",
        "templated": true
      }
    ]
  }
}
```

br
## Partially settle an authorization

To receive a portion of the funds of a payment, send us a request to partially settle an authorization.

You can only do this, if you set `"requestAutoSettlement"` to `false` in your initial request.

POST to the `cardPayments:partialSettle` action link, returned in your [authorization response](/access/products/card-payments/authorize-a-payment#response), to partially settle an authorization. Specify the amount and the required settlement currency in the body.

Note
We do not validate that the currency and amount is the same as the original payment.

### Partial settle request

`POST`  `https://try.access.worldpay-bsh.securedataplatform.com/payments/settlements/partials/eyJrIjoiazNhYjYzMiJ9`

Standard

```json
{
    "sequence": {
        "number": 1,
        "total": 2
    },
    "value": {
        "amount": 125,
        "currency": "GBP"
    },
    "reference": "partial-settle-reference"
}
```

Split funding

```json
{
    "sequence": {
        "number": 1,
        "total": 2
    },
    "value": {
        "currency": "GBP",
        "amount": 200
    },
    "reference": "test1",
    "merchant": {
        "marketplace": {
            "splitFundingReference": "Your split funding reference"
        }
    }
}
```

Marketplace

```json
{
    "sequence": {
        "number": 1,
        "total": 2
    },
    "value": {
        "currency": "GBP",
        "amount": 200
    },
    "reference": "test1",
    "merchant": {
        "marketplace": {
            "sellerCountryCode": "GB",
            "splitFundingReference": "Your split funding reference"
        }
    }
}
```

Partial settlement request parameters:

### Partial settle response

In the response you get a `202` HTTP code which confirms we have received your request. The request has not processed at this stage. You must [query](/access/products/card-payments/query-a-payment) the payment to check the status.
You can find a link for this in the response body, as well as links to [refund, partially refund](#fully-refund-a-payment), [partially settle](#partially-settle-an-authorization) and [cancel](#cancel-an-authorization) your payment.

Best practice
If you're using our [events service](/access/products/events), as per our best practice, you should already have the latest payment status.

We also return:

* `paymentId` - a unique identifier generated by us for a single payment. Generated at authorization, and maintained through successive payment actions
* `commandId` - a unique identifier generated by us for a single instance of an interaction (command) with our API



```json
{
  "paymentId": "payymIRjUAvh-rWc-7phWocp0",
  "commandId": "cmdpsIok1vBZ_CDqWplJPl2_0",
  "_links": {
    "cardPayments:refund": {
      "href": "/payments/settlements/refunds/full/:linkData"
    },
    "cardPayments:partialRefund": {
      "href": "/payments/settlements/refunds/partials/:linkData"
    },
    "cardPayments:partialSettle": {
      "href": "/payments/settlements/partials/:linkData"
    },
    "cardPayments:reverse": {
      "href": "/payments/authorizations/reversals/:linkData"
    },
    "cardPayments:cancel": {
      "href": "/payments/authorizations/cancellations/:linkData"
    },
    "cardPayments:events": {
      "href": "/payments/events/:linkData"
    },
    "curies": [
      {
        "name": "payments",
        "href": "/rels/payments/{rel}",
        "templated": true
      }
    ]
  }
}
```

br
## Fully refund a payment

Send a refund request to return the full `settled` amount to your customer.

`POST` to the `cardPayments:refund` action link received in your [full](#settle-response) settlement, [partial](#partially-settle-response) settlement or [customerInitiatedTransactions](/access/products/card-payments/authorize-a-payment) response (where you have requested auto settlement).

### Full refund request

`POST` `https://try.access.worldpay-bsh.securedataplatform.com/payments/settlements/refunds/full/eyJrIjoiazNhYjYzMiJ9`

Note
No request body is needed for this request.

### Full refund response

In the response you get a `202` HTTP code which confirms we have received your request. The request has not processed at this stage. You must [query](/access/products/card-payments/query-a-payment) the payment to check the status.
You can find a link for this in the response body.

Best practice
If you're using our [events service](/access/products/events), as per our best practice, you should already have the latest payment status.

We also return:

* `paymentId` - a unique identifier generated by us for a single payment. Generated at authorization, and maintained through successive payment actions
* `commandId` - a unique identifier generated by us for a single instance of an interaction (command) with our API



```json
{
  "paymentId": "payqRdrJboocTc1dCVdAu4Vd0",
  "commandId": "cmddn9j_SEC7N4_ynTDRBWc-0",
  "_links": {
    "cardPayments:events": {
      "href": "/payments/events/:linkData"
    },
    "curies": [
      {
        "name": "payments",
        "href": "/rels/payments/{rel}",
        "templated": true
      }
    ]
  }
}
```

## Partially refund a payment

Send a partial refund request to return a portion of the `settled` amount to your customer.

`POST` your request to the `cardPayments:partialRefund` action link, returned in your [settlement](#settle-an-authorization) or [customerInitiatedTransactions](/access/products/card-payments/authorize-a-payment) response.

### Partial refund request

Send the `amount` to refund and the authorization `currency` in the body.

`POST` `https://try.access.worldpay-bsh.securedataplatform.com/payments/settlements/refunds/partials/eyJrIjoiazNhYjYzMiJ9`

Standard

```json
{
    "value": {
        "amount": 125,
        "currency": "GBP"
    },
    "reference": "partial-refund-reference"
}
```

Split funding

```json
{
    "value": {
        "amount": 125,
        "currency": "GBP"
    },
    "reference": "partial-refund-reference",
    "merchant": {
        "marketplace": {
            "splitFundingReference": "Your split funding reference"
        }
    }
}
```

Partial refund request parameters:

### Partial refund response

In the response you get a `202` HTTP code which confirms we have received your request. The request has not processed at this stage. You must [query](/access/products/card-payments/query-a-payment) the payment to check the status.
You can find a link for this in the response body.

Best practice
If you're using our [events service](/access/products/events), as per our best practice, you should already have the latest payment status.

We also return:

* `paymentId` - a unique identifier generated by us for a single payment. Generated at authorization, and maintained through successive payment actions
* `commandId` - a unique identifier generated by us for a single instance of an interaction (command) with our API



```json
{
  "paymentId": "payleHRjF9Ca-mxSJNcJ6V3K0",
  "commandId": "cmdzEVdGDvH72FI1i2ypIf3B0",
  "_links": {
    "cardPayments:events": {
      "href": "/payments/events/:linkData"
    },
    "curies": [
      {
        "name": "payments",
        "href": "/rels/payments/{rel}",
        "templated": true
      }
    ]
  }
}
```

## Online refunds

Online refunds allow you to provide notice to cardholders that a refund attempt has been either successfully authorized or refused by the issuer. 
The response for online refunds is the same as for standard refunds: you get a `202` HTTP code which confirms we have received your request.

However, the [event webhook](/access/products/events#events-supported) will contain a `refund.onlineRefundAuthorization` code for a successful online refund, or a `refund.refusal` object for a refused online refund.

## Fast Refunds

Fast Refunds allow you to credit a cardholder's account within 30 minutes, where your customer's card account accepts fast funds disbursements.

[See example of fast refund request](/access/products/card-payments/features/fast-refunds)

br
## Reverse a payment

Your reversal request is processed as a cancel or refund request. This depends on the time passed after your [customerInitiatedTransactions](/access/products/card-payments/authorize-a-payment) request was submitted. For US entities the payment is refunded one day after a successful request. Any other payment moves to refunded after 15 minutes.

`POST` to the `cardPayments:reversal` action link received in your [customerInitiatedTransactions](/access/products/card-payments/authorize-a-payment#response) or [merchantInitiatedTransactions](/access/products/card-payments/repeat-payments#response) response.

### Reversal request

`POST` `https://try.access.worldpay-bsh.securedataplatform.com/payments/sales/reversals/eyJrIjoiazNhYjYzMiJ9`

Note
No request body is needed for this request.

### Reversal response

In the response you get a `202` HTTP code which confirms we have received your request. The request has not processed at this stage. You must [query](/access/products/card-payments/query-a-payment) the payment to check if it was canceled or refunded.
You can find a link for this in the response body.

Best practice
If you're using our [events service](/access/products/events), as per our best practice, you should already have the latest payment status.

We also return:

* `paymentId` - a unique identifier generated by us for a single payment. Generated at authorization, and maintained through successive payment actions
* `commandId` - a unique identifier generated by us for a single instance of an interaction (command) with our API



```json
{
  "paymentId": "payqRdrJboocTc1dCVdAu4Vd0",
  "commandId": "cmddn9j_SEC7N4_ynTDRBWc-0",
  "_links": {
    "cardPayments:events": {
      "href": "/payments/events/:linkData"
    },
    "curies": [
      {
        "name": "payments",
        "href": "/rels/payments/{rel}",
        "templated": true
      }
    ]
  }
}
```

**Next steps**

[Query a payment](/access/products/card-payments/query-a-payment)