diff --git a/config/install/uc_affirm.settings.yml b/config/install/uc_affirm.settings.yml
new file mode 100644
index 0000000..04a0e0d
--- /dev/null
+++ b/config/install/uc_affirm.settings.yml
@@ -0,0 +1,5 @@
+uc_affirm_fpkey: 'Enter financial product key'
+uc_affirm_public_key: 'Enter public key'
+uc_affirm_private_key: 'Enter private key'
+uc_affirm_server: 'Enter server type'
+uc_affirm_txt_type: 'Enter transaction type'
\ No newline at end of file
diff --git a/config/schema/uc_affirm.schema.yml b/config/schema/uc_affirm.schema.yml
index ff2ccaa..228478b 100644
--- a/config/schema/uc_affirm.schema.yml
+++ b/config/schema/uc_affirm.schema.yml
@@ -24,3 +24,44 @@ uc_order.status.*:
       type: string
       label: 'Default language'
 
+# Schema for the configuration files of the uc_affirm module.
+
+uc_affirm.settings:
+  type: config_object
+  label: 'affirm settings'
+  mapping:
+    uc_affirm_fpkey:
+      type: string
+      label: 'Store the financial product key'
+    uc_affirm_public_key:
+      type: string
+      label: 'Store the public key'
+    uc_affirm_private_key:
+      type: string
+      label: 'Store the private key'
+    uc_affirm_server:
+      type: string
+      label: 'Store the server type'
+    uc_affirm_txt_type:
+      type: string
+      label: 'Store the transaction type'
+
+payment_method.settings.uc_affirm:
+  type: mapping
+  label: 'Affirm payment method configuration settings'
+  mapping:
+    uc_affirm_fpkey:
+      type: string
+      label: 'Store the financial product key'
+    uc_affirm_public_key:
+      type: string
+      label: 'Store the public key'
+    uc_affirm_private_key:
+      type: string
+      label: 'Store the private key'
+    uc_affirm_server:
+      type: string
+      label: 'Store the server type'
+    uc_affirm_txt_type:
+      type: string
+      label: 'Store the transaction type'
\ No newline at end of file
diff --git a/src/Plugin/Ubercart/PaymentMethod/Affirm.php b/src/Plugin/Ubercart/PaymentMethod/Affirm.php
index 6498d92..a36b2b0 100644
--- a/src/Plugin/Ubercart/PaymentMethod/Affirm.php
+++ b/src/Plugin/Ubercart/PaymentMethod/Affirm.php
@@ -21,6 +21,7 @@ use Drupal\uc_store\Address;
  * @UbercartPaymentMethod(
  *   id = "affirm",
  *   name = @Translation("Affirm", context = "Ubercart Affirm"),
+ *   redirect = "\Drupal\uc_affirm\Form\AffirmSettingsForm",
  * )
  */
 class Affirm extends PaymentMethodPluginBase {
@@ -28,14 +29,31 @@ class Affirm extends PaymentMethodPluginBase {
   /**
    * {@inheritdoc}
    */
+  public function getDisplayLabel($label) {
+    $build['label'] = array(
+      '#plain_text' => $label,
+      '#suffix' => '<br />',
+    );
+    $build['image'] = array(
+      '#theme' => 'image',
+      '#uri' => drupal_get_path('module', 'uc_affirm') . '/images/affirm_logo.png',
+      '#alt' => $this->t('Affirm'),
+      '#attributes' => array('class' => array('')),
+    );
+    return $build;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   public function defaultConfiguration() {
     $config = \Drupal::config('uc_affirm.settings');
     return [
-      'uc_affirm_fpkey' => empty($config->get('uc_affirm_public_key')) ? '' : $config->get('uc_affirm_public_key'),
-      'uc_affirm_public_key' => empty($config->get('uc_affirm_public_key')) ? '' : $config->get('uc_affirm_public_key'),
-      'uc_affirm_private_key' => empty($config->get('uc_affirm_private_key')) ? '' : $config->get('uc_affirm_private_key'),
-      'uc_affirm_server' => empty($config->get('uc_affirm_server')) ? 'sandbox' : $config->get('uc_affirm_server'),
-      'uc_affirm_txt_type' => empty($config->get('uc_affirm_txt_type')) ? 'Authorized' : $config->get('uc_affirm_txt_type'),
+      'uc_affirm_fpkey' => '',
+      'uc_affirm_public_key' => '',
+      'uc_affirm_private_key' => '',
+      'uc_affirm_server' => '',
+      'uc_affirm_txt_type' => '',
     ];
   }
 
@@ -50,28 +68,28 @@ class Affirm extends PaymentMethodPluginBase {
       '#title' => $this->t('API settings'),
       '#description' => $this->t('You are responsible for the security of your website, including the protection of Affirm API details.  Please be aware that choosing some settings in this section may decrease the security of Affirm data on your website and increase your liability for damages in the case of fraud.'),
     );
-    $form['api_security']['uc_affirm_financial_product_key'] = array(
+    $form['uc_affirm_fpkey'] = array(
       '#type' => 'textfield',
       '#title' => $this->t('Financial product key'),
       '#description' => $this->t('This financial product key provided by the affirm dash board.'),
       '#default_value' => $this->configuration['uc_affirm_fpkey'],
       '#required' => TRUE,
     );
-    $form['api_security']['uc_affirm_public_api_key'] = array(
+    $form['uc_affirm_public_key'] = array(
       '#type' => 'textfield',
       '#title' => $this->t('Public API key'),
       '#description' => $this->t('This public api key provided by the affirm dashboard.'),
       '#default_value' => $this->configuration['uc_affirm_public_key'],
       '#required' => TRUE,
     );
-    $form['api_security']['uc_affirm_private_api_key'] = array(
+    $form['uc_affirm_private_key'] = array(
       '#type' => 'textfield',
       '#title' => $this->t('Private API key'),
       '#description' => $this->t('This private api key provided by the affirm dashboard.'),
       '#default_value' => $this->configuration['uc_affirm_private_key'],
       '#required' => TRUE,
     );
-    $form['api_security']['uc_affirm_server'] = array(
+    $form['uc_affirm_server'] = array(
       '#type' => 'select',
       '#title' => $this->t('Affirm Server'),
       '#description' => $this->t('Available list of affirm server.'),
@@ -82,7 +100,7 @@ class Affirm extends PaymentMethodPluginBase {
       '#default_value' => $this->configuration['uc_affirm_server'],
       '#required' => TRUE,
     );
-    $form['api_security']['uc_affirm_txt_type'] = array(
+    $form['uc_affirm_txt_type'] = array(
       '#type' => 'radios',
       '#title' => $this->t('Default credit card transaction type'),
       '#description' => $this->t('The default will be used to process transactions during checkout.'),
@@ -93,7 +111,6 @@ class Affirm extends PaymentMethodPluginBase {
       '#default_value' => $this->configuration['uc_affirm_txt_type'],
       '#required' => TRUE,
     );
-
     return $form;
   }
 
@@ -101,73 +118,11 @@ class Affirm extends PaymentMethodPluginBase {
    * {@inheritdoc}
    */
   public function submitConfigurationForm(array &$form, FormStateInterface $form_state) {
-    $this->configuration['uc_affirm_fpkey'] = $form_state->getValue('uc_affirm_financial_product_key');
-    $this->configuration['uc_affirm_public_key'] = $form_state->getValue('uc_affirm_public_api_key');
-    $this->configuration['uc_affirm_private_key'] = $form_state->getValue('uc_affirm_private_api_key');
+    $this->configuration['uc_affirm_fpkey'] = $form_state->getValue('uc_affirm_fpkey');
+    $this->configuration['uc_affirm_public_key'] = $form_state->getValue('uc_affirm_public_key');
+    $this->configuration['uc_affirm_private_key'] = $form_state->getValue('uc_affirm_private_key');
     $this->configuration['uc_affirm_server'] = $form_state->getValue('uc_affirm_server');
     $this->configuration['uc_affirm_txt_type'] = $form_state->getValue('uc_affirm_txt_type');
   }
 
-  /**
-   * {@inheritdoc}
-   */
-  public function buildRedirectForm(array $form, FormStateInterface $form_state, OrderInterface $order = NULL) {
-    // $country = \Drupal::service('country_manager')->getCountry($order->getAddress('billing')->country);
-
-    $data = array(
-      'sid' => $this->configuration['sid'],
-      'mode' => '2CO',
-      'card_holder_name' => Unicode::substr($order->getAddress('billing')->first_name . ' ' . $order->getAddress('billing')->last_name, 0, 128),
-      'street_address' => Unicode::substr($order->getAddress('billing')->street1, 0, 64),
-      'street_address2' => Unicode::substr($order->getAddress('billing')->street2, 0, 64),
-      'city' => Unicode::substr($order->getAddress('billing')->city, 0, 64),
-      'state' => $order->getAddress('billing')->zone,
-      'zip' => Unicode::substr($order->getAddress('billing')->postal_code, 0, 16),
-      'country' => $country ? $country->getAlpha3() : 'USA',
-      'email' => Unicode::substr($order->getEmail(), 0, 64),
-      'phone' => Unicode::substr($order->getAddress('billing')->phone, 0, 16),
-      'purchase_step' => 'payment-method',
-
-      'demo' => $this->configuration['demo'] ? 'Y' : 'N',
-      'lang' => $this->configuration['language'],
-      'merchant_order_id' => $order->id(),
-      'pay_method' => 'CC',
-      'x_receipt_link_url' => Url::fromRoute('uc_2checkout.complete', ['cart_id' => \Drupal::service('uc_cart.manager')->get()->getId()], ['absolute' => TRUE])->toString(),
-
-      'total' => uc_currency_format($order->getTotal(), FALSE, FALSE, '.'),
-      'currency_code' => $order->getCurrency(),
-      'cart_order_id' => $order->id(),
-    );
-
-    $i = 0;
-    foreach ($order->products as $product) {
-      $i++;
-      $data['li_' . $i . '_type'] = 'product';
-
-      // HTML escape and limit to 128 chars.
-      $data['li_' . $i . '_name'] = $product->title->value;
-      $data['li_' . $i . '_quantity'] = $product->qty->value;
-      $data['li_' . $i . '_product_id'] = $product->model->value;
-      $data['li_' . $i . '_price'] = uc_currency_format($product->price->value, FALSE, FALSE, '.');
-    }
-
-    if ('direct' == $this->configuration['checkout_type']) {
-      $form['#attached']['library'][] = 'uc_2checkout/2checkout.direct';
-    }
-
-    $form['#action'] = $this->configuration['server_url'];
-
-    foreach ($data as $name => $value) {
-      $form[$name] = array('#type' => 'hidden', '#value' => $value);
-    }
-
-    $form['actions'] = array('#type' => 'actions');
-    $form['actions']['submit'] = array(
-      '#type' => 'submit',
-      '#value' => $this->t('Submit order'),
-    );
-
-    return $form;
-  }
-
 }
