anchor.diff:  "http://127.0.0.1:8080/1.0/kb/catalog/xml"
   ----
   
  +In order to understand more about catalogs, you can refer to the https://docs.killbill.io/latest/userguide_subscription.html#components-catalog[subscription billing] document.
   
   === Overdue configuration
   
  -The overdue configuration will define the three states the account will go through:
  -
  -1. The account will enter the WARNING state 10 days after the first unpaid invoice (i.e. 20 days after the subscription creation)
  -2. 4 days later, the account will move to the BLOCKED state
  -3. 7 days later, the account will move to the CANCELLATION state
  +Based on the scenario defined above, the overdue configuration will define the three states the account will go through:
  +
  +1. The account will enter the `WARNING` state 10 days after the first unpaid invoice (i.e. 20 days after the subscription creation)
  +2. 4 days later, the account will move to the `BLOCKED` state
  +3. 7 days later, the account will move to the `CANCELLATION` state.
  +
  +You can create an XML file corresponding to this overdue configuration as follows:
   
   [source,xml]
   ----
  
positive.code: ----
  
  
  === Payment retries
  
  Additionally, we need to configure the payment system to retry failed payments. Each time a payment is retried, the overdue system will react and adjust the state depending on the payment status.
  
  Kill Bill comes with a built-in retry mechanism. The property `org.killbill.payment.retry.days` specifies the retry schedule for payment failures (e.g. insufficient funds). In our case, we need to set it to `1,1,8` to indicate 3 payment retries, the first one after 1 day, then 1 day after, and the last one 8 days after the previous one (as specified in our scenario).
  
  Additionally, if you need more granularity in how you want to retry payments, you can implement your own logic in a Payment Control plugin (which goes beyond the scope of this tutorial).
  
  Note that such configuration can be uploaded on a per tenant level (if configuring the default system property for all tenants is not an option). In this case the following curl comman would set the per-tenant system properties (and since we only care about that specific property, our JSON will only include that property):
  
  [source,bash]
  ----
  
negative.code: -H "Content-Type: application/json" \
  -H 'X-Killbill-CreatedBy: demo' \
  -X POST \
  "http://127.0.0.1:8080/1.0/kb/test/clock?requestedDate=2021-08-06"
  ----
  
  [start = 6]
  . Configure payment plugin to fail subsequent payments
  
  [source,bash]
  ----
  