diff --git a/commerce_pos.libraries.yml b/commerce_pos.libraries.yml
index 8469e7c..bfee33f 100644
--- a/commerce_pos.libraries.yml
+++ b/commerce_pos.libraries.yml
@@ -3,12 +3,3 @@ form:
   css:
     layout:
       css/commerce_pos.module.css: {}
-jQuery.print:
-  remote: https://github.com/DoersGuild/jQuery.print
-  version: 1.5.1
-  license:
-    name: CC BY 3.0
-    url: https://github.com/DoersGuild/jQuery.print/blob/master/LICENSE
-    gpl-compatible: no
-  js:
-    /libraries/jQuery.print/jQuery.print.js: {}
diff --git a/modules/receipt/README.md b/modules/receipt/README.md
index 14e9362..37a9924 100644
--- a/modules/receipt/README.md
+++ b/modules/receipt/README.md
@@ -1,40 +1,5 @@
-The receipt submodule provides for receipt printing. It depends on the jQuery plugin receipt-print.
+The receipt submodule provides for receipt printing. You may configure custom
+receipt header/footer at admin/commerce/config/pos/receipt.
 
-### Install using Composer (recommended)
-
-If you use Composer to manage dependencies, edit `/composer.json` as follows.
-
-1\. Run `composer require --prefer-dist composer/installers` to ensure that you have the `composer/installers` package installed. This package facilitates the installation of packages into directories other than `/vendor` (e.g. `/libraries`) using Composer.
-
-2\. Add the following to the "installer-paths" section of `composer.json`:
-
-```
-"libraries/{$name}": ["type:drupal-library"],
-```
-
-3\. Add the following to the "repositories" section of `composer.json`:
-
-```
-"jQuery.print": {
-    "type": "package",
-    "package": {
-        "name": "DoersGuild/jQuery.print",
-        "version": "1.5.1",
-        "type": "drupal-library",
-        "dist": {
-            "url": "https://github.com/DoersGuild/jQuery.print/archive/1.5.1.zip",
-            "type": "zip"
-        }
-    }
-},
-```
-4\. Run `composer require --prefer-dist DoersGuild/jQuery.print:1.5.*` - you should find that a new directory created
-under `/libraries`
-
-### Install manually
-
-  - Create a `/libraries/jQuery.print/` directory below your Drupal root directory
-  - Download https://raw.githubusercontent.com/DoersGuild/jQuery.print/1.5.1/jQuery.print.js
-  - Rename it to `/libraries/jQuery.print/jQuery.print.js`
-
-  For further details on how to obtain jQuery.print.js, see https://github.com/DoersGuild/jQuery.print
+This module depends on the jQuery plugin receipt-print which you will find
+in your /libraries directory.
diff --git a/modules/receipt/commerce_pos_receipt.libraries.yml b/modules/receipt/commerce_pos_receipt.libraries.yml
index 41c186d..08a779b 100755
--- a/modules/receipt/commerce_pos_receipt.libraries.yml
+++ b/modules/receipt/commerce_pos_receipt.libraries.yml
@@ -3,3 +3,12 @@ receipt:
   css:
     theme:
       css/commerce_pos_receipt.css: {}
+jQuery.print:
+  remote: https://github.com/DoersGuild/jQuery.print
+  version: 1.5.1
+  license:
+    name: CC BY 3.0
+    url: https://github.com/DoersGuild/jQuery.print/blob/master/LICENSE
+    gpl-compatible: no
+  js:
+    /libraries/jQuery.print/jQuery.print.js: {}
diff --git a/modules/receipt/commerce_pos_receipt.module b/modules/receipt/commerce_pos_receipt.module
index 13b122f..43ab9ac 100644
--- a/modules/receipt/commerce_pos_receipt.module
+++ b/modules/receipt/commerce_pos_receipt.module
@@ -21,9 +21,6 @@ function commerce_pos_receipt_help($route_name, RouteMatchInterface $route_match
       $output .= '<h3>' . t('About') . '</h3>';
       $output .= '<p>' . t('Provides receipt printing for Commerce Point of Sale') . '</p>';
       return $output;
-
-      // TODO we have an empty default here, remove?
-    default:
   }
 }
 
@@ -62,8 +59,8 @@ function commerce_pos_receipt_preprocess_commerce_pos_receipt(&$variables) {
 
   $totals[] = ['Subtotal', $formatted_amount];
 
-  // Commerce appears to have a bug where if not adjustments exist, it will return a
-  // 0 => null array, which will still trigger a foreach loop.
+  // Commerce appears to have a bug where if not adjustments exist, it will
+  // return a 0 => null array, which will still trigger a foreach loop.
   foreach ($order->collectAdjustments() as $key => $adjustment) {
     if (!empty($adjustment)) {
       $amount = $adjustment->getAmount();
@@ -83,37 +80,35 @@ function commerce_pos_receipt_preprocess_commerce_pos_receipt(&$variables) {
   $formatted_amount = $number_formatter->formatCurrency($total_price->getNumber(), $currency);
 
   $totals[] = ['Total', $formatted_amount];
+  $totals[] = ['Payment', $commerce_payment->getState()->getLabel()];
 
-  $header = Drupal::config('commerce_pos_receipt.settings')->get('header');
-  $footer = Drupal::config('commerce_pos_receipt.settings')->get('footer');
-
+  $config = Drupal::config('commerce_pos_receipt.settings');
   $variables['receipt'] = [
     'header' => [
-      '#markup' => check_markup($header['value'], $header['format']),
+      '#markup' => check_markup($config->get('header'), $config->get('header_format')),
     ],
     'body' => [
       '#type' => 'table',
       '#rows' => $totals,
     ],
     'footer' => [
-      '#markup' => check_markup($footer['value'], $footer['format']),
+      '#markup' => check_markup($config->get('footer'), $config->get('footer_format')),
     ],
   ];
 
-
-  //$variables['#attached']['library'][] = 'commerce/pos-receipt';
+  // $variables['#attached']['library'][] = 'commerce/pos-receipt';.
 }
 
 /**
- * Implements hook_form_FORM_ID_alter
+ * Implements hook_form_FORM_ID_alter() for form changing.
  */
 function commerce_pos_receipt_form_commerce_pos_alter(&$form, FormStateInterface $form_state, $form_id) {
   $form['receipt'] = [
-    '#type' => 'container'
+    '#type' => 'container',
   ];
 
   $form['receipt']['contents'] = [
-    '#markup' => '<div id="commerce-pos-receipt"></div>'
+    '#markup' => '<div id="commerce-pos-receipt"></div>',
   ];
 
   $form['receipt']['reprint'] = [
@@ -121,10 +116,9 @@ function commerce_pos_receipt_form_commerce_pos_alter(&$form, FormStateInterface
     '#type' => 'link',
     '#url' => URL::fromRoute('commerce_pos_receipt.print', ['commerce_payment' => 1], [
       'attributes' => [
-        'class' => ['use-ajax']
-      ]
+        'class' => ['use-ajax'],
+      ],
     ]),
   ];
 
-
 }
diff --git a/modules/receipt/config/install/commerce_pos_receipt.settings.yml b/modules/receipt/config/install/commerce_pos_receipt.settings.yml
new file mode 100644
index 0000000..dffe30e
--- /dev/null
+++ b/modules/receipt/config/install/commerce_pos_receipt.settings.yml
@@ -0,0 +1,4 @@
+header: "(logo??)<br />Company Name/Store#<br />Address line 1<br />Address line 2<br />Phone #"
+footer: "Thanks for shopping at CompanyName!<br />Return Policy --<br />Exchange Policy --<br />Company Motto<br />Website --<br /><br />(optional)<br />Visit our website for a chance to --"
+header_format: "html"
+footer_format: "html"
diff --git a/modules/receipt/config/schema/commerce_pos_receipt.schema.yml b/modules/receipt/config/schema/commerce_pos_receipt.schema.yml
new file mode 100644
index 0000000..640f15d
--- /dev/null
+++ b/modules/receipt/config/schema/commerce_pos_receipt.schema.yml
@@ -0,0 +1,18 @@
+# Schema for the configuration files of the Receipt module.
+
+commerce_pos_receipt.settings:
+  type: config_object
+  label: 'Receipt settings'
+  mapping:
+    header:
+      type: string
+      label: 'Header'
+    footer:
+      type: string
+      label: 'Footer'
+    header_format:
+      type: string
+      label: Header format
+    footer_format:
+      type: string
+      label: Footer format
diff --git a/modules/receipt/css/commerce_pos_receipt.css b/modules/receipt/css/commerce_pos_receipt.css
index 44e068e..55240a5 100644
--- a/modules/receipt/css/commerce_pos_receipt.css
+++ b/modules/receipt/css/commerce_pos_receipt.css
@@ -1,73 +1,86 @@
 @page {
   margin: 5mm;
-  size: 72mm 200mm; }
+  size: 72mm 200mm;
+}
 .pos-receipt {
   color: #000;
   font-family: Arial, sans-serif;
   font-size: 16px;
   font-weight: bold;
-  text-transform: uppercase; }
+  text-transform: uppercase;
+}
 
 .pos-receipt .pos-order-info {
   margin-bottom: 1em;
   padding-bottom: 1em;
-  border-bottom: 1px dashed #000; }
+  border-bottom: 1px dashed #000;
+}
 
 /* BASIC TABLE STYLES */
 .pos-receipt table {
   width: 100%;
   padding-bottom: 1em;
   margin-bottom: 1em;
-  border-bottom: 1px dashed #000; }
+  border-bottom: 1px dashed #000;
+}
 
 .pos-receipt td,
 .pos-receipt th {
   text-align: left;
   font-size: 16px;
   font-weight: bold;
-  text-transform: uppercase; }
+  text-transform: uppercase;
+}
 
 .pos-receipt .payment-no-total td .payment-name,
 .pos-receipt .payment-no-total td.component-total {
-  text-decoration: line-through; }
+  text-decoration: line-through;
+}
 
 .pos-receipt .payment-no-total td span.commerce-pos-receipt-void-message {
-  text-decoration: none; }
+  text-decoration: none;
+}
 
 .pos-receipt .payment-status-void td span.commerce-pos-receipt-void-message {
-  text-decoration: none; }
+  text-decoration: none;
+}
 
 .pos-receipt td.component-total {
-  text-align: right; }
+  text-align: right;
+}
 
 .pos-receipt .receipt-hide {
-  display: none; }
+  display: none;
+}
 
 .pos-receipt .receipt-header,
 .pos-receipt .receipt-footer {
-  text-align: center; }
+  text-align: center;
+}
 
 .pos-receipt .receipt-header {
   margin-bottom: 1em;
   padding-bottom: 1em;
-  border-bottom: 1px dashed black; }
+  border-bottom: 1px dashed black;
+}
 
 .pos-receipt .receipt-footer {
   margin-top: 1em;
   padding-top: 1em;
-  margin-bottom: 1em; }
-
-.pos-receipt table.commerce-pos-order {
-  /*margin: 1em 0;*/ }
+  margin-bottom: 1em;
+}
 
 .pos-receipt tr.line-item td,
 .pos-receipt tr.line-item-details td {
-  border-bottom: 1px solid #000; }
+  border-bottom: 1px solid #000;
+}
 
 .pos-receipt tr.line-item.has-details td {
-  border-bottom: 0; }
+  border-bottom: 0;
+}
 
 .pos-receipt tr.last td {
-  border-bottom: 0; }
+  border-bottom: 0;
+}
 
 /*# sourceMappingURL=commerce_pos_receipt.css.map */
diff --git a/modules/receipt/src/Controller/PrintController.php b/modules/receipt/src/Controller/PrintController.php
index c351e87..81e076b 100644
--- a/modules/receipt/src/Controller/PrintController.php
+++ b/modules/receipt/src/Controller/PrintController.php
@@ -15,7 +15,7 @@ use Drupal\commerce_payment\Entity\Payment;
 class PrintController extends ControllerBase {
 
   /**
-   *
+   * An access callback.
    */
   public function access(AccountInterface $account, Payment $commerce_payment) {
     $access = FALSE;
@@ -36,7 +36,7 @@ class PrintController extends ControllerBase {
   }
 
   /**
-   *
+   * A controller callback.
    */
   public function printReceipt(Payment $commerce_payment) {
     $renderer = \Drupal::service('renderer');
diff --git a/modules/receipt/src/Form/ReceiptSettingsForm.php b/modules/receipt/src/Form/ReceiptSettingsForm.php
index 37479fb..9a8e467 100644
--- a/modules/receipt/src/Form/ReceiptSettingsForm.php
+++ b/modules/receipt/src/Form/ReceiptSettingsForm.php
@@ -5,6 +5,9 @@ namespace Drupal\commerce_pos_receipt\Form;
 use Drupal\Core\Form\ConfigFormBase;
 use Drupal\Core\Form\FormStateInterface;
 
+/**
+ * Define a Configuration form for persisting header/footer.
+ */
 class ReceiptSettingsForm extends ConfigFormBase {
 
   /**
@@ -14,34 +17,21 @@ class ReceiptSettingsForm extends ConfigFormBase {
 
     $header = $this->config('commerce_pos_receipt.settings')->get('header');
     $footer = $this->config('commerce_pos_receipt.settings')->get('footer');
-    // status_options = [];
-    //
-    //    foreach (commerce_payment_transaction_statuses() as $name => $info) {
-    //      $status_options[$name] = $info['title'];
-    //    }
-    //
-    //    $form['commerce_pos_receipt_visible_payment_status'] = array(
-    //      '#type' => 'checkboxes',
-    //      '#title' => t('Visible payment transaction statuses'),
-    //      '#options' => $status_options,
-    //      '#default_value' => variable_get('commerce_pos_receipt_visible_payment_status', array(COMMERCE_PAYMENT_STATUS_SUCCESS, COMMERCE_PAYMENT_STATUS_VOID)),
-    //      '#multiple' => TRUE,
-    //      '#description' => t('The payment statuses that should show up on a receipt'),
-    //    );.
+
     $form['commerce_pos_receipt_header'] = [
       '#type' => 'text_format',
       '#title' => t('Header text'),
       '#description' => t('This text will appear at the top of printed receipts.'),
-      '#default_value' => $header ? $header['value'] : NULL,
-      '#format' => $header ? $header['format'] : NULL,
+      '#default_value' => $header,
+      '#format' => NULL,
     ];
 
     $form['commerce_pos_receipt_footer'] = [
       '#type' => 'text_format',
       '#title' => t('Footer text'),
       '#description' => t('This text will appear at the bottom of printed receipts.'),
-      '#default_value' => $footer ? $footer['value'] : NULL,
-      '#format' => $footer ? $footer['format'] : NULL,
+      '#default_value' => $footer,
+      '#format' => NULL,
     ];
 
     return parent::buildForm($form, $form_state);
@@ -55,8 +45,10 @@ class ReceiptSettingsForm extends ConfigFormBase {
 
     $values = $form_state->getValues();
     $this->config('commerce_pos_receipt.settings')
-      ->set('header', $values['commerce_pos_receipt_header'])
-      ->set('footer', $values['commerce_pos_receipt_footer'])
+      ->set('header', $values['commerce_pos_receipt_header']['value'])
+      ->set('footer', $values['commerce_pos_receipt_footer']['value'])
+      ->set('header_format', $values['commerce_pos_receipt_header']['format'])
+      ->set('footer_format', $values['commerce_pos_receipt_footer']['format'])
       ->save();
   }
 
