diff --git a/CRM/Core/Payment/StripeIPN.php b/CRM/Core/Payment/StripeIPN.php
index 5d096c55015e53c4f21bd0aaa49ecad7d125d858..47adc033092f998d4d3144319408b1368dfa7ba0 100644
--- a/CRM/Core/Payment/StripeIPN.php
+++ b/CRM/Core/Payment/StripeIPN.php
@@ -238,7 +238,7 @@ class CRM_Core_Payment_StripeIPN extends CRM_Core_Payment_BaseIPN {
           $params = [
             'id' => $this->contribution['id'],
             'trxn_date' => $this->receive_date,
-            'contribution_trxn_id' => $this->charge_id,
+            'contribution_trxn_id' => $this->invoice_id ?: $this->charge_id,
             'payment_trxn_id' => $this->charge_id,
             'total_amount' => $this->amount,
             'fee_amount' => $this->fee,
diff --git a/CRM/Stripe/Api.php b/CRM/Stripe/Api.php
index a672f4465eba4888d45899712bacec35a3b1c3b2..554563b3faa66aa09e6a224a840daf734d03e417 100644
--- a/CRM/Stripe/Api.php
+++ b/CRM/Stripe/Api.php
@@ -34,6 +34,9 @@ class CRM_Stripe_Api {
           case 'receive_date':
             return self::formatDate($stripeObject->created);
 
+          case 'invoice_id':
+            return (string) $stripeObject->invoice;
+
         }
         break;