**Last updated**: 11 November 2025 | [**Change log**](/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](/products/card-payments/v6/authorize-a-payment), you can find information on how to upgrade in our [migration guide](/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](/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` { "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](/products/card-payments/manage-payments#settle-an-authorization), [partially settle](/products/card-payments/manage-payments#partially-settle-an-authorization), [cancel](/products/card-payments/manage-payments#cancel-an-authorization), [partially cancel](/products/card-payments/manage-payments#partially-cancel-an-authorization) or [query a payment](/products/card-payments/query-a-payment) Note You must use the latest `settle` link to settle the full authorized amount. Using the `settle` link returned in your estimated authorization response will not settle any increased amounts. { "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](/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](/products/events), as per our best practice, you should already have the latest payment status. { "_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` { "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](/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](/products/events/), as per our best practice, you should already have the latest payment status. { "_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](/products/reference/formatting#marketplace-format) for settlement requests: { "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](/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](/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 { "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](/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 { "sequence": { "number": 1, "total": 2 }, "value": { "amount": 125, "currency": "GBP" }, "reference": "partial-settle-reference" } Split funding { "sequence": { "number": 1, "total": 2 }, "value": { "currency": "GBP", "amount": 200 }, "reference": "test1", "merchant": { "marketplace": { "splitFundingReference": "Your split funding reference" } } } Marketplace { "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](/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](/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 { "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](/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](/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](/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 { "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](/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 { "value": { "amount": 125, "currency": "GBP" }, "reference": "partial-refund-reference" } Split funding { "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](/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](/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 { "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](/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](/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](/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](/products/card-payments/authorize-a-payment#response) or [merchantInitiatedTransactions](/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](/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](/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 { "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](/products/card-payments/query-a-payment)