{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-release-notes/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["admonition","cards","card","inline-svg"]},"redocly_category":"Release Notes","type":"markdown"},"seo":{"title":"Release Notes - July '26","description":"Our release communication aims to inform you early of upcoming releases. The scope of a release may change prior to the production release date.","siteUrl":"https://docs.findock.com","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"release-notes---july-26","__idx":0},"children":["Release Notes - July '26"]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Our release communications inform you early of upcoming changes. The scope may change prior to production. We update release notes accordingly during the sandbox period."]}]},{"$$mdtype":"Tag","name":"Cards","attributes":{"columns":2,"cardMinWidth":240},"children":[{"$$mdtype":"Tag","name":"Card","attributes":{"title":"Important dates","imagePosition":"start","iconPosition":"auto","layout":"horizontal","align":"start","variant":"ghost"},"children":[{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["To sandbox:"]}," June 21, 2026",{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Release webinar:"]}," June 26, 2026",{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["To production:"]}," July 19, 2026"]}]}]},{"$$mdtype":"Tag","name":"Card","attributes":{"title":"Release Webinar","image":"/assets/video-orange-with-dot.1c0084b97e49afbf96ed642a7139791296fc834ad5e00fa59d4898a5956873a1.c5aff763.png","imagePosition":"start","iconPosition":"auto","layout":"horizontal","align":"center","variant":"filled"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Coming soon..."]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This release includes important security-related changes for ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#connected-apps-security-enhancement"},"children":["connected apps"]}," and ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#salesforce-api-version-bumping-for-summer-26"},"children":["Salesforce Summer '26"]},"."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"new-pilot-findock-payment-experiences","__idx":1},"children":["NEW PILOT: FinDock Payment Experiences"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"InlineSvg","attributes":{"class":"inline-svg-size","file":"/assets/package.svg","fileRawContent":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 52 52\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"><g transform=\"matrix(0.1,0,0,0.1,0,0)\"><path d=\"M444,240L365,240L332,280L440,280L440,340L80,340L80,280L187,280L154,240L76,240C56,240 40,256 40,276L40,470C40,486.458 53.542,500 70,500L450,500C466.458,500 480,486.458 480,470L480,276C480,256 464,240 444,240ZM230,35L230,160L161,160C151,160 146,169 152,174L252,297C256,300 262,300 266,297L366,174C372,168 367,160 357,160L290,160L290,35C290,27 283,20 275,20L245,20C237,20 230,27 230,35Z\" style=\"fill:rgb(130,130,252);fill-rule:nonzero;\"/></g></svg>"},"children":[]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Package(s):"]}," ","Core, ProcessingHub"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If you joined or viewed the May '26 release webinar, you got an early sneak peak at one of our biggest new features in recent years. FinDock Payment Experiences brings the power of FinDock to Experience Cloud, unlocking a whole new world of digital experiences you can build directly within Salesforce."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The backbone of FinDock Payment Experiences are new managed Lightning Web Components (LWCs) with advanced configuration editors to make designing the payment experience within your digital experience easy. The managed Lightning Web Components of FinDock Experience Payments can be easily used in Flows for building digital payment experiences. They can also be used to extend your own customer Lightning Web Components for even greater control of the payer experience. In addition, we:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Built templates for ready-made sites, pages and flows help you kickstart your digital experience development"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Ensured our designs are WCAG2.2AA compliant"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Designed new permission sets to make Guest User access easier to set up"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Please join us at the July '26 webinar to learn more and be a part of this exciting new development. If you are ready to sign up for the pilot, ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://docs.google.com/forms/d/e/1FAIpQLSfm-rt8Xar03Iqx0XBA7heygrbZv728LHMqHw9x7MjfQ6VEew/viewform"},"children":["just fill out our form"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"new-pilot-findock-e-mandates-for-sepa-direct-debit","__idx":2},"children":["NEW PILOT: FinDock e-mandates for SEPA Direct Debit"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"InlineSvg","attributes":{"class":"inline-svg-size","file":"/assets/package.svg","fileRawContent":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 52 52\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"><g transform=\"matrix(0.1,0,0,0.1,0,0)\"><path d=\"M444,240L365,240L332,280L440,280L440,340L80,340L80,280L187,280L154,240L76,240C56,240 40,256 40,276L40,470C40,486.458 53.542,500 70,500L450,500C466.458,500 480,486.458 480,470L480,276C480,256 464,240 444,240ZM230,35L230,160L161,160C151,160 146,169 152,174L252,297C256,300 262,300 266,297L366,174C372,168 367,160 357,160L290,160L290,35C290,27 283,20 275,20L245,20C237,20 230,27 230,35Z\" style=\"fill:rgb(130,130,252);fill-rule:nonzero;\"/></g></svg>"},"children":[]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Package(s):"]}," ","Core, SEPA, WebHub"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["We are happy to announce a new pilot feature, e-mandates for SEPA Direct Debit. The pilot scope covers FinDock native SEPA Direct Debit processing for select banks in the Netherlands that support digital signatures using ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://www.incassomachtigen.nl/"},"children":["Incassomachtigen"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Prior to this release, the FinDock e-mandate solution was tailored to the Sweden market and Autogiro direct debit payments. In Sweden, the electronic ID (eID) for online mandate sign-up uses the payer's BankID app for verification."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For SEPA Direct Debit payments in the Netherlands, FinDock has built a new integration to Incassomacthigen  to enable digital signature of e-mandates directly in the payer’s bank environment. In addition, we have expanded the scope of pain.009 and pain.012 processing to support the required mandate management provisions according to the SEPA rulebook."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This solution helps reduce revenue loss, reduce fraud, reduce the cost of dispute handling and shortens the legal complaint period from 13 months to 8 weeks."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If you would like to participate in this pilot, please contact ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"mailto:support@findock.com"},"children":["FinDock Support"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"new-pilot-gocardless-credit-transfer-outbound-payments","__idx":3},"children":["NEW PILOT: GoCardless Credit Transfer (Outbound Payments)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"InlineSvg","attributes":{"class":"inline-svg-size","file":"/assets/package.svg","fileRawContent":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 52 52\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"><g transform=\"matrix(0.1,0,0,0.1,0,0)\"><path d=\"M444,240L365,240L332,280L440,280L440,340L80,340L80,280L187,280L154,240L76,240C56,240 40,256 40,276L40,470C40,486.458 53.542,500 70,500L450,500C466.458,500 480,486.458 480,470L480,276C480,256 464,240 444,240ZM230,35L230,160L161,160C151,160 146,169 152,174L252,297C256,300 262,300 266,297L366,174C372,168 367,160 357,160L290,160L290,35C290,27 283,20 275,20L245,20C237,20 230,27 230,35Z\" style=\"fill:rgb(130,130,252);fill-rule:nonzero;\"/></g></svg>"},"children":[]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Package(s):"]}," ","Core, GoCardless"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["We are happy to announce support for ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://gocardless.com/solutions/outbound-payments/"},"children":["GoCardless Outbound Payments"]},". For the UK market, GoCardless enables credit transfer payments through their Outbound Payments feature. GoCardless Credit Transfer uses the UK Faster Payments System for near instant settlement."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["FinDock supports this payment method for bulk outbound payments through payment schedules. Our support for GoCardless Outbound Payments is launched as a pilot feature."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If you are interested in participating, please contact ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"mailto:support@findock.com"},"children":["FinDock Support"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"core","__idx":4},"children":["Core"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"payment-api-enhancement-for-recurring-payments","__idx":5},"children":["Payment API enhancement for recurring payments"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"InlineSvg","attributes":{"class":"inline-svg-size","file":"/assets/package.svg","fileRawContent":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 52 52\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"><g transform=\"matrix(0.1,0,0,0.1,0,0)\"><path d=\"M444,240L365,240L332,280L440,280L440,340L80,340L80,280L187,280L154,240L76,240C56,240 40,256 40,276L40,470C40,486.458 53.542,500 70,500L450,500C466.458,500 480,486.458 480,470L480,276C480,256 464,240 444,240ZM230,35L230,160L161,160C151,160 146,169 152,174L252,297C256,300 262,300 266,297L366,174C372,168 367,160 357,160L290,160L290,35C290,27 283,20 275,20L245,20C237,20 230,27 230,35Z\" style=\"fill:rgb(130,130,252);fill-rule:nonzero;\"/></g></svg>"},"children":[]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Package(s):"]}," ","Core"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Issue:"]}," When using the Payment API to update an existing recurring payment, the payer may abandon the update process. If this occurs after the payer is redirected to a hosted payment page, the existing mandate and payment profile are unlinked from the recurring payment. This could potentially result in missed payments that are still outstanding and payable under the existing mandate and payment profile."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Solution:"]}," We updated the logic for handling mandate and payment profile changes to make sure they are maintained should the update process for an existing recurring payment be abandoned at any point."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"bank-feed-guided-matching-setup-error","__idx":6},"children":["Bank Feed Guided Matching setup error"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"InlineSvg","attributes":{"class":"inline-svg-size","file":"/assets/package.svg","fileRawContent":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 52 52\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"><g transform=\"matrix(0.1,0,0,0.1,0,0)\"><path d=\"M444,240L365,240L332,280L440,280L440,340L80,340L80,280L187,280L154,240L76,240C56,240 40,256 40,276L40,470C40,486.458 53.542,500 70,500L450,500C466.458,500 480,486.458 480,470L480,276C480,256 464,240 444,240ZM230,35L230,160L161,160C151,160 146,169 152,174L252,297C256,300 262,300 266,297L366,174C372,168 367,160 357,160L290,160L290,35C290,27 283,20 275,20L245,20C237,20 230,27 230,35Z\" style=\"fill:rgb(130,130,252);fill-rule:nonzero;\"/></g></svg>"},"children":[]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Package(s):"]}," ","Core"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Issue:"]}," If a Bank Feed account (target) contains spaces, like ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PostFinance CH1234512345"]},", FinDock throws the error “Unable to retrieve GM rules from Labs…”."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Solution:"]}," The issue was caused by the automatic check FinDock performs to see if there are applicable Guided Matching rule templates on FinDock Labs. The space in the account name was incorrectly escaped in the corresponding repository URL. This has now been fixed so the Labs check is completed successfully as expected. We have also narrowed the scope of the Labs check so that it is only performed for Bank Feed accounts."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"guided-review-for-partial-reversals","__idx":7},"children":["Guided Review for partial reversals"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"InlineSvg","attributes":{"class":"inline-svg-size","file":"/assets/package.svg","fileRawContent":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 52 52\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"><g transform=\"matrix(0.1,0,0,0.1,0,0)\"><path d=\"M444,240L365,240L332,280L440,280L440,340L80,340L80,280L187,280L154,240L76,240C56,240 40,256 40,276L40,470C40,486.458 53.542,500 70,500L450,500C466.458,500 480,486.458 480,470L480,276C480,256 464,240 444,240ZM230,35L230,160L161,160C151,160 146,169 152,174L252,297C256,300 262,300 266,297L366,174C372,168 367,160 357,160L290,160L290,35C290,27 283,20 275,20L245,20C237,20 230,27 230,35Z\" style=\"fill:rgb(130,130,252);fill-rule:nonzero;\"/></g></svg>"},"children":[]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Package(s):"]}," ","Core"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Issue:"]}," If an Inbound Report record is a partial reversal (debit) for a collected installment that has multiple payments, and the inbound record goes to Guided Review, the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Save & Continue"]}," button is disabled, preventing reversal processing from being completed."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Solution:"]}," The issue was caused by how FinDock calculated amount differences when processing the incoming record and comparing payment amounts for the matched installment. The calculation logic has been updated so that Guided Review works with partial reversals as expected."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"new-guided-matching-rule-type-for-data-360","__idx":8},"children":["New Guided Matching rule type for Data 360"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"InlineSvg","attributes":{"class":"inline-svg-size","file":"/assets/package.svg","fileRawContent":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 52 52\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"><g transform=\"matrix(0.1,0,0,0.1,0,0)\"><path d=\"M444,240L365,240L332,280L440,280L440,340L80,340L80,280L187,280L154,240L76,240C56,240 40,256 40,276L40,470C40,486.458 53.542,500 70,500L450,500C466.458,500 480,486.458 480,470L480,276C480,256 464,240 444,240ZM230,35L230,160L161,160C151,160 146,169 152,174L252,297C256,300 262,300 266,297L366,174C372,168 367,160 357,160L290,160L290,35C290,27 283,20 275,20L245,20C237,20 230,27 230,35Z\" style=\"fill:rgb(130,130,252);fill-rule:nonzero;\"/></g></svg>"},"children":[]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Package(s):"]}," ","Core"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Every new Salesforce org has Data 360 enabled, and any Data Model Object (DMO) may contain relevant data for improving your Guided Matching performance. This is especially true for Fundraising (NPC/EDU) where source attributions for campaigns are often in Data 360."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To support this Data 360 capability, we are introducing a new Guided Matching rule type, the Data360 Query Rule. With this rule, you can query all available DMOs and their related fields like any standard SOQL query."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The new Data360 Query Rule is only available in orgs where Data 360 is enabled."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"guided-matching-handle-refund-rule-update","__idx":9},"children":["Guided Matching Handle Refund rule update"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"InlineSvg","attributes":{"class":"inline-svg-size","file":"/assets/package.svg","fileRawContent":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 52 52\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"><g transform=\"matrix(0.1,0,0,0.1,0,0)\"><path d=\"M444,240L365,240L332,280L440,280L440,340L80,340L80,280L187,280L154,240L76,240C56,240 40,256 40,276L40,470C40,486.458 53.542,500 70,500L450,500C466.458,500 480,486.458 480,470L480,276C480,256 464,240 444,240ZM230,35L230,160L161,160C151,160 146,169 152,174L252,297C256,300 262,300 266,297L366,174C372,168 367,160 357,160L290,160L290,35C290,27 283,20 275,20L245,20C237,20 230,27 230,35Z\" style=\"fill:rgb(130,130,252);fill-rule:nonzero;\"/></g></svg>"},"children":[]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Package(s):"]}," ","Core"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When the Handle Refund rule was initially designed, it was added to the Installment lookup field on Inbound Report. While the only option at the time, there is a better option now."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["As part of the Refunds from Salesforce feature development, we have added a Refund lookup field to Inbound Report. This is the more logical place for the Handle Refund rule execution, so we have moved the rule to the Refund lookup."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In addition, we have extended the Guided Matching setup for refunds to allow customers to add custom rules on the Refund lookup field before or after the Handle Refund rule."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"guided-matching-query-rule-enhancement","__idx":10},"children":["Guided Matching Query rule enhancement"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"InlineSvg","attributes":{"class":"inline-svg-size","file":"/assets/package.svg","fileRawContent":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 52 52\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"><g transform=\"matrix(0.1,0,0,0.1,0,0)\"><path d=\"M444,240L365,240L332,280L440,280L440,340L80,340L80,280L187,280L154,240L76,240C56,240 40,256 40,276L40,470C40,486.458 53.542,500 70,500L450,500C466.458,500 480,486.458 480,470L480,276C480,256 464,240 444,240ZM230,35L230,160L161,160C151,160 146,169 152,174L252,297C256,300 262,300 266,297L366,174C372,168 367,160 357,160L290,160L290,35C290,27 283,20 275,20L245,20C237,20 230,27 230,35Z\" style=\"fill:rgb(130,130,252);fill-rule:nonzero;\"/></g></svg>"},"children":[]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Package(s):"]}," ","Core"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For certain business cases, such as invoice matching, multiple installments may be paid by a single transaction. To support this, we have updated the Query rule when used to find installments. Now, if multiple installments are found and the result strategy is Guided Review, users can view and select multiple records in the Guided Review step rather than only one."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"guided-matching-regex-enhancement","__idx":11},"children":["Guided Matching regex enhancement"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"InlineSvg","attributes":{"class":"inline-svg-size","file":"/assets/package.svg","fileRawContent":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 52 52\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"><g transform=\"matrix(0.1,0,0,0.1,0,0)\"><path d=\"M444,240L365,240L332,280L440,280L440,340L80,340L80,280L187,280L154,240L76,240C56,240 40,256 40,276L40,470C40,486.458 53.542,500 70,500L450,500C466.458,500 480,486.458 480,470L480,276C480,256 464,240 444,240ZM230,35L230,160L161,160C151,160 146,169 152,174L252,297C256,300 262,300 266,297L366,174C372,168 367,160 357,160L290,160L290,35C290,27 283,20 275,20L245,20C237,20 230,27 230,35Z\" style=\"fill:rgb(130,130,252);fill-rule:nonzero;\"/></g></svg>"},"children":[]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Package(s):"]}," ","Core"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Issue:"]}," For certain Guided Matching use cases, particularly Bank Feed transaction matching, the booking date and time are used in Regular Expression (regex) queries. However, the Regular Expression rule type only supported the date."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Solution:"]}," We expanded the Regular Expression rule type logic and corresponding setup to support the full booking date and time scope. Now, as part of the rule setup, the Capturing Group includes everything from Year to Seconds, as well as timezone. Year, Month and Day remain required. Hours, Minutes, Seconds and Timezone are optional. Note that if Timezone is not defined, the default is UTC 0:00."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"moto-avs-pre-filling-enhancement","__idx":12},"children":["MOTO AVS pre-filling enhancement"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"InlineSvg","attributes":{"class":"inline-svg-size","file":"/assets/package.svg","fileRawContent":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 52 52\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"><g transform=\"matrix(0.1,0,0,0.1,0,0)\"><path d=\"M444,240L365,240L332,280L440,280L440,340L80,340L80,280L187,280L154,240L76,240C56,240 40,256 40,276L40,470C40,486.458 53.542,500 70,500L450,500C466.458,500 480,486.458 480,470L480,276C480,256 464,240 444,240ZM230,35L230,160L161,160C151,160 146,169 152,174L252,297C256,300 262,300 266,297L366,174C372,168 367,160 357,160L290,160L290,35C290,27 283,20 275,20L245,20C237,20 230,27 230,35Z\" style=\"fill:rgb(130,130,252);fill-rule:nonzero;\"/></g></svg>"},"children":[]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Package(s):"]}," ","Core"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Issue:"]}," During internal testing, we identified a scenario where pre-filling the Country for Address Verification Services (AVS) in the MOTO component prevents a payment from being completed."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Solution:"]}," The issue arose in cases where Country is pre-filled with a value that does not have any State dependencies (in Salesforce). With this release, we have eliminated the potential issue by introducing an additional dependency check to correctly support the no-States (null picklist value) scenario."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"payment-schedule-summary-stats-performance-enhancement","__idx":13},"children":["Payment Schedule summary stats performance enhancement"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"InlineSvg","attributes":{"class":"inline-svg-size","file":"/assets/package.svg","fileRawContent":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 52 52\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"><g transform=\"matrix(0.1,0,0,0.1,0,0)\"><path d=\"M444,240L365,240L332,280L440,280L440,340L80,340L80,280L187,280L154,240L76,240C56,240 40,256 40,276L40,470C40,486.458 53.542,500 70,500L450,500C466.458,500 480,486.458 480,470L480,276C480,256 464,240 444,240ZM230,35L230,160L161,160C151,160 146,169 152,174L252,297C256,300 262,300 266,297L366,174C372,168 367,160 357,160L290,160L290,35C290,27 283,20 275,20L245,20C237,20 230,27 230,35Z\" style=\"fill:rgb(130,130,252);fill-rule:nonzero;\"/></g></svg>"},"children":[]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Package(s):"]}," ","Core"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Issue:"]}," The summary stats for payment schedules, like number of installments, total amount, etc., are recalculated on a daily basis through the FinDock Heart Beat. For customers with large data volume (LDV) orgs, the recalculations can consume a large portion of Salesforce Apex limits."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Solution:"]}," We have introduced a new limitation on the automatic recalculations through FinDock Heart Beat. For Payment Schedule records with status Done, the automatic calculation is performed once, and further automatic recalculations are skipped. You can still update the summary statistics by manually triggering the recalculation on the Payment Schedule record. If the status is changed from Done to some other status, automatically recalculations resume as normal through the scheduled heartbeat."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"payment-schedules-with-custom-references","__idx":14},"children":["Payment schedules with custom references"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"InlineSvg","attributes":{"class":"inline-svg-size","file":"/assets/package.svg","fileRawContent":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 52 52\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"><g transform=\"matrix(0.1,0,0,0.1,0,0)\"><path d=\"M444,240L365,240L332,280L440,280L440,340L80,340L80,280L187,280L154,240L76,240C56,240 40,256 40,276L40,470C40,486.458 53.542,500 70,500L450,500C466.458,500 480,486.458 480,470L480,276C480,256 464,240 444,240ZM230,35L230,160L161,160C151,160 146,169 152,174L252,297C256,300 262,300 266,297L366,174C372,168 367,160 357,160L290,160L290,35C290,27 283,20 275,20L245,20C237,20 230,27 230,35Z\" style=\"fill:rgb(130,130,252);fill-rule:nonzero;\"/></g></svg>"},"children":[]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Package(s):"]}," ","Core"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Issue:"]}," The generation phase of payment schedules fails if custom payment reference is used without a generated payment reference."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Text:"]}," The issue was caused by a ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/release-notes/release-notes-may-26#new-custom-base-for-generated-references"},"children":["change in the May ’26 release"]},". This has been resolved so custom payment references are properly handled as before."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"paying-existing-installments-as-guest-user","__idx":15},"children":["Paying existing installments as Guest User"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"InlineSvg","attributes":{"class":"inline-svg-size","file":"/assets/package.svg","fileRawContent":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 52 52\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"><g transform=\"matrix(0.1,0,0,0.1,0,0)\"><path d=\"M444,240L365,240L332,280L440,280L440,340L80,340L80,280L187,280L154,240L76,240C56,240 40,256 40,276L40,470C40,486.458 53.542,500 70,500L450,500C466.458,500 480,486.458 480,470L480,276C480,256 464,240 444,240ZM230,35L230,160L161,160C151,160 146,169 152,174L252,297C256,300 262,300 266,297L366,174C372,168 367,160 357,160L290,160L290,35C290,27 283,20 275,20L245,20C237,20 230,27 230,35Z\" style=\"fill:rgb(130,130,252);fill-rule:nonzero;\"/></g></svg>"},"children":[]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Package(s):"]}," ","Core"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["FinDock allows payers to pay existing installments as a Salesforce Guest User for public Experience Cloud sites. This would fail for environments created after FinDock’s security enhancement for the September '26 release. For the update process to complete, we removed updating by Guest User on all objects except Message."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"processinghub","__idx":16},"children":["ProcessingHub"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"bulk-api-20-charge-processing-correction","__idx":17},"children":["Bulk API 2.0 charge processing correction"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"InlineSvg","attributes":{"class":"inline-svg-size","file":"/assets/package.svg","fileRawContent":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 52 52\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"><g transform=\"matrix(0.1,0,0,0.1,0,0)\"><path d=\"M444,240L365,240L332,280L440,280L440,340L80,340L80,280L187,280L154,240L76,240C56,240 40,256 40,276L40,470C40,486.458 53.542,500 70,500L450,500C466.458,500 480,486.458 480,470L480,276C480,256 464,240 444,240ZM230,35L230,160L161,160C151,160 146,169 152,174L252,297C256,300 262,300 266,297L366,174C372,168 367,160 357,160L290,160L290,35C290,27 283,20 275,20L245,20C237,20 230,27 230,35Z\" style=\"fill:rgb(130,130,252);fill-rule:nonzero;\"/></g></svg>"},"children":[]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Package(s):"]}," N/A"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Issue:"]}," Bulk API 2.0 charge processing correction"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Solution:"]}," An issue in the May ’26 release caused Bulk API v2 payment processing to stall when files contained mixed installment identifier formats. This affected file processing flows with associated charges and could cause push processes to remain stuck. Charge handling logic for Bulk API 2.0 has now been corrected so that processes complete as expected."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"bulk-api-20-error-handling","__idx":18},"children":["Bulk API 2.0 error handling"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"InlineSvg","attributes":{"class":"inline-svg-size","file":"/assets/package.svg","fileRawContent":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 52 52\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"><g transform=\"matrix(0.1,0,0,0.1,0,0)\"><path d=\"M444,240L365,240L332,280L440,280L440,340L80,340L80,280L187,280L154,240L76,240C56,240 40,256 40,276L40,470C40,486.458 53.542,500 70,500L450,500C466.458,500 480,486.458 480,470L480,276C480,256 464,240 444,240ZM230,35L230,160L161,160C151,160 146,169 152,174L252,297C256,300 262,300 266,297L366,174C372,168 367,160 357,160L290,160L290,35C290,27 283,20 275,20L245,20C237,20 230,27 230,35Z\" style=\"fill:rgb(130,130,252);fill-rule:nonzero;\"/></g></svg>"},"children":[]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Package(s):"]}," N/A"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Issue:"]}," An issue introduced with the May ’26 Bulk API v2 rollout caused Data Load processes to remain stuck in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Running"]}," state when Salesforce returned validation or locked row errors containing apostrophes (for example: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Can't save this record"]},"). This prevented processes from transitioning to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Data Load Error"]}," whenever there was a data load error."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Solution:"]}," We identified and fixed a bug in the failure status handling logic for Bulk API 2.0 processing so states are updated correctly when Salesforce returns errors with apostrophes."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"authorizenet","__idx":19},"children":["Authorize.net"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"re-running-payment-schedules","__idx":20},"children":["Re-running payment schedules"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"InlineSvg","attributes":{"class":"inline-svg-size","file":"/assets/package.svg","fileRawContent":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 52 52\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"><g transform=\"matrix(0.1,0,0,0.1,0,0)\"><path d=\"M444,240L365,240L332,280L440,280L440,340L80,340L80,280L187,280L154,240L76,240C56,240 40,256 40,276L40,470C40,486.458 53.542,500 70,500L450,500C466.458,500 480,486.458 480,470L480,276C480,256 464,240 444,240ZM230,35L230,160L161,160C151,160 146,169 152,174L252,297C256,300 262,300 266,297L366,174C372,168 367,160 357,160L290,160L290,35C290,27 283,20 275,20L245,20C237,20 230,27 230,35Z\" style=\"fill:rgb(130,130,252);fill-rule:nonzero;\"/></g></svg>"},"children":[]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Package(s):"]}," ","Authorize.net"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Issue:"]}," If a payment schedule that had already reached the Process phase was manually set back to an early phase, all installments linked to the schedule were re-sent regardless of their status. As Authorize.net does not support idempotency, this would lead to double collection."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Solution:"]}," To reduce the chances of double collection when re-running a payment schedule manually, we have added a status check to only send installments with status New or Pending recollection. Please note that if an installment was not updated yet when the schedule state is manually changed, for instance due to the update getting blocked by a validation rule, it could still be collected again."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"error-handling-update-for-moto-payments","__idx":21},"children":["Error handling update for MOTO payments"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"InlineSvg","attributes":{"class":"inline-svg-size","file":"/assets/package.svg","fileRawContent":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 52 52\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"><g transform=\"matrix(0.1,0,0,0.1,0,0)\"><path d=\"M444,240L365,240L332,280L440,280L440,340L80,340L80,280L187,280L154,240L76,240C56,240 40,256 40,276L40,470C40,486.458 53.542,500 70,500L450,500C466.458,500 480,486.458 480,470L480,276C480,256 464,240 444,240ZM230,35L230,160L161,160C151,160 146,169 152,174L252,297C256,300 262,300 266,297L366,174C372,168 367,160 357,160L290,160L290,35C290,27 283,20 275,20L245,20C237,20 230,27 230,35Z\" style=\"fill:rgb(130,130,252);fill-rule:nonzero;\"/></g></svg>"},"children":[]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Package(s):"]}," ","Authorize.net"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Issue:"]}," Authorize.net may decline payments set up through the FinDock Payment component (virtual terminal). However, the payment appeared successful in the component interface, yet the status of the Installment record remained in a Pending processing state."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Solution:"]}," The issue was caused by a gap in payment processing for Authorize.net. We have now extended error handling so that FinDock not only checks whether the request itself was successful, but also checks the response from Authorize.net and shows in the component if the payment was unsuccessful based on the response code."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"fundraising","__idx":22},"children":["Fundraising"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"installment-and-gift-transaction-status-handling","__idx":23},"children":["Installment and gift transaction status handling"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"InlineSvg","attributes":{"class":"inline-svg-size","file":"/assets/package.svg","fileRawContent":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 52 52\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"><g transform=\"matrix(0.1,0,0,0.1,0,0)\"><path d=\"M444,240L365,240L332,280L440,280L440,340L80,340L80,280L187,280L154,240L76,240C56,240 40,256 40,276L40,470C40,486.458 53.542,500 70,500L450,500C466.458,500 480,486.458 480,470L480,276C480,256 464,240 444,240ZM230,35L230,160L161,160C151,160 146,169 152,174L252,297C256,300 262,300 266,297L366,174C372,168 367,160 357,160L290,160L290,35C290,27 283,20 275,20L245,20C237,20 230,27 230,35Z\" style=\"fill:rgb(130,130,252);fill-rule:nonzero;\"/></g></svg>"},"children":[]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Package(s):"]}," ","Core, Fundraising"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Issue:"]}," FinDock cannot process installment batches if custom logic blocks actions on the linked gift transaction. This issue was noticed with GoCardless where all installments in the batch were rolled back to an uncollected state because a custom validation rule prevented one gift transaction update."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Solution:"]}," The issue was caused by a conflict between FinDock’s batch processing logic and an automatic re-trigger mechanism in Salesforce error handling. We have now resolved the conflict to support partial success in batch processing. If a gift transaction update fails, the linked installment is set to Failed. After this, FinDock tries to update the gift transaction status to Failed. If that also fails, both the installment and gift transaction are rolled back to their original state. The rest of the installments in the batch are processed normally."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"updating-gift-commitments","__idx":24},"children":["Updating Gift Commitments"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"InlineSvg","attributes":{"class":"inline-svg-size","file":"/assets/package.svg","fileRawContent":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 52 52\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"><g transform=\"matrix(0.1,0,0,0.1,0,0)\"><path d=\"M444,240L365,240L332,280L440,280L440,340L80,340L80,280L187,280L154,240L76,240C56,240 40,256 40,276L40,470C40,486.458 53.542,500 70,500L450,500C466.458,500 480,486.458 480,470L480,276C480,256 464,240 444,240ZM230,35L230,160L161,160C151,160 146,169 152,174L252,297C256,300 262,300 266,297L366,174C372,168 367,160 357,160L290,160L290,35C290,27 283,20 275,20L245,20C237,20 230,27 230,35Z\" style=\"fill:rgb(130,130,252);fill-rule:nonzero;\"/></g></svg>"},"children":[]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Package(s):"]}," ","Core, Fundraising"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Issue:"]}," In some scenarios, existing Gift Commitment records cannot be updated using recurring PayLinks or the Payment API, resulting in inbound reports with errors. This occurs when the gift commitment is related to a gift commitment schedule that started in the past."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Solution:"]}," The issue was caused by how FinDock was handling updates to Gift Commit Schedule records. The recurring payment change results in a new Gift Commitment Schedule record (according to Salesforce actions), but the inbound report processing also tried to update the previous (now closed) schedule. This has now been resolved so the schedule updates are handled correctly and the Gift Commitment record is updated as expected."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"gift-aid","__idx":25},"children":["Gift Aid"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"new-pause-declaration-feature","__idx":26},"children":["New pause declaration feature"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"InlineSvg","attributes":{"class":"inline-svg-size","file":"/assets/package.svg","fileRawContent":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 52 52\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"><g transform=\"matrix(0.1,0,0,0.1,0,0)\"><path d=\"M444,240L365,240L332,280L440,280L440,340L80,340L80,280L187,280L154,240L76,240C56,240 40,256 40,276L40,470C40,486.458 53.542,500 70,500L450,500C466.458,500 480,486.458 480,470L480,276C480,256 464,240 444,240ZM230,35L230,160L161,160C151,160 146,169 152,174L252,297C256,300 262,300 266,297L366,174C372,168 367,160 357,160L290,160L290,35C290,27 283,20 275,20L245,20C237,20 230,27 230,35Z\" style=\"fill:rgb(130,130,252);fill-rule:nonzero;\"/></g></svg>"},"children":[]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Package(s):"]}," ","Gift Aid"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["FinDock’s Gift Aid solution, a unique Salesforce-native, HMRC compliant offering, has helped nonprofits across the UK, transforming Gift Aid from a manual burden into an automated revenue source."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["With this release, we are excited to add a new feature that gives Gift Aid managers even more flexibility working with Gift Aid declarations. Now, in addition to the existing management features and logic, you can pause declarations. Whether pausing individual declarations or using Salesforce tooling to pause many, the pause lasts as long as you need. Use pausing to confirm declaration details with the donor, complete custom checks and balances on your Gift Aid process… whatever best suits your organization."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When a Gift Aid declaration is paused, FinDock does not use it for new Gift Aid claims. Already processed claims linked to the paused declaration are unaffected. All aspects of the declaration remain fully under your control with no impact on the record’s validity according to HMRC rules."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"support-for-title-in-declaration","__idx":27},"children":["Support for Title in declaration"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"InlineSvg","attributes":{"class":"inline-svg-size","file":"/assets/package.svg","fileRawContent":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 52 52\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"><g transform=\"matrix(0.1,0,0,0.1,0,0)\"><path d=\"M444,240L365,240L332,280L440,280L440,340L80,340L80,280L187,280L154,240L76,240C56,240 40,256 40,276L40,470C40,486.458 53.542,500 70,500L450,500C466.458,500 480,486.458 480,470L480,276C480,256 464,240 444,240ZM230,35L230,160L161,160C151,160 146,169 152,174L252,297C256,300 262,300 266,297L366,174C372,168 367,160 357,160L290,160L290,35C290,27 283,20 275,20L245,20C237,20 230,27 230,35Z\" style=\"fill:rgb(130,130,252);fill-rule:nonzero;\"/></g></svg>"},"children":[]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Package(s):"]}," ","Core, Gift Aid, WebHub"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You can now add Title when setting up Gift Aid declarations for your donors and include the title in the claim to HMRC. A new Custom Title field on Gift Aid Declaration is automatically populated by the Salutation field on Contact if available and can be overridden, similar to how First Name and Last Name are handled. The final title for the claim is stored in the existing Title field on the declaration."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The new Custom Title field is available through the Payment API in Gift Aid package actions. We have also implemented it for the Gift Aid form on Giving Pages."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To be able to use Title with Gift Aid, you need to enable it on your Gift Aid source connector settings. There is a new ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Include Title In Claim File"]}," option you can enable from the FinDock Setup. Please note that full stops in titles are automatically removed from the HMRC claim file because it is an unsupported character."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"new-managed-layout-for-gift-aid-declaration","__idx":28},"children":["New managed layout for Gift Aid Declaration"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"InlineSvg","attributes":{"class":"inline-svg-size","file":"/assets/package.svg","fileRawContent":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 52 52\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"><g transform=\"matrix(0.1,0,0,0.1,0,0)\"><path d=\"M444,240L365,240L332,280L440,280L440,340L80,340L80,280L187,280L154,240L76,240C56,240 40,256 40,276L40,470C40,486.458 53.542,500 70,500L450,500C466.458,500 480,486.458 480,470L480,276C480,256 464,240 444,240ZM230,35L230,160L161,160C151,160 146,169 152,174L252,297C256,300 262,300 266,297L366,174C372,168 367,160 357,160L290,160L290,35C290,27 283,20 275,20L245,20C237,20 230,27 230,35Z\" style=\"fill:rgb(130,130,252);fill-rule:nonzero;\"/></g></svg>"},"children":[]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Package(s):"]}," ","Gift Aid"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["With this release, we introduce a managed layout (Lightning Record Page) for the Gift Aid Declaration object. The managed layout, called Gift Aid Declaration Record Page, helps us better present changes and improvements to Gift Aid that impact declaration management."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The new managed layout is the default for new installations after this release. If you would like to use the layout, please manually assign the new Lightning Record Page ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://help.salesforce.com/s/articleView?id=000380233&type=1"},"children":["through Salesforce Setup"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"hmrc-claim-file-ordering","__idx":29},"children":["HMRC claim file ordering"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"InlineSvg","attributes":{"class":"inline-svg-size","file":"/assets/package.svg","fileRawContent":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 52 52\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"><g transform=\"matrix(0.1,0,0,0.1,0,0)\"><path d=\"M444,240L365,240L332,280L440,280L440,340L80,340L80,280L187,280L154,240L76,240C56,240 40,256 40,276L40,470C40,486.458 53.542,500 70,500L450,500C466.458,500 480,486.458 480,470L480,276C480,256 464,240 444,240ZM230,35L230,160L161,160C151,160 146,169 152,174L252,297C256,300 262,300 266,297L366,174C372,168 367,160 357,160L290,160L290,35C290,27 283,20 275,20L245,20C237,20 230,27 230,35Z\" style=\"fill:rgb(130,130,252);fill-rule:nonzero;\"/></g></svg>"},"children":[]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Package(s):"]}," ","ProcessingHub"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To help Gift Aid managers handle audits of claim files, FinDock now orders claims within the file according to the Gift Aid Declaration record linked to the claim. For example, if an auditor from HMRC selects a random entry from the top 100 claims in the file, the ordering makes it easier to find details about the related declaration."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Claims are ordered according to two data points. First, they are ordered (descending) according to Date Made, so the claims with the newest declarations are at the top of the file. Second, because Date Made does not include time, we use Salesforce Id to further order declarations (descending) that have the same date."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To ensure claim generation performance with the additional ordering process, we made a few small adjustments to backend Gift Aid data structuring."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"npsp","__idx":30},"children":["NPSP"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"installment-and-opportunity-status-handling","__idx":31},"children":["Installment and opportunity status handling"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"InlineSvg","attributes":{"class":"inline-svg-size","file":"/assets/package.svg","fileRawContent":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 52 52\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"><g transform=\"matrix(0.1,0,0,0.1,0,0)\"><path d=\"M444,240L365,240L332,280L440,280L440,340L80,340L80,280L187,280L154,240L76,240C56,240 40,256 40,276L40,470C40,486.458 53.542,500 70,500L450,500C466.458,500 480,486.458 480,470L480,276C480,256 464,240 444,240ZM230,35L230,160L161,160C151,160 146,169 152,174L252,297C256,300 262,300 266,297L366,174C372,168 367,160 357,160L290,160L290,35C290,27 283,20 275,20L245,20C237,20 230,27 230,35Z\" style=\"fill:rgb(130,130,252);fill-rule:nonzero;\"/></g></svg>"},"children":[]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Package(s):"]}," ","NPSP"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Issue:"]}," FinDock cannot process installment batches if custom logic blocks actions on the linked NPSP opportunity. All installments in the batch are rolled back to an uncollected state if, for example, a custom validation rule prevents one NPSP opportunity update."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Solution:"]}," The issue was caused by a conflict between FinDock’s batch processing logic and an automatic re-trigger mechanism in Salesforce error handling. We have now resolved the conflict to support partial success in batch processing. If an NPSP opportunity update fails, the linked installment is set to Failed. After this, FinDock tries to update the NPSP opportunity status to the status mapped with Failed. If that also fails, both the installment and opportunity are rolled back to their original state. The rest of the installments in the batch are processed normally."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"paya-beta","__idx":32},"children":["Paya (beta)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["We are happy to announce that the Paya for FinDock payment extension is moving to beta and open to all customers. The beta version includes important enhancements and fixes outlined in the following sections."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"new-installment-and-refund-closing-option","__idx":33},"children":["New installment and refund closing option"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"InlineSvg","attributes":{"class":"inline-svg-size","file":"/assets/package.svg","fileRawContent":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 52 52\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"><g transform=\"matrix(0.1,0,0,0.1,0,0)\"><path d=\"M444,240L365,240L332,280L440,280L440,340L80,340L80,280L187,280L154,240L76,240C56,240 40,256 40,276L40,470C40,486.458 53.542,500 70,500L450,500C466.458,500 480,486.458 480,470L480,276C480,256 464,240 444,240ZM230,35L230,160L161,160C151,160 146,169 152,174L252,297C256,300 262,300 266,297L366,174C372,168 367,160 357,160L290,160L290,35C290,27 283,20 275,20L245,20C237,20 230,27 230,35Z\" style=\"fill:rgb(130,130,252);fill-rule:nonzero;\"/></g></svg>"},"children":[]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Package(s):"]}," ","Core, Paya"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Prior to this release, installments and refunds for Paya were always first set to Pending Processing. They were then updated to Collected and Refunded, respectively, as part of the reconciliation process using a settlement file form Paya."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Both installment collection and refunds, however, can be closed when they are successful based on the immediate responses FinDock gets from Paya. To support this immediately closing option, we have introduced a new setting for Paya merchant accounts in the FinDock Setup. With the new ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Close with settlement file"]}," toggle, you can tell FinDock to use the Pending Processing handling path or to close records immediately when successful."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"payment-reference-handling-update","__idx":34},"children":["Payment reference handling update"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"InlineSvg","attributes":{"class":"inline-svg-size","file":"/assets/package.svg","fileRawContent":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 52 52\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"><g transform=\"matrix(0.1,0,0,0.1,0,0)\"><path d=\"M444,240L365,240L332,280L440,280L440,340L80,340L80,280L187,280L154,240L76,240C56,240 40,256 40,276L40,470C40,486.458 53.542,500 70,500L450,500C466.458,500 480,486.458 480,470L480,276C480,256 464,240 444,240ZM230,35L230,160L161,160C151,160 146,169 152,174L252,297C256,300 262,300 266,297L366,174C372,168 367,160 357,160L290,160L290,35C290,27 283,20 275,20L245,20C237,20 230,27 230,35Z\" style=\"fill:rgb(130,130,252);fill-rule:nonzero;\"/></g></svg>"},"children":[]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Package(s):"]}," ","Core"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Issue:"]}," The Payment Reference field value on Payment records is used for refunds initiated from Salesforce. This field was incorrectly populated for payments initiated through online payment channels like Giving Pages. If a refund was later initiated, the processing at Paya would fail because the transaction could not be identified."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Solution:"]}," The Payment Reference field is now correctly populated with the Payment Transaction Id from Paya in all channels."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Payment records prior to this release need to be updated with the correct Payment Reference if you plan on using them with Refunds from Salesforce."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"routing-number-missing-for-ach","__idx":35},"children":["Routing number missing for ACH"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"InlineSvg","attributes":{"class":"inline-svg-size","file":"/assets/package.svg","fileRawContent":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 52 52\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"><g transform=\"matrix(0.1,0,0,0.1,0,0)\"><path d=\"M444,240L365,240L332,280L440,280L440,340L80,340L80,280L187,280L154,240L76,240C56,240 40,256 40,276L40,470C40,486.458 53.542,500 70,500L450,500C466.458,500 480,486.458 480,470L480,276C480,256 464,240 444,240ZM230,35L230,160L161,160C151,160 146,169 152,174L252,297C256,300 262,300 266,297L366,174C372,168 367,160 357,160L290,160L290,35C290,27 283,20 275,20L245,20C237,20 230,27 230,35Z\" style=\"fill:rgb(130,130,252);fill-rule:nonzero;\"/></g></svg>"},"children":[]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Package(s):"]}," ","Paya"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Issue:"]}," When a new recurring ACH Direct Debit payment is set up, the routing number is not captured on the Payment Profile record, which prevents collection."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Solution:"]}," The routing number (stored in the Branch Code field on Payment Profile) is not returned with the hosted payment page capture. To get the routing number, FinDock now makes an additional callout to Paya as part of Guided Matching, while processing the Enrich Payment Profile rule."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"recurring-donation-next-collection-date","__idx":36},"children":["Recurring donation next collection date"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"InlineSvg","attributes":{"class":"inline-svg-size","file":"/assets/package.svg","fileRawContent":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 52 52\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"><g transform=\"matrix(0.1,0,0,0.1,0,0)\"><path d=\"M444,240L365,240L332,280L440,280L440,340L80,340L80,280L187,280L154,240L76,240C56,240 40,256 40,276L40,470C40,486.458 53.542,500 70,500L450,500C466.458,500 480,486.458 480,470L480,276C480,256 464,240 444,240ZM230,35L230,160L161,160C151,160 146,169 152,174L252,297C256,300 262,300 266,297L366,174C372,168 367,160 357,160L290,160L290,35C290,27 283,20 275,20L245,20C237,20 230,27 230,35Z\" style=\"fill:rgb(130,130,252);fill-rule:nonzero;\"/></g></svg>"},"children":[]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Package(s):"]}," ","Paya"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Issue:"]}," When setting up new recurring donations with Paya as the payment processor, the Next Donation Date on the Recurring Donation record and the Close Date of the next scheduled NPSP Opportunity record are different. These two dates should be the same, but because they are not, this may potentially result in a skipped collection. This was noticed through internal testing of NPSP setups without Enhanced Recurring Donations enabled."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Solution:"]}," The issue was caused by how FinDock processed installments synchronously through Guided Matching versus how NPSP handles standard (non-enhanced) Recurring Donation changes. With this release, we have added an additional step to the processing logic for Paya to support standard Recurring Donation behavior in NPSP."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"inline-validation-for-payment-schedules","__idx":37},"children":["Inline validation for payment schedules"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"InlineSvg","attributes":{"class":"inline-svg-size","file":"/assets/package.svg","fileRawContent":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 52 52\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"><g transform=\"matrix(0.1,0,0,0.1,0,0)\"><path d=\"M444,240L365,240L332,280L440,280L440,340L80,340L80,280L187,280L154,240L76,240C56,240 40,256 40,276L40,470C40,486.458 53.542,500 70,500L450,500C466.458,500 480,486.458 480,470L480,276C480,256 464,240 444,240ZM230,35L230,160L161,160C151,160 146,169 152,174L252,297C256,300 262,300 266,297L366,174C372,168 367,160 357,160L290,160L290,35C290,27 283,20 275,20L245,20C237,20 230,27 230,35Z\" style=\"fill:rgb(130,130,252);fill-rule:nonzero;\"/></g></svg>"},"children":[]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Package(s):"]}," ","Core"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Issue:"]}," Payment schedules use inline validation during the Processing phase to check data quality. If a linked record fails validation, the schedule run cannot complete."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Solution:"]}," Although in some scenarios inline validation is preferred, with Paya as the payment processor, there is no need to block all installments linked to the schedule from being collected. We have therefore disabled inline validation in this release. The Data Quality component can (and should) still be used to validate records after the Generate step so issues can be resolved before the schedule starts the Processing phase."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"paypal","__idx":38},"children":["PayPal"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"event-processing-order","__idx":39},"children":["Event processing order"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"InlineSvg","attributes":{"class":"inline-svg-size","file":"/assets/package.svg","fileRawContent":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 52 52\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"><g transform=\"matrix(0.1,0,0,0.1,0,0)\"><path d=\"M444,240L365,240L332,280L440,280L440,340L80,340L80,280L187,280L154,240L76,240C56,240 40,256 40,276L40,470C40,486.458 53.542,500 70,500L450,500C466.458,500 480,486.458 480,470L480,276C480,256 464,240 444,240ZM230,35L230,160L161,160C151,160 146,169 152,174L252,297C256,300 262,300 266,297L366,174C372,168 367,160 357,160L290,160L290,35C290,27 283,20 275,20L245,20C237,20 230,27 230,35Z\" style=\"fill:rgb(130,130,252);fill-rule:nonzero;\"/></g></svg>"},"children":[]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Package(s):"]}," ","PayPal"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Issue:"]}," A change in PayPal webhook event handling in the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://docs.findock.com/release-notes/release-notes-may-26#online-redirect-handling-update"},"children":["May '26 release"]}," could lead to a scenario where certain events are not processed in the correct order due to when they arrive. The incorrect ordering results in failed inbound reports for those events."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Solution:"]}," We’ve enhanced the ordering logic for incoming events from PayPal to ensure events are processed in the required order regardless of when they arrived."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"vipps","__idx":40},"children":["Vipps"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"payer-initiated-mandate-cancellation","__idx":41},"children":["Payer-initiated mandate cancellation"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"InlineSvg","attributes":{"class":"inline-svg-size","file":"/assets/package.svg","fileRawContent":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 52 52\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"><g transform=\"matrix(0.1,0,0,0.1,0,0)\"><path d=\"M444,240L365,240L332,280L440,280L440,340L80,340L80,280L187,280L154,240L76,240C56,240 40,256 40,276L40,470C40,486.458 53.542,500 70,500L450,500C466.458,500 480,486.458 480,470L480,276C480,256 464,240 444,240ZM230,35L230,160L161,160C151,160 146,169 152,174L252,297C256,300 262,300 266,297L366,174C372,168 367,160 357,160L290,160L290,35C290,27 283,20 275,20L245,20C237,20 230,27 230,35Z\" style=\"fill:rgb(130,130,252);fill-rule:nonzero;\"/></g></svg>"},"children":[]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Package(s):"]}," ","Core, Vipps"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In addition to merchant-initiated agreement cancellation, FinDock now also automatically processes agreements cancelled by Vipps users. To support payer-initiated cancellations, we expanded our Vipps MobilePay integration and added a new Inbound Report subtype MANDATE_STOPPED."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The new Inbound Report subtype and associated Guided Matching rules processes the cancellation event from Vipps MobilePay. The related Mandate record is deactivated and the status is updated to Cancelled."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"mandate-matching-for-recurring-payments","__idx":42},"children":["Mandate matching for recurring payments"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"InlineSvg","attributes":{"class":"inline-svg-size","file":"/assets/package.svg","fileRawContent":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 52 52\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"><g transform=\"matrix(0.1,0,0,0.1,0,0)\"><path d=\"M444,240L365,240L332,280L440,280L440,340L80,340L80,280L187,280L154,240L76,240C56,240 40,256 40,276L40,470C40,486.458 53.542,500 70,500L450,500C466.458,500 480,486.458 480,470L480,276C480,256 464,240 444,240ZM230,35L230,160L161,160C151,160 146,169 152,174L252,297C256,300 262,300 266,297L366,174C372,168 367,160 357,160L290,160L290,35C290,27 283,20 275,20L245,20C237,20 230,27 230,35Z\" style=\"fill:rgb(130,130,252);fill-rule:nonzero;\"/></g></svg>"},"children":[]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Package(s):"]}," ","Vipps"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Issue:"]}," When a payer sets up a new recurring Vipps payment, FinDock automatically creates a new mandate (and payment profile). However, if the related inbound report process fails due to some customization, retry Guided Matching for that inbound report would continually fail with the error: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Insert failed. First exception on row 0; first error: DUPLICATE_VALUE, duplicate value found: cpm__Unique_Mandate_Id__c duplicates value on record with id..."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Solution:"]}," When retrying the inbound report, FinDock did not first check if the Mandate record already exists with the given reference. Instead, FinDock tried to create another new mandate with that reference, leading to the error. With this release, FinDock first checks existing mandates as part of Guided Matching. If the mandate reference is found, that mandate is linked to the inbound report. If the reference is not found, FinDock continues with creating a new mandate as normal."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"general-maintenance","__idx":43},"children":["General maintenance"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"connected-apps-security-enhancement","__idx":44},"children":["Connected apps security enhancement"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"InlineSvg","attributes":{"class":"inline-svg-size","file":"/assets/package.svg","fileRawContent":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 52 52\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"><g transform=\"matrix(0.1,0,0,0.1,0,0)\"><path d=\"M444,240L365,240L332,280L440,280L440,340L80,340L80,280L187,280L154,240L76,240C56,240 40,256 40,276L40,470C40,486.458 53.542,500 70,500L450,500C466.458,500 480,486.458 480,470L480,276C480,256 464,240 444,240ZM230,35L230,160L161,160C151,160 146,169 152,174L252,297C256,300 262,300 266,297L366,174C372,168 367,160 357,160L290,160L290,35C290,27 283,20 275,20L245,20C237,20 230,27 230,35Z\" style=\"fill:rgb(130,130,252);fill-rule:nonzero;\"/></g></svg>"},"children":[]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Package(s):"]}," ","MIDAS, Installer, ProcessingHub, WebHub"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["As noted earlier this year in our ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/faq/how-is-findock-handling-the-move-to-external-client-apps"},"children":["FAQ about connected apps"]},", FinDock has been evaluating how our connected apps fit into the External Connected Apps switchover at Salesforce. Since then, the technical requirements became clearer so that we could begin implementing them in the framework for FinDock connected apps."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["With this release, we are rolling out new Proof Key for Code Exchange (PKCE) and Refresh Token Rotation (RTR) mechanisms. These work in the background to maintain the tight security of OAuth flows required by the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developer.salesforce.com/docs/atlas.en-us.packagingGuide.meta/packagingGuide/secure_code_ac_eca.htm"},"children":["Summer '26 Salesforce release"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The existing procedures for installing FinDock connected apps do not change. The new security policies should not impact existing connections."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["We are pushing these changes to production orgs ahead of the July '26 production release to meet Salesforce-imposed deadlines for PKCE and RTR usage. The planned hotfix for production will got out during week 26 (June 22-26)."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"salesforce-api-version-bumping-for-summer-26","__idx":45},"children":["Salesforce API version bumping for Summer '26"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"InlineSvg","attributes":{"class":"inline-svg-size","file":"/assets/package.svg","fileRawContent":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 52 52\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"><g transform=\"matrix(0.1,0,0,0.1,0,0)\"><path d=\"M444,240L365,240L332,280L440,280L440,340L80,340L80,280L187,280L154,240L76,240C56,240 40,256 40,276L40,470C40,486.458 53.542,500 70,500L450,500C466.458,500 480,486.458 480,470L480,276C480,256 464,240 444,240ZM230,35L230,160L161,160C151,160 146,169 152,174L252,297C256,300 262,300 266,297L366,174C372,168 367,160 357,160L290,160L290,35C290,27 283,20 275,20L245,20C237,20 230,27 230,35Z\" style=\"fill:rgb(130,130,252);fill-rule:nonzero;\"/></g></svg>"},"children":[]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Package(s):"]},"  ","Core, Fundraising"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This release includes Salesforce platform API version bumping for Apex classes and triggers, Lightning Web Components, etc. to version 67. This update ensures compatibility with new features and changes in the Salesforce Summer '26 release."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Salesforce API version 67 introduces new sharing and access behavior. Specifically, if sharing is not declared in an Apex class, the default is now with sharing. Similarly, if access level is not declared, the default is now USER_MODE rather than SYSTEM_MODE. To ensure full transparency in our security model, we have implemented declarations now in all impacted code."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["No action is required unless you have non-standard or restrictive permission configurations. These may break with the Summer ‘26 changes. Please validate your permission by running your typical regression tests."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"heroku-app-maintenance","__idx":46},"children":["Heroku app maintenance"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"InlineSvg","attributes":{"class":"inline-svg-size","file":"/assets/package.svg","fileRawContent":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 52 52\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"><g transform=\"matrix(0.1,0,0,0.1,0,0)\"><path d=\"M444,240L365,240L332,280L440,280L440,340L80,340L80,280L187,280L154,240L76,240C56,240 40,256 40,276L40,470C40,486.458 53.542,500 70,500L450,500C466.458,500 480,486.458 480,470L480,276C480,256 464,240 444,240ZM230,35L230,160L161,160C151,160 146,169 152,174L252,297C256,300 262,300 266,297L366,174C372,168 367,160 357,160L290,160L290,35C290,27 283,20 275,20L245,20C237,20 230,27 230,35Z\" style=\"fill:rgb(130,130,252);fill-rule:nonzero;\"/></g></svg>"},"children":[]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Package(s):"]}," ","Installer, MIDAS, Notification Gateway, WebHub"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This release includes version upgrades for software components used in FinDock apps on Heroku. These updates apply to FinDock apps and related access management frameworks. The Heroku stack itself was also updated."]}]},"headings":[{"value":"Release Notes - July '26","id":"release-notes---july-26","depth":1},{"value":"NEW PILOT: FinDock Payment Experiences","id":"new-pilot-findock-payment-experiences","depth":2},{"value":"NEW PILOT: FinDock e-mandates for SEPA Direct Debit","id":"new-pilot-findock-e-mandates-for-sepa-direct-debit","depth":2},{"value":"NEW PILOT: GoCardless Credit Transfer (Outbound Payments)","id":"new-pilot-gocardless-credit-transfer-outbound-payments","depth":2},{"value":"Core","id":"core","depth":2},{"value":"Payment API enhancement for recurring payments","id":"payment-api-enhancement-for-recurring-payments","depth":3},{"value":"Bank Feed Guided Matching setup error","id":"bank-feed-guided-matching-setup-error","depth":3},{"value":"Guided Review for partial reversals","id":"guided-review-for-partial-reversals","depth":3},{"value":"New Guided Matching rule type for Data 360","id":"new-guided-matching-rule-type-for-data-360","depth":3},{"value":"Guided Matching Handle Refund rule update","id":"guided-matching-handle-refund-rule-update","depth":3},{"value":"Guided Matching Query rule enhancement","id":"guided-matching-query-rule-enhancement","depth":3},{"value":"Guided Matching regex enhancement","id":"guided-matching-regex-enhancement","depth":3},{"value":"MOTO AVS pre-filling enhancement","id":"moto-avs-pre-filling-enhancement","depth":3},{"value":"Payment Schedule summary stats performance enhancement","id":"payment-schedule-summary-stats-performance-enhancement","depth":3},{"value":"Payment schedules with custom references","id":"payment-schedules-with-custom-references","depth":3},{"value":"Paying existing installments as Guest User","id":"paying-existing-installments-as-guest-user","depth":3},{"value":"ProcessingHub","id":"processinghub","depth":2},{"value":"Bulk API 2.0 charge processing correction","id":"bulk-api-20-charge-processing-correction","depth":3},{"value":"Bulk API 2.0 error handling","id":"bulk-api-20-error-handling","depth":3},{"value":"Authorize.net","id":"authorizenet","depth":2},{"value":"Re-running payment schedules","id":"re-running-payment-schedules","depth":3},{"value":"Error handling update for MOTO payments","id":"error-handling-update-for-moto-payments","depth":3},{"value":"Fundraising","id":"fundraising","depth":2},{"value":"Installment and gift transaction status handling","id":"installment-and-gift-transaction-status-handling","depth":3},{"value":"Updating Gift Commitments","id":"updating-gift-commitments","depth":3},{"value":"Gift Aid","id":"gift-aid","depth":2},{"value":"New pause declaration feature","id":"new-pause-declaration-feature","depth":3},{"value":"Support for Title in declaration","id":"support-for-title-in-declaration","depth":3},{"value":"New managed layout for Gift Aid Declaration","id":"new-managed-layout-for-gift-aid-declaration","depth":3},{"value":"HMRC claim file ordering","id":"hmrc-claim-file-ordering","depth":3},{"value":"NPSP","id":"npsp","depth":2},{"value":"Installment and opportunity status handling","id":"installment-and-opportunity-status-handling","depth":3},{"value":"Paya (beta)","id":"paya-beta","depth":2},{"value":"New installment and refund closing option","id":"new-installment-and-refund-closing-option","depth":3},{"value":"Payment reference handling update","id":"payment-reference-handling-update","depth":3},{"value":"Routing number missing for ACH","id":"routing-number-missing-for-ach","depth":3},{"value":"Recurring donation next collection date","id":"recurring-donation-next-collection-date","depth":3},{"value":"Inline validation for payment schedules","id":"inline-validation-for-payment-schedules","depth":3},{"value":"PayPal","id":"paypal","depth":2},{"value":"Event processing order","id":"event-processing-order","depth":3},{"value":"Vipps","id":"vipps","depth":2},{"value":"Payer-initiated mandate cancellation","id":"payer-initiated-mandate-cancellation","depth":3},{"value":"Mandate matching for recurring payments","id":"mandate-matching-for-recurring-payments","depth":3},{"value":"General maintenance","id":"general-maintenance","depth":2},{"value":"Connected apps security enhancement","id":"connected-apps-security-enhancement","depth":3},{"value":"Salesforce API version bumping for Summer '26","id":"salesforce-api-version-bumping-for-summer-26","depth":3},{"value":"Heroku app maintenance","id":"heroku-app-maintenance","depth":3}],"frontmatter":{"seo":{"title":"Release Notes - July '26","description":"Our release communication aims to inform you early of upcoming releases. The scope of a release may change prior to the production release date."},"markdown":{"toc":{"depth":2},"lastUpdatedBlock":{"hide":false,"format":"iso"}},"packages":{"adyn":"Adyen","auth":"Authorize.net","axrv":"Axerve","bacs":"Bacs","buck":"Buckaroo","chck":"Checkout.com","core":"Core","fund":"Fundraising","gift":"Gift Aid","gocd":"GoCardless","inst":"Installer","moll":"Mollie","mids":"MIDAS","ntfg":"Notification Gateway","nord":"Nordic Payments","npsp":"NPSP","paya":"Paya","pypl":"PayPal","phub":"ProcessingHub","rdss":"Redsys","sfrp":"Saferpay","sepa":"SEPA","strp":"Stripe","swsh":"Swish","swss":"Swiss Payments","tikk":"Tikkie","vipp":"Vipps","whub":"WebHub","wrld":"Worldpay"}},"lastModified":"2026-06-22T08:39:11.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/release-notes/release-notes-july-26","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}