Reduce failed payments with Success+

What is Success+ and what does it do?

Success+ is a payment intelligence and automation product that uses machine learning to manage and reduce payment failures. When a payment fails, Success+ retries it on the date it’s most likely to succeed, recovering on average 71% of failed payments.  

What payments does Success+ retry?

Success+ will only retry payments that fail due to NSF (Non-sufficient funds). You can see a breakdown of reason codes below:


Reason codes


R01, R09












AM04, MS03*

*MS03 only applies to the following countries: Austria, Belgium, Germany, Luxembourg and Slovakia

How to use Success+

Enabling Success+

Success+ is enabled via the GoCardless dashboard

You must be an admin user to enable Success+. If for any reason you are not able to enable the feature through the GoCardless dashboard, you will be prompted to contact our Sales or Support team.

  1. Log into the GoCardless dashboard and navigate to the Success+ page. Or follow the link here.

  2. Click Turn on Success+

  3. Choose the scheme/schemes you want to enable Success+ for

  4. Choose the configuration that suits your business. We offer a default preset with the highest chance of recovery. 

  5. Click Enable retries for… to enable Success+

Using Success+ through API

As mentioned above, configuration for Success+ is done via the GoCardless dashboard, even if your business uses GoCardless via API. However, API merchants do have the additional ability to decide whether Success+ should be applied on each payment they submit, via a boolean flag. This is useful if your business wants to create its own rules about when Success+ should apply to different customers or payment types. 

The Success+ flag

The flag retry_if_possible is used to control whether Success+ is enabled on a payment. The following payment types support this boolean flag:

  • Individual payments

  • Instalment schedules

  • Subscriptions

For API users enabling Success+, the flag is mandatory and by default, the flag will be set to false.  If you are enabling Success+ as a partner, the flag will automatically be set to true unless specified otherwise. 

Using Success+ with individual payments

Creating payments

When creating a payment, set retry_if_possible to true. This will enable intelligent retries if the payment is eligible.

Updating payments

If a payment has been created with retry_if_possible set to true, then it can be updated to false. This will prevent the payment from being automatically retried in the event of a failure.

The API currently only allows the flag to be updated to false. Hence for a payment which has been already created it is not possible to set this flag to true.

1POST HTTP/1.1 2Content-Type: application/json 3{ 4 "payments": { 5 "amount": 100, 6 "currency": "GBP", 7 "retry_if_possible": true, 8 ... 9 } 10} 11 12PUT HTTP/1.1 13Content-Type: application/json 14{ 15 "payments": { 16 "retry_if_possible": false 17 } 18}

Using Success+ with Instalment Schedules

When creating an instalment schedule set retry_if_possible to true to ensure that all instalment payments created are automatically retried upon failure.

1POST HTTP/1.1 2Content-Type: application/json 3{ 4 "instalment_schedules": { 5 "name": "Bike Invoice 271", 6 "total_amount": "2500", 7 "currency": "GBP", 8 "retry_if_possible": true, 9 ... 10}

Using Success+ with Subscriptions

When creating a subscription set retry_if_possible to true to ensure that all payments created for the subscription are retried automatically upon failure.

Further information

For further information, visit the API Reference for Success+ here.

What to do if a payment is going to be retried

  • After any payment_failed event with will_attempt_retry set to true, we will send a payment:resubmission_requested event. 

  • You can treat this exactly the same as a manual user-triggered retry - the payment will be re-attempted on the new charge_date and will go through the normal payment flow.

How to know which payments will be retried

  • You can use the will_attempt_retry flag on the payment:failed event to identify payments which will be intelligently retried. 

  • If the flag is set to true, then the payment will be intelligently retried. 

  • If set to false, the payment will not be retried and then you can retry the payment manually.

How to stop a payment being retried

  • ​​To stop a payment from being retried, call update payment endpoint with retry_if_possible set to false

  • While the initial payment will still continue, it will not be automatically retried.

  • The payment status must be in "pending_submission" for it to be updated successfully

Need help?