Sync Customer Data, Preview Upcoming Invoices, SEPA Payment Methods, and More in Cashier Stripe v13

News

June 10th, 2021

laravel-cashier-v9.png

The Laravel team released Cashier Stripe v13 with new payment methods, multiple discounts on receipts, sync customers with Stripe data, and the latest improvements since the 12.x release:

New Payment Methods

Dries Vints contributed new user payment methods to the PHP API, which allows you to specify payment method type, including SEPA Direct Debit payments. Here is a preview from the Cashier Stripe v13 Released announcement post, to visualize these methods:

1// Get payment methods
2$user->paymentMethods();
3 
4// Get SEPA payment methods
5$user->paymentMethods('sepa_debit');
6 
7// Determine if the user has SEPA payment methods
8$user->hasPaymentMethod('sepa_debit')
9 
10// Delete all SEPA payment methods for a user
11$user->deletePaymentMethods('sepa_debit');

Sync Customers With Stripe Data

Dries Vints contributed the ability to sync customer data with Stripe using a booted() model method to handle syncing during the updated model event:

1/**
2 * The "booted" method of the model.
3 *
4 * @return void
5 */
6protected static function booted()
7{
8 static::updated(queueable(function ($customer) {
9 $customer->syncStripeCustomerDetails();
10 }));
11}

Preview an Upcoming Invoice

Ben Doe and Dries Vints collaborated on the ability to preview the invoice for price changes

1$upcomingInvoice = $subscription->previewInvoice('the_stripe_plan');
2 
3// For a specific subscription
4$user->subscription('default')->upcomingInvoice();

Learn More

You can see the complete list of new features and updates below and the diff between v12.14.1 and 13.0.0 on GitHub. If you need to upgrade from v12, reference the Upgrading To 13.0 From 12.x for help. Finally, check out the Laravel team’s announcement post for more details on the v13 release!

v13.0.0

Added

  • Support more payment method types (#1074)
  • Cashier Stripe Factories (#1096)
  • Multiple discounts on receipts (#1147)
  • Preview upcoming invoice (#1146)
  • Add new metered price methods (#1177)
  • Allow customers to be synced with Stripe (#1178, #1183)
  • Add stripe_product column to subscriptions_items table (#1185)

Changed

  • Rename plans to prices (#1166)
  • Stripe SDK refactor (#1169)
  • Update stripe api version (#1001)
  • Make plans optional for newSubscription (#1066)
  • Drop PHP 7.2 support (#1065)
  • Drop Laravel 6 & 7 support (#1064)
  • Refactor payment exceptions (#1095)
  • Refactor model config option (#1100)
  • Billing portal arguments (#1104)
  • Refactor receipts with more data from Stripe (#1136)
  • Add array types (#1152)
  • Throw payment exception for quantity methods (#1155)
  • Throw payment exceptions on item swap (#1157)
  • Payment page updates (#1120)

Fixed

  • Fix trialEndsAt more closely represents onTrial (#1129)

Removed

  • Remove legacy sources support (#1077)

Filed in:

Paul Redmond

Full stack web developer. Author of Lumen Programming Guide and Docker for PHP Developers.