<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="rss.xsl"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Meridian Docs Blog</title>
        <link>https://meridian-docs.netlify.app/changelog</link>
        <description>Meridian Docs Blog</description>
        <lastBuildDate>Fri, 15 May 2026 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <item>
            <title><![CDATA[v2.4 — Async Webhooks, Dead-Letter Queues, and New SDK Methods]]></title>
            <link>https://meridian-docs.netlify.app/changelog/v2-4-release</link>
            <guid>https://meridian-docs.netlify.app/changelog/v2-4-release</guid>
            <pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Meridian v2.4 is now available. This release focuses on webhook reliability and adds long-requested SDK improvements.]]></description>
            <content:encoded><![CDATA[<p>Meridian v2.4 is now available. This release focuses on webhook reliability and adds long-requested SDK improvements.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="async-webhook-delivery">Async webhook delivery<a href="https://meridian-docs.netlify.app/changelog/v2-4-release#async-webhook-delivery" class="hash-link" aria-label="Direct link to Async webhook delivery" title="Direct link to Async webhook delivery" translate="no">​</a></h2>
<p>Webhook processing is now fully asynchronous. Previously, slow endpoints could cause delivery delays across your account. With async delivery, each webhook is dispatched independently — a slow endpoint doesn't affect others.</p>
<p><strong>What changed:</strong></p>
<ul>
<li class="">Delivery is decoupled from the triggering API call</li>
<li class="">Latency is reduced by ~40ms on average for high-volume accounts</li>
<li class="">Delivery status is visible in the Dashboard in real time</li>
</ul>
<p>No changes required to your endpoint or integration.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="dead-letter-queues">Dead-letter queues<a href="https://meridian-docs.netlify.app/changelog/v2-4-release#dead-letter-queues" class="hash-link" aria-label="Direct link to Dead-letter queues" title="Direct link to Dead-letter queues" translate="no">​</a></h2>
<p>Failed webhooks (after all retry attempts) are now placed in a <strong>dead-letter queue</strong> instead of being silently dropped.</p>
<p>You can inspect and replay dead-lettered events from the Dashboard under <strong>Developers → Webhooks → Dead Letter Queue</strong>, or via the new API endpoint:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># List dead-lettered events</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">curl</span><span class="token plain"> https://api.meridian.dev/v1/webhook_endpoints/we_123/dead_letter </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token parameter variable" style="color:#36acaa">-u</span><span class="token plain"> sk_test_4eC39HqL</span><span class="token punctuation" style="color:#393A34">..</span><span class="token plain">.:</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Replay a specific event</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">curl</span><span class="token plain"> </span><span class="token parameter variable" style="color:#36acaa">-X</span><span class="token plain"> POST https://api.meridian.dev/v1/webhook_endpoints/we_123/dead_letter/evt_456/replay </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token parameter variable" style="color:#36acaa">-u</span><span class="token plain"> sk_test_4eC39HqL</span><span class="token punctuation" style="color:#393A34">..</span><span class="token plain">.:</span><br></div></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="new-sdk-methods">New SDK methods<a href="https://meridian-docs.netlify.app/changelog/v2-4-release#new-sdk-methods" class="hash-link" aria-label="Direct link to New SDK methods" title="Direct link to New SDK methods" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="nodejs--python--ruby">Node.js / Python / Ruby<a href="https://meridian-docs.netlify.app/changelog/v2-4-release#nodejs--python--ruby" class="hash-link" aria-label="Direct link to Node.js / Python / Ruby" title="Direct link to Node.js / Python / Ruby" translate="no">​</a></h3>
<ul>
<li class=""><code>meridian.webhooks.constructEventAsync()</code> — async-compatible version of <code>constructEvent</code></li>
<li class=""><code>meridian.customers.search()</code> — search customers by email, name, or metadata</li>
<li class=""><code>meridian.paymentIntents.incrementAuthorization()</code> — increase an authorized amount before capture</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="go">Go<a href="https://meridian-docs.netlify.app/changelog/v2-4-release#go" class="hash-link" aria-label="Direct link to Go" title="Direct link to Go" translate="no">​</a></h3>
<ul>
<li class=""><code>client.PaymentIntents.IncrementAuthorization()</code> added</li>
<li class="">Context propagation is now consistent across all methods</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="breaking-changes">Breaking changes<a href="https://meridian-docs.netlify.app/changelog/v2-4-release#breaking-changes" class="hash-link" aria-label="Direct link to Breaking changes" title="Direct link to Breaking changes" translate="no">​</a></h2>
<p>None. This release is fully backwards-compatible.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="deprecations">Deprecations<a href="https://meridian-docs.netlify.app/changelog/v2-4-release#deprecations" class="hash-link" aria-label="Direct link to Deprecations" title="Direct link to Deprecations" translate="no">​</a></h2>
<ul>
<li class=""><code>webhook_endpoint.secret</code> is now returned only on creation, not on subsequent retrieves. Store your secret at creation time.</li>
</ul>
<hr>
<p><a class="" href="https://meridian-docs.netlify.app/changelog">View the full API changelog →</a></p>]]></content:encoded>
            <category>release</category>
            <category>webhooks</category>
            <category>sdk</category>
        </item>
        <item>
            <title><![CDATA[v2.3 — Subscription Pausing, Invoice Drafts, and Test Clock GA]]></title>
            <link>https://meridian-docs.netlify.app/changelog/v2-3-release</link>
            <guid>https://meridian-docs.netlify.app/changelog/v2-3-release</guid>
            <pubDate>Tue, 10 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[v2.3 ships subscription pausing, invoice draft mode, and graduates Test Clocks to general availability.]]></description>
            <content:encoded><![CDATA[<p>v2.3 ships subscription pausing, invoice draft mode, and graduates Test Clocks to general availability.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="subscription-pausing">Subscription pausing<a href="https://meridian-docs.netlify.app/changelog/v2-3-release#subscription-pausing" class="hash-link" aria-label="Direct link to Subscription pausing" title="Direct link to Subscription pausing" translate="no">​</a></h2>
<p>You can now pause and resume subscriptions without canceling them. Pausing stops billing cycles — no invoice is generated during the pause period.</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Pause a subscription</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">curl</span><span class="token plain"> https://api.meridian.dev/v1/subscriptions/sub_123 </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token parameter variable" style="color:#36acaa">-u</span><span class="token plain"> sk_test_4eC39HqL</span><span class="token punctuation" style="color:#393A34">..</span><span class="token plain">.: </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token parameter variable" style="color:#36acaa">-d</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"pause_collection[behavior]"</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">void</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Resume</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">curl</span><span class="token plain"> https://api.meridian.dev/v1/subscriptions/sub_123 </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token parameter variable" style="color:#36acaa">-u</span><span class="token plain"> sk_test_4eC39HqL</span><span class="token punctuation" style="color:#393A34">..</span><span class="token plain">.: </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token parameter variable" style="color:#36acaa">-d</span><span class="token plain"> </span><span class="token assign-left variable" style="color:#36acaa">pause_collection</span><span class="token operator" style="color:#393A34">=</span><br></div></code></pre></div></div>
<p>Two pause behaviors are supported:</p>
<ul>
<li class=""><code>void</code> — Invoice is voided; customer is not charged for the pause period</li>
<li class=""><code>keep_as_draft</code> — Invoice stays as a draft; customer is charged when resumed</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="invoice-draft-mode-ga">Invoice draft mode (GA)<a href="https://meridian-docs.netlify.app/changelog/v2-3-release#invoice-draft-mode-ga" class="hash-link" aria-label="Direct link to Invoice draft mode (GA)" title="Direct link to Invoice draft mode (GA)" translate="no">​</a></h2>
<p>Invoice drafts launched in beta in v2.2. In v2.3, draft mode is now <strong>generally available</strong> and recommended for all invoice workflows.</p>
<p>Create invoices in draft mode, add line items, then finalize when ready:</p>
<div class="language-javascript codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-javascript codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Create draft</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> invoice </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> meridian</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">invoices</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">create</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">customer</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'cus_123'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">auto_advance</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">false</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">   </span><span class="token comment" style="color:#999988;font-style:italic">// stays as draft</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Add line items</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> meridian</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">invoiceItems</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">create</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">customer</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'cus_123'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">invoice</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> invoice</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">id</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">amount</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">4999</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">currency</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'usd'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">description</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'Enterprise seat – April'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Finalize and send</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> meridian</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">invoices</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">finalizeInvoice</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">invoice</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">id</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> meridian</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">invoices</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">sendInvoice</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">invoice</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">id</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></div></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="test-clocks-ga">Test Clocks (GA)<a href="https://meridian-docs.netlify.app/changelog/v2-3-release#test-clocks-ga" class="hash-link" aria-label="Direct link to Test Clocks (GA)" title="Direct link to Test Clocks (GA)" translate="no">​</a></h2>
<p>Test Clocks — introduced in beta in v2.1 — are now generally available. Use them to simulate the passage of time in test mode without waiting for real time to pass.</p>
<p>See the <a class="" href="https://meridian-docs.netlify.app/docs/test-mode">Test Mode docs</a> for usage examples.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="other-improvements">Other improvements<a href="https://meridian-docs.netlify.app/changelog/v2-3-release#other-improvements" class="hash-link" aria-label="Direct link to Other improvements" title="Direct link to Other improvements" translate="no">​</a></h2>
<ul>
<li class=""><code>Customer</code> objects now include <code>balance</code> (in cents) representing prepaid credit or outstanding debt</li>
<li class=""><code>Invoice.paid_out_of_band</code> flag for marking invoices paid outside Meridian (e.g., wire transfer)</li>
<li class="">Rate limit headers (<code>X-RateLimit-Limit</code>, <code>X-RateLimit-Remaining</code>, <code>X-RateLimit-Reset</code>) added to all responses</li>
</ul>]]></content:encoded>
            <category>release</category>
            <category>billing</category>
            <category>subscriptions</category>
        </item>
    </channel>
</rss>