diff --git a/CRM/Stripe/Api.php b/CRM/Stripe/Api.php
index f5dccd1dc80a0073147fddca38ee2f21500d8729..1f30185b2865c182e48ae7b31888c5226c6dcaad 100644
--- a/CRM/Stripe/Api.php
+++ b/CRM/Stripe/Api.php
@@ -53,7 +53,13 @@ class CRM_Stripe_Api {
             return self::formatDate($stripeObject->created);
 
           case 'invoice_id':
-            return (string) $stripeObject->invoice;
+            // Handle both "expanded" and "collapsed" response
+            if (is_object($stripeObject->invoice)) {
+              return (string) $stripeObject->invoice->id;
+            }
+            else {
+              return (string) $stripeObject->invoice;
+            }
 
           case 'captured':
             return (bool) $stripeObject->captured;