diff --git a/includes/class-wc-stripe-sepa-payment-token.php b/includes/class-wc-stripe-sepa-payment-token.php
new file mode 100644
index 0000000..2eec713
--- /dev/null
+++ b/includes/class-wc-stripe-sepa-payment-token.php
@@ -0,0 +1,128 @@
+<?php
+
+if ( ! defined( 'ABSPATH' ) ) {
+	exit; // Exit if accessed directly
+}
+
+// phpcs:disable WordPress.Files.FileName
+
+/**
+ * WooCommerce Stripe SEPA Direct Debit Payment Token.
+ *
+ * Representation of a payment token for SEPA.
+ *
+ * @class    WC_Payment_Token_SEPA
+ * @version  4.0.0
+ * @since    4.0.0
+ */
+class WC_Payment_Token_SEPA extends WC_Payment_Token {
+
+	/**
+	 * Stores payment type.
+	 *
+	 * @var string
+	 */
+	protected $type = 'sepa';
+
+	/**
+	 * Stores SEPA payment token data.
+	 *
+	 * @var array
+	 */
+	protected $extra_data = [
+		'last4'               => '',
+		'payment_method_type' => 'sepa_debit',
+	];
+
+	/**
+	 * Get type to display to user.
+	 *
+	 * @since  4.0.0
+	 * @version 4.0.0
+	 * @param  string $deprecated Deprecated since WooCommerce 3.0
+	 * @return string
+	 */
+	public function get_display_name( $deprecated = '' ) {
+		$display = sprintf(
+			/* translators: last 4 digits of IBAN account */
+			__( 'SEPA IBAN ending in %s', 'woocommerce-gateway-stripe' ),
+			$this->get_last4()
+		);
+
+		return $display;
+	}
+
+	/**
+	 * Hook prefix
+	 *
+	 * @since 4.0.0
+	 * @version 4.0.0
+	 */
+	protected function get_hook_prefix() {
+		return 'woocommerce_payment_token_sepa_get_';
+	}
+
+	/**
+	 * Validate SEPA payment tokens.
+	 *
+	 * These fields are required by all SEPA payment tokens:
+	 * last4  - string Last 4 digits of the iBAN
+	 *
+	 * @since 4.0.0
+	 * @version 4.0.0
+	 * @return boolean True if the passed data is valid
+	 */
+	public function validate() {
+		if ( false === parent::validate() ) {
+			return false;
+		}
+
+		if ( ! $this->get_last4( 'edit' ) ) {
+			return false;
+		}
+
+		return true;
+	}
+
+	/**
+	 * Returns the last four digits.
+	 *
+	 * @since  4.0.0
+	 * @version 4.0.0
+	 * @param  string $context What the value is for. Valid values are view and edit.
+	 * @return string Last 4 digits
+	 */
+	public function get_last4( $context = 'view' ) {
+		return $this->get_prop( 'last4', $context );
+	}
+
+	/**
+	 * Set the last four digits.
+	 *
+	 * @since 4.0.0
+	 * @version 4.0.0
+	 * @param string $last4
+	 */
+	public function set_last4( $last4 ) {
+		$this->set_prop( 'last4', $last4 );
+	}
+
+	/**
+	 * Set Stripe payment method type.
+	 *
+	 * @param string $type Payment method type.
+	 */
+	public function set_payment_method_type( $type ) {
+		$this->set_prop( 'payment_method_type', $type );
+	}
+
+	/**
+	 * Returns Stripe payment method type.
+	 *
+	 * @param string $context What the value is for. Valid values are view and edit.
+	 * @return string $payment_method_type
+	 */
+	public function get_payment_method_type( $context = 'view' ) {
+		return $this->get_prop( 'payment_method_type', $context );
+	}
+}
