Please review the updates below and follow the upgrade instructions to upgrade your Payments application.
Table of Contents
(Release Date: April 22, 2026)
Bug Fix
Webhooks: The Transaction record's Payment Status field now updates promptly in Salesforce after the corresponding status changes in Stripe, even for orgs processing high volumes of webhooks (up to 200,000 per day). Transaction status update webhooks are now processed via trigger rather than through the sequential webhook queue, reducing delays during peak volume periods. Previously, all webhooks were processed sequentially one at a time, which caused delays of several hours between when a payment status changed in Stripe and when the Transaction's Payment Status was updated in Salesforce. (Known Issue: 000004923)
Enhancement
Queueable Webhook Event Processing
Queueable processing for Webhook Events provides users with an alternative to the existing single-batch process. With the queueable process, each Webhook Event has its own Stripe transaction and governor limits, rather than sharing resources.
To use queueable processing, check the new Blackthorn Pay - Trigger Settings custom setting’s Webhook Use Queueable (bt_stripe__Webhook_Use_Queueable__c) field. The default setting is off or unchecked, and all records in a batch are processed in a single call and share governor limits.
Note: Non-Stripe webhooks are unaffected and are marked as processed immediately.
In addition, there are four fields on the Blackthorn Pay - Trigger Settings custom setting that you can use to customize the process.
The Webhook Max Queueable Retry (bt_stripe__Webhook_Max_Queueable_Retry__c) field determines the maximum number of retries for a failed Webhook Event before marking it as permanently processed. For example, if Webhook Max Queueable Retry = “1,” after the webhook fails the first time, it is retried once more. If Webhook Max Queueable Retry = “0,” no retries will occur, and the record is marked as. If the field is empty, it defaults to “1.”
The Webhook Batch Scope Size (bt_stripe__Webhook_Batch_Scope_Size__c) field controls how many records each batch execute call receives. If the field is empty, it defaults to “1.”
The Webhook Reschedule Minutes (bt_stripe__Webhook_Reschedule_Minutes__c) field specifies the number of minutes between the completion of one webhook batch and the start of the next. The default value is “5.”
The Webhook Query Filter (bt_stripe__Webhook_Query_Filter__c) field contains a custom WHERE clause for the webhook query. When populated, it replaces the default filter (Processed__c = false AND Process_Async__c = false). Leave the field empty to use the default filter. WARNING: This field accepts raw SOQL fragments that are appended directly to the query. Administrators are responsible for ensuring the value is a valid and safe SOQL condition. Incorrect or malformed input will cause batch processing to fail.
Click here for more information about configuring this feature.
DocumentLink
Enhancement
Accessibility: The following accessibility improvements have been made to the DocumentLink page.
When required fields are left empty, the field labels will use a shade of red that meets contrast standards.
When a user clicks the Pay button, the focus will open a new window with the new data entry form. The cursor will be in the Name on card field.
When a user clicks the Pay button and moves the keyboard focus to the Close button, the screen reader announces the Close button.
When using a screen reader, the Card number, Card Expiration, and CVC fields on the Payment form will be announced with the correct input type instead of "text telephone."
PayLink v1.27
Bug Fix
Accessibility: When a user submits a payment on a PayLink page, they can tap the Space and Enter keys to switch between the Card and Bank tabs. Previously, users could navigate between tabs using the left and right arrow keys, but pressing the Space and Enter keys did not switch tabs as expected.
Field/Layout Updates
New
Custom Setting: Blackthorn Pay - Trigger Settings
Field Label: Webhook Use Queueable
API Name: bt_stripe__Webhook_Use_Queueable__c
Data Type: Checkbox
Default: Unchecked
Description: When enabled, Stripe webhook events are processed via a chaining Queueable instead of inline batch execution. Non-Stripe webhooks are unaffected.
Help Text: Toggle between batch inline processing (off) and queueable chaining (on) for Stripe webhooks.
Field Label: Webhook Max Queueable Retry
API Name: bt_stripe__Webhook_Max_Queueable_Retry__c
Data Type: Number
Default: 1
Description: Maximum number of retries for a failed webhook event in queueable mode before marking it as permanently processed. Only applies to the queueable processing path (Webhook_Use_Queueable__c = true). A value of 1 means the webhook is attempted once and retried once on failure; a value of 0 means no retries — a single failure marks the record as processed. Defaults to 1 when empty.
Help Text: Max retries for failed webhooks before marking as processed. Defaults to 1.
Field Label: Webhook Batch Scope Size
API Name: bt_stripe__Webhook_Batch_Scope_Size__c
Data Type: Number
Default: 1
Description: Scope size passed to Database.executeBatch for webhook processing. Controls how many records each batch execution call receives. Defaults to 1 when empty.
Help Text: Batch scope size for webhook processing. Defaults to 1.
Field Label: Webhook Reschedule Minutes
API Name: bt_stripe__Webhook_Reschedule_Minutes__c
Data Type: Number
Default: 5
Description: Number of minutes to wait before rescheduling the webhook batch in the finish method. Defaults to 5 when empty.
Help Text: Minutes until the next webhook batch is scheduled after completion. Defaults to 5.
Field Label: Webhook Query Filter
API Name: bt_stripe__Webhook_Query_Filter__c
Data Type: Text
Description: Custom WHERE clause condition for the webhook query. When populated, replaces the default filter (Processed__c = false AND Process_Async__c = false). Leave empty to use the default filter. WARNING: This field accepts raw SOQL fragments that are appended directly to the query. Administrators are responsible for ensuring the value is a valid and safe SOQL condition. Incorrect or malformed input will cause batch processing to fail.
Help Text: Custom WHERE clause for webhook query. Leave empty for default: Processed__c = false AND Process_Async__c = false.
Upgrade Instructions
To upgrade Payments to the newest version, go to the Blackthorn Candy Shop.
Important Definitions
Breaking Change
A breaking change is a significant change that requires a package upgrade to see the update.
Off-Cycle or Hotfix Release
A hotfix is a release that corrects a problem that impacted extensive functionality.
If you have any questions, please don't hesitate to contact Blackthorn Support.