**Last updated**: 11 November 2025 | [**Change log**](/products/card-payments/changelog/) # Manage payments 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. ## Cancel an authorization If you don't want to proceed with a payment, you can send a cancel request. POST to the `payments: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/v6/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": { "payments:events": { "href": "https://try.access.worldpay-bsh.securedataplatform.com/payments/events/eyJrIjoiazNhYjYzMiJ9" }, "curies": [ { "name": "payments", "href": "https://try.access.worldpay-bsh.securedataplatform.com/rels/payments/{rel}", "templated": true } ] } } br ## Settle an authorization To receive all the funds from the customer, send us a settle request. POST to the `payments: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/v6/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. { "_links": { "payments:refund": { "href": "https://try.access.worldpay-bsh.securedataplatform.com/payments/settlements/refunds/full/eyJrIjoiazNhYjYzMiJ9" }, "payments:partialRefund": { "href": "https://try.access.worldpay-bsh.securedataplatform.com/payments/settlements/refunds/partials/eyJrIjoiazNhYjYzMiJ9" }, "payments:events": { "href": "https://try.access.worldpay-bsh.securedataplatform.com/payments/events/eyJrIjoiazNhYjYzMiJ9" }, "curies": [ { "name": "payments", "href": "https://try.access.worldpay-bsh.securedataplatform.com/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. POST to the `payments:partialSettle` action link, returned in your [authorization response](/products/card-payments/v6/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 { "value": { "amount": 125, "currency": "GBP" }, "reference": "partial-settle-reference" } Marketplace { "sequence":{ "number":1, "total":2 }, "value":{ "currency":"GBP", "amount":200 }, "reference":"test1", "merchant":{ "marketplace":{ "sellerCountryCode":"GB", "splitFundingReference":"Your split funding reference" } } } #### Descriptions of your partial settlement request parameters: | Parameter | Required | Description | | --- | --- | --- | | `reference` | ✅ | A unique reference generated by you to identify the partial settlement. For more information and best practice see [transaction reference format](/products/reference/formatting#transaction-reference-format). | | `sequence.number` | Required if supplying [marketplace data](/products/reference/formatting#marketplace-format). Else, optional. | The sequence number for this request for partial settlement. Eg sequence number 1 of 2 total partial settlement requests. | | `sequence.total` | Required if supplying [marketplace data](/products/reference/formatting#marketplace-format). Else, optional. | The total number of expected partial settlement requests. | ### 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/v6/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. { "_links": { "payments:refund": { "href": "https://try.access.worldpay-bsh.securedataplatform.com/payments/settlements/refunds/full/eyJrIjoiazNhYjYzMiJ9" }, "payments:partialRefund": { "href": "https://try.access.worldpay-bsh.securedataplatform.com/payments/settlements/refunds/partials/eyJrIjoiazNhYjYzMiJ9" }, "payments:partialSettle": { "href": "https://try.access.worldpay-bsh.securedataplatform.com/payments/settlements/partials/eyJrIjoiazNhYjYzMiJ9" }, "payments:cancel": { "href": "https://try.access.worldpay-bsh.securedataplatform.com/payments/authorizations/cancellations/eyJrIjoiazNhYjYzMiJ9" }, "payments:events": { "href": "https://try.access.worldpay-bsh.securedataplatform.com/payments/events/eyJrIjoiazNhYjYzMiJ9" }, "curies": [{ "name": "payments", "href": "https://try.access.worldpay-bsh.securedataplatform.com/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 `payments:refund` action link received in your [full](#settle-response) settlement, [partial](#partially-settle-response) settlement or [sale](/products/card-payments/v6/take-a-sale#recurring-sale-response) response. ### 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/v6/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": { "payments:events": { "href": "https://access.worldpay-bsh.securedataplatform.com/payments/events/eyJrIjoiazNhYjYzMiJ9" }, "curies": [ { "name": "payments", "href": "https://access.worldpay-bsh.securedataplatform.com/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 `payments:partialRefund` action link, returned in your [settlement](#settle-an-authorization) or [sale](/products/card-payments/v6/take-a-sale#recurring-sale-response) 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` { "value": { "amount": 125, "currency": "GBP" }, "reference": "partial-refund-reference" } ### 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/v6/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": { "payments:partialRefund": { "href": "https://try.access.worldpay-bsh.securedataplatform.com/payments/settlements/refunds/partials/eyJrIjoiazNhYjYzMiJ9" }, "payments:events": { "href": "https://try.access.worldpay-bsh.securedataplatform.com/payments/events/eyJrIjoiazNhYjYzMiJ9" }, "curies": [{ "name": "payments", "href": "https://try.access.worldpay-bsh.securedataplatform.com/rels/payments/{rel}", "templated": true }] } } ### Online refunds Online refunds allow you to provide notice to cardholders that a refund attempt has either been 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) contains: - a `refund.onlineRefundAuthorization` code - for a successful online refund or - a `refund.refusal` object - for a refused online refund. br ## Reverse a sale Your reversal request is processed as a cancel or refund request. This depends on the time passed after your [sale](/products/card-payments/v6/take-a-sale) request was submitted. For US entities the payment is refunded after one day after a successful sale request. Any other payment moves to refunded after 15 minutes. `POST` to the `payments:reversal` action link received in your [migrateCardOnFileSale](/products/card-payments/v6/migrate-cardonfile-sale#-migratecardonfilesale-response) or [recurringSale](/products/card-payments/v6/take-a-sale#recurring-sale-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/v6/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. { "_links": { "payments:events": { "href": "https://access.worldpay-bsh.securedataplatform.com/payments/events/eyJrIjoiazNhYjYzMiJ9" }, "curies": [ { "name": "payments", "href": "https://access.worldpay-bsh.securedataplatform.com/rels/payments/{rel}", "templated": true } ] } } **Next steps** [Query a payment](/products/card-payments/v6/query-a-payment)