diff --git a/src/BondsInterest.php b/src/BondsInterest.php
index ee1a32828e50cb0251fb84f0824c6d300d4d3deb..88f4fb3c22303e0a5ea5f45e3a1cf68983f98475 100644
--- a/src/BondsInterest.php
+++ b/src/BondsInterest.php
@@ -55,39 +55,33 @@ class BondsInterest {
   }
 
   /**
-   * Method description.
+   * Create a bond payment.
    */
-  public function createPayment($bond, $date) {
-    if ($bond->getDate()->format('%m-%d') === $date->format('%m-%d')) {
-      $gross = bcmul($bond->getParValue(), '0.02', 2);
-      $payment = BondPayment::create([
+  public function createPayment(
+    ShareholderRegisterBondInterface $bond,
+    string $payment_type,
+    DrupalDateTime $payment_date,
+    string $gross,
+    string $net
+  ) {
+    if (!bccomp('0', $gross, 2)) {
+      return;
+    }
+
+    $payment = BondPayment::create(
+      [
         'bond_id' => $bond->id(),
-        'payment_type' => 'interest',
-        'date' => $date->format(DateTimeItemInterface::DATE_STORAGE_FORMAT),
+        'payment_type' => $payment_type,
+        'date' => $payment_date->format(DateTimeItemInterface::DATE_STORAGE_FORMAT),
         'gross' => $gross,
-        'net' => bcsub(
-          $gross,
-          bcmul(
-            $gross,
-            '0.3',
-            2
-          ),
-          2
-        ),
+        'net' => $net,
       ]);
-      $payment->save();
-
-      $this->logger->info(
-        "Create payment for bond '@bond'",
-        [
-          '@bond' => $bond->getTitle(),
-        ]
-      );
-    }
+    $payment->save();
+    return $payment;
   }
 
   /**
-   * Method description.
+   * Create all bond payments for date.
    */
   public function createPayments($date = NULL) {
     if ($date === NULL) {
diff --git a/src/Plugin/BondIndenture/Yearly.php b/src/Plugin/BondIndenture/Yearly.php
index 6e6fc4a7504418f5c074421e582142a05ac6f1d6..93d01077a0ec528e3796ef4f51b1495e3791e854 100644
--- a/src/Plugin/BondIndenture/Yearly.php
+++ b/src/Plugin/BondIndenture/Yearly.php
@@ -9,9 +9,9 @@ use Drupal\Core\Entity\EntityTypeManagerInterface;
 
 use Drupal\datetime\Plugin\Field\FieldType\DateTimeItemInterface;
 
-use Drupal\shareholder_register_bonds\ShareholderRegisterBondInterface;
 use Drupal\shareholder_register_bonds\BondPaymentInterface;
-use Drupal\shareholder_register_bonds\Entity\BondPayment;
+use Drupal\shareholder_register_bonds\BondsInterest;
+use Drupal\shareholder_register_bonds\ShareholderRegisterBondInterface;
 use Drupal\shareholder_register_bonds\Plugin\BondIndenturePluginBase;
 
 /**
@@ -32,6 +32,13 @@ class Yearly extends BondIndenturePluginBase {
    */
   protected $entityTypeManager;
 
+  /**
+   * The bonds interest service.
+   *
+   * @var \Drupal\shareholder_register_bonds\BondsInterest
+   */
+  protected $bondsInterest;
+
   /**
    * Constructs a new Yearly BondIndenture plugin.
    *
@@ -43,10 +50,13 @@ class Yearly extends BondIndenturePluginBase {
    *   The plugin implementation definition.
    * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
    *   The entity type manager.
+   * @param \Drupal\shareholder_register_bonds\BondsInterest $bonds_interest
+   *   The bonds interest service.
    */
-  public function __construct(array $configuration, $plugin_id, $plugin_definition, EntityTypeManagerInterface $entity_type_manager) {
+  public function __construct(array $configuration, $plugin_id, $plugin_definition, EntityTypeManagerInterface $entity_type_manager, BondsInterest $bonds_interest) {
     parent::__construct($configuration, $plugin_id, $plugin_definition);
     $this->entityTypeManager = $entity_type_manager;
+    $this->bondsInterest = $bonds_interest;
   }
 
   /**
@@ -58,6 +68,7 @@ class Yearly extends BondIndenturePluginBase {
       $plugin_id,
       $plugin_definition,
       $container->get('entity_type.manager'),
+      $container->get('shareholder_register_bonds.interest')
     );
   }
 
@@ -102,24 +113,26 @@ class Yearly extends BondIndenturePluginBase {
         2
       );
 
-      $payment = BondPayment::create([
-        'bond_id' => $bond->id(),
-        'payment_type' => BondPaymentInterface::BOND_PAYMENT_TYPE_INTEREST,
-        'date' => $payment_date->format(DateTimeItemInterface::DATE_STORAGE_FORMAT),
-        'gross' => $gross,
-        'net' => bcsub(
+      $payment = $this->bondsInterest->createPayment(
+        $bond,
+        BondPaymentInterface::BOND_PAYMENT_TYPE_INTEREST,
+        $payment_date,
+        $gross,
+        bcsub(
           $gross,
           bcmul(
             $gross,
-      // FIXME: configurable.
+            // FIXME: configurable tax rate.
             '0.3',
             2
           ),
           2
         ),
-      ]);
-      $payment->save();
-      $payments[] = $payment;
+      );
+
+      if ($payment) {
+        $payments[] = $payment;
+      }
     }
     return $payments;
   }