# October 2026 - Version 6.70
October 2026 - Version 6.70
(Release Date: October 5th)
Table of Contents
📋 At a glance
This release starts the move off Stripe's legacy ACH Direct Debit ahead of Stripe's December 7 retirement, gives you more control over the Virtual Terminal, and fixes Virtual Terminal results in Flows, Spreedly payment methods with Enhanced Security, and declined Stripe payments that reverted to Pending.
| Update | What it does | For whom | Setup |
|---|---|---|---|
| 🏦 Stripe ACH migration, first part | The first changes for Stripe's December 7 ACH retirement; the full migration lands in November | Anyone taking ACH through Stripe | 📦 Payments 6.70 |
| 🔒 Virtual Terminal field control | Make the Description field read-only | Virtual Terminal users | 📦 Payments 6.70 |
| 🌏 PayConex for international registrants | Registrants outside the US and Canada can pay through PayConex | PayConex users | 📦 Payments 6.70 |
| 📱 Mobile Payments permission set | A new permission set lets non-administrators open Mobile Pay | Mobile Payments users | 📦 Payments Mobile |
⚠️ Action required
Take ACH payments through Stripe? Watch for instructions from us.
Stripe is retiring its legacy ACH Direct Debit integration on December 7, 2026, in favor of its newer Payment Intents integration for US bank accounts. This release includes the first part of that move. The full set of changes needed to take ACH payments everywhere you use Blackthorn lands in the November Salesforce package and webapp releases, so plan to upgrade to the November release ahead of the deadline. In the coming days, we will send detailed instructions to every Stripe customer using ACH. They explain what is changing and the steps you need to take to migrate your saved ACH payment methods, so they remain valid for recurring payments after the deadline. If you have questions about the deadline or how it affects you, reach out to your CSM or Blackthorn Support.
Use Stripe Billing subscriptions paid by bank account? They change the next time they're updated.
From this release, when a Stripe Billing subscription that allows ACH is created, or updated in Salesforce and sent to Stripe, it uses Stripe's current bank-account method, whatever your ACH settings. Existing subscriptions are not changed until they are next updated. If Stripe rejects the update, the reason appears in the subscription's Error Message.
Stripe Connect only: the "Legacy Payments" value on Connected Account is deactivated.
Stripe closed the underlying capability to new requests on August 4, 2026 and migrated existing connected accounts itself. Your existing records keep the value and keep working. Only something that writes that exact value, such as a Flow or an integration, will now fail. This is a separate Stripe change from the ACH retirement above. If you do not use Stripe Connect, this does not affect you.
Take payments on mobile? Assign the new permission set.
Assign Blackthorn | Mobile Payments (User) to users who take payments in the Mobile Payments app. Without it, the Mobile Pay link does not open for non-administrators.
✨ What's new
🏦 ACH
The first part of the Stripe ACH migration
This release includes the first part of the changes for Stripe's retirement of legacy ACH Direct Debit on December 7, 2026. The full set of changes needed to take ACH payments everywhere you use Blackthorn lands in the November Salesforce package and webapp releases. Please wait for our instructions before changing any ACH settings; see Action required.
Stripe Billing ACH subscriptions use the current method
Stripe Billing subscriptions paid by bank account now use Stripe's current bank-account method, rather than the legacy path being retired, when they are created or next updated. This applies whatever your ACH settings.
🖥️ Virtual Terminal
Make the Description field read-only
The Virtual Terminal can now make the Description field read-only. A matching option to hide the Default Payment Method checkbox is included and takes effect once the updated payment form is deployed. Both are off by default.
🌏 Gateways
PayConex in the Create Spreedly Gateway picker
PayConex is now available in the Create Spreedly Gateway picker.
🐛 What's fixed
🖥️ Virtual Terminal
- Empty output values in Flows: Previously, Virtual Terminal output values were empty in a flow after a successful payment, sending the flow down the unsuccessful path. Now the values are returned.
💳 Gateways & payment methods
- Spreedly with Enhanced Security: Previously, creating a payment method on a Spreedly gateway with Enhanced Security enabled failed with an authorization error. (Arrives automatically.)
- Declined Stripe payments reverted to Pending: Previously, a declined Stripe payment's status reverted from Failed to Pending Payment Intent when Stripe webhooks were reprocessed. Now it stays Failed.
- PayConex state errors for international registrants: Previously, registrants outside the US and Canada, such as in Australia, could not pay through PayConex when State and Country picklists were enabled. PayConex accepts only two-letter state codes, so the state sent to PayConex is now shortened to its first two letters. PayConex stores the state for reporting only, and the address saved in Salesforce is unchanged.
📱 Mobile Payments
- Mobile Pay link did not open for non-administrators: Previously, the Mobile Pay deep link did not open for users without administrator access. Assign the new Blackthorn | Mobile Payments (User) permission set to users who take payments on mobile.
- Card-present captures: Capturing a card-present mobile payment now attaches the Stripe customer and payment details, and the capture fails visibly if that step fails instead of succeeding without it. The Confirm Payment Intents setting is now marked Deprecated in its help text.
The following app fixes ship in Mobile Payments app 2.0.5 for iOS and Android, not with this Salesforce package: Tap to Pay and card reader failures when Confirm Payment Intents is unchecked, the full, searchable Stripe location list, an Android card reader payment that could be authorized but never captured, updated branding, and Android 16 support.
🛠️ Technical reference
This section is intended for Salesforce admins.
New fields
- Virtual Terminal Settings · Description Read Only (
bt_stripe__Virtual_Terminal_Settings__c.bt_stripe__Description_Read_Only__c), Checkbox, default unchecked. Locks Description when this setting or the component's Description Read Only property is on (most restrictive wins). - Virtual Terminal Settings · Hide Default Payment Method (
bt_stripe__Virtual_Terminal_Settings__c.bt_stripe__Hide_Default_Payment_Method__c), Checkbox, default unchecked. Hides Default Payment Method when this setting or the component property is on (most restrictive wins).
Connected Account: one picklist value deactivated
Connected_Account__c.Requested_Capability__c no longer offers Legacy Payments as a selectable value. Existing records keep it, and reports and list views filtering on it still match. The package now requests card_payments and transfers in place of the retired capability.
New permission set
Blackthorn | Mobile Payments (User), in the Payments Mobile package, grants Apex class access for the Mobile Pay deep link.
⬆️ How to upgrade
Go to the Blackthorn Candy Shop to upgrade Payments to 6.70.
If you also run Blackthorn Events, we recommend upgrading Blackthorn Base, Payments and Events together; the Candy Shop takes you through them in the standard upgrade path. See the Events release notes for what is in Events 5.66.
For step-by-step instructions, click here.
The Spreedly Enhanced Security fix arrives automatically and needs nothing from you to install. Mobile Payments app updates arrive through the App Store and Google Play.
Questions about anything here, or about the December ACH deadline, go to your CSM or Blackthorn Support.