<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: 4thzoa</title>
    <description>The latest articles on Forem by 4thzoa (@4thzoa).</description>
    <link>https://forem.com/4thzoa</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F1963%2Fe222c1eb-9e9b-4718-aa8a-bed230088f4f.png</url>
      <title>Forem: 4thzoa</title>
      <link>https://forem.com/4thzoa</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/4thzoa"/>
    <language>en</language>
    <item>
      <title>Stripe Developer Digest Sessions 2024</title>
      <dc:creator>Gehrig</dc:creator>
      <pubDate>Thu, 09 May 2024 22:27:27 +0000</pubDate>
      <link>https://forem.com/4thzoa/stripe-developer-digest-sessions-2024-66n</link>
      <guid>https://forem.com/4thzoa/stripe-developer-digest-sessions-2024-66n</guid>
      <description>&lt;h2&gt;
  
  
  Stripe Sessions recap
&lt;/h2&gt;

&lt;p&gt;Stripe Sessions 2024 was our biggest event yet—with over 6,000 attendees, &lt;a href="https://stripe.com/blog/biggest-updates-sessions-2024" rel="noopener noreferrer"&gt;50 product launches&lt;/a&gt;, and one six-foot AI-manufactured &lt;a href="https://twitter.com/mspringut/status/1783101908355588229" rel="noopener noreferrer"&gt;marble statue&lt;/a&gt;. In case you missed it, you can &lt;a href="https://stripe.com/sessions/2024" rel="noopener noreferrer"&gt;watch all the talks on demand&lt;/a&gt;. Highlights include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The &lt;a href="https://docs.stripe.com/billing/subscriptions/usage-based/implementation-guide" rel="noopener noreferrer"&gt;opening keynote&lt;/a&gt; introduced a host of new products and features, including &lt;a href="https://docs.stripe.com/billing/subscriptions/usage-based" rel="noopener noreferrer"&gt;Stripe's new usage-based billing&lt;/a&gt; support.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Patrick Collison chatted with NVIDIA's Jensen Huang about &lt;a href="https://stripe.com/sessions/2024/a-conversation-with-nvidias-jensen-huang" rel="noopener noreferrer"&gt;leadership in the age of AI&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The &lt;a href="https://stripe.com/sessions/2024/developer-keynote" rel="noopener noreferrer"&gt;developer keynote&lt;/a&gt; shared API design principles and &lt;a href="https://beta.stripe.dev/" rel="noopener noreferrer"&gt;new tools to speed up development&lt;/a&gt;. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkwi5h27a7elyignm8iie.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkwi5h27a7elyignm8iie.png" alt="divider" width="800" height="2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📩 We're sharing our most recent developer digest here on DEV! If you're interested in subscribing to monthly developer updates, &lt;a href="https://go.stripe.global/dev-digest" rel="noopener noreferrer"&gt;sign up here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkwi5h27a7elyignm8iie.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkwi5h27a7elyignm8iie.png" alt="divider" width="800" height="2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Updates
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Manage usage-based billing:&lt;/strong&gt; Stripe Billing now offers the &lt;a href="https://docs.stripe.com/billing/subscriptions/usage-based/implementation-guide" rel="noopener noreferrer"&gt;Meters API&lt;/a&gt; to store, calculate, and charge customers on a per-usage basis.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Embed 17 new components for Connect:&lt;/strong&gt; Drop HTML or React &lt;a href="https://docs.stripe.com/connect/supported-embedded-components" rel="noopener noreferrer"&gt;embedded components&lt;/a&gt; into your site for Connect onboarding, account management, payouts, and more. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Provision feature access:&lt;/strong&gt; Stripe Billing added the &lt;a href="https://docs.stripe.com/billing/entitlements" rel="noopener noreferrer"&gt;Entitlements API&lt;/a&gt;, so you can check the status of a user’s subscription and see what features they can access.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwismjnzyvqhenl79xkk1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwismjnzyvqhenl79xkk1.png" alt="Entitlements API" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Route payments to multiple payment processors:&lt;/strong&gt; The new &lt;a href="https://docs.stripe.com/payments/vault-and-forward" rel="noopener noreferrer"&gt;Vault and Forward API&lt;/a&gt; enables you to use Stripe products, such as the Payment Element, even if you process payments with other providers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Import 3D Secure results:&lt;/strong&gt; Use &lt;a href="https://docs.stripe.com/payments/payment-intents/three-d-secure-import" rel="noopener noreferrer"&gt;external 3D Secure authentication&lt;/a&gt; results within Stripe payments by passing card details and cryptogram directly to the Payment Intents API.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Unify multiple Stripe accounts into an organization:&lt;/strong&gt; &lt;a href="https://docs.stripe.com/get-started/account/orgs#request-access" rel="noopener noreferrer"&gt;Request an invite&lt;/a&gt; to more easily manage multiple entities or product lines across multiple Stripe accounts with &lt;a href="https://docs.stripe.com/get-started/account/orgs" rel="noopener noreferrer"&gt;Organizations&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Collect in-person payments offline:&lt;/strong&gt; Terminal iOS and Android SDKs now support &lt;a href="https://docs.stripe.com/terminal/features/operate-offline/collect-card-payments?terminal-sdk-platform=ios&amp;amp;reader-type=bluetooth" rel="noopener noreferrer"&gt;offline mode&lt;/a&gt; (in beta) so you can save payment information at the time of sale during an unexpected outage. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Preview an invoice:&lt;/strong&gt; Let customers modify, understand, and choose between available product packages by previewing an invoice prior to generation with the new &lt;a href="https://docs.stripe.com/invoicing/preview" rel="noopener noreferrer"&gt;&lt;code&gt;createPreview&lt;/code&gt; method&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkwi5h27a7elyignm8iie.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkwi5h27a7elyignm8iie.png" alt="divider" width="800" height="2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Stripe Insiders
&lt;/h3&gt;

&lt;p&gt;Join &lt;a href="http://insiders.stripe.dev" rel="noopener noreferrer"&gt;Stripe Insiders&lt;/a&gt;, our new early access program, to try the latest products and provide direct feedback to the teams building them. Current betas include Stripe’s new developer tools—Workbench, Sandboxes, and Event Destinations—and Stripe’s extension for VS Code.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkwi5h27a7elyignm8iie.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkwi5h27a7elyignm8iie.png" alt="divider" width="800" height="2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Community
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Stripe Insiders’ community members suggested improved &lt;a href="https://insiders.stripe.dev/t/more-filtering-on-webhook-events/197" rel="noopener noreferrer"&gt;webhook filtering&lt;/a&gt; and an &lt;a href="https://insiders.stripe.dev/t/api-to-fetch-all-events-across-connected-accounts/471" rel="noopener noreferrer"&gt;API to replay Stripe events&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;We’re hosting a &lt;a href="https://lu.ma/ik2b05xu" rel="noopener noreferrer"&gt;Dublin developer meetup&lt;/a&gt; on June 5—subscribe to &lt;a href="https://lu.ma/calendar/cal-bKIRe6AQ7dG1X4B" rel="noopener noreferrer"&gt;Stripe’s event calendar&lt;/a&gt; to get notified of new meetups. &lt;/li&gt;
&lt;li&gt;Mauro wrote about using WebdriverIO to &lt;a href="https://dev.to/mauro_laurenzi/how-to-interact-with-stripes-iframes-using-webdriverio-568k"&gt;automate iframe tests&lt;/a&gt;, like filling in a Stripe Elements checkout form.
&lt;/li&gt;
&lt;li&gt;Airbnb and Stripe &lt;a href="https://stripe.com/blog/shepherd-how-stripe-adapted-chronon-to-scale-ml-feature-development" rel="noopener noreferrer"&gt;shared the motivation and design&lt;/a&gt; behind the new open-source, machine learning development platform, Chronon.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Stay connected
&lt;/h3&gt;

&lt;p&gt;💬 &lt;a href="https://twitter.com/stripedev" rel="noopener noreferrer"&gt;Follow us at @StripeDev on Twitter&lt;/a&gt; for updates and answers to your developer questions. Let us know what you’re working on with the Stripe API.&lt;br&gt;
👾 &lt;a href="https://stripe.com/go/developer-chat" rel="noopener noreferrer"&gt;Join the Stripe Discord server&lt;/a&gt; to chat live with other developers.&lt;br&gt;
📺 &lt;a href="https://www.youtube.com/stripedevelopers?sub_confirmation=1" rel="noopener noreferrer"&gt;Subscribe to Stripe Developers on YouTube&lt;/a&gt; for office hours, live streams, and online technical workshops.&lt;br&gt;
📚 &lt;a href="https://dev.to/stripe"&gt;Add us on DEV&lt;/a&gt; for how-to articles and past editions of this developer digest.&lt;br&gt;
📥 &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLSdkGW6uSv__oJKuIUmcXNG9knoZInGhnx7PEKp7k774A907dQ/viewform" rel="noopener noreferrer"&gt;Submit dev content&lt;/a&gt; for the developer digest.&lt;/p&gt;

</description>
      <category>stripe</category>
      <category>stripedevdigest</category>
      <category>showdev</category>
      <category>news</category>
    </item>
    <item>
      <title>March Stripe Developer Digest</title>
      <dc:creator>Gehrig</dc:creator>
      <pubDate>Fri, 29 Mar 2024 23:25:15 +0000</pubDate>
      <link>https://forem.com/4thzoa/march-stripe-developer-digest-3ml7</link>
      <guid>https://forem.com/4thzoa/march-stripe-developer-digest-3ml7</guid>
      <description>&lt;p&gt;Workbench, our new developer tool to help you build, manage, and debug your Stripe integration, is now in public beta. Improve your daily workflows with the inspector (to show the underlying JSON for any object in the Dashboard), shell (for an integrated command-line environment), and other powerful features.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F11e6by90obukhprcf47y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F11e6by90obukhprcf47y.png" alt="Workbench in Stripe Dashboard" width="800" height="397"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With Workbench, we wanted to give developers a universal pane that surfaces the right information at the right time to help you work faster. Now, from anywhere in the Dashboard you can quickly understand how you use the Stripe API and how it operates under the hood.&lt;/p&gt;

&lt;p&gt;On April 4, we &lt;a href="https://www.youtube.com/watch?v=cfejnY-sTtQ" rel="noopener noreferrer"&gt;talked with engineers from Slack and Notion&lt;/a&gt; on the &lt;a class="mentioned-user" href="https://dev.to/stripedev"&gt;@stripedev&lt;/a&gt; YouTube channel to learn how to get the most out of Workbench. I hope you &lt;a href="http://dashboard.stripe.com/workbench" rel="noopener noreferrer"&gt;try it&lt;/a&gt; soon, and look forward to hearing your feedback.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkwi5h27a7elyignm8iie.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkwi5h27a7elyignm8iie.png" alt="divider" width="800" height="2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📩 We're sharing our most recent developer digest here on DEV! If you're interested in subscribing to monthly developer updates, &lt;a href="https://go.stripe.global/dev-digest" rel="noopener noreferrer"&gt;sign up here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkwi5h27a7elyignm8iie.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkwi5h27a7elyignm8iie.png" alt="divider" width="800" height="2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Updates
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Create custom and dynamic cards:&lt;/strong&gt; Stripe Issuing lets you programmatically create and manage custom cards with two new API resources, &lt;a href="https://stripe.com/docs/api/issuing/personalization_designs" rel="noopener noreferrer"&gt;personalization design&lt;/a&gt; and &lt;a href="https://stripe.com/docs/api/issuing/physical_bundles" rel="noopener noreferrer"&gt;physical bundle&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Request 3DS support for Checkout sessions:&lt;/strong&gt; Add an extra layer of security by manually requesting &lt;a href="https://docs.stripe.com/payments/3d-secure/authentication-flow#manual-three-ds" rel="noopener noreferrer"&gt;3D Secure authentication&lt;/a&gt; for payment, subscription, and setup mode sessions. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Build no-code invoicing and subscription automations:&lt;/strong&gt; &lt;a href="https://docs.stripe.com/billing/revenue-recovery/automations" rel="noopener noreferrer"&gt;Create automations&lt;/a&gt; using triggers to perform actions, such as canceling a subscription after a grace period.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz7qbp6vxz54vjtoxr6ld.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz7qbp6vxz54vjtoxr6ld.png" alt="Automations" width="800" height="442"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reconnect Terminal readers automatically:&lt;/strong&gt; Improve user experience with the &lt;a href="https://docs.stripe.com/terminal/payments/connect-reader?terminal-sdk-platform=ios&amp;amp;reader-type=tap-to-pay#2.-automatically-attempt-reconnection" rel="noopener noreferrer"&gt;autoReconnectOnUnexpectedDisconnect&lt;/a&gt; parameter. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Support Tap to Pay on iPhone in Australia and the United Kingdom:&lt;/strong&gt; Accept in-person payments using only an iPhone—now available in &lt;a href="https://support.stripe.com/questions/tap-to-pay-on-iphone-or-android-and-stripe-terminal#" rel="noopener noreferrer"&gt;five countries&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create customer tax IDs programmatically:&lt;/strong&gt; Add &lt;a href="https://docs.stripe.com/api/tax_ids/customer_create" rel="noopener noreferrer"&gt;tax IDs&lt;/a&gt; to customer and account objects via API in addition to the ability to create account tax IDs in the &lt;a href="https://dashboard.stripe.com/settings/billing/invoice?tab=tax" rel="noopener noreferrer"&gt;Stripe Dashboard&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Make async requests in the beta release of stripe-python:&lt;/strong&gt; The &lt;a href="https://github.com/stripe/stripe-python?tab=readme-ov-file#beta-sdks" rel="noopener noreferrer"&gt;stripe-python beta channel&lt;/a&gt; now has built-in support for &lt;a href="https://github.com/stripe/stripe-python/issues/327" rel="noopener noreferrer"&gt;async control flow&lt;/a&gt;, backed by the &lt;code&gt;httpx&lt;/code&gt; or &lt;code&gt;aiohttp&lt;/code&gt; http libraries.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvej11c9o7js8d1x2pu65.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvej11c9o7js8d1x2pu65.png" alt="Python async control flow" width="800" height="262"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Offer Apple Pay Later:&lt;/strong&gt; Businesses in the United States can now use Apple Pay Later to support installment payments. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Add Link as a payment method to Android:&lt;/strong&gt; Support Link, Stripe's accelerated checkout, in the PaymentSheet by turning on the payment method settings.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Receive instant payouts in Australia:&lt;/strong&gt; Instant payouts are now available for Stripe accounts in Australia, Canada, the United States, Singapore, and the United Kingdom.  &lt;/p&gt;

&lt;h3&gt;
  
  
  Community
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Learn how to retrieve additional Stripe API results in a single request using the &lt;a href="https://www.youtube.com/watch?v=m8Vj_CEWyQc" rel="noopener noreferrer"&gt;expand parameter&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://loops.so/changelog/march-2024-day2" rel="noopener noreferrer"&gt;Send emails triggered by Stripe webhook events&lt;/a&gt; with Loops&lt;/li&gt;
&lt;li&gt;Handle &lt;a href="https://www.youtube.com/watch?v=PfryNhLzZlg" rel="noopener noreferrer"&gt;custom Connect verification requirement&lt;/a&gt; updates to keep your accounts active&lt;/li&gt;
&lt;li&gt;Build a SaaS business with Stripe subscriptions using a &lt;a href="https://dev.to/rcmisk/how-to-set-up-a-django-and-react-saas-boilerplate-a-step-by-step-guide-58bd"&gt;Django boiler plate&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Read how the internet economy is changing in &lt;a href="https://stripe.com/annual-updates/2023" rel="noopener noreferrer"&gt;Stripe’s annual letter&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Dig into &lt;a href="https://stripe.com/blog/ledger-stripe-system-for-tracking-and-validating-money-movement" rel="noopener noreferrer"&gt;Ledger&lt;/a&gt;, Stripe’s system for tracking and validating money movement &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F638sktq1h2o0kx11dois.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F638sktq1h2o0kx11dois.png" alt="Ledger" width="800" height="280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Stay connected
&lt;/h3&gt;

&lt;p&gt;💬 &lt;a href="https://twitter.com/stripedev" rel="noopener noreferrer"&gt;Follow us at @StripeDev on Twitter&lt;/a&gt; for updates and answers to your developer questions. Let us know what you’re working on with the Stripe API.&lt;br&gt;
👾 &lt;a href="https://stripe.com/go/developer-chat" rel="noopener noreferrer"&gt;Join the Stripe Discord server&lt;/a&gt; to chat live with other developers.&lt;br&gt;
📺 &lt;a href="https://www.youtube.com/stripedevelopers?sub_confirmation=1" rel="noopener noreferrer"&gt;Subscribe to Stripe Developers on YouTube&lt;/a&gt; for office hours, live streams, and online technical workshops.&lt;br&gt;
📚 &lt;a href="https://dev.to/stripe"&gt;Add us on DEV&lt;/a&gt; for how-to articles and past editions of this developer digest.&lt;br&gt;
📥 &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLSdkGW6uSv__oJKuIUmcXNG9knoZInGhnx7PEKp7k774A907dQ/viewform" rel="noopener noreferrer"&gt;Submit dev content&lt;/a&gt; for the developer digest.&lt;/p&gt;

</description>
      <category>stripe</category>
      <category>stripedevdigest</category>
      <category>showdev</category>
      <category>news</category>
    </item>
    <item>
      <title>February Stripe Developer Digest</title>
      <dc:creator>Gehrig</dc:creator>
      <pubDate>Thu, 29 Feb 2024 18:40:14 +0000</pubDate>
      <link>https://forem.com/4thzoa/february-stripe-developer-digest-10m4</link>
      <guid>https://forem.com/4thzoa/february-stripe-developer-digest-10m4</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F998wtlnx5fjn9ov47sv4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F998wtlnx5fjn9ov47sv4.png" alt="Stripe Sessions 2024" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://stripesessions.com" rel="noopener noreferrer"&gt;Stripe Sessions&lt;/a&gt;, our biggest user conference yet, is coming to San Francisco this April. Join us and fellow members of the developer community for two packed days of learning and collaboration.   &lt;/p&gt;

&lt;p&gt;Sessions is a perfect opportunity to get &lt;a href="https://register.stripesessions.com/developer-tools-training" rel="noopener noreferrer"&gt;hands-on developer training&lt;/a&gt; with the latest Stripe tools like &lt;a href="http://workbench.stripe.dev" rel="noopener noreferrer"&gt;Workbench&lt;/a&gt;, hear new product announcements, and watch ambitious live demos. While there’s so much to look forward to, the chat between Nvidia's Jensen Huang and our own Patrick Collison is top of my list. &lt;/p&gt;

&lt;p&gt;I hope you can make it—make sure to use the code &lt;code&gt;Developer50&lt;/code&gt; for 50% off your conference pass. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkwi5h27a7elyignm8iie.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkwi5h27a7elyignm8iie.png" alt="divider" width="800" height="2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📩 We're sharing our most recent developer digest here on DEV! If you're interested in subscribing to monthly developer updates, &lt;a href="https://go.stripe.global/dev-digest" rel="noopener noreferrer"&gt;sign up here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkwi5h27a7elyignm8iie.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkwi5h27a7elyignm8iie.png" alt="divider" width="800" height="2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Updates
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Get answers from Stripe Docs AI:&lt;/strong&gt;  Ask &lt;a href="http://docs.stripe.com" rel="noopener noreferrer"&gt;Stripe Docs&lt;/a&gt; questions and get GPT-powered responses—available for all logged-in users.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use Connect onboarding components:&lt;/strong&gt; &lt;a href="https://docs.stripe.com/connect/supported-embedded-components#account-onboarding" rel="noopener noreferrer"&gt;Connect account onboarding components&lt;/a&gt; are now available for React or HTML embeds to onboard customers in &lt;a href="https://stripe.com/global" rel="noopener noreferrer"&gt;46 supported countries&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Set Issuing card PINs:&lt;/strong&gt; All cards issued by Stripe Issuing now have PINs; set a card's initial PIN during &lt;a href="https://docs.stripe.com/api/issuing/cards/create#create_issuing_card-pin" rel="noopener noreferrer"&gt;card creation&lt;/a&gt; with the pin[encrypted_number] field. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reach Swedish customers with Swish:&lt;/strong&gt; We now support Swish, Sweden's most popular finance app, as a &lt;a href="https://docs.stripe.com/payments/real-time#product-country-support" rel="noopener noreferrer"&gt;real-time payment method&lt;/a&gt;. You can turn on automatic currency conversion to always have the latest payment methods optimized for your customers.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Simplify end-of-month billing cycles:&lt;/strong&gt; The Subscription Create API &lt;a href="https://docs.stripe.com/api/subscriptions/object#subscription_object-billing_cycle_anchor_config" rel="noopener noreferrer"&gt;billing_cycle_anchor_config&lt;/a&gt; parameter sets the billing cycle anchor by using only the desired month and day. You can now set billing dates during short months or, for instance, an upcoming leap day with ease.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Instantiate StripeClient in the Python SDK:&lt;/strong&gt; &lt;a href="https://github.com/stripe/stripe-python/releases/tag/v8.0.0" rel="noopener noreferrer"&gt;Stripe-python v8.0.0&lt;/a&gt; introduced StripeClient, upgrading from a single global configuration to enable multiple thread-safe instances.&lt;/p&gt;

&lt;h3&gt;
  
  
  Community
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Pragmatic Engineering's Gergely Orosz released part 2 of &lt;a href="https://newsletter.pragmaticengineer.com/p/stripe-part-2" rel="noopener noreferrer"&gt;Stripe's engineering culture&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/stripe/using-stripe-docs-in-your-rag-pipeline-with-llamaindex-2j23"&gt;Create a RAG app&lt;/a&gt; using OpenAI, Pinecone, and Llama Index to ask questions from Stripe Docs.&lt;/li&gt;
&lt;li&gt;Svix offered a thorough review of &lt;a href="https://www.svix.com/blog/reviewing-stripe-webhook-docs/?trk=public_post_comment-text" rel="noopener noreferrer"&gt;Stripe webhooks documentation&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://twitter.com/iamtouha/status/1756980901844754455?s=20" rel="noopener noreferrer"&gt;@iamtouha&lt;/a&gt; added Stripe support to their open-source &lt;a href="https://github.com/iamtouha/next-lucia-auth" rel="noopener noreferrer"&gt;Lucia auth and NextJS template&lt;/a&gt;. &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Stay connected
&lt;/h3&gt;

&lt;p&gt;💬 &lt;a href="https://twitter.com/stripedev" rel="noopener noreferrer"&gt;Follow us at @StripeDev on Twitter&lt;/a&gt; for updates and answers to your developer questions. Let us know what you’re working on with the Stripe API.&lt;br&gt;
👾 &lt;a href="https://stripe.com/go/developer-chat" rel="noopener noreferrer"&gt;Join the Stripe Discord server&lt;/a&gt; to chat live with other developers.&lt;br&gt;
📺 &lt;a href="https://www.youtube.com/stripedevelopers?sub_confirmation=1" rel="noopener noreferrer"&gt;Subscribe to Stripe Developers on YouTube&lt;/a&gt; for office hours, live streams, and online technical workshops.&lt;br&gt;
📚 &lt;a href="https://dev.to/stripe"&gt;Add us on DEV&lt;/a&gt; for how-to articles and past editions of this developer digest.&lt;br&gt;
📥 &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLSdkGW6uSv__oJKuIUmcXNG9knoZInGhnx7PEKp7k774A907dQ/viewform" rel="noopener noreferrer"&gt;Submit dev content&lt;/a&gt; for the developer digest.&lt;/p&gt;

</description>
      <category>stripe</category>
      <category>stripedevdigest</category>
      <category>showdev</category>
      <category>news</category>
    </item>
    <item>
      <title>December Stripe Developer Digest</title>
      <dc:creator>Gehrig</dc:creator>
      <pubDate>Mon, 08 Jan 2024 17:12:53 +0000</pubDate>
      <link>https://forem.com/4thzoa/december-stripe-developer-digest-5cjb</link>
      <guid>https://forem.com/4thzoa/december-stripe-developer-digest-5cjb</guid>
      <description>&lt;h2&gt;
  
  
  Climate orders
&lt;/h2&gt;

&lt;p&gt;You can now preorder permanent carbon removal with just a few clicks in the Dashboard or a single API call. The Intergovernmental Panel on Climate Change (&lt;a href="https://www.ipcc.ch/" rel="noopener noreferrer"&gt;IPCC&lt;/a&gt;) estimates that the world will need to reach &lt;a href="https://www.ipcc.ch/report/ar6/wg3/" rel="noopener noreferrer"&gt;net-zero carbon emissions by 2050&lt;/a&gt;. To enable you to build solutions that help scale carbon removal, we’re introducing the &lt;a href="https://stripe.com/docs/climate/orders/order-carbon-removal?dashboard-or-api=api" rel="noopener noreferrer"&gt;Climate Orders API&lt;/a&gt;. Whether you’re building a feature in your checkout flow or a full-scale marketplace, you and your customers can now contribute to carbon removal. Give it a try and let us know what you build.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkwi5h27a7elyignm8iie.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkwi5h27a7elyignm8iie.png" alt="divider" width="800" height="2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📩 We're sharing our most recent developer digest here on DEV! If you're interested in subscribing to monthly developer updates, &lt;a href="https://go.stripe.global/dev-digest" rel="noopener noreferrer"&gt;sign up here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkwi5h27a7elyignm8iie.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkwi5h27a7elyignm8iie.png" alt="divider" width="800" height="2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Updates
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Authenticate Stripe accounts to your service with oAuth or restricted keys:&lt;/strong&gt; Stripe Apps has added support for &lt;a href="https://stripe.com/docs/stripe-apps/api-authentication" rel="noopener noreferrer"&gt;OAuth and restricted keys&lt;/a&gt;, making it easier to have your products support Stripe accounts. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Optimize risk and understand revenue recovery:&lt;/strong&gt; The Stripe Dashboard has added &lt;a href="https://dashboard.stripe.com/settings/radar/risk-controls" rel="noopener noreferrer"&gt;Radar risk controls&lt;/a&gt; and a &lt;a href="https://dashboard.stripe.com/revenue-recognition" rel="noopener noreferrer"&gt;Revenue Recovery dashboard&lt;/a&gt; to learn about your involuntary churn, how it compares to industry benchmarks, and recommended improvements.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fslfm4lz316jx978q2lct.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fslfm4lz316jx978q2lct.png" alt="Revenue Recovery dashboard" width="512" height="284"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Manage tax registrations via API:&lt;/strong&gt; Create, list, and update the jurisdictions in which you or your customers are registered to collect tax with the &lt;a href="https://stripe.com/docs/tax/registrations-api" rel="noopener noreferrer"&gt;Tax Registrations API&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check the status of a Checkout Session:&lt;/strong&gt; Understand and filter if a session is open, expired, or complete using the &lt;a href="https://stripe.com/docs/api/checkout/sessions/list#list_checkout_sessions-status" rel="noopener noreferrer"&gt;status parameter&lt;/a&gt; on the Checkout Sessions list endpoint.&lt;/p&gt;

&lt;h3&gt;
  
  
  Community
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Jacob Evans from Clerk, a set of prebuilt authentication and user management components, shared an example &lt;a href="https://dev.to/clerk/exploring-clerk-metadata-with-stripe-webhooks-k04"&gt;using Clerk’s metadata to manage a user’s payment status&lt;/a&gt; for your application. &lt;/li&gt;
&lt;li&gt;GitHub’s &lt;a href="https://github.blog/changelog/2023-10-26-secret-scanning-scans-public-npm-packages/" rel="noopener noreferrer"&gt;automatic secret scanning&lt;/a&gt; is being rolled out for &lt;a href="https://docs.github.com/en/code-security/secret-scanning/secret-scanning-patterns#supported-secrets" rel="noopener noreferrer"&gt;popular npm packages&lt;/a&gt;, including Stripe. &lt;/li&gt;
&lt;li&gt;See an overview of how businesses performed over &lt;a href="https://bfcm.stripe.dev/" rel="noopener noreferrer"&gt;Black Friday and Cyber Monday on Stripe&lt;/a&gt;. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcprcgm4dj4aqmj44t4rz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcprcgm4dj4aqmj44t4rz.png" alt="Black Friday and Cyber Monday on Stripe" width="512" height="319"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Stay connected
&lt;/h3&gt;

&lt;p&gt;💬 &lt;a href="https://twitter.com/stripedev" rel="noopener noreferrer"&gt;Follow us at @StripeDev on Twitter&lt;/a&gt; for updates and answers to your developer questions. Let us know what you’re working on with the Stripe API.&lt;br&gt;
👾 &lt;a href="https://stripe.com/go/developer-chat" rel="noopener noreferrer"&gt;Join the Stripe Discord server&lt;/a&gt; to chat live with other developers.&lt;br&gt;
📺 &lt;a href="https://www.youtube.com/stripedevelopers?sub_confirmation=1" rel="noopener noreferrer"&gt;Subscribe to Stripe Developers on YouTube&lt;/a&gt; for office hours, live streams, and online technical workshops.&lt;br&gt;
📚 &lt;a href="https://dev.to/stripe"&gt;Add us on DEV&lt;/a&gt; for how-to articles and past editions of this developer digest.&lt;br&gt;
📥 &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLSdkGW6uSv__oJKuIUmcXNG9knoZInGhnx7PEKp7k774A907dQ/viewform" rel="noopener noreferrer"&gt;Submit dev content&lt;/a&gt; for the developer digest.&lt;/p&gt;

</description>
      <category>stripe</category>
      <category>stripedevdigest</category>
      <category>showdev</category>
      <category>news</category>
    </item>
    <item>
      <title>November Stripe Developer Digest</title>
      <dc:creator>Gehrig</dc:creator>
      <pubDate>Thu, 30 Nov 2023 16:34:20 +0000</pubDate>
      <link>https://forem.com/4thzoa/november-stripe-developer-digest-1e3i</link>
      <guid>https://forem.com/4thzoa/november-stripe-developer-digest-1e3i</guid>
      <description>&lt;h2&gt;
  
  
  Embedded Checkout
&lt;/h2&gt;

&lt;p&gt;You can now &lt;a href="https://stripe.com/docs/payments/accept-a-payment?platform=web&amp;amp;ui=embedded-checkout" rel="noopener noreferrer"&gt;embed Stripe Checkout&lt;/a&gt; on your website. And while we may be biased, the Stripe team is stoked about this release. &lt;/p&gt;

&lt;p&gt;When we relaunched Checkout in 2019, we moved to a Stripe-hosted payment page. This allowed us to build features directly into the experience and offer payment methods such as Apple Pay without any setup. However, some customers would like to avoid redirecting away from their website.&lt;/p&gt;

&lt;p&gt;Today, you can get all the built-in benefits of Checkout while embedding it directly into your website. Take a look with &lt;a href="https://embedcheckout.com/" rel="noopener noreferrer"&gt;some whimsical examples&lt;/a&gt; of embedded Checkout. As always, we’d love any feedback about the product experience! &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiml21nkbrlalu4nvv5vk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiml21nkbrlalu4nvv5vk.png" alt="Embedded checkout examples" width="512" height="456"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Updates
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Increase a previously authorized amount:&lt;/strong&gt; Adjust the authorized amount of a confirmed PaymentIntent to add a tip or update an initially estimated price using &lt;a href="https://stripe.com/docs/payments/overcapture" rel="noopener noreferrer"&gt;overcapture&lt;/a&gt; or &lt;a href="https://stripe.com/docs/payments/incremental-authorization" rel="noopener noreferrer"&gt;incremental authorization&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Capture multiple payments from a single PaymentIntent:&lt;/strong&gt; PaymentIntent now supports &lt;a href="https://stripe.com/docs/payments/multicapture" rel="noopener noreferrer"&gt;multicapture&lt;/a&gt; to capture fractions of the total authorized amount as parts of an order are fulfilled. For instance, to support orders with multiple shipments. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Extend payment authorizations up to 31 days:&lt;/strong&gt; The default authorization period for online card payment is seven days; you can now &lt;a href="https://stripe.com/docs/payments/extended-authorization#request-an-extended-authorization" rel="noopener noreferrer"&gt;extend authorizations&lt;/a&gt; to hold customer funds for longer durations as your business requires.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Manage multiple payment methods sets:&lt;/strong&gt; Programmatically handle sets of payment methods using &lt;a href="https://stripe.com/docs/api/payment_method_configurations" rel="noopener noreferrer"&gt;payment method configurations&lt;/a&gt; to display different payment methods to your customers. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use 16 new payment methods with the Mobile Payment Element:&lt;/strong&gt; The &lt;a href="https://stripe.com/docs/payments/accept-a-payment?platform=ios&amp;amp;ui=payment-sheet" rel="noopener noreferrer"&gt;Mobile Payment Element&lt;/a&gt; added new local payment methods for iOS and Android. View the complete list of &lt;a href="https://stripe.com/docs/payments/payment-methods/integration-options#payment-method-product-support" rel="noopener noreferrer"&gt;supported payment methods&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Test Issuing integrations with eight new endpoints:&lt;/strong&gt; Test the complete life cycle of &lt;a href="https://stripe.com/issuing" rel="noopener noreferrer"&gt;Stripe Issuing&lt;/a&gt; cards with the addition of &lt;a href="https://stripe.com/docs/api/issuing/authorizations/test_mode_create" rel="noopener noreferrer"&gt;API test-mode authorization&lt;/a&gt; support to simulate complex flows from card creation through transaction refunds.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Monitor Issuing tokens with the Token API:&lt;/strong&gt; The Issuing &lt;a href="https://stripe.com/docs/api/issuing/tokens" rel="noopener noreferrer"&gt;Token API&lt;/a&gt; provides access to network tokens to track card provisioning and check for errors or fraudulent activity.    &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use types with the Python SDK:&lt;/strong&gt; Strengthen Python integrations with type annotations using the &lt;a href="https://github.com/stripe/stripe-python/releases/tag/v6.8.0b3" rel="noopener noreferrer"&gt;stripe-python&lt;/a&gt; library starting in v6.8.0b3 through the beta channel.&lt;/p&gt;

&lt;h3&gt;
  
  
  Community
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Hidetaka Okamoto shared how to work with &lt;a href="https://dev.to/stripe/testing-stripe-samples-in-your-browser-with-github-codespaces-1bh8"&gt;Stripe samples in a browser using GitHub Codespaces&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;If you’re using webhooks, Stephen Samra suggested best practices on how to &lt;a href="https://dev.to/stephensamra/express-stripe-webhooks-done-right-1510"&gt;use Stripe webhooks with Express&lt;/a&gt;.
&lt;/li&gt;
&lt;li&gt;The team at Mintlify examined &lt;a href="https://mintlify.com/blog/stripe-docs" rel="noopener noreferrer"&gt;how Stripe creates the best documentation&lt;/a&gt;. &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Stay connected
&lt;/h3&gt;

&lt;p&gt;💬 &lt;a href="https://twitter.com/stripedev" rel="noopener noreferrer"&gt;Follow us at @StripeDev on Twitter&lt;/a&gt; for updates and answers to your developer questions. Let us know what you’re working on with the Stripe API.&lt;br&gt;
👾 &lt;a href="https://stripe.com/go/developer-chat" rel="noopener noreferrer"&gt;Join the Stripe Discord server&lt;/a&gt; to chat live with other developers.&lt;br&gt;
📺 &lt;a href="https://www.youtube.com/stripedevelopers?sub_confirmation=1" rel="noopener noreferrer"&gt;Subscribe to Stripe Developers on YouTube&lt;/a&gt; for office hours, live streams, and online technical workshops.&lt;br&gt;
📚 &lt;a href="https://dev.to/stripe"&gt;Add us on DEV&lt;/a&gt; for how-to articles and past editions of this developer digest.&lt;br&gt;
📥 &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLSdkGW6uSv__oJKuIUmcXNG9knoZInGhnx7PEKp7k774A907dQ/viewform" rel="noopener noreferrer"&gt;Submit dev content&lt;/a&gt; for the developer digest.&lt;/p&gt;

</description>
      <category>stripe</category>
      <category>stripedevdigest</category>
      <category>showdev</category>
      <category>news</category>
    </item>
    <item>
      <title>September Stripe Developer Digest</title>
      <dc:creator>Gehrig</dc:creator>
      <pubDate>Wed, 04 Oct 2023 22:25:56 +0000</pubDate>
      <link>https://forem.com/4thzoa/september-stripe-developer-digest-226e</link>
      <guid>https://forem.com/4thzoa/september-stripe-developer-digest-226e</guid>
      <description>&lt;h2&gt;
  
  
  Prevent card testing attacks
&lt;/h2&gt;

&lt;p&gt;We've deployed machine learning models to help prevent this activity by default for those using &lt;a href="https://stripe.com/docs/payments/payment-element" rel="noopener noreferrer"&gt;Stripe’s Payment Element&lt;/a&gt;. Since launching these models over a week ago, we've already seen them prevent attacks on thousands of sites and millions of unwanted transactions.&lt;/p&gt;

&lt;p&gt;Our models, trained with &lt;a href="https://stripe.com/radar" rel="noopener noreferrer"&gt;Stripe Radar&lt;/a&gt;, analyze transactions at confirmation time and present card testers with a CAPTCHA when interacting with your checkout. Learn more about best practices to further &lt;a href="https://stripe.com/docs/disputes/prevention" rel="noopener noreferrer"&gt;prevent disputes and fraud&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkwi5h27a7elyignm8iie.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkwi5h27a7elyignm8iie.png" alt="divider" width="800" height="2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📩 We're sharing our most recent developer digest here on DEV! If you're interested in subscribing to monthly developer updates, &lt;a href="https://go.stripe.global/dev-digest" rel="noopener noreferrer"&gt;sign up here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkwi5h27a7elyignm8iie.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkwi5h27a7elyignm8iie.png" alt="divider" width="800" height="2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Updates
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Explore an Issuing and Treasury demo:&lt;/strong&gt; Interact with a live &lt;a href="http://baas.stripe.dev/" rel="noopener noreferrer"&gt;banking-as-a-service demo&lt;/a&gt; using card issuing, payouts, and more, and dive deeper into its &lt;a href="https://github.com/stripe-samples/issuing-treasury/" rel="noopener noreferrer"&gt;sample code on GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqs3100kcht2u7hxmu8xp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqs3100kcht2u7hxmu8xp.png" alt="BaaS demo" width="800" height="481"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Add external payment methods to the Payment Element:&lt;/strong&gt; Use Stripe’s Payment Element to &lt;a href="https://stripe.com/docs/payments/external-payment-methods" rel="noopener noreferrer"&gt;display custom, external payment methods&lt;/a&gt; you’ve integrated with outside of Stripe.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Handle multiple payment methods configurations:&lt;/strong&gt; &lt;a href="https://stripe.com/docs/payments/multiple-payment-method-configs" rel="noopener noreferrer"&gt;Define the payment methods&lt;/a&gt; that you display to your customers for specific checkout scenarios, including one-time versus recurring payment flows or high-value transactions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Embed the Express Checkout Element:&lt;/strong&gt; The &lt;a href="https://stripe.com/docs/elements/express-checkout-element" rel="noopener noreferrer"&gt;Express Checkout Element&lt;/a&gt; gives you a single integration for accepting payments through one-click payment buttons. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F00fugbiaskfsweuxlbvt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F00fugbiaskfsweuxlbvt.png" alt="Express Checkout Element" width="800" height="529"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Accept USD bank transfers:&lt;/strong&gt; Stripe enables the acceptance of &lt;a href="https://stripe.com/docs/payments/bank-transfers" rel="noopener noreferrer"&gt;USD bank transfers&lt;/a&gt; by providing a virtual bank account, managing overpayment and underpayment issues, and automatically processing payments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Transfer customer data to a new Stripe account:&lt;/strong&gt; Migrate data directly from the Dashboard to securely &lt;a href="https://stripe.com/docs/payments/account/data-migrations/pan-copy-self-serve" rel="noopener noreferrer"&gt;transfer customer and payment data&lt;/a&gt; between Stripe accounts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Build low- and no-code Salesforce integrations:&lt;/strong&gt; Connect Stripe products to Salesforce Service, Experience, and Sales Clouds using Apex or Salesforce Flow with the new &lt;a href="https://appexchange.salesforce.com/appxListingDetail?listingId=4dff0f8e-0b10-47c2-a3a3-f3905e7f7927" rel="noopener noreferrer"&gt;Stripe for Salesforce Platform app&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Offer more payment methods on Android:&lt;/strong&gt; The Android SDK PaymentSheet now supports &lt;a href="https://github.com/stripe/stripe-android/releases/tag/v20.30.0" rel="noopener noreferrer"&gt;additional payment methods&lt;/a&gt; for SetupIntents and PaymentIntents.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Modify product features for the pricing table by API:&lt;/strong&gt; A new &lt;a href="https://docs.stripe.com/docs/api/products/object" rel="noopener noreferrer"&gt;features&lt;/a&gt; parameter lets you read and modify the features list currently seen on the &lt;a href="https://stripe.com/docs/payments/checkout/pricing-table" rel="noopener noreferrer"&gt;embeddable pricing table&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Change ACH Direct Debit speed:&lt;/strong&gt; Selectively enable faster settlement or reduce fees with the &lt;a href="https://stripe.com/docs/api/payment_intents/object#payment_intent_object-payment_method_options-us_bank_account-preferred_settlement_speed" rel="noopener noreferrer"&gt;preferred_settlement_speed&lt;/a&gt; parameter on a per-transaction basis.&lt;/p&gt;

&lt;h3&gt;
  
  
  Community
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Deploy a SaaS product on AWS:&lt;/strong&gt; Follow the &lt;a href="https://conermurphy.com/blog/building-saas-product-nextjs-app-router-clerk-aws-dynamodb-stripe" rel="noopener noreferrer"&gt;Next.js SaaS tutorial&lt;/a&gt; using App Router, Clerk, AWS DynamoDB and Stripe to walk through testing, planning for real users, handling failed payments, and best practices for using AWS resources.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create a product checkout with Vue:&lt;/strong&gt; Learn how to set up a &lt;a href="https://dev.to/orliesaurus/build-a-checkout-button-with-vue-stripe-3n5f"&gt;simple product page using vue-stripe&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build AI-powered SaaS:&lt;/strong&gt; The post guides you through &lt;a href="https://www.youtube.com/watch?v=r895rFUbGtE" rel="noopener noreferrer"&gt;building and deploying a SaaS&lt;/a&gt; using NextJS, OpenAI, Stripe, TypeScript, Tailwind, and Vercel. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Offer dynamic pricing with Svelte:&lt;/strong&gt; This video provides a step-by-step guide on integrating &lt;a href="https://www.youtube.com/watch?v=o8gvCLgz1vs" rel="noopener noreferrer"&gt;Stripe with SvelteKit&lt;/a&gt; using dynamic pricing into a SvelteKit project. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use Capacitor with Terminal and Identity:&lt;/strong&gt; &lt;a href="https://github.com/capacitor-community/stripe" rel="noopener noreferrer"&gt;Capacitor&lt;/a&gt;, an open-source native runtime for cross-platform web apps, now includes added Stripe Terminal and Identity plugins.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Run Stripe Terminal with Ruby on Rails:&lt;/strong&gt; &lt;a href="https://github.com/pay-rails/pay" rel="noopener noreferrer"&gt;Pay&lt;/a&gt;, a Ruby on Rails payments engine, has been updated to support the latest Stripe API version and introduces in-person payments with Stripe Terminal. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dig into a Stripe with Flutter example:&lt;/strong&gt; The latest release of the &lt;a href="https://github.com/flutter-stripe/flutter_stripe" rel="noopener noreferrer"&gt;Stripe Flutter SDK&lt;/a&gt; has made a new payments example available and brought the SDK up-to-date with the React Native SDK.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Stay connected
&lt;/h3&gt;

&lt;p&gt;💬 &lt;a href="https://twitter.com/stripedev" rel="noopener noreferrer"&gt;Follow us at @StripeDev on Twitter&lt;/a&gt; for updates and answers to your developer questions. Let us know what you’re working on with the Stripe API.&lt;br&gt;
👾 &lt;a href="https://stripe.com/go/developer-chat" rel="noopener noreferrer"&gt;Join the Stripe Discord server&lt;/a&gt; to chat live with other developers.&lt;br&gt;
📺 &lt;a href="https://www.youtube.com/stripedevelopers?sub_confirmation=1" rel="noopener noreferrer"&gt;Subscribe to Stripe Developers on YouTube&lt;/a&gt; for office hours, live streams, and online technical workshops.&lt;br&gt;
📚 &lt;a href="https://dev.to/stripe"&gt;Add us on DEV&lt;/a&gt; for how-to articles and past editions of this developer digest.&lt;br&gt;
📥 &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLSdkGW6uSv__oJKuIUmcXNG9knoZInGhnx7PEKp7k774A907dQ/viewform" rel="noopener noreferrer"&gt;Submit dev content&lt;/a&gt; for the developer digest.&lt;/p&gt;

</description>
      <category>stripe</category>
      <category>stripedevdigest</category>
      <category>showdev</category>
      <category>news</category>
    </item>
    <item>
      <title>stripe-node with Deno</title>
      <dc:creator>Richard</dc:creator>
      <pubDate>Wed, 06 Sep 2023 19:32:32 +0000</pubDate>
      <link>https://forem.com/4thzoa/stripe-node-with-deno-1fc4</link>
      <guid>https://forem.com/4thzoa/stripe-node-with-deno-1fc4</guid>
      <description>&lt;p&gt;This post shows an example of &lt;code&gt;stripe-node&lt;/code&gt; usage in a Deno environment. Beyond this post, there's a &lt;a href="https://www.youtube.com/watch?v=epCHqHEdz8I" rel="noopener noreferrer"&gt;video tutorial&lt;/a&gt;, a &lt;a href="https://github.com/stripe/stripe-node/blob/master/examples/webhook-signing/deno/main.ts" rel="noopener noreferrer"&gt;Deno example&lt;/a&gt; in the stripe-node repository itself, and there is also a &lt;a href="https://github.com/stripe-samples/stripe-node-deno-samples/blob/main/checkout-integration/main.js" rel="noopener noreferrer"&gt;Stripe sample&lt;/a&gt; that you can read or clone from Github. If you just want to see code, wander over to Github. Stay here if you prefer your code examples with a side of dramatic commentary.&lt;/p&gt;

&lt;h2&gt;
  
  
  Background
&lt;/h2&gt;

&lt;p&gt;Earlier this year, in &lt;code&gt;stripe-node&lt;/code&gt; &lt;a href="https://github.com/stripe/stripe-node/releases/tag/v11.15.0" rel="noopener noreferrer"&gt;v11.15.0&lt;/a&gt;, we added support to import stripe-node as an ES Module. This means it is much more convenient to use Stripe in non-NodeJS runtime environments, like Cloudflare Workers or Deno. Something funny: "stripe-node" is a bit misnomerous now. Node is not the only option anymore. Maybe &lt;code&gt;stripe-server-js&lt;/code&gt; would be a more accurate name, but that doesn't quite roll off the tongue, does it? We'll stick with &lt;code&gt;stripe-node&lt;/code&gt;, I'm sure you know what we mean.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;You'll need the &lt;a href="https://stripe.com/docs/stripe-cli" rel="noopener noreferrer"&gt;Stripe CLI&lt;/a&gt; installed.&lt;/li&gt;
&lt;li&gt;Deno, version &lt;a href="https://github.com/denoland/deno/releases/tag/v1.28.0" rel="noopener noreferrer"&gt;1.28&lt;/a&gt; or later.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Start your project
&lt;/h2&gt;

&lt;p&gt;If you're starting from scratch, then now it's time to run &lt;code&gt;deno init&lt;/code&gt;. If you've already got a Deno project going, way to go! You're ahead of the game, but you might have to adapt the rest of the instructions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Importing Stripe
&lt;/h2&gt;

&lt;p&gt;Deno init creates several files for you, among them &lt;code&gt;main.ts&lt;/code&gt;, the entry point for your app. Open it with your code editor. No need to &lt;code&gt;npm install&lt;/code&gt; with Deno. You can simply put&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Stripe&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;npm:stripe@^13.0.0&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;at the top of your &lt;code&gt;main.ts&lt;/code&gt;, and the package will be installed automatically. At the time of this writing, &lt;code&gt;13.x.x&lt;/code&gt; is the latest major line of stripe-node, but if you're from the future you can &lt;code&gt;npm view stripe version&lt;/code&gt; to see the latest version.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; you will need to import the &lt;em&gt;npm&lt;/em&gt; versions of stripe-node. The versions at unpkg.com or deno.land aren't quite working due to how the import statements in our source code are written.&lt;/p&gt;

&lt;h2&gt;
  
  
  Using Deno's import maps
&lt;/h2&gt;

&lt;p&gt;If you're going to be importing &lt;code&gt;stripe&lt;/code&gt; inside multiple files, you might not want to have to update the version in every import statement when it comes time to update the Stripe library. In this case, you will instead want to use a &lt;a href="https://deno.land/manual@v1.36.4/basics/import_maps" rel="noopener noreferrer"&gt;bare specifier and Deno's import maps&lt;/a&gt;. Change that import statement:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;&lt;span class="gd"&gt;- import Stripe from "npm:stripe@^13.0.0"
&lt;/span&gt;&lt;span class="gi"&gt;+ import Stripe from "stripe"
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and then edit &lt;code&gt;deno.jsonc&lt;/code&gt; to add an entry for stripe in the "imports" map.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;  {
    "tasks": {
      "dev": "deno run --watch main.ts"
&lt;span class="gd"&gt;-   }
&lt;/span&gt;&lt;span class="gi"&gt;+   },
+   "imports": {
+     "stripe": "npm:stripe@^13.0.0"
+   }
&lt;/span&gt;  }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Voila!&lt;/p&gt;

&lt;h2&gt;
  
  
  Using Stripe
&lt;/h2&gt;

&lt;p&gt;In Deno, you use Stripe just like you would in any other Typescript codebase. For example, suppose you want to make an API call to list customers. Initialize the Stripe client with your API key, and make the API call.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;stripe&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Stripe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;&amp;lt;YOUR (TEST MODE) API KEY GOES HERE&amp;gt;&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;2023-08-16&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;

&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;import&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;meta&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;main&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;customers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;stripe&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;crustomers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="na"&gt;limit&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;customers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;customers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;email&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Fetch vs. npm:https
&lt;/h2&gt;

&lt;p&gt;In recent versions of Deno, this will Just Work, because Deno has added compatibility shims for the Node standard library. In versions of Deno before the Node compatibility mode (introduced in &lt;a href="https://deno.com/blog/v1.15#improving-node-compatibility" rel="noopener noreferrer"&gt;v1.15&lt;/a&gt;, stabilized in &lt;a href="https://deno.com/blog/v1.28" rel="noopener noreferrer"&gt;1.28&lt;/a&gt;), you would have had to write&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;  const stripe = new Stripe("&amp;lt;YOUR API KEY GOES HERE&amp;gt;", {
    apiVersion: "2023-08-16",
&lt;span class="gi"&gt;+   httpClient: Stripe.createFetchHttpClient(),
&lt;/span&gt;  });
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to tell stripe-node that you want to use the "fetch" API (native to the web, and to Deno), rather than attempting to use the "node:https" module from the Node standard library (which stripe-node tries to use by default). I recommend do this even if you are on a new version of Deno, though, just to skip the compatibility layer and keep things behind the scenes simpler.&lt;/p&gt;

&lt;h2&gt;
  
  
  Typecheck it, run it, get permission
&lt;/h2&gt;

&lt;p&gt;Before we run the code, let's type check it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;deno check main.ts
error: TS2551 &lt;span class="o"&gt;[&lt;/span&gt;ERROR]: Property &lt;span class="s1"&gt;'crustomers'&lt;/span&gt; does not exist on &lt;span class="nb"&gt;type&lt;/span&gt; &lt;span class="s1"&gt;'Stripe'&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt; Did you mean &lt;span class="s1"&gt;'customers'&lt;/span&gt;?
  const customers &lt;span class="o"&gt;=&lt;/span&gt; await stripe.crustomers.list&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Whoops! An embarassing typo, but at least we know the types are all set up and working. Fix the typo, run &lt;code&gt;deno check main.ts&lt;/code&gt; and once we get a clean bill of health, let's go ahead and run our program!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;deno run main.ts

┌ ⚠️  Deno requests net access to &lt;span class="s2"&gt;"api.stripe.com"&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
├ Requested by &lt;span class="sb"&gt;`&lt;/span&gt;fetch&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt; API.
├ Run again with &lt;span class="nt"&gt;--allow-net&lt;/span&gt; to bypass this prompt.
└ Allow? &lt;span class="o"&gt;[&lt;/span&gt;y/n/A] &lt;span class="o"&gt;(&lt;/span&gt;y &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;yes&lt;/span&gt;, allow&lt;span class="p"&gt;;&lt;/span&gt; n &lt;span class="o"&gt;=&lt;/span&gt; no, deny&lt;span class="p"&gt;;&lt;/span&gt; A &lt;span class="o"&gt;=&lt;/span&gt; allow all net permissions&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is Deno's hallmark &lt;em&gt;permissions system&lt;/em&gt; at play. In exchange for a bit of inconvenience, it offers you some peace of mind. If you see "api.stripe.com" as the domain name, nobody has compromised your supply chain with a malicious version of &lt;code&gt;stripe-node&lt;/code&gt; that transmits your Stripe credentials to some other domain. Go ahead and press &lt;code&gt;y&lt;/code&gt;, and the program will run.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;✅ Granted net access to &lt;span class="s2"&gt;"api.stripe.com"&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
5
&lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;"richardm+1@example.com"&lt;/span&gt;, &lt;span class="s2"&gt;"richardm+2@example.com"&lt;/span&gt;, ...]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now run it with the command-line flag to bypass the prompt.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ deno run main.ts --allow-net=api.stripe.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's quite a mouthful. If you don't want to have to type all that every time, you should create a "task" in your &lt;code&gt;deno.jsonc&lt;/code&gt;. There's already one in there called "dev" created by "deno init" that you can repurpose.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;  {
    "tasks": {
&lt;span class="gd"&gt;-     "dev": "deno run --watch main.ts"
&lt;/span&gt;&lt;span class="gi"&gt;+     "dev": "deno run --watch --allow-net=api.strippe.com main.ts"
&lt;/span&gt;    }
  }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now I'm a suspicious person by nature. So I've deliberately typoed the domain name as a test.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;deno task dev
Task dev deno run &lt;span class="nt"&gt;--watch&lt;/span&gt; &lt;span class="nt"&gt;--allow-net&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;api.strippe.com main.ts
Watcher Process started.
┌ ⚠️  Deno requests net access to &lt;span class="s2"&gt;"api.stripe.com"&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
├ Requested by &lt;span class="sb"&gt;`&lt;/span&gt;fetch&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt; API.
├ Run again with &lt;span class="nt"&gt;--allow-net&lt;/span&gt; to bypass this prompt.
└ Allow? &lt;span class="o"&gt;[&lt;/span&gt;y/n/A] &lt;span class="o"&gt;(&lt;/span&gt;y &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;yes&lt;/span&gt;, allow&lt;span class="p"&gt;;&lt;/span&gt; n &lt;span class="o"&gt;=&lt;/span&gt; no, deny&lt;span class="p"&gt;;&lt;/span&gt; A &lt;span class="o"&gt;=&lt;/span&gt; allow all net permissions&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I press &lt;code&gt;n&lt;/code&gt; and&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;❌ Denied net access to &lt;span class="s2"&gt;"api.stripe.com"&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
error: Uncaught Error: An error occurred with our connection to Stripe. Request was retried 1 times.
    at file:///Users/richardm/Library/Caches/deno/npm/registry.npmjs.org/stripe/13.4.0/esm/RequestSender.js:319:37
    at eventLoopTick &lt;span class="o"&gt;(&lt;/span&gt;ext:core/01_core.js:197:13&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Everything seems to be in order! I fix the typo, run &lt;code&gt;npm task dev&lt;/code&gt; again, and everything is hunky-dory! Not only did I confirm the workings of Deno's permission system, but this helps me save face and pretend my previous embarassing typo "crustomers" was a deliberate choice.&lt;/p&gt;

&lt;h2&gt;
  
  
  Webhooks
&lt;/h2&gt;

&lt;p&gt;Now for completeness, let's listen for webhooks too.&lt;/p&gt;

&lt;p&gt;First, run &lt;code&gt;stripe listen&lt;/code&gt; to receive events from the Stripe API and direct them to localhost. Let's be cliché and pick port 3000.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;stripe listen &lt;span class="nt"&gt;--latest&lt;/span&gt; &lt;span class="nt"&gt;--forward-to&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;localhost:3000
&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; Ready! You are using Stripe API Version &lt;span class="o"&gt;[&lt;/span&gt;2023-08-16]. Your webhook signing secret is whsec_... &lt;span class="o"&gt;(&lt;/span&gt;^C to quit&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Copy the webhook signing secret, and let's edit &lt;code&gt;main.ts&lt;/code&gt; one last time and add the following snippet of code, lightly adapted from the &lt;a href="https://github.com/stripe/stripe-node/blob/c384675a45f6ef62d9cfb061e7987925eceb767a/examples/webhook-signing/deno/main.ts#L16" rel="noopener noreferrer"&gt;examples in github.com/stripe/stripe-node&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;import&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;meta&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;main&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="p"&gt;...&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;port&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3000&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;server&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;Deno&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;listen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="na"&gt;hostname&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;127.0.0.1&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3000&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="s2"&gt;`Webhook endpoint available at http://127.0.0.1:&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;port&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/
  `&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;handler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Request&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;signature&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Stripe-Signature&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;body&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;text&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;event&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;stripe&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;webhooks&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;constructEventAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nx"&gt;signature&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;&amp;lt;YOUR SIGNING SECRET GOES HERE&amp;gt;&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="kc"&gt;undefined&lt;/span&gt;
      &lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`❌ Error message: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Response&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;400&lt;/span&gt;&lt;span class="p"&gt;});&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;✅ Success:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="kd"&gt;type&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;payment_intent.succeeded&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;obj&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;object&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;Stripe&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;PaymentIntent&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`💰 PaymentIntent status: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;obj&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;status&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;warn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`❌Unhandled event type: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="kd"&gt;type&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Response&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
      &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="na"&gt;received&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;}),&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;serveListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;server&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;handler&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now time to run it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="nx"&gt;$&lt;/span&gt; &lt;span class="nx"&gt;deno&lt;/span&gt; &lt;span class="nx"&gt;task&lt;/span&gt; &lt;span class="nx"&gt;dev&lt;/span&gt;
&lt;span class="nx"&gt;Task&lt;/span&gt; &lt;span class="nx"&gt;dev&lt;/span&gt; &lt;span class="nx"&gt;deno&lt;/span&gt; &lt;span class="nx"&gt;run&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;watch&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;allow&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;net&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;stripe&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;com&lt;/span&gt; &lt;span class="nx"&gt;main&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ts&lt;/span&gt;
&lt;span class="p"&gt;...&lt;/span&gt;
&lt;span class="err"&gt;┌&lt;/span&gt; &lt;span class="err"&gt;⚠️&lt;/span&gt;  &lt;span class="nx"&gt;Deno&lt;/span&gt; &lt;span class="nx"&gt;requests&lt;/span&gt; &lt;span class="nx"&gt;net&lt;/span&gt; &lt;span class="nx"&gt;access&lt;/span&gt; &lt;span class="nx"&gt;to&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;127.0.0.1:3000&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;span class="err"&gt;├&lt;/span&gt; &lt;span class="nx"&gt;Requested&lt;/span&gt; &lt;span class="nx"&gt;by&lt;/span&gt; &lt;span class="s2"&gt;`Deno.listen()`&lt;/span&gt; &lt;span class="nx"&gt;API&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;span class="err"&gt;├&lt;/span&gt; &lt;span class="nx"&gt;Run&lt;/span&gt; &lt;span class="nx"&gt;again&lt;/span&gt; &lt;span class="kd"&gt;with&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;allow&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;net&lt;/span&gt; &lt;span class="nx"&gt;to&lt;/span&gt; &lt;span class="nx"&gt;bypass&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt; &lt;span class="nx"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;span class="err"&gt;└&lt;/span&gt; &lt;span class="nx"&gt;Allow&lt;/span&gt;&lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;y&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;A&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;yes&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;allow&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;no&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;deny&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;A&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;allow&lt;/span&gt; &lt;span class="nx"&gt;all&lt;/span&gt; &lt;span class="nx"&gt;net&lt;/span&gt; &lt;span class="nx"&gt;permissions&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;^&lt;/span&gt;&lt;span class="nx"&gt;C&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The permissions system is at it again! Let's update &lt;code&gt;deno.jsonc&lt;/code&gt; again.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;    "tasks": {
&lt;span class="gd"&gt;-     "dev": "deno run --watch --allow-net=api.stripe.com main.ts"
&lt;/span&gt;&lt;span class="gi"&gt;+     "dev": "deno run --watch --allow-net=api.stripe.com,127.0.0.1:3000 main.ts"
&lt;/span&gt;    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run &lt;code&gt;deno task dev&lt;/code&gt;, and it will run in the background, listening for events. Make sure you've got &lt;code&gt;stripe listen --latest --forward-to=localhost:3000&lt;/code&gt; running in another terminal, and then in a third terminal, run &lt;code&gt;stripe trigger payment_intent.succeeded&lt;/code&gt; and you should see your Deno process log output like&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Webhook endpoint available at http://127.0.0.1:3000/
✅ Success: evt_3Nnabcdefghijklmnopqrstu
❌ Unhandled event &lt;span class="nb"&gt;type&lt;/span&gt;: payment_intent.created
✅ Success: evt_3Nnabcdefghijklmnopqrstu
❌ Unhandled event &lt;span class="nb"&gt;type&lt;/span&gt;: charge.succeeded
✅ Success: evt_3Nnabcdefghijklmnopqrstu
💰 PaymentIntent status: succeeded
✅ Success: evt_3Nnabcdefghijklmnopqrstu
❌ Unhandled event &lt;span class="nb"&gt;type&lt;/span&gt;: payment_intent.created
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What's next?
&lt;/h2&gt;

&lt;p&gt;That wraps it up for the post, but some obvious next steps would be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use environment variables for your signing secret and API key.&lt;/li&gt;
&lt;li&gt;Deploy to a server on the Internet instead of localhost, and create a webhook endpoint to send Stripe events to that server.&lt;/li&gt;
&lt;li&gt;Write the Stripe-related logic you actually need for your app. Listing customers is just the start.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But I believe in you. You've got this. Don't let the haters get you down. I will leave you with these words of inspiration: if you have a suggestion, or something seems wrong with stripe-node's Deno support, you can always leave feedback in a &lt;a href="https://github.com/stripe/stripe-node/issues" rel="noopener noreferrer"&gt;Github issue at github.com/stripe/stripe-node&lt;/a&gt;. Good luck!&lt;/p&gt;

</description>
      <category>deno</category>
      <category>typescript</category>
      <category>stripe</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>August Stripe Developer Digest</title>
      <dc:creator>Gehrig</dc:creator>
      <pubDate>Tue, 05 Sep 2023 17:40:50 +0000</pubDate>
      <link>https://forem.com/4thzoa/august-stripe-developer-digest-46kh</link>
      <guid>https://forem.com/4thzoa/august-stripe-developer-digest-46kh</guid>
      <description>&lt;h2&gt;
  
  
  Dynamic payment methods
&lt;/h2&gt;

&lt;p&gt;Adapting and staying on top of quickly evolving payment methods can be overwhelming. That's why we’ve added &lt;a href="https://stripe.com/blog/dynamic-payment-methods" rel="noopener noreferrer"&gt;dynamic payment methods&lt;/a&gt; to our PaymentIntents and SetupIntents API. As our new default configuration, this change will allow you to let Stripe handle payment methods that are displayed and configure payment methods directly from your Dashboard, saving you from hardcoding and testing these properties in your code. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpvav8s0btr2v7s57va88.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpvav8s0btr2v7s57va88.png" alt="Dynamic payment methods" width="698" height="465"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We think it’ll simplify your integration, reduce the risk of payment failure and errors, and better future-proof your systems. Additionally, we made tools to help you understand why certain payment methods aren't available for a transaction and simulate different scenarios. You’ll even be able to run A/B payment method tests and set custom targeting rules without any code changes. &lt;a href="https://stripe.com/docs/upgrades/manage-payment-methods" rel="noopener noreferrer"&gt;Upgrade to our latest API version&lt;/a&gt; to try out dynamic payment methods and take advantage of these features.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkwi5h27a7elyignm8iie.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkwi5h27a7elyignm8iie.png" alt="divider" width="800" height="2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📩 We're sharing our most recent developer digest here on DEV! If you're interested in subscribing to monthly developer updates, &lt;a href="https://go.stripe.global/dev-digest" rel="noopener noreferrer"&gt;sign up here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkwi5h27a7elyignm8iie.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkwi5h27a7elyignm8iie.png" alt="divider" width="800" height="2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Updates
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Deploy Stripe Data Pipeline globally:&lt;/strong&gt; &lt;a href="https://stripe.com/data-pipeline" rel="noopener noreferrer"&gt;Data Pipeline&lt;/a&gt; is now &lt;a href="https://stripe.com/docs/stripe-data/access-data-in-warehouse" rel="noopener noreferrer"&gt;available globally&lt;/a&gt; to connect Stripe with Snowflake and Amazon Redshift data warehouses. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Offer no-cost orders and coupons for “free” purchases:&lt;/strong&gt; Checkout, Payment Links, and pricing tables can &lt;a href="https://stripe.com/docs/payments/checkout/no-cost-orders#limitations" rel="noopener noreferrer"&gt;accept no-cost orders&lt;/a&gt; for $0 or with 100% off coupons.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Limit customers to one subscription:&lt;/strong&gt; When using Checkout, Payment Links, or pricing tables, you can now &lt;a href="https://stripe.com/docs/payments/checkout/limit-subscriptions" rel="noopener noreferrer"&gt;limit customers to a single subscription&lt;/a&gt; and remind them during the checkout process. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Allow alternative currency payouts in Hong Kong, Singapore, and Australia:&lt;/strong&gt; Businesses using Connect in Hong Kong, Singapore, and Australia can now enable &lt;a href="https://stripe.com/docs/payouts/alternative-currencies#alternative-currency-payouts-fees" rel="noopener noreferrer"&gt;alternative currency payouts&lt;/a&gt; to let users pay themselves out in a non-local currency.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Have immutable Stripe Billing subscription metadata:&lt;/strong&gt; Subscription metadata is now locked to subscription invoices at the time of invoice creation and displayed on the invoice within a new field, &lt;a href="https://stripe.com/docs/api/subscriptions/object#subscription_object-metadata" rel="noopener noreferrer"&gt;subscription_details.metadata&lt;/a&gt;, for stronger guarantees and referential integrity within your systems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Backdate invoices with an effective date:&lt;/strong&gt; Invoices and credit notes can now use an &lt;a href="https://stripe.com/docs/api/invoices/update#update_invoice-effective_at" rel="noopener noreferrer"&gt;effective_at&lt;/a&gt; date field to sync over historical records or match the effective date of a delayed contract.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Collect tax for streaming media:&lt;/strong&gt; Stripe Tax introduced &lt;a href="https://stripe.com/docs/tax/tax-codes" rel="noopener noreferrer"&gt;tax codes&lt;/a&gt; and calculations for businesses selling audio and video streaming services.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reverse transactions and issue refunds with tax included:&lt;/strong&gt; Stripe Tax API offers a new &lt;a href="https://stripe.com/docs/api/tax/transactions/create_reversal" rel="noopener noreferrer"&gt;transaction reversals endpoint&lt;/a&gt; to issue refunds for the total amount, including taxes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Access card network dispute codes:&lt;/strong&gt; The Stripe Disputes API now surfaces the underlying &lt;a href="https://stripe.com/docs/disputes/categories" rel="noopener noreferrer"&gt;card network dispute reason code&lt;/a&gt;, enabling you to provide a more targeted counter to disputes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reduce latency with Financial Connections prefetch:&lt;/strong&gt; The &lt;a href="https://stripe.com/docs/api/financial_connections/sessions/object#financial_connections_session_object-prefetch" rel="noopener noreferrer"&gt;prefetch parameter&lt;/a&gt; retrieves necessary data upon account creation, like balance or account information, that would otherwise require an additional API call. &lt;/p&gt;

&lt;h3&gt;
  
  
  SDKs
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Pin SDKs to the latest API version:&lt;/strong&gt; PHP, Python, Ruby, Node, Java, .net, and Go SDKs now use the &lt;a href="https://stripe.com/docs/libraries/versioning" rel="noopener noreferrer"&gt;latest API version&lt;/a&gt; as default. Updating your integration and setting it to be compatible with API version 2023-08-16 is recommended.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Instantiate Java apps using StripeClient:&lt;/strong&gt; &lt;a href="https://github.com/stripe/stripe-java/releases/tag/v23.0.0" rel="noopener noreferrer"&gt;Java SDK version 23.0.0&lt;/a&gt; added support for using StripeClient, joining Node and PHP SDKs. Instances are thread-safe, immutable, and provide access to the Stripe REST API in a single method.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Internet Explorer 11 support dropped by Stripe.js:&lt;/strong&gt; Using Stripe.js in Internet Explorer 11 will now display a warning message. &lt;a href="https://stripe.com/docs/js/appendix/supported_browsers" rel="noopener noreferrer"&gt;Supported browsers&lt;/a&gt; include Chrome 38+, Safari 10.1+, Firefox 29+, Edge 15+, and Opera 25+.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stay connected
&lt;/h3&gt;

&lt;p&gt;💬 &lt;a href="https://twitter.com/stripedev" rel="noopener noreferrer"&gt;Follow us at @StripeDev on Twitter&lt;/a&gt; for updates and answers to your developer questions. Let us know what you’re working on with the Stripe API.&lt;br&gt;
👾 &lt;a href="https://stripe.com/go/developer-chat" rel="noopener noreferrer"&gt;Join the Stripe Discord server&lt;/a&gt; to chat live with other developers.&lt;br&gt;
📺 &lt;a href="https://www.youtube.com/stripedevelopers?sub_confirmation=1" rel="noopener noreferrer"&gt;Subscribe to Stripe Developers on YouTube&lt;/a&gt; for office hours, live streams, and online technical workshops.&lt;br&gt;
📚 &lt;a href="https://dev.to/stripe"&gt;Add us on DEV&lt;/a&gt; for how-to articles and past editions of this developer digest.&lt;br&gt;
📥 &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLSdkGW6uSv__oJKuIUmcXNG9knoZInGhnx7PEKp7k774A907dQ/viewform" rel="noopener noreferrer"&gt;Submit dev content&lt;/a&gt; for the developer digest.&lt;/p&gt;

</description>
      <category>stripe</category>
      <category>stripedevdigest</category>
      <category>showdev</category>
      <category>news</category>
    </item>
    <item>
      <title>July Stripe Developer Digest</title>
      <dc:creator>Gehrig</dc:creator>
      <pubDate>Fri, 04 Aug 2023 20:55:26 +0000</pubDate>
      <link>https://forem.com/4thzoa/july-stripe-developer-digest-1gce</link>
      <guid>https://forem.com/4thzoa/july-stripe-developer-digest-1gce</guid>
      <description>&lt;h2&gt;
  
  
  Stripe Tax for Platforms
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwahvgsqwxn1aywrqy34z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwahvgsqwxn1aywrqy34z.png" alt="Stripe Tax for Platforms" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkwi5h27a7elyignm8iie.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkwi5h27a7elyignm8iie.png" alt="divider" width="800" height="2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📩 We're sharing our most recent developer digest here on DEV! If you're interested in subscribing to monthly developer updates, &lt;a href="https://go.stripe.global/dev-digest" rel="noopener noreferrer"&gt;sign up here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkwi5h27a7elyignm8iie.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkwi5h27a7elyignm8iie.png" alt="divider" width="800" height="2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Updates
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Manage Stripe Tax for subscriptions:&lt;/strong&gt; The new &lt;a href="https://stripe.com/docs/api/subscriptions/update#update_subscription-automatic_tax-enabled" rel="noopener noreferrer"&gt;automatic_tax parameter&lt;/a&gt; for the List Subscriptions endpoint lets you turn tax for subscriptions on or off, making it easier to filter transactions that have automatic tax collection for reporting purposes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mobile support to collect payment details before Intent:&lt;/strong&gt; You can now &lt;a href="https://stripe.com/docs/payments/accept-a-payment-deferred?platform=android" rel="noopener noreferrer"&gt;collect payment details before creating a PaymentIntent or SetupIntent&lt;/a&gt; using the Android, iOS, React Native SDKs, and &lt;a href="https://stripe.com/docs/payments/accept-a-payment?platform=ios&amp;amp;ui=payment-sheet" rel="noopener noreferrer"&gt;Mobile Payment Element&lt;/a&gt;. Use this to confirm payment server-side or to support a multi-processor implementation. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recovery automations for Stripe Billing are available in beta:&lt;/strong&gt; &lt;a href="https://stripe.com/docs/billing/revenue-recovery/automations" rel="noopener noreferrer"&gt;Recovery automations&lt;/a&gt; are a no-code tool to configure complex revenue recovery use cases, such as customizing dunning flows and scheduling notifications on subscription and quote expiration. Get started with a few &lt;a href="https://stripe.com/docs/billing/revenue-recovery/automation-recipes" rel="noopener noreferrer"&gt;automation recipes&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cross-border payouts add Pakistan and Kazakhstan:&lt;/strong&gt; US-based Connect platforms can now pay out to connected accounts in &lt;a href="https://stripe.com/docs/connect/cross-border-payouts" rel="noopener noreferrer"&gt;118 countries&lt;/a&gt;. &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AI Day:&lt;/strong&gt; Stripe recently hosted an &lt;a href="https://www.youtube.com/playlist?list=PLcoWp8pBTM3A821vFnkOPSmHOJOWkyfFT" rel="noopener noreferrer"&gt;AI Day&lt;/a&gt; featuring talks on AI developer tools, a Radar assistant demo, and speakers from Anthropic, Zapier, Runway, Replit, and more. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Common API design patterns at Stripe:&lt;/strong&gt; Browse a &lt;a href="https://dev.to/stripe/common-design-patterns-at-stripe-1hb4"&gt;four-part series on API design&lt;/a&gt; best practices for crafting a thoughtful API experience, from naming conventions to a preference for enums.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Type checking at Stripe podcast:&lt;/strong&gt; Stripe engineer Jake Zimmerman works on &lt;a href="https://sorbet.org/" rel="noopener noreferrer"&gt;Sorbet&lt;/a&gt;, an open-source project for Type checking in Ruby, and joined the &lt;a href="https://changelog.com/podcast/548" rel="noopener noreferrer"&gt;Changelog podcast&lt;/a&gt; to discuss type checking at scale. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use Deno and Fresh to build a store:&lt;/strong&gt; Jump into a &lt;a href="https://www.youtube.com/watch?v=tHJO84INeb8" rel="noopener noreferrer"&gt;three-part Deno walkthrough&lt;/a&gt; to display store items, shopping cart logic, and state management. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Take recurring payments with SvelteKit:&lt;/strong&gt; Learn how to set up &lt;a href="https://dev.to/joshnuss/recurring-payments-with-sveltekit-stripe-3d1j"&gt;Stripe Billing in a SvelteKit&lt;/a&gt; project quickly.  &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create a Stripe Issuing card management dashboard:&lt;/strong&gt; Retool shows us how to use their no-code tools to &lt;a href="https://retool.com/blog/stripe-retool-crafting-your-custom-card-management-dashboard-part-1/" rel="noopener noreferrer"&gt;create a customer card management dashboard&lt;/a&gt;.  &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Collect payments on Android with Google Pay and Stripe:&lt;/strong&gt; The &lt;a href="https://www.youtube.com/watch?v=fbkfB-FAaMg" rel="noopener noreferrer"&gt;Android Developers channel&lt;/a&gt; covered how to implement mobile payments and offered a peek at Stripe’s upcoming developer tool, &lt;a href="http://workbench.stripe.dev/" rel="noopener noreferrer"&gt;Workbench&lt;/a&gt;.&lt;a href="https://www.youtube.com/watch?v=fbkfB-FAaMg" rel="noopener noreferrer"&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Implement usage-based billing with Stripe:&lt;/strong&gt; OpenMeter provided a helpful tutorial for &lt;a href="https://openmeter.io/blog/implementing-usage-based-pricing-with-stripe" rel="noopener noreferrer"&gt;getting started with usage-based&lt;/a&gt; billing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RedwooodJS-Stripe reaches v1:&lt;/strong&gt; The &lt;a href="https://github.com/chrisvdm/redwoodjs-stripe" rel="noopener noreferrer"&gt;RedwoodJS-Stripe library&lt;/a&gt; has hooks and providers and includes a demo store, cart, and Stripe Checkout in a single command. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;⠀&lt;/p&gt;

&lt;h2&gt;
  
  
  Stay connected
&lt;/h2&gt;

&lt;p&gt;💬 &lt;a href="https://twitter.com/stripedev" rel="noopener noreferrer"&gt;Follow us at @StripeDev on Twitter&lt;/a&gt; for updates and answers to your developer questions. Let us know what you’re working on with the Stripe API.&lt;br&gt;
👾 &lt;a href="https://stripe.com/go/developer-chat" rel="noopener noreferrer"&gt;Join the Stripe Discord server&lt;/a&gt; to chat live with other developers.&lt;br&gt;
📺 &lt;a href="https://www.youtube.com/stripedevelopers?sub_confirmation=1" rel="noopener noreferrer"&gt;Subscribe to Stripe Developers on YouTube&lt;/a&gt; for office hours, live streams, and online technical workshops.&lt;br&gt;
📚 &lt;a href="https://dev.to/stripe"&gt;Add us on DEV&lt;/a&gt; for how-to articles and past editions of this developer digest.&lt;br&gt;
📥 &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLSdkGW6uSv__oJKuIUmcXNG9knoZInGhnx7PEKp7k774A907dQ/viewform" rel="noopener noreferrer"&gt;Submit dev content&lt;/a&gt; for the developer digest.&lt;/p&gt;

&lt;p&gt;What would you like to see more (or less) of? Let us know by replying to this email. If you have questions or comments, or need help with code, we’re here to help &lt;a href="https://support.stripe.com/contact/login" rel="noopener noreferrer"&gt;via email&lt;/a&gt;, or on &lt;a href="https://stripe.com/go/developer-chat" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;, &lt;a href="https://twitter.com/StripeDev" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, and &lt;a href="https://stackoverflow.com/tags/stripe-payments/info" rel="noopener noreferrer"&gt;Stack Overflow&lt;/a&gt;. View our &lt;a href="https://github.com/stripe-samples" rel="noopener noreferrer"&gt;code samples&lt;/a&gt; on GitHub.&lt;/p&gt;

&lt;p&gt;— The Stripe team&lt;/p&gt;

</description>
      <category>stripe</category>
      <category>stripedevdigest</category>
      <category>showdev</category>
      <category>news</category>
    </item>
    <item>
      <title>Accept PayPal as a payment method with Stripe in the EU, UK and Switzerland</title>
      <dc:creator>Charlie Gerard</dc:creator>
      <pubDate>Tue, 18 Jul 2023 14:42:35 +0000</pubDate>
      <link>https://forem.com/4thzoa/accept-paypal-as-a-payment-method-with-stripe-in-the-eu-uk-and-switzerland-403l</link>
      <guid>https://forem.com/4thzoa/accept-paypal-as-a-payment-method-with-stripe-in-the-eu-uk-and-switzerland-403l</guid>
      <description>&lt;p&gt;We recently made &lt;a href="https://www.paypal.com" rel="noopener noreferrer"&gt;PayPal&lt;/a&gt; available as a payment method in the EU, UK, and Switzerland, so you can now offer an additional way for your customers to submit payments using their PayPal account.&lt;br&gt;
If you have a &lt;a href="https://stripe.com/connect" rel="noopener noreferrer"&gt;Connect account&lt;/a&gt;, first reach out to the &lt;a href="https://support.stripe.com/topics/connect" rel="noopener noreferrer"&gt;support team&lt;/a&gt; to see if you’re eligible. If you’re a direct merchant, meaning you accept payments directly from consumers, let’s go through the steps to enable it.&lt;/p&gt;
&lt;h2&gt;
  
  
  Requirements
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;This feature is only available for Stripe accounts set in the European Economic Area (with the exception of Hungary), the UK, and Switzerland&lt;/strong&gt;. If your Stripe account is registered in another country, you will unfortunately not be able to activate PayPal at this time.&lt;br&gt;
You’re also required to have a &lt;strong&gt;PayPal business account in the EEA, Switzerland or UK&lt;/strong&gt;. You can create one during the onboarding process.&lt;/p&gt;
&lt;h2&gt;
  
  
  Enabling PayPal
&lt;/h2&gt;

&lt;p&gt;To enable the PayPal feature in the &lt;a href="https://dashboard.stripe.com/" rel="noopener noreferrer"&gt;Stripe Dashboard&lt;/a&gt;, navigate to the &lt;a href="https://dashboard.stripe.com/settings/payment_methods" rel="noopener noreferrer"&gt;Payments settings page&lt;/a&gt;. If you’re eligible, you should see “PayPal” as an option under the “Wallets” section.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmqphkv4ujcwyyl038udz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmqphkv4ujcwyyl038udz.png" alt="Wallets section in the Stripe dashboard showing PayPal as a payment method available" width="800" height="366"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click the “Turn on” button to start the onboarding process.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv8nmi1fyfdwdyvhphagk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv8nmi1fyfdwdyvhphagk.png" alt="Pop-up to activate PayPal as a payment method. Estimated time to complete between 2-5 minutes" width="800" height="438"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Confirm that your account meets all the requirements and click “Continue”.&lt;/p&gt;

&lt;p&gt;Then, select where you’d like to keep your PayPal funds and click the “Connect to PayPal” button to connect and activate your accounts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2umd17n8vjyl7f32r6mm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2umd17n8vjyl7f32r6mm.png" alt="Pop-up to choose how to settle your funds. Either add your PayPal funds to your Stripe balance or keep PayPal funds in PayPal balance." width="717" height="807"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Alternatively you can choose to settle your funds into your PayPal account instead:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ytp8rjv5q8ulffl4cs4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ytp8rjv5q8ulffl4cs4.png" alt="Pop-up to choose how to settle your funds. Either add your PayPal funds to your Stripe balance or keep PayPal funds in PayPal balance." width="717" height="807"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you are redirected to PayPal, you can either log into an existing account or create a new one as part of the process. As mentioned in the previous section, &lt;strong&gt;your PayPal account needs to be a business account in the EEA, Switzerland or the UK&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Once this step is done, if you logged into an existing account, you should see a green checkmark on the right of the payment method to indicate that your PayPal account has been successfully connected to Stripe. &lt;/p&gt;

&lt;p&gt;From there, you can enable or disable recurring payments as well as contact support if you need to change how your funds are settled.&lt;/p&gt;

&lt;p&gt;If you created a new account as part of the onboarding flow, it will first be pending approval until you verify your email.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5p7ovtx075r5q9bsy7p8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5p7ovtx075r5q9bsy7p8.png" alt="Screenshot showing the PayPal payment method option expanded to show the " width="800" height="165"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can turn this payment method off at any time by opening the details dropdown and clicking the “Turn off” button in the Stripe Dashboard.&lt;/p&gt;

&lt;p&gt;If you’re mostly using Stripe’s no-code products such as &lt;a href="https://stripe.com/payments/payment-links" rel="noopener noreferrer"&gt;Payment Links&lt;/a&gt;, this is all you need to do. PayPal will now be a payment option for all your customers.&lt;/p&gt;
&lt;h2&gt;
  
  
  Integrating PayPal
&lt;/h2&gt;
&lt;h3&gt;
  
  
  No-code solution
&lt;/h3&gt;

&lt;p&gt;Once you’ve enabled PayPal on your account, you can test that the feature is working by navigating to your &lt;a href="https://dashboard.stripe.com/products" rel="noopener noreferrer"&gt;products page&lt;/a&gt;, selecting a product you created a Payment Link for, click on the “View payment link” button under the Pricing section, copy the link, and open it in your browser. You should see PayPal displayed as a payment method.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjxyp2brx7l0oaa4pamao.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjxyp2brx7l0oaa4pamao.png" alt="Screenshot of Stripe Checkout page with the PayPal payment method" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Your customer will then be guided through PayPal’s UI to confirm the payment.&lt;/p&gt;
&lt;h3&gt;
  
  
  Checkout integration
&lt;/h3&gt;

&lt;p&gt;Integrating PayPal as a payment method using the Stripe API requires minimal changes to your code.&lt;/p&gt;

&lt;p&gt;First, if you’re using Checkout, locate where you are creating a Checkout session in your codebase. If you are already specifying different payment methods using the &lt;code&gt;payment_method_types&lt;/code&gt; attribute, all you need to do is add &lt;code&gt;paypal&lt;/code&gt; to your array.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;session&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;stripe&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;checkout&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;sessions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;mode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;payment&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;payment_method_types&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;card&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;paypal&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="na"&gt;line_items&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;price&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;PRICE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;quantity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="na"&gt;success_url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;domainURL&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/success.html?session_id={CHECKOUT_SESSION_ID}`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;cancel_url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;domainURL&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/canceled.html`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By default, if you don’t specify any payment method types, it will display all payment methods enabled, including PayPal.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;session&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;stripe&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;checkout&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;sessions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;mode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;payment&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;line_items&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;price&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;PRICE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;quantity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="na"&gt;success_url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;domainURL&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/success.html?session_id={CHECKOUT_SESSION_ID}`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;cancel_url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;domainURL&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/canceled.html`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Payment Element and Express Checkout Element integration
&lt;/h3&gt;

&lt;p&gt;If you’re using &lt;a href="https://stripe.com/docs/payments/payment-element" rel="noopener noreferrer"&gt;Payment Element&lt;/a&gt; or &lt;a href="https://stripe.com/docs/elements/express-checkout-element" rel="noopener noreferrer"&gt;Express Checkout Element&lt;/a&gt;, locate where you are creating the &lt;code&gt;PaymentIntent&lt;/code&gt;. If you have the attribute &lt;code&gt;automatic_payment_methods&lt;/code&gt; set to enabled, PayPal will show up as an option automatically. Otherwise, if you’re using the &lt;code&gt;payment_method_types&lt;/code&gt; attribute to customize the options, you’ll only need to add &lt;code&gt;paypal&lt;/code&gt; to the array and you’ll be good to go.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;paymentIntent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;stripe&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;paymentIntents&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="na"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1999&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;currency&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;currency&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;payment_method_types&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;card&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;paypal&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa24goe9m7g3i6j44g3vv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa24goe9m7g3i6j44g3vv.png" alt="Example with Express Checkout Element" width="800" height="838"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These code samples shown above are using Node.js, but the change is very similar in other programming languages. If you want to read more, please &lt;a href="https://stripe.com/docs/payments/paypal/accept-a-payment?platform=web&amp;amp;ui=checkout#enable-paypal-as-a-payment-method" rel="noopener noreferrer"&gt;check the docs&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fucy7p5qmld3bq15inwt4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fucy7p5qmld3bq15inwt4.png" alt="Screenshot of the docs showing different programming languages." width="800" height="549"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Issuing refunds
&lt;/h2&gt;

&lt;p&gt;If you need to issue a refund to a customer who paid using PayPal, navigate to the &lt;a href="https://dashboard.stripe.com/payments" rel="noopener noreferrer"&gt;payments page&lt;/a&gt; in the Stripe Dashboard, select the payment you’d like to issue the refund for, click on the refund button, and confirm the refund in the pop-up displayed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5sqsggoiggrmu8l4jtus.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5sqsggoiggrmu8l4jtus.png" alt="Screenshot of the Stripe dashboard showing the refund link." width="800" height="151"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;If you have a Stripe account registered in the EU, UK, or Switzerland, you can now enable PayPal as a payment method with Stripe with a few clicks and some minor code changes. This feature will allow you to reach more potential customers and provide them with a better checkout experience. If you’re interested in learning more, check out &lt;a href="https://stripe.com/docs/payments/paypal" rel="noopener noreferrer"&gt;our docs&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  About the author
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl83n2g64kwljoodl0glt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl83n2g64kwljoodl0glt.png" alt="Charlie is a caucasian woman with long brown hair and wearing glasses. She is standing in front of a plain white wall with purple lights." width="200" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/@devdevcharlie" rel="noopener noreferrer"&gt;Charlie Gerard&lt;/a&gt; is a developer advocate at Stripe, a &lt;a href="https://www.amazon.com/Practical-Machine-Learning-JavaScript-TensorFlow-js/dp/1484264177" rel="noopener noreferrer"&gt;published author&lt;/a&gt; and a &lt;a href="https://charliegerard.dev/" rel="noopener noreferrer"&gt;creative technologist&lt;/a&gt;. She loves researching and &lt;a href="https://charliegerard.dev/" rel="noopener noreferrer"&gt;experimenting with technologies&lt;/a&gt;. When she’s not coding, she enjoys spending time outdoors, reading, and setting random challenges for herself.&lt;/p&gt;

</description>
      <category>stripe</category>
      <category>paypal</category>
    </item>
    <item>
      <title>June Stripe Developer Digest</title>
      <dc:creator>Gehrig</dc:creator>
      <pubDate>Wed, 05 Jul 2023 16:53:09 +0000</pubDate>
      <link>https://forem.com/4thzoa/june-stripe-developer-digest-2n44</link>
      <guid>https://forem.com/4thzoa/june-stripe-developer-digest-2n44</guid>
      <description>&lt;h2&gt;
  
  
  Tap to Pay on Android
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk1szhmmiockm1dtkwsr9.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk1szhmmiockm1dtkwsr9.jpg" alt="Stripe Tap to Pay on Android" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkwi5h27a7elyignm8iie.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkwi5h27a7elyignm8iie.png" alt="divider" width="800" height="2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📩 We're sharing our most recent developer digest here on DEV! If you're interested in subscribing to monthly developer updates, &lt;a href="https://go.stripe.global/dev-digest" rel="noopener noreferrer"&gt;sign up here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkwi5h27a7elyignm8iie.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkwi5h27a7elyignm8iie.png" alt="divider" width="800" height="2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://stripe.com/docs/terminal/payments/setup-reader/tap-to-pay?platform=android" rel="noopener noreferrer"&gt;Tap to Pay on Android&lt;/a&gt;  is now generally available in the US, the UK, and Singapore, and it’s in beta in all other  &lt;a href="https://stripe.com/docs/terminal/payments/regional" rel="noopener noreferrer"&gt;Terminal markets&lt;/a&gt; . With Tap to Pay you can accept in-person payments with a compatible iPhone or Android device and the Stripe Terminal SDK using React Native, Java, Kotlin, Swift, or Objective-C—no extra hardware required. It’s ideal if you’re looking to offer contactless payments in more places. Check out our  &lt;a href="https://www.youtube.com/watch?v=2y0abSgxPXw" rel="noopener noreferrer"&gt;video&lt;/a&gt;  and  &lt;a href="https://dev.to/stripe/accept-payments-using-tap-to-pay-for-android-with-stripe-1nn7"&gt;blog&lt;/a&gt;  tutorial to get started with Android.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stay updated
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Customer portal adds deep links:&lt;/strong&gt; You can now help your users navigate desired actions, like updating their subscription or payment method, in the  &lt;a href="https://stripe.com/docs/customer-management/portal-deep-links" rel="noopener noreferrer"&gt;customer portal with deep links&lt;/a&gt; .&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stripe Apps install links:&lt;/strong&gt; Stripe Apps added  &lt;a href="https://stripe.com/docs/stripe-apps/install-links-oauth" rel="noopener noreferrer"&gt;install links&lt;/a&gt;  to provide an option for installation outside the Stripe App Marketplace. Use this OAuth-like experience to keep users within your site or app with redirect and state handling.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cash App Pay payment method:&lt;/strong&gt; Businesses in the United States can now accept one-time and recurring payments with digital wallet  &lt;a href="https://stripe.com/docs/payments/cash-app-pay" rel="noopener noreferrer"&gt;Cash App Pay&lt;/a&gt; . &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sigma supports metadata queries for Billing tables:&lt;/strong&gt; Sigma now includes the ability to  &lt;a href="https://stripe.com/docs/stripe-data/query-billing-data" rel="noopener noreferrer"&gt;query Billing&lt;/a&gt;  metadata for subscription schedules, schedule phases, subscription items, and schedule phase items.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Issuing can be tried in test mode:&lt;/strong&gt; In the US, the UK, and European Economic Area, you can now &lt;a href="https://stripe.com/docs/issuing" rel="noopener noreferrer"&gt;try Issuing in test mode&lt;/a&gt;  for physical and virtual card programs. &lt;/p&gt;

&lt;h2&gt;
  
  
  Learn
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dive into the Stripe payments object:&lt;/strong&gt; Understand the role and capabilities of the  &lt;a href="https://www.youtube.com/watch?v=CUAY6IQcVQM" rel="noopener noreferrer"&gt;Stripe payments object&lt;/a&gt;  which facilitates payments. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build a Next.js membership site:&lt;/strong&gt; Follow a step-by-step guide for a  &lt;a href="https://dev.to/aws-builders/step-by-step-build-a-membership-website-with-amplify-stripe-and-nextjs-p4e"&gt;membership app using Amplify, Stripe, and Next.js.&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stripe Checkout speed run:&lt;/strong&gt; Watch a tutorial on setting up  &lt;a href="https://www.youtube.com/watch?v=6TVD90GOZG8" rel="noopener noreferrer"&gt;Stripe Checkout in under five minutes&lt;/a&gt;  with Ruby.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Take the Svelte-stripe online course:&lt;/strong&gt; Josh Nussbaum from svelte-stripe has launched an online course on  &lt;a href="https://joshuanussbaum.podia.com/build-a-saas-with-sveltekit" rel="noopener noreferrer"&gt;creating a SaaS with SvelteKit&lt;/a&gt; .&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create a shopping cart with Laravel Cashier and Vue:&lt;/strong&gt; See how to build a  &lt;a href="https://www.youtube.com/watch?v=gvnxd1xne7Q" rel="noopener noreferrer"&gt;shopping cart using Laravel Cashier and Vue&lt;/a&gt; . &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integrate Stripe in Ionic Vue JS App:&lt;/strong&gt; Learn how to  &lt;a href="https://dev.to/aaronksaunders/integrating-stripe-payments-in-ionic-vue-js-app-with-capacitor-and-nodejs-13f2"&gt;integrate Stripe into an Ionic Vue JS app&lt;/a&gt; using Capacitor and NodeJS.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create GraphQL checkout sessions with edge resolvers:&lt;/strong&gt; Discover how to integrate the  &lt;a href="https://grafbase.com/guides/working-with-mutation-resolvers-and-stripe-checkout" rel="noopener noreferrer"&gt;Stripe SDK with edge resolvers&lt;/a&gt; and Grafbase to have a unified GraphQL API.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Community
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Capacitor-stripe v4.2.0:&lt;/strong&gt; The latest &lt;a href="https://github.com/capacitor-community/stripe/releases" rel="noopener noreferrer"&gt;release of Capacitor-stripe&lt;/a&gt; introduces native support for Stripe Identity. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flutter Stripe v9.0.0 and 9.2.0:&lt;/strong&gt; &lt;a href="https://pub.dev/packages/flutter_stripe/changelog" rel="noopener noreferrer"&gt;Flutter Stripe&lt;/a&gt; has released version 9.0.0, which includes better support for tap-to-pay cards and Apple Watch. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Laravel Cashier Stripe v14.12.2:&lt;/strong&gt; The latest version of  &lt;a href="https://github.com/laravel/cashier-stripe/releases" rel="noopener noreferrer"&gt;Laravel Cashier Stripe&lt;/a&gt; , v14.12.2, focuses on improving the handling of the “payment_method.automatically_updated” webhook.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pay for Ruby on Rails:&lt;/strong&gt;  &lt;a href="https://github.com/pay-rails/pay" rel="noopener noreferrer"&gt;Pay&lt;/a&gt; , a payments engine for Ruby on Rails, has made it easier to build custom webhooks. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stripe payment flow diagram tool:&lt;/strong&gt; &lt;a href="https://www.eraser.io/diagramgpt" rel="noopener noreferrer"&gt;Erasure’s DiagramGPT&lt;/a&gt;  is a neat tool that can generate API diagrams from code, like &lt;a href="https://twitter.com/eraserlabs/status/1659186738504540160" rel="noopener noreferrer"&gt;Stripe’s payment flow documentation&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Stay connected
&lt;/h2&gt;

&lt;p&gt;💬  &lt;a href="https://twitter.com/stripedev" rel="noopener noreferrer"&gt;Follow us at @StripeDev on Twitter&lt;/a&gt;  for updates and answers to your developer questions. Let us know what you’re working on with the Stripe API.&lt;br&gt;
👾  &lt;a href="https://stripe.com/go/developer-chat" rel="noopener noreferrer"&gt;Join the Stripe Discord server&lt;/a&gt;  to chat live with other developers.&lt;br&gt;
📺  &lt;a href="https://www.youtube.com/stripedevelopers?sub_confirmation=1" rel="noopener noreferrer"&gt;Subscribe to Stripe Developers on YouTube&lt;/a&gt;  for office hours, live streams, and online technical workshops.&lt;br&gt;
📚  &lt;a href="https://dev.to/stripe"&gt;Add us on DEV&lt;/a&gt;  for how-to articles and past editions of this developer digest.&lt;br&gt;
📥  &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLSdkGW6uSv__oJKuIUmcXNG9knoZInGhnx7PEKp7k774A907dQ/viewform" rel="noopener noreferrer"&gt;Submit dev content&lt;/a&gt;  for the developer digest.&lt;/p&gt;

&lt;p&gt;What would you like to see more (or less) of? Let us know by replying to this email. If you have questions or comments, or need help with code, we’re here to help  &lt;a href="https://support.stripe.com/contact/login?utm_medium=earned-email&amp;amp;utm_source=bd77&amp;amp;utm_campaign=GLOBAL_4d8c&amp;amp;utm_content=bdaa&amp;amp;utm_term=2683f60e4500" rel="noopener noreferrer"&gt;via email&lt;/a&gt; , or on  &lt;a href="https://stripe.com/go/developer-chat?utm_medium=earned-email&amp;amp;utm_source=a6db&amp;amp;utm_campaign=GLOBAL_4e0b&amp;amp;utm_content=bc45&amp;amp;utm_term=e115a24036f6" rel="noopener noreferrer"&gt;Discord&lt;/a&gt; ,  &lt;a href="https://twitter.com/StripeDev" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; , and  &lt;a href="https://stackoverflow.com/tags/stripe-payments/info" rel="noopener noreferrer"&gt;Stack Overflow&lt;/a&gt; . View our  &lt;a href="https://github.com/stripe-samples" rel="noopener noreferrer"&gt;code samples&lt;/a&gt;  on GitHub.&lt;/p&gt;

&lt;p&gt;— The Stripe team&lt;/p&gt;

</description>
      <category>stripe</category>
      <category>stripedevdigest</category>
      <category>showdev</category>
      <category>news</category>
    </item>
    <item>
      <title>May Stripe Developer Digest</title>
      <dc:creator>Gehrig</dc:creator>
      <pubDate>Thu, 01 Jun 2023 22:49:35 +0000</pubDate>
      <link>https://forem.com/4thzoa/may-stripe-developer-digest-21o3</link>
      <guid>https://forem.com/4thzoa/may-stripe-developer-digest-21o3</guid>
      <description>&lt;h2&gt;
  
  
  Highlights from Stripe Sessions
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcg234wtgpnl9k17c2vvw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcg234wtgpnl9k17c2vvw.png" alt="Stripe Workbench" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkwi5h27a7elyignm8iie.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkwi5h27a7elyignm8iie.png" alt="divider" width="800" height="2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📩 We're sharing our most recent developer digest here on DEV! If you're interested in subscribing to monthly developer updates, &lt;a href="https://go.stripe.global/dev-digest" rel="noopener noreferrer"&gt;sign up here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkwi5h27a7elyignm8iie.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkwi5h27a7elyignm8iie.png" alt="divider" width="800" height="2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Roughly 3,000 founders, engineers, business leaders, and OpenAI CEO Sam Altman joined us in San Francisco for this year’s Stripe Sessions, which covered a host of  &lt;a href="https://stripe.com/blog/stripe-sessions-2023?utm_medium=marketing-email&amp;amp;utm_source=8c01&amp;amp;utm_campaign=GLOBAL_4ea9&amp;amp;utm_content=99a9&amp;amp;utm_term=1ed8179167ab" rel="noopener noreferrer"&gt;Stripe updates and announcements&lt;/a&gt; . In the  &lt;a href="https://youtu.be/5aqwPlMHFM8" rel="noopener noreferrer"&gt;keynote&lt;/a&gt; , we demoed Connect embedded components ( &lt;a href="https://youtu.be/5aqwPlMHFM8?t=1840" rel="noopener noreferrer"&gt;30:40&lt;/a&gt; ) and the ability to use natural language to write SQL in Stripe Sigma ( &lt;a href="https://youtu.be/5aqwPlMHFM8?t=2913" rel="noopener noreferrer"&gt;48:33&lt;/a&gt; ).&lt;/p&gt;

&lt;p&gt;We also introduced the new Stripe developer experience with Stripe Workbench ( &lt;a href="https://youtu.be/5aqwPlMHFM8?t=3451" rel="noopener noreferrer"&gt;57:31&lt;/a&gt; ), a developer tool that lets you iterate, debug, and grow your integration. If you’d like an early look and a chance to shape the Workbench roadmap,  &lt;a href="http://workbench.stripe.dev/" rel="noopener noreferrer"&gt;join the beta program&lt;/a&gt; .&lt;/p&gt;

&lt;h2&gt;
  
  
  Stay updated
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;New Tax API for all payments:&lt;/strong&gt; &lt;a href="https://stripe.com/docs/tax/custom" rel="noopener noreferrer"&gt;Calculate tax in your custom payment flow&lt;/a&gt; on Stripe transactions or for any other payment processor. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Private beta for Stripe Issuing charge cards:&lt;/strong&gt; Stripe Issuing added support for &lt;a href="https://stripe.com/issuing" rel="noopener noreferrer"&gt;charge cards&lt;/a&gt;, letting platforms provide their customers with access to credit through physical and virtual cards. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Custom domains for Payment Links:&lt;/strong&gt; Use a &lt;a href="https://dashboard.stripe.com/settings/custom-domains" rel="noopener noreferrer"&gt;custom domain for Payment Links&lt;/a&gt; , configured in the Stripe Dashboard or Stripe API.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Payment Links embeddable buy button:&lt;/strong&gt; Customize and embed a  &lt;a href="https://stripe.com/docs/no-code/buy-button" rel="noopener noreferrer"&gt;buy button&lt;/a&gt;  for your payment link on your website. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Specify Checkout subscription billing start date:&lt;/strong&gt; Set a  &lt;a href="https://stripe.com/docs/api/checkout/sessions/create#create_checkout_session-subscription_data-billing_cycle_anchor" rel="noopener noreferrer"&gt;billing cycle anchor&lt;/a&gt; to a fixed UNIX timestamp in Checkout and use proration_behavior to charge a prorated invoice. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Afterpay adds monthly installments and increased transaction limits:&lt;/strong&gt; US businesses can now use buy now, pay later payment method &lt;a href="https://stripe.com/docs/payments/afterpay-clearpay#get-started" rel="noopener noreferrer"&gt;Afterpay&lt;/a&gt; for monthly installments and transactions up to $4,000.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Connect embedded components now localized in 47 countries:&lt;/strong&gt; Payments, payment details, and payouts components now support a locale parameter to offer  &lt;a href="https://stripe.com/docs/connect/get-started-connect-embedded-components#supported-languages" rel="noopener noreferrer"&gt;local language support&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Learn
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Build a creator platform using Ruby:&lt;/strong&gt; In this multi-part series, discover how to  &lt;a href="https://www.youtube.com/watch?v=vvEo5i6NA5o" rel="noopener noreferrer"&gt;build and monetize creator platforms&lt;/a&gt;, such as newsletters, using Stripe Connect.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Lessons learned from building Stripe Radar:&lt;/strong&gt; Learn from Stripe engineer Ryan Drapeau about the key decisions that go into &lt;a href="https://www.youtube.com/live/6kpnaaz_RZA?feature=share&amp;amp;t=293" rel="noopener noreferrer"&gt;building real-time fraud protection&lt;/a&gt;  with machine learning algorithms.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Diving into Dev Containers:&lt;/strong&gt; Hear about the &lt;a href="https://www.youtube.com/live/nabgKhtd9JE?feature=share&amp;amp;t=296" rel="noopener noreferrer"&gt;benefits of Dev Containers&lt;/a&gt;, explore setup configurations, and share tips for maximizing container usage in GitHub CodeSpaces.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Jumpstart your HTTP APIs with Fern:&lt;/strong&gt; Tune in to a live session with Fern’s cofounder Danny Sheridan to discuss the open-source toolkit to &lt;a href="https://www.youtube.com/watch?v=jhVCgK5Fz_I" rel="noopener noreferrer"&gt;simplify and automate API creation&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Stay connected
&lt;/h2&gt;

&lt;p&gt;💬  &lt;a href="https://twitter.com/stripedev" rel="noopener noreferrer"&gt;Follow us at @StripeDev on Twitter&lt;/a&gt;  for updates and answers to your developer questions. Let us know what you’re working on with the Stripe API.&lt;br&gt;
👾  &lt;a href="https://stripe.com/go/developer-chat" rel="noopener noreferrer"&gt;Join the Stripe Discord server&lt;/a&gt;  to chat live with other developers.&lt;br&gt;
📺  &lt;a href="https://www.youtube.com/stripedevelopers?sub_confirmation=1" rel="noopener noreferrer"&gt;Subscribe to Stripe Developers on YouTube&lt;/a&gt;  for office hours, live streams, and online technical workshops.&lt;br&gt;
📚  &lt;a href="https://dev.to/stripe"&gt;Add us on DEV&lt;/a&gt;  for how-to articles and past editions of this developer digest.&lt;br&gt;
📥  &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLSdkGW6uSv__oJKuIUmcXNG9knoZInGhnx7PEKp7k774A907dQ/viewform" rel="noopener noreferrer"&gt;Submit dev content&lt;/a&gt;  for the developer digest.&lt;/p&gt;

&lt;p&gt;What would you like to see more (or less) of? Let us know by replying to this email. If you have questions or comments, or need help with code, we’re here to help  &lt;a href="https://support.stripe.com/contact/login" rel="noopener noreferrer"&gt;via email&lt;/a&gt;, or on  &lt;a href="https://stripe.com/go/developer-chat" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;, &lt;a href="https://twitter.com/StripeDev" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, and  &lt;a href="https://stackoverflow.com/tags/stripe-payments/info" rel="noopener noreferrer"&gt;Stack Overflow&lt;/a&gt; . View our  &lt;a href="https://github.com/stripe-samples" rel="noopener noreferrer"&gt;code samples&lt;/a&gt;  on GitHub.&lt;/p&gt;

&lt;p&gt;— The Stripe team&lt;/p&gt;

</description>
      <category>stripe</category>
      <category>stripedevdigest</category>
      <category>showdev</category>
      <category>news</category>
    </item>
  </channel>
</rss>
