<?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>DEV Community: Tom Wang</title>
    <description>The latest articles on DEV Community by Tom Wang (@tomwangcn).</description>
    <link>https://dev.to/tomwangcn</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3850103%2F8fa92041-b06f-4727-9b1f-4b9b304d4c8e.png</url>
      <title>DEV Community: Tom Wang</title>
      <link>https://dev.to/tomwangcn</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tomwangcn"/>
    <language>en</language>
    <item>
      <title>ACH vs RTP vs FedNow vs Fedwire: US Rails Guide</title>
      <dc:creator>Tom Wang</dc:creator>
      <pubDate>Wed, 07 Oct 2026 07:43:07 +0000</pubDate>
      <link>https://dev.to/tomwangcn/ach-vs-rtp-vs-fednow-vs-fedwire-us-rails-guide-2f29</link>
      <guid>https://dev.to/tomwangcn/ach-vs-rtp-vs-fednow-vs-fedwire-us-rails-guide-2f29</guid>
      <description>&lt;p&gt;Of the eight pages Google currently ranks for "ACH vs RTP vs FedNow", five quote a FedNow limit that has been wrong since November 2025, two still say the RTP cap is $1m, and one claims FedNow only runs between 7am and 7pm. Not one of them names an ISO 20022 message, shows an API payload, or explains why a FedNow "return" is a favour rather than a right.&lt;/p&gt;

&lt;p&gt;This guide is the version I wanted when I first had to pick a rail per payout for a US treasury product. It covers the four domestic rails an engineer actually touches: ACH, RTP, FedNow and Fedwire, with CHIPS in a footnote. For each one: what the limit is and when it last changed, when the money moves, what messages carry it, what happens when it goes wrong, which legal regime governs the loss, and how the main US payment APIs expose the choice. It is the US counterpart to my &lt;a href="https://dev.to/news/2026-09-27-faster-payments-vs-bacs-vs-chaps-uk-api-guide"&gt;Faster Payments vs Bacs vs CHAPS guide&lt;/a&gt;, and the mapping between the two is at the end for UK readers.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is the Difference Between ACH, RTP, FedNow and Fedwire?
&lt;/h2&gt;

&lt;p&gt;All four settle in US dollars across accounts at the Federal Reserve. Three are operated by the Fed (FedACH, FedNow, Fedwire), one by a bank-owned private company (RTP, The Clearing House), and ACH has a second private operator, EPN, also run by The Clearing House. Everything else differs.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;ACH&lt;/th&gt;
&lt;th&gt;RTP&lt;/th&gt;
&lt;th&gt;FedNow&lt;/th&gt;
&lt;th&gt;Fedwire Funds&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Operator&lt;/td&gt;
&lt;td&gt;FedACH and EPN under Nacha rules&lt;/td&gt;
&lt;td&gt;The Clearing House&lt;/td&gt;
&lt;td&gt;Federal Reserve&lt;/td&gt;
&lt;td&gt;Federal Reserve&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Speed&lt;/td&gt;
&lt;td&gt;Next banking day, or same day in three windows&lt;/td&gt;
&lt;td&gt;Seconds, 24/7/365&lt;/td&gt;
&lt;td&gt;Seconds, 24/7/365&lt;/td&gt;
&lt;td&gt;Minutes, 22 hours a day on business days&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Per-payment cap&lt;/td&gt;
&lt;td&gt;$1m same-day (to $10m on 17 Sep 2027); none for standard&lt;/td&gt;
&lt;td&gt;$10m (since 9 Feb 2025)&lt;/td&gt;
&lt;td&gt;$10m network max (Nov 2025); $100k default per bank&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Settlement&lt;/td&gt;
&lt;td&gt;Deferred net, four times a banking day&lt;/td&gt;
&lt;td&gt;Real-time, prefunded joint account at the Fed&lt;/td&gt;
&lt;td&gt;Real-time gross, Fed master accounts&lt;/td&gt;
&lt;td&gt;Real-time gross, Fed master accounts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Message format&lt;/td&gt;
&lt;td&gt;Nacha fixed-width records&lt;/td&gt;
&lt;td&gt;ISO 20022&lt;/td&gt;
&lt;td&gt;ISO 20022&lt;/td&gt;
&lt;td&gt;ISO 20022 since 14 Jul 2025&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pull payments&lt;/td&gt;
&lt;td&gt;Yes (debits)&lt;/td&gt;
&lt;td&gt;No, Request for Payment only&lt;/td&gt;
&lt;td&gt;No, Request for Payment only&lt;/td&gt;
&lt;td&gt;No, drawdown request only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reversible&lt;/td&gt;
&lt;td&gt;Yes, return codes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2025 volume&lt;/td&gt;
&lt;td&gt;35.2bn payments, $93tn&lt;/td&gt;
&lt;td&gt;447m payments, $1.45tn&lt;/td&gt;
&lt;td&gt;8.4m payments, $853bn&lt;/td&gt;
&lt;td&gt;217m transfers, roughly $1.15 quadrillion&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;p&gt;&lt;strong&gt;&lt;a href="https://tomcn.uk/news/2026-10-07-ach-vs-rtp-vs-fednow-vs-fedwire-us-rails-guide" rel="noopener noreferrer"&gt;Read the full article on tomcn.uk →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  About the Author
&lt;/h3&gt;

&lt;p&gt;I'm &lt;strong&gt;Tom Wang&lt;/strong&gt;, an AI Developer &amp;amp; Fintech Developer — building AI agents, crypto payment infrastructure, and cross-border payout systems with Rust, Go, and TypeScript. Based in London, UK.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Currently open to new opportunities&lt;/strong&gt; in fintech, crypto payments, and AI agent engineering.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://tomcn.uk" rel="noopener noreferrer"&gt;Portfolio&lt;/a&gt; | &lt;a href="https://www.linkedin.com/in/tomwangcn/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; | &lt;a href="https://github.com/tomwangcn" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; | &lt;a href="mailto:hi@tomcn.uk"&gt;Email&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>fintech</category>
      <category>payments</category>
      <category>paymentdeveloper</category>
      <category>paymentinfrastructure</category>
    </item>
    <item>
      <title>Roughrider Coin on Solana: Deposit or Stablecoin?</title>
      <dc:creator>Tom Wang</dc:creator>
      <pubDate>Sun, 04 Oct 2026 09:51:17 +0000</pubDate>
      <link>https://dev.to/tomwangcn/roughrider-coin-on-solana-deposit-or-stablecoin-l7</link>
      <guid>https://dev.to/tomwangcn/roughrider-coin-on-solana-deposit-or-stablecoin-l7</guid>
      <description>&lt;p&gt;Fiserv's press release on 1 October calls Roughrider Coin a "dollar-backed stablecoin". Bank of North Dakota, the state bank whose name is on the coin, calls it "a U.S. dollar-backed token deposit designed exclusively for bank-to-bank transactions". Under the GENIUS Act those two descriptions are mutually exclusive, and which one is right decides who regulates it.&lt;/p&gt;

&lt;p&gt;The launch itself is real. Fiserv's Digital Asset Platform went into production with Roughrider as its "first live use case", running on Solana with VersaBank as issuer and Fireblocks doing custody. The headlines around it are less reliable. TechTimes ran "Fiserv Stablecoin Platform Activates 10,000 Banks" with "400ms settlement" replacing "overnight ACH". All three claims are wrong, and why they are wrong is the useful part.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Many Banks Are Live on Fiserv's Digital Asset Platform?
&lt;/h2&gt;

&lt;p&gt;Four. Fiserv's release says more than 90 North Dakota banks and credit unions take part. BND told The Dakotan that the token moved from testing into production with &lt;strong&gt;four pilot institutions&lt;/strong&gt;, and that access to the wider group "is being introduced gradually" with no date for expansion. The 10,000 figure is Fiserv's whole client base, which the TechTimes body text concedes even though the headline does not.&lt;/p&gt;

&lt;p&gt;(The Dakotan dates the production move to 3 October, not 1 October.) BND's Roughrider page adds that the public cannot hold the token at all. It is interbank only, voluntary, and approved as a pilot by the North Dakota Industrial Commission.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Party&lt;/th&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Bank of North Dakota&lt;/td&gt;
&lt;td&gt;Sponsor and governance, "oversight role"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VersaBank USA, N.A.&lt;/td&gt;
&lt;td&gt;Issuer: minting, burning, custody, reserve management&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fiserv&lt;/td&gt;
&lt;td&gt;Platform; banks access it through Commercial Center, its commercial online banking product&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fireblocks&lt;/td&gt;
&lt;td&gt;MPC wallets, tokenisation, automated policy controls&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Solana&lt;/td&gt;
&lt;td&gt;Transaction processing&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;VersaBank USA holds an OCC national bank charter, acquired through the purchase of Stearns Bank Holdingford in Minnesota in 2024. That detail is what makes the "deposit" reading plausible.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is Roughrider Coin a Stablecoin or a Tokenised Deposit?
&lt;/h2&gt;

&lt;p&gt;The GENIUS Act (P.L. 119-27, signed 18 July 2025) defines "payment stablecoin" and then carves out of it, in §2(22)(B)(ii), any deposit under the Federal Deposit Insurance Act, "including a deposit recorded using distributed ledger technology". A tokenised deposit stays inside bank regulation. A payment stablecoin needs a permitted issuer, 1:1 reserves in the assets the Act lists, and monthly reserve disclosure.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;&lt;a href="https://tomcn.uk/news/2026-10-04-fiserv-roughrider-coin-solana-token-deposit" rel="noopener noreferrer"&gt;Read the full article on tomcn.uk →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  About the Author
&lt;/h3&gt;

&lt;p&gt;I'm &lt;strong&gt;Tom Wang&lt;/strong&gt;, an AI Developer &amp;amp; Fintech Developer — building AI agents, crypto payment infrastructure, and cross-border payout systems with Rust, Go, and TypeScript. Based in London, UK.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Currently open to new opportunities&lt;/strong&gt; in fintech, crypto payments, and AI agent engineering.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://tomcn.uk" rel="noopener noreferrer"&gt;Portfolio&lt;/a&gt; | &lt;a href="https://www.linkedin.com/in/tomwangcn/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; | &lt;a href="https://github.com/tomwangcn" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; | &lt;a href="mailto:hi@tomcn.uk"&gt;Email&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>fintech</category>
      <category>payments</category>
      <category>stablecoin</category>
      <category>paymentinfrastructure</category>
    </item>
    <item>
      <title>SEPA Direct Debit Core vs B2B: Developer Guide</title>
      <dc:creator>Tom Wang</dc:creator>
      <pubDate>Sat, 03 Oct 2026 08:18:55 +0000</pubDate>
      <link>https://dev.to/tomwangcn/sepa-direct-debit-core-vs-b2b-developer-guide-1fod</link>
      <guid>https://dev.to/tomwangcn/sepa-direct-debit-core-vs-b2b-developer-guide-1fod</guid>
      <description>&lt;p&gt;Stripe, Adyen and GoCardless all support SEPA Direct Debit, but none of them will collect under the B2B scheme, and Mollie doesn't document it either. That matters more than it sounds. B2B is the version where the payer cannot claw the money back, and if you sell to businesses you have probably been told it exists, that it is safer, and that you should "just switch it on". Through a PSP API, in 2026, you can't.&lt;/p&gt;

&lt;p&gt;The guides that rank for "SEPA Direct Debit Core vs B2B" are written for finance teams: Core is for consumers, B2B is for companies, B2B has no refund. That's accurate, and it won't help you write the code that handles an &lt;code&gt;MD06&lt;/code&gt; return seven weeks after you shipped the goods. This guide works from the European Payments Council's 2025 rulebooks and implementation guidelines (in force since 5 October 2025), Regulation (EU) 260/2012 and PSD2, and the current developer docs of four PSPs.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is the Difference Between SEPA Direct Debit Core and B2B?
&lt;/h2&gt;

&lt;p&gt;They are two separate EPC schemes with two separate rulebooks. They share the mandate model and the ISO 20022 messages, and the differences sit almost entirely in who can reverse a collection and when.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;SDD Core&lt;/th&gt;
&lt;th&gt;SDD B2B&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Rulebook&lt;/td&gt;
&lt;td&gt;EPC016-06, 2025 v1.0&lt;/td&gt;
&lt;td&gt;EPC222-07, 2025 v1.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Who can be the payer&lt;/td&gt;
&lt;td&gt;Consumers and businesses&lt;/td&gt;
&lt;td&gt;Non-consumers only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Refund of an authorised debit&lt;/td&gt;
&lt;td&gt;Yes, 8 weeks, no questions asked&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Refund of an unauthorised debit&lt;/td&gt;
&lt;td&gt;13 months&lt;/td&gt;
&lt;td&gt;13 months, not recoverable from the creditor's PSP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Debtor bank checks the mandate&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes, against the debtor's confirmation, every collection&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Latest presentation&lt;/td&gt;
&lt;td&gt;D-1 inter-PSP business day&lt;/td&gt;
&lt;td&gt;D-1 inter-PSP business day&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Return window (debtor PSP)&lt;/td&gt;
&lt;td&gt;D+5 inter-PSP business days&lt;/td&gt;
&lt;td&gt;D+3 inter-PSP business days&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PSP API support (Stripe, Adyen, GoCardless)&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Core accepts business accounts too. Stripe's docs spell it out: the Core scheme "supports both business and personal bank accounts". So the choice is never "Core for consumers, B2B for companies". The real choice is whether you can get your business customers to do the extra work B2B requires, and whether your bank will sponsor you for it.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Long Does a SEPA Direct Debit Take? D-1, D+5 and the 14-Day Window
&lt;/h2&gt;




&lt;p&gt;&lt;strong&gt;&lt;a href="https://tomcn.uk/news/2026-10-03-sepa-direct-debit-core-vs-b2b-developer-guide" rel="noopener noreferrer"&gt;Read the full article on tomcn.uk →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  About the Author
&lt;/h3&gt;

&lt;p&gt;I'm &lt;strong&gt;Tom Wang&lt;/strong&gt;, an AI Developer &amp;amp; Fintech Developer — building AI agents, crypto payment infrastructure, and cross-border payout systems with Rust, Go, and TypeScript. Based in London, UK.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Currently open to new opportunities&lt;/strong&gt; in fintech, crypto payments, and AI agent engineering.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://tomcn.uk" rel="noopener noreferrer"&gt;Portfolio&lt;/a&gt; | &lt;a href="https://www.linkedin.com/in/tomwangcn/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; | &lt;a href="https://github.com/tomwangcn" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; | &lt;a href="mailto:hi@tomcn.uk"&gt;Email&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>fintech</category>
      <category>payments</category>
      <category>paymentdeveloper</category>
      <category>paymentinfrastructure</category>
    </item>
    <item>
      <title>Card Auth Expiry: Visa vs Mastercard Capture Rules</title>
      <dc:creator>Tom Wang</dc:creator>
      <pubDate>Mon, 28 Sep 2026 07:16:55 +0000</pubDate>
      <link>https://dev.to/tomwangcn/card-auth-expiry-visa-vs-mastercard-capture-rules-23i</link>
      <guid>https://dev.to/tomwangcn/card-auth-expiry-visa-vs-mastercard-capture-rules-23i</guid>
      <description>&lt;p&gt;Four major PSPs give four different answers to one question: how long can I hold a customer-initiated Visa authorisation online before I have to capture it? Stripe says 7 days, Braintree 8, Adyen 10, and Checkout.com says 7 on one page and 10 on another. Visa's own rulebook says 10. If your order service has &lt;code&gt;CAPTURE_DEADLINE_DAYS = 7&lt;/code&gt; somewhere in a config file, that constant came from one PSP's docs page, not from the card schemes, and it is wrong for about half the transaction types you probably process.&lt;/p&gt;

&lt;p&gt;Most of the pages ranking for "how long does an authorization hold last" answer with a range: "a few days to a week", "up to 30 days". This guide works from the primary sources instead: the Visa Core Rules dated 18 April 2026, Mastercard's Transaction Processing Rules (December 2025 edition), the American Express merchant rules, and the API docs of Stripe, Adyen, Checkout.com and Braintree as they stand in September 2026.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Long Does a Card Authorisation Hold Last?
&lt;/h2&gt;

&lt;p&gt;It depends on three things: the scheme, the authorisation type you asked for, and who initiated the payment. The scheme sets the rule. Your PSP then usually applies a shorter window of its own, and the issuer releases the hold on the cardholder's side on its own schedule.&lt;/p&gt;

&lt;p&gt;The short version, by scheme rule:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scheme&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Validity&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Visa&lt;/td&gt;
&lt;td&gt;Customer-initiated, card-not-present&lt;/td&gt;
&lt;td&gt;10 days&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Visa&lt;/td&gt;
&lt;td&gt;Card-present, and all merchant-initiated&lt;/td&gt;
&lt;td&gt;5 days&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Visa&lt;/td&gt;
&lt;td&gt;Estimated auth at lodging, cruise, vehicle rental&lt;/td&gt;
&lt;td&gt;30 days&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Visa&lt;/td&gt;
&lt;td&gt;Extended authorisation (CIT, card-not-present)&lt;/td&gt;
&lt;td&gt;30 days&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mastercard&lt;/td&gt;
&lt;td&gt;Final authorisation&lt;/td&gt;
&lt;td&gt;7 days&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mastercard&lt;/td&gt;
&lt;td&gt;Pre-authorisation&lt;/td&gt;
&lt;td&gt;30 days&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Amex&lt;/td&gt;
&lt;td&gt;Standard charge&lt;/td&gt;
&lt;td&gt;7 days&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Amex&lt;/td&gt;
&lt;td&gt;Estimated auth, lodging / car rental / cruise&lt;/td&gt;
&lt;td&gt;Duration of stay or rental&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Discover publishes no public rulebook. Stripe and Adyen both document 7 to 10 days for card-not-present, so treat it as 7 unless your acquirer tells you otherwise.&lt;/p&gt;

&lt;h2&gt;
  
  
  Visa Authorisation Validity Periods Since April 2024
&lt;/h2&gt;

&lt;p&gt;On 13 April 2024 Visa merged two separate clocks, authorisation validity and the clearing deadline, into one "authorization-to-clearing time frame" (Visa Business News AI13522, October 2023). The current numbers sit in Table 5-12 of the Core Rules, section 5.7.3.5. Every window starts from the date of the approval:&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;&lt;a href="https://tomcn.uk/news/2026-09-28-card-authorisation-expiry-visa-mastercard-capture-windows" rel="noopener noreferrer"&gt;Read the full article on tomcn.uk →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  About the Author
&lt;/h3&gt;

&lt;p&gt;I'm &lt;strong&gt;Tom Wang&lt;/strong&gt;, an AI Developer &amp;amp; Fintech Developer — building AI agents, crypto payment infrastructure, and cross-border payout systems with Rust, Go, and TypeScript. Based in London, UK.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Currently open to new opportunities&lt;/strong&gt; in fintech, crypto payments, and AI agent engineering.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://tomcn.uk" rel="noopener noreferrer"&gt;Portfolio&lt;/a&gt; | &lt;a href="https://www.linkedin.com/in/tomwangcn/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; | &lt;a href="https://github.com/tomwangcn" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; | &lt;a href="mailto:hi@tomcn.uk"&gt;Email&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>fintech</category>
      <category>payments</category>
      <category>paymentdeveloper</category>
      <category>paymentinfrastructure</category>
    </item>
    <item>
      <title>Faster Payments vs Bacs vs CHAPS: UK API Guide</title>
      <dc:creator>Tom Wang</dc:creator>
      <pubDate>Sun, 27 Sep 2026 07:17:07 +0000</pubDate>
      <link>https://dev.to/tomwangcn/faster-payments-vs-bacs-vs-chaps-uk-api-guide-22n6</link>
      <guid>https://dev.to/tomwangcn/faster-payments-vs-bacs-vs-chaps-uk-api-guide-22n6</guid>
      <description>&lt;p&gt;From November 2026, the Bank of England will reject any CHAPS payment whose creditor address is fully unstructured. If your payout service builds addresses by concatenating five free-text lines into &lt;code&gt;AdrLine&lt;/code&gt;, those payments will fail at the scheme in about eight weeks, and your bank or BaaS provider will probably not warn you first.&lt;/p&gt;

&lt;p&gt;None of the pages currently ranking for "Faster Payments vs Bacs vs CHAPS" mentions this. They are treasury explainers: Faster Payments is quick, Bacs is cheap, CHAPS is for houses. All true, and no help if you are writing the code that sends, tracks and reconciles money across all three. This guide covers what an engineer actually needs: message formats, limits, cut-offs, settlement, return handling, fraud liability, and how the main UK payment APIs decide which rail your payment takes.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is the Difference Between Faster Payments, Bacs and CHAPS?
&lt;/h2&gt;

&lt;p&gt;All three are UK sterling interbank schemes that settle in central bank money at the Bank of England. Everything else about them differs, and each difference has a consequence for how you design a system.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Faster Payments (FPS)&lt;/th&gt;
&lt;th&gt;Bacs&lt;/th&gt;
&lt;th&gt;CHAPS&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Operator&lt;/td&gt;
&lt;td&gt;Pay.UK (Vocalink infrastructure)&lt;/td&gt;
&lt;td&gt;Pay.UK (Vocalink infrastructure)&lt;/td&gt;
&lt;td&gt;Bank of England&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Speed&lt;/td&gt;
&lt;td&gt;Seconds, 24/7/365&lt;/td&gt;
&lt;td&gt;3 UK banking days&lt;/td&gt;
&lt;td&gt;Same day, within RTGS hours&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scheme limit&lt;/td&gt;
&lt;td&gt;£1m per payment&lt;/td&gt;
&lt;td&gt;£20m per item&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Settlement&lt;/td&gt;
&lt;td&gt;Deferred net, three times per banking day&lt;/td&gt;
&lt;td&gt;Deferred net, once per day&lt;/td&gt;
&lt;td&gt;Real-time gross (RTGS)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Message format&lt;/td&gt;
&lt;td&gt;ISO 8583&lt;/td&gt;
&lt;td&gt;Standard 18 fixed-width files&lt;/td&gt;
&lt;td&gt;ISO 20022 (pacs.008, pacs.009, pacs.004)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pull payments&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes, Direct Debit&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;APP fraud reimbursement&lt;/td&gt;
&lt;td&gt;Yes, up to £85,000&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes, up to £85,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2025 volume&lt;/td&gt;
&lt;td&gt;5.55bn payments, £4.84tn&lt;/td&gt;
&lt;td&gt;6.86bn payments, £6.05tn&lt;/td&gt;
&lt;td&gt;53.25m payments, £93.9tn&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The volume row explains the rest. Bacs still moves more payments than Faster Payments, mostly because 5.03bn of its 6.86bn items in 2025 were Direct Debits. CHAPS moves under 1% of the payments by count and roughly 90% of the value across the three schemes, at an average of £1.76m per payment. Pay.UK's 2025 annual statistics are the source for all three rows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Faster Payments Limits, Settlement and Timing in 2026
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;Faster Payments scheme limit is £1m&lt;/strong&gt; per payment. It was raised from £250,000 on 8 February 2022 and has not changed since. That is a scheme ceiling, not what your customer gets: banks set their own limits by channel and account type, so a personal online payment at one high-street bank tops out at £25,000 while business channels elsewhere go to the full £1m. If you surface a limit in your UI, fetch it from your provider rather than hardcoding the scheme figure.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;&lt;a href="https://tomcn.uk/news/2026-09-27-faster-payments-vs-bacs-vs-chaps-uk-api-guide" rel="noopener noreferrer"&gt;Read the full article on tomcn.uk →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  About the Author
&lt;/h3&gt;

&lt;p&gt;I'm &lt;strong&gt;Tom Wang&lt;/strong&gt;, an AI Developer &amp;amp; Fintech Developer — building AI agents, crypto payment infrastructure, and cross-border payout systems with Rust, Go, and TypeScript. Based in London, UK.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Currently open to new opportunities&lt;/strong&gt; in fintech, crypto payments, and AI agent engineering.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://tomcn.uk" rel="noopener noreferrer"&gt;Portfolio&lt;/a&gt; | &lt;a href="https://www.linkedin.com/in/tomwangcn/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; | &lt;a href="https://github.com/tomwangcn" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; | &lt;a href="mailto:hi@tomcn.uk"&gt;Email&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>fintech</category>
      <category>payments</category>
      <category>paymentdeveloper</category>
      <category>paymentinfrastructure</category>
    </item>
    <item>
      <title>Apple Pay Token Decryption vs Google Pay ECv2</title>
      <dc:creator>Tom Wang</dc:creator>
      <pubDate>Sat, 26 Sep 2026 07:20:29 +0000</pubDate>
      <link>https://dev.to/tomwangcn/apple-pay-token-decryption-vs-google-pay-ecv2-3pje</link>
      <guid>https://dev.to/tomwangcn/apple-pay-token-decryption-vs-google-pay-ecv2-3pje</guid>
      <description>&lt;p&gt;Apple's own reference page for decrypting an Apple Pay token currently gets the key derivation wrong. The KDF table lists the hash function where the shared secret should be, and it has dropped the &lt;code&gt;id-aes256-GCM&lt;/code&gt; algorithm ID bytes altogether; the archived version of the same page has the correct values. If you are building a decryptor from the live docs, you will get a key that never opens the ciphertext, and nothing in the error will tell you why.&lt;/p&gt;

&lt;p&gt;That is the level most "decrypt Apple Pay token" guides stop above. They show you a library call, or a PSP's CSR upload screen, and move on. This guide covers the actual formats for Apple Pay (&lt;code&gt;EC_v1&lt;/code&gt; and &lt;code&gt;RSA_v1&lt;/code&gt;) and Google Pay (&lt;code&gt;ECv2&lt;/code&gt;), the signature checks people skip, the certificate rotation rules that cause outages, and the more important question: whether you should be decrypting at all.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is Inside an Apple Pay Payment Token?
&lt;/h2&gt;

&lt;p&gt;When the payment sheet completes, &lt;code&gt;PKPayment.token.paymentData&lt;/code&gt; (or the &lt;code&gt;ApplePayPaymentToken&lt;/code&gt; on the web) hands you a JSON object with four keys:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"EC_v1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"data"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;base64 ciphertext&amp;gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"signature"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;base64 detached PKCS #7&amp;gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"header"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"ephemeralPublicKey"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;base64 X.509 key&amp;gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"publicKeyHash"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;base64 SHA-256 of your cert's public key&amp;gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"transactionId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;hex, generated on device&amp;gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"applicationData"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;hex SHA-256, optional&amp;gt;"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;version&lt;/code&gt; is &lt;code&gt;EC_v1&lt;/code&gt; almost everywhere. Apple says other regions use &lt;code&gt;RSA_v1&lt;/code&gt; "if ECC encryption is unavailable due to regulatory concerns", and its March 2026 certificate technote (TN3206) makes the mapping clear without quite saying it: the Payment Processing CSR is a 256-bit ECC key globally and a 2048-bit RSA key for China mainland. An &lt;code&gt;RSA_v1&lt;/code&gt; header carries &lt;code&gt;wrappedKey&lt;/code&gt; instead of &lt;code&gt;ephemeralPublicKey&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;publicKeyHash&lt;/code&gt; matters more than it looks. It is the only field that tells you which of your private keys the token was encrypted to, and you will need it during every certificate rotation.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Decrypt an Apple Pay Token (EC_v1)
&lt;/h2&gt;

&lt;p&gt;The flow for &lt;code&gt;EC_v1&lt;/code&gt; is ECDH, then a single-pass NIST SP 800-56A concatenation KDF, then AES-GCM:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Select the key.&lt;/strong&gt; Match &lt;code&gt;header.publicKeyHash&lt;/code&gt; against the SHA-256 of each Payment Processing certificate's public key you hold.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agree a secret.&lt;/strong&gt; ECDH between your private key and &lt;code&gt;ephemeralPublicKey&lt;/code&gt;. Apple only says "256-bit ECC key pair"; every open-source decryptor treats it as P-256.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Derive the key.&lt;/strong&gt; SHA-256 over &lt;code&gt;counter (0x00000001) || Z || AlgorithmID || PartyUInfo || PartyVInfo&lt;/code&gt;, where:

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;Z&lt;/code&gt; is the ECDH shared secret&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;AlgorithmID&lt;/code&gt; is the byte &lt;code&gt;0x0D&lt;/code&gt; followed by the ASCII string &lt;code&gt;id-aes256-GCM&lt;/code&gt; (the &lt;code&gt;0x0D&lt;/code&gt; is a length prefix: 13 characters)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;PartyUInfo&lt;/code&gt; is the ASCII string &lt;code&gt;Apple&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;PartyVInfo&lt;/code&gt; is the SHA-256 of your merchant identifier, either hashed from the UID in the certificate subject or hex-decoded from the extension at OID &lt;code&gt;1.2.840.113635.100.6.32&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Decrypt.&lt;/strong&gt; AES-256-GCM over &lt;code&gt;data&lt;/code&gt;, IV of 16 zero bytes, no associated data. The last 16 bytes of &lt;code&gt;data&lt;/code&gt; are the GCM tag.&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;&lt;strong&gt;&lt;a href="https://tomcn.uk/news/2026-09-26-apple-pay-google-pay-token-decryption-guide" rel="noopener noreferrer"&gt;Read the full article on tomcn.uk →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  About the Author
&lt;/h3&gt;

&lt;p&gt;I'm &lt;strong&gt;Tom Wang&lt;/strong&gt;, an AI Developer &amp;amp; Fintech Developer — building AI agents, crypto payment infrastructure, and cross-border payout systems with Rust, Go, and TypeScript. Based in London, UK.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Currently open to new opportunities&lt;/strong&gt; in fintech, crypto payments, and AI agent engineering.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://tomcn.uk" rel="noopener noreferrer"&gt;Portfolio&lt;/a&gt; | &lt;a href="https://www.linkedin.com/in/tomwangcn/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; | &lt;a href="https://github.com/tomwangcn" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; | &lt;a href="mailto:hi@tomcn.uk"&gt;Email&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>fintech</category>
      <category>payments</category>
      <category>paymentdeveloper</category>
      <category>paymentinfrastructure</category>
    </item>
    <item>
      <title>Card Decline Codes: Visa vs Mastercard Retry Rules</title>
      <dc:creator>Tom Wang</dc:creator>
      <pubDate>Fri, 25 Sep 2026 07:16:59 +0000</pubDate>
      <link>https://dev.to/tomwangcn/card-decline-codes-visa-vs-mastercard-retry-rules-pe9</link>
      <guid>https://dev.to/tomwangcn/card-decline-codes-visa-vs-mastercard-retry-rules-pe9</guid>
      <description>&lt;p&gt;Visa now lets a merchant retry a soft-declined card up to 20 times in 30 days, not 15. The figure sits in Table 7-2 of the Visa Core Rules dated 18 April 2026, and Adyen's own retry documentation still says 15. If the incumbent guides and one of the biggest acquirers disagree on the headline number, your retry logic is probably keyed on something older still.&lt;/p&gt;

&lt;p&gt;Most of the pages that rank for "card decline codes" are glossaries: a list of two-digit codes with a sentence each. That is the least useful way to think about them. A decline is three separate signals (the ISO 8583 response code, a scheme-level retry category or advice code, and whatever your PSP normalises them into) and the retry rules attach to the first two, not the third. This guide works from the scheme rules and the four PSP APIs as they stand in September 2026.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Do Card Decline Codes Actually Mean?
&lt;/h2&gt;

&lt;p&gt;The issuer's answer travels back in ISO 8583 Data Element 39, the response code. &lt;code&gt;00&lt;/code&gt; is approved. Everything else is a reason for not approving, and the two-character value space is shared across schemes without being fully standardised by them. Visa publishes its meanings in the Core Rules. Mastercard publishes its own, plus a second signal: the Merchant Advice Code, which tells you what to do next rather than why it failed. Secondary sources consistently place the MAC in DE 48 subelement 84; Mastercard's interface specification that would confirm it sits behind a login.&lt;/p&gt;

&lt;p&gt;The trap is that the same code can mean different things on different networks. Code &lt;code&gt;65&lt;/code&gt; is the clearest example. On Visa it is "Exceeds withdrawal frequency limit", a Category 2 soft decline. On Mastercard in the UK and EEA, issuers use &lt;code&gt;65&lt;/code&gt; to demand strong customer authentication, and Stripe's docs note that its &lt;code&gt;authentication_required&lt;/code&gt; decline on Mastercard used to surface as &lt;code&gt;withdrawal_count_limit_exceeded&lt;/code&gt; because some issuers had not updated their systems. If you map raw codes without the scheme alongside them, you will misroute a slice of your SCA traffic.&lt;/p&gt;

&lt;h2&gt;
  
  
  Visa Decline Categories in 2026: 20 Retries, Not 15
&lt;/h2&gt;

&lt;p&gt;Visa sorts every decline response into four categories. Issuers must "send to VisaNet the Decline Response code that most accurately reflects the reason for the decline", and merchants are bound by the category's reattempt limit.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;th&gt;Codes (Visa Core Rules, Apr 2026)&lt;/th&gt;
&lt;th&gt;Merchant limit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Issuer will never approve&lt;/td&gt;
&lt;td&gt;04, 07, 12, 14, 15, 41, 43, 46, 57, R0, R1, R3&lt;/td&gt;
&lt;td&gt;Never retry&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Issuer cannot approve at this time&lt;/td&gt;
&lt;td&gt;03, 19, 39, 51, 52, 53, 59, 61, 62, 65, 75, 78, 83, 86, 91, 93, 96, 5C, 9G, N3, N4, Z5&lt;/td&gt;
&lt;td&gt;20 attempts in 30 days&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Data quality, revalidate&lt;/td&gt;
&lt;td&gt;54, 55, 82, 6P, N7; in Europe and CEMEA also 70 and 1A&lt;/td&gt;
&lt;td&gt;20 attempts in 30 days&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Generic&lt;/td&gt;
&lt;td&gt;All other decline codes, including 05&lt;/td&gt;
&lt;td&gt;20 attempts in 30 days&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;p&gt;&lt;strong&gt;&lt;a href="https://tomcn.uk/news/2026-09-25-card-decline-codes-visa-mastercard-retry-rules" rel="noopener noreferrer"&gt;Read the full article on tomcn.uk →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  About the Author
&lt;/h3&gt;

&lt;p&gt;I'm &lt;strong&gt;Tom Wang&lt;/strong&gt;, an AI Developer &amp;amp; Fintech Developer — building AI agents, crypto payment infrastructure, and cross-border payout systems with Rust, Go, and TypeScript. Based in London, UK.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Currently open to new opportunities&lt;/strong&gt; in fintech, crypto payments, and AI agent engineering.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://tomcn.uk" rel="noopener noreferrer"&gt;Portfolio&lt;/a&gt; | &lt;a href="https://www.linkedin.com/in/tomwangcn/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; | &lt;a href="https://github.com/tomwangcn" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; | &lt;a href="mailto:hi@tomcn.uk"&gt;Email&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>fintech</category>
      <category>payments</category>
      <category>paymentdeveloper</category>
      <category>paymentinfrastructure</category>
    </item>
    <item>
      <title>AP2 vs ACP vs x402: Who Holds the Credential?</title>
      <dc:creator>Tom Wang</dc:creator>
      <pubDate>Mon, 14 Sep 2026 07:16:33 +0000</pubDate>
      <link>https://dev.to/tomwangcn/ap2-vs-acp-vs-x402-who-holds-the-credential-4j8f</link>
      <guid>https://dev.to/tomwangcn/ap2-vs-acp-vs-x402-who-holds-the-credential-4j8f</guid>
      <description>&lt;p&gt;In ACP, the agent platform vaults the card and hands the merchant a token capped at the checkout total. In AP2, a Credential Provider keeps the card and the user signs an SD-JWT that says what the agent may do with it. In x402 there is no card and nothing to vault: the payer's wallet signs a one-off USDC transfer and a facilitator puts it on-chain.&lt;/p&gt;

&lt;p&gt;Those are three different answers to the question of who holds the money. Most pages ranking for "AP2 vs ACP vs x402" skip that and describe layers. Several, one earlier piece of mine among them, still explain AP2 with Intent and Cart Mandates, which the v0.2 spec replaced in April 2026.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is the Difference Between AP2, ACP and x402?
&lt;/h2&gt;

&lt;p&gt;They standardise different things. ACP is a merchant checkout API. AP2 is a format for signed evidence that a user authorised an agent. x402 is an HTTP handshake for paying on a stablecoin rail. You can use all three in one flow, and the specs increasingly expect you to.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;AP2&lt;/th&gt;
&lt;th&gt;ACP&lt;/th&gt;
&lt;th&gt;x402&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Governed by&lt;/td&gt;
&lt;td&gt;FIDO Alliance (donated by Google, 28 Apr 2026)&lt;/td&gt;
&lt;td&gt;OpenAI and Stripe&lt;/td&gt;
&lt;td&gt;x402 Foundation, Linux Foundation (operational 14 Jul 2026)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Current version&lt;/td&gt;
&lt;td&gt;v0.2&lt;/td&gt;
&lt;td&gt;&lt;code&gt;2026-04-17&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Spec v2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;What it defines&lt;/td&gt;
&lt;td&gt;Mandates and receipts&lt;/td&gt;
&lt;td&gt;Checkout sessions, delegated payment, product feeds&lt;/td&gt;
&lt;td&gt;402 challenge, payment payload, facilitator API&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Who holds the credential&lt;/td&gt;
&lt;td&gt;Credential Provider&lt;/td&gt;
&lt;td&gt;Agent platform's PSP or vault&lt;/td&gt;
&lt;td&gt;Payer's own wallet&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Proof of authorisation&lt;/td&gt;
&lt;td&gt;User-signed SD-JWT mandate&lt;/td&gt;
&lt;td&gt;Single-use token with an &lt;code&gt;allowance&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;EIP-3009 signature per payment&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Money moves on&lt;/td&gt;
&lt;td&gt;Any rail the processor supports&lt;/td&gt;
&lt;td&gt;The merchant's existing card processor&lt;/td&gt;
&lt;td&gt;On-chain, e.g. USDC on Base (&lt;code&gt;eip155:8453&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dispute path&lt;/td&gt;
&lt;td&gt;Evidence only, resolution out of scope&lt;/td&gt;
&lt;td&gt;Normal chargeback via merchant of record&lt;/td&gt;
&lt;td&gt;None in the spec&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Transport&lt;/td&gt;
&lt;td&gt;Extension to A2A, MCP and UCP&lt;/td&gt;
&lt;td&gt;REST, plus MCP from &lt;code&gt;2026-04-17&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;HTTP headers, A2A, MCP&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The x402 Foundation launched with 40 members, including Adyen, American Express, Google, Mastercard, Shopify, Stripe and Visa. That membership overlaps almost entirely with AP2's and ACP's backers, which tells you nobody expects one protocol to win outright.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Does ACP Checkout Work in 2026?
&lt;/h2&gt;

&lt;p&gt;The merchant implements five endpoints:&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;&lt;a href="https://tomcn.uk/news/2026-09-14-ap2-vs-acp-vs-x402-agentic-payment-protocols-guide" rel="noopener noreferrer"&gt;Read the full article on tomcn.uk →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  About the Author
&lt;/h3&gt;

&lt;p&gt;I'm &lt;strong&gt;Tom Wang&lt;/strong&gt;, an AI Developer &amp;amp; Fintech Developer — building AI agents, crypto payment infrastructure, and cross-border payout systems with Rust, Go, and TypeScript. Based in London, UK.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Currently open to new opportunities&lt;/strong&gt; in fintech, crypto payments, and AI agent engineering.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://tomcn.uk" rel="noopener noreferrer"&gt;Portfolio&lt;/a&gt; | &lt;a href="https://www.linkedin.com/in/tomwangcn/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; | &lt;a href="https://github.com/tomwangcn" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; | &lt;a href="mailto:hi@tomcn.uk"&gt;Email&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>fintech</category>
      <category>payments</category>
      <category>aiagents</category>
      <category>agenticcommerce</category>
    </item>
    <item>
      <title>Variable Recurring Payments API: The Hard Parts</title>
      <dc:creator>Tom Wang</dc:creator>
      <pubDate>Sun, 06 Sep 2026 07:22:45 +0000</pubDate>
      <link>https://dev.to/tomwangcn/variable-recurring-payments-api-the-hard-parts-4ac4</link>
      <guid>https://dev.to/tomwangcn/variable-recurring-payments-api-the-hard-parts-4ac4</guid>
      <description>&lt;p&gt;Several of the guides that currently rank for "variable recurring payments API" list &lt;code&gt;MaximumCumulativeAmount&lt;/code&gt; and &lt;code&gt;MaximumCumulativeNumberOfPayments&lt;/code&gt; as VRP control parameters. Neither field exists. I checked the published OpenAPI definitions at v3.1.10, v3.1.11 and v4.0.1, and there are zero occurrences in any of them.&lt;/p&gt;

&lt;p&gt;That is roughly the state of VRP documentation outside the specification itself: thorough on sweeping versus non-sweeping, silent on everything that actually costs you a sprint.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is the Variable Recurring Payments API and Who Has to Offer It?
&lt;/h2&gt;

&lt;p&gt;A VRP is one long-lived consent that authorises many payments underneath it, each validated against limits the customer set when they authenticated. It is not a payment message repeated on a timer. It is a mandate held at the bank, with the bank enforcing the caps.&lt;/p&gt;

&lt;p&gt;There are two flavours, and the split is regulatory rather than technical. The CMA mandated that the CMA9 offer open access to the VRP API for &lt;strong&gt;sweeping&lt;/strong&gt;, which means moving money between accounts belonging to the same person. Open Banking Limited states the other half just as plainly: non-sweeping VRPs were not mandated by the CMA, so the CMA9 are not obliged to provide them. Six of the nine (HSBC, Santander, NatWest, Nationwide, Lloyds and Barclays) had sweeping live by the end of 2022. Sweeping is now a real rail, running 7.73 million payments in June 2026, up 6.7% on the month.&lt;/p&gt;

&lt;p&gt;Commercial VRP is the one everybody writes about, and it arrived through a scheme rather than a mandate. The &lt;a href="https://dev.to/news/2026-06-07-uk-payments-initiative-open-banking-vrp"&gt;UK Payments Initiative went live on 2 June 2026&lt;/a&gt;, one quarter later than the Q1 2026 the FCA and PSR had signalled in December 2025.&lt;/p&gt;

&lt;p&gt;The current standard is &lt;strong&gt;v4.0.1, released 1 April 2026&lt;/strong&gt;, base path &lt;code&gt;/open-banking/v4.0/pisp&lt;/code&gt;. The CMA9 were required to be on v4.0 by the end of March 2025, and running OBL 4.0 in production is a prerequisite for UKPI participation. If you are still building against 3.1.x, you are building against a migration target.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Endpoints Does the VRP API v4.0.1 Expose?
&lt;/h2&gt;

&lt;p&gt;Six paths, eight operations, and one of them is a trap.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;Path&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;POST&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/domestic-vrp-consents&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Create the mandate&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GET&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/domestic-vrp-consents/{ConsentId}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Read mandate + status&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;DELETE&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/domestic-vrp-consents/{ConsentId}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Revoke&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;PUT&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/domestic-vrp-consents/{ConsentId}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Version migration only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;POST&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/domestic-vrp-consents/{ConsentId}/funds-confirmation&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Balance check&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;POST&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/domestic-vrps&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Execute a payment&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GET&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/domestic-vrps/{DomesticVRPId}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Payment status&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GET&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/domestic-vrps/{DomesticVRPId}/payment-details&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Detailed status history&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;p&gt;&lt;strong&gt;&lt;a href="https://tomcn.uk/news/2026-09-06-variable-recurring-payments-api-guide" rel="noopener noreferrer"&gt;Read the full article on tomcn.uk →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  About the Author
&lt;/h3&gt;

&lt;p&gt;I'm &lt;strong&gt;Tom Wang&lt;/strong&gt;, an AI Developer &amp;amp; Fintech Developer — building AI agents, crypto payment infrastructure, and cross-border payout systems with Rust, Go, and TypeScript. Based in London, UK.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Currently open to new opportunities&lt;/strong&gt; in fintech, crypto payments, and AI agent engineering.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://tomcn.uk" rel="noopener noreferrer"&gt;Portfolio&lt;/a&gt; | &lt;a href="https://www.linkedin.com/in/tomwangcn/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; | &lt;a href="https://github.com/tomwangcn" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; | &lt;a href="mailto:hi@tomcn.uk"&gt;Email&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>openbanking</category>
      <category>uk</category>
      <category>fintech</category>
      <category>payments</category>
    </item>
    <item>
      <title>Rust's $350k Bet and an 86-Minute Attack</title>
      <dc:creator>Tom Wang</dc:creator>
      <pubDate>Fri, 28 Aug 2026 09:23:47 +0000</pubDate>
      <link>https://dev.to/tomwangcn/rusts-350k-bet-and-an-86-minute-attack-2fbi</link>
      <guid>https://dev.to/tomwangcn/rusts-350k-bet-and-an-86-minute-attack-2fbi</guid>
      <description>&lt;p&gt;At 07:15 UTC on 20 August, someone published &lt;code&gt;arrayref&lt;/code&gt; 0.3.10 to crates.io. It was live for 86 minutes, picked up about &lt;strong&gt;2,285 downloads&lt;/strong&gt;, and every single one of them executed attacker-controlled code on the machine doing the build. That code ran before a single line of the project itself had compiled.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;arrayref&lt;/code&gt; has &lt;strong&gt;250,376,732 lifetime downloads&lt;/strong&gt;. Fewer than 10% of its normal daily installs touched the poisoned version. The reason is unglamorous and worth sitting with: most teams had a &lt;code&gt;Cargo.lock&lt;/code&gt; pinning 0.3.9, so Cargo never went looking for anything newer.&lt;/p&gt;

&lt;p&gt;Six days later the Rust Project announced its first &lt;strong&gt;Maintainers in Residence&lt;/strong&gt;, directing &lt;strong&gt;$350,000&lt;/strong&gt; at six people for at least twelve months. Both stories landed in the same week, both are about who keeps Rust standing up, and the gap between them is the thing I want to talk about. As a fintech developer who has shipped Rust into payment systems, my read is that the funding is genuinely good and does almost nothing about the attack that preceded it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Actually Ran on Those Build Machines
&lt;/h2&gt;

&lt;p&gt;The mechanics are worth spelling out, because most coverage stopped at "malicious crate."&lt;/p&gt;

&lt;p&gt;The compromised &lt;code&gt;arrayref&lt;/code&gt; 0.3.10 did not contain malware. It added one line to its manifest:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="nn"&gt;[dependencies.proc-macro1]&lt;/span&gt;
&lt;span class="py"&gt;version&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"1.0.107"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;proc-macro1&lt;/code&gt; is a typosquat of &lt;code&gt;proc-macro2&lt;/code&gt;, one of the most-depended-on crates in the ecosystem. The real payload lived in &lt;code&gt;proc-macro1-1.0.107/build.rs&lt;/code&gt;. Because Cargo compiles and runs build scripts for every crate in the graph, it never mattered that &lt;code&gt;arrayref&lt;/code&gt; didn't call a single function from it. Resolving the dependency was enough to detonate.&lt;/p&gt;

&lt;p&gt;The build script reassembled its command-and-control address from base64 fragments (&lt;code&gt;23.254.165.112&lt;/code&gt;, port 9089 for the payload, 443 for the beacon), then installed a certificate verifier that returned success for everything it was shown. That let it pull a binary over TLS from a raw IP with a self-signed certificate without a warning. It selected a platform-specific payload (&lt;code&gt;rust-crate_0.1.0&lt;/code&gt; for Linux x86_64 through &lt;code&gt;rust-crate_0.4.0&lt;/code&gt; for macOS ARM64), wrote it to &lt;code&gt;/tmp/rust-setup&lt;/code&gt;, &lt;code&gt;chmod&lt;/code&gt;ed it, and spawned it detached with all streams sent to null.&lt;/p&gt;

&lt;p&gt;The Windows path is the part that tells you these people had done this before. Cargo puts child processes in a job object, so they die when the build finishes. The attacker wrote a PowerShell script to &lt;code&gt;%TEMP%\rust-setup.ps1&lt;/code&gt; and launched it through a VBScript wrapper under &lt;code&gt;wscript.exe&lt;/code&gt; with &lt;code&gt;CREATE_NO_WINDOW&lt;/code&gt;. The comment in the source said it plainly: this escapes Cargo's job object. The process outlives the build.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;&lt;a href="https://tomcn.uk/news/2026-08-28-rust-arrayref-supply-chain-attack-payment-developers" rel="noopener noreferrer"&gt;Read the full article on tomcn.uk →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  About the Author
&lt;/h3&gt;

&lt;p&gt;I'm &lt;strong&gt;Tom Wang&lt;/strong&gt;, an AI Developer &amp;amp; Fintech Developer — building AI agents, crypto payment infrastructure, and cross-border payout systems with Rust, Go, and TypeScript. Based in London, UK.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Currently open to new opportunities&lt;/strong&gt; in fintech, crypto payments, and AI agent engineering.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://tomcn.uk" rel="noopener noreferrer"&gt;Portfolio&lt;/a&gt; | &lt;a href="https://www.linkedin.com/in/tomwangcn/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; | &lt;a href="https://github.com/tomwangcn" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; | &lt;a href="mailto:hi@tomcn.uk"&gt;Email&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>rust</category>
      <category>security</category>
      <category>fintech</category>
      <category>paymentdeveloper</category>
    </item>
    <item>
      <title>Mastercard Settles Cards on Solana, 24/7</title>
      <dc:creator>Tom Wang</dc:creator>
      <pubDate>Mon, 08 Jun 2026 15:37:04 +0000</pubDate>
      <link>https://dev.to/tomwangcn/mastercard-settles-cards-on-solana-247-42mk</link>
      <guid>https://dev.to/tomwangcn/mastercard-settles-cards-on-solana-247-42mk</guid>
      <description>&lt;p&gt;On 3 June 2026, Mastercard quietly rewired one of the oldest assumptions in payments. The company announced it will settle card transactions on-chain in regulated stablecoins — intraday, at weekends, on bank holidays, around the clock — with Solana as the lead settlement rail. For most consumers this changes nothing visible. For anyone who builds payment infrastructure, it is one of the most consequential back-office shifts of the year. As a fintech developer and payment developer who spends his days inside settlement and reconciliation systems, I think this is the moment on-chain settlement stopped being a pilot and started becoming plumbing.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Mastercard Actually Changed
&lt;/h2&gt;

&lt;p&gt;Card networks have always run on a split-brain model. Authorisation happens in milliseconds — your card is approved at the terminal almost instantly. &lt;strong&gt;Settlement&lt;/strong&gt;, the part where money actually moves between the acquiring bank and the issuing bank, happens in batches during banking hours, typically T+1 or T+2. That mismatch between instant authorisation and delayed, business-hours settlement is a relic of correspondent banking, and it is exactly what creates float, reconciliation headaches, and weekend liquidity gaps.&lt;/p&gt;

&lt;p&gt;Mastercard's announcement attacks that gap directly. Raj Dhamodharan, the company's EVP of blockchain and digital assets, framed it bluntly: "The next phase of stablecoin adoption is about real-world utility, especially in settlement." The network will let participants settle in a basket of regulated stablecoins — Circle's USDC, Paxos-issued PYUSD, USDG and USDP, Ripple's RLUSD, and SoFi's SoFiUSD — across eight blockchains including Arbitrum, Base, Ethereum, Polygon, Solana, XRPL, Canton and Tempo. Solana is the launch rail for the deepest integration.&lt;/p&gt;

&lt;p&gt;Early adopters named for the rollout include Cross River, Lead Bank, CBW Bank, ARQ (formerly DolarApp) and Nuvei, starting in the US and Latin America and expanding through 2026. This is an early-phase rollout, not a flip-the-switch GA event — USDC settlement is already live in select markets, and the rest is staged. But the direction of travel is unambiguous: a network spanning billions of cards is moving its settlement layer onto rails that never close.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Solana, and Why Developers Should Care
&lt;/h2&gt;

&lt;p&gt;The most interesting detail for engineers is &lt;em&gt;how&lt;/em&gt; this is wired. Mastercard's settlement does not run through a bespoke, hand-rolled chain integration. It flows through the &lt;strong&gt;Solana Developer Platform (SDP)&lt;/strong&gt;, the API-driven institutional toolbox the Solana Foundation launched on 24 March 2026 with Mastercard, Worldpay and Western Union among the anchor partners.&lt;/p&gt;

&lt;p&gt;SDP matters because it abstracts the chain away behind three modules: tokenised real-world asset issuance, fiat-plus-stablecoin payments, and a forthcoming trading and on-chain FX module. Under the hood it unifies more than twenty infrastructure providers — node access via Alchemy and QuickNode, custody and wallets through Fireblocks and Coinbase, and compliance screening from Chainalysis and Elliptic. Worldpay already uses it for merchant settlement; Western Union for cross-border. In other words, a payment engineer integrating against this stack is not writing raw Solana programs from scratch — they are calling an API surface that handles issuance, custody, and compliance hooks for them.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;&lt;a href="https://tomcn.uk/news/2026-06-08-mastercard-solana-onchain-stablecoin-card-settlement" rel="noopener noreferrer"&gt;Read the full article on tomcn.uk →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  About the Author
&lt;/h3&gt;

&lt;p&gt;I'm &lt;strong&gt;Tom Wang&lt;/strong&gt;, an AI Developer &amp;amp; Fintech Developer — building AI agents, crypto payment infrastructure, and cross-border payout systems with Rust, Go, and TypeScript. Based in London, UK.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Currently open to new opportunities&lt;/strong&gt; in fintech, crypto payments, and AI agent engineering.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://tomcn.uk" rel="noopener noreferrer"&gt;Portfolio&lt;/a&gt; | &lt;a href="https://www.linkedin.com/in/tomwangcn/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; | &lt;a href="https://github.com/tomwangcn" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; | &lt;a href="mailto:hi@tomcn.uk"&gt;Email&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>fintech</category>
      <category>stablecoin</category>
      <category>payments</category>
      <category>solana</category>
    </item>
    <item>
      <title>UK Open Banking Launches Its Card Challenger</title>
      <dc:creator>Tom Wang</dc:creator>
      <pubDate>Sun, 07 Jun 2026 10:33:38 +0000</pubDate>
      <link>https://dev.to/tomwangcn/uk-open-banking-launches-its-card-challenger-4gm6</link>
      <guid>https://dev.to/tomwangcn/uk-open-banking-launches-its-card-challenger-4gm6</guid>
      <description>&lt;p&gt;For eight years, UK open banking has been a brilliant set of rails without a timetable. The plumbing worked — millions of account-to-account payments cleared every month — but there was no shared commercial framework to make recurring, card-free payments a mainstream default. On 2 June 2026, at Money20/20 Europe, that changed. The &lt;strong&gt;UK Payments Initiative (UKPI)&lt;/strong&gt; went live with a finalised rulebook, a commercial model and operational standards for flexible, automated, recurring account-to-account payments. As a fintech developer and payment developer who has spent years wiring up Open Banking APIs, I think this is the most consequential structural upgrade to UK payments since Faster Payments launched.&lt;/p&gt;

&lt;p&gt;This is not another pilot. UKPI Ltd is backed by an unusually broad coalition of founding shareholders — Barclays, HSBC, Lloyds Banking Group, NatWest, Nationwide, Santander, Monzo, Revolut and Starling on the bank side, with Acquired, GoCardless, Plaid, TrueLayer and Yapily among the fintech founding members. When the high-street banks and the open banking fintechs sit at the same table and agree a rulebook, the thing that has been missing for years finally arrives: certainty.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the UKPI scheme actually standardises
&lt;/h2&gt;

&lt;p&gt;The headline capability is &lt;strong&gt;commercial variable recurring payments (cVRP)&lt;/strong&gt; — recurring account-to-account payments where the consumer, not the merchant, sets the rules. Under the scheme a payer can define how long a permission lasts, the maximum that can be taken, and exactly who receives the money, all without sharing card details or setting up a traditional direct debit. The permission lives in the bank, is visible in the banking app, and can be revoked in one tap.&lt;/p&gt;

&lt;p&gt;For a payment developer, the value of UKPI is less the technology — VRP has existed as an API pattern for a while — and more the &lt;strong&gt;scheme layer&lt;/strong&gt; sitting on top of it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A shared rulebook&lt;/strong&gt; that defines liability, dispute handling and refund obligations across every participant, so you build to one specification rather than negotiating bilaterally with each bank.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A commercial model&lt;/strong&gt; that finally answers "who pays whom" — the question that quietly killed countless open banking business cases.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Operational standards&lt;/strong&gt; for availability, performance and consumer protection, moving cVRP out of bespoke bank-by-bank integrations and toward predictable, scheme-grade reliability.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The FCA, which published a supporting statement the same day, called it "a major step forward for open banking and commercial variable recurring payments" and said it expects the launch to act "as a catalyst for other initiatives to emerge." Critically, the regulator confirmed it will consult on a long-term regulatory framework by the end of 2026 and supports establishing an independent standards-setting body. That sequencing — industry ships the rulebook, regulator codifies it afterwards — is how durable payment infrastructure usually gets built.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;&lt;a href="https://tomcn.uk/news/2026-06-07-uk-payments-initiative-open-banking-vrp" rel="noopener noreferrer"&gt;Read the full article on tomcn.uk →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  About the Author
&lt;/h3&gt;

&lt;p&gt;I'm &lt;strong&gt;Tom Wang&lt;/strong&gt;, an AI Developer &amp;amp; Fintech Developer — building AI agents, crypto payment infrastructure, and cross-border payout systems with Rust, Go, and TypeScript. Based in London, UK.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Currently open to new opportunities&lt;/strong&gt; in fintech, crypto payments, and AI agent engineering.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://tomcn.uk" rel="noopener noreferrer"&gt;Portfolio&lt;/a&gt; | &lt;a href="https://www.linkedin.com/in/tomwangcn/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; | &lt;a href="https://github.com/tomwangcn" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; | &lt;a href="mailto:hi@tomcn.uk"&gt;Email&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>openbanking</category>
      <category>uk</category>
      <category>fintech</category>
      <category>payments</category>
    </item>
  </channel>
</rss>
