anchor.diff:  
   **  *payment amount*  - The *amount* is retrieved from the `payment` object.
   
  -**  *killBillCurrency*  - The *GoCardless currency* (`com.gocardless.resources.Payment.Currency`) is retrieved from the `payment` object and converted to *Kill Bill currency* (`org.killbill.billing.catalog.api.Currency`).
  +**  *killBillCurrency* - The *GoCardless currency* (`com.gocardless.resources.Payment.Currency`) is retrieved from the `payment` object and converted to *Kill Bill currency* (`org.killbill.billing.catalog.api.Currency`).
   
   ** *status* - The *GoCardless status* (`com.gocardless.resources.Payment.Status`) is retrieved from the `payment` object and converted to *Kill Bill status* (`org.killbill.billing.payment.plugin.api.PaymentPluginStatus`).
   
   ** *kbTransactionId* - This is retrieved from the payment metadata. This step is very important because, the Janitor uses the *transaction id* to match the internal transactions with the plugin transactions as explained earlier. 
   
  -** *outputProperties* - This is a List of `PluginProperty` objects and contains properties corresponding to the `mandateId` and `customerId. See <<plugin_property_notes, "Plugin Property Notes">> for more information.
  +** *outputProperties* - This is a `List` of `PluginProperty` objects and contains properties corresponding to the `mandateId` and `customerId. See <<plugin_property_notes, Plugin Property Notes>> for more information.
   
   * The List of `GoCardlessPaymentTransactionInfoPlugin` object is returned back.
   
  
positive.code: ==== Step 8 - Creating GoCardlessCheckoutServlet
  
  In the case of GoCardless, we need to create an additional servlet that invokes the `GoCardlessPluginApi#buildFormDescriptor` method. Normally, a client API invokes `buildFormDescriptor` via the 
  https://github.com/killbill/killbill-api/blob/4ae1c343a593de937415e21feecb9f5405037fa3/src/main/java/org/killbill/billing/payment/api/PaymentGatewayApi.java[_PaymentGatewayApi_] interface. If you take a look at the https://github.com/killbill/killbill-api/blob/4ae1c343a593de937415e21feecb9f5405037fa3/src/main/java/org/killbill/billing/payment/api/PaymentGatewayApi.java#L43[_PaymentGatewayApi#buildFormDescriptor_] method, you will notice that it accepts a `UUID paymentMethodId` as a parameter. Thus, this method assumes that a https://docs.killbill.io/latest/userguide_payment.html#_payment_methods[__payment method__] already exists. However, in the case of GoCardless, we are using the `GoCardlessPluginApi#buildFormDescriptor` to create a form where a user sets up a mandate. Thus, the *payment method* will not exist in Kill Bill at the time of invoking the `PaymentGatewayApi#buildFormDescriptor` method. So, this method cannot directly invoke the `GoCardlessPlugin#buildFormDescriptor` method. To work around this, we need to create a servlet and invoke the `GoCardlessPlugin#buildFormDescriptor` method from this servlet. The client application needs to invoke this servlet and not the `PaymentGatewayApi#buildFormDescriptor` method.
  
  Thus, this servlet is implemented as follows (See https://github.com/killbill/killbill-gocardless-example-plugin/blob/9522498ecde5849c940574c598ceb5ce088d32a7/src/main/java/org/killbill/billing/plugin/gocardless/GoCardlessCheckoutServlet.java[_GoCardlessCheckoutServlet_]):
  
  [source,java,linenums]
  ----
  
negative.code: [[gocardless_activator]]
  ==== Step 9 - Creating GoCardlessActivator
  
  All plugins require an activator class that starts the plugin. Let us take a look at the https://github.com/killbill/killbill-gocardless-example-plugin/blob/9522498ecde5849c940574c598ceb5ce088d32a7/src/main/java/org/killbill/billing/plugin/gocardless/GoCardlessActivator.java[`GoCardlessActivator`] class:
  
  [source,java,linenums]
  ----
  