anchor.diff:  
   . The end user initiates the checkout process.
   
  -. The merchant website invokes a checkout servlet in Kill Bill. 
  +. The merchant website invokes a checkout servlet in Kill Bill.
   
  -. Kill Bill invokes the https://github.com/killbill/killbill-plugin-api/blob/d9eca5af0e37541069b1c608f95e100dbe13b301/payment/src/main/java/org/killbill/billing/payment/plugin/api/PaymentPluginApi.java#L269[PaymentPluginApi#buildFormDescriptor] method in the payment plugin. 
  +. Kill Bill invokes the https://github.com/killbill/killbill-plugin-api/blob/d9eca5af0e37541069b1c608f95e100dbe13b301/payment/src/main/java/org/killbill/billing/payment/plugin/api/PaymentPluginApi.java#L269[PaymentPluginApi#buildFormDescriptor] method in the payment plugin.
   
   . The `PaymentPlugin#buildFormDescriptor` method makes a gateway specific call and obtains a redirect URL.
   
  
positive.code: 
  * *Kill Bill* - The Kill Bill system
  
  * *Checkout Servlet* - Plugin servlet that initiates setting up the payment method. 
  
  * *Payment Plugin*: https://docs.killbill.io/latest/payment_plugin.html[Kill Bill plugin] corresponding to the payment gateway 
  
  * *Payment Gateway*: Entity that processes the payment
  
  
negative.code: 
  === Server-side Tokenization Payment Method Flow
  
  Sometimes, a merchant site may collect the card details from the end-user and send them to Kill Bill. In this case, Kill Bill makes a call to the payment gateway to tokenize the card information. However, this approach is used *very rarely* as this requires a merchant website to be *PCI Level 1 compliant*. To know what it takes to be PCI Level 1 compliant, you can read https://medium.com/groupon-eng/payments-groupon-part-1-b17b178441a1[this] article.
  
  The following diagram explains this payment method flow:
  
  