Release Notes {#rn-general}
===========================

These release notes cover all releases to the production server for the week ending September 11, 2026.

Announcements {#rn-announce}
============================

These announcements are for September 11, 2026.

SOAP Tooklit Authentication Update {#soap-p12}
==============================================

Cybersource will no longer support username- and password-based authentication for merchants who use the *SOAP toolkit key* . You are required to remove username- and password-based authentication from your SOAP toolkit integration and transition to certificate-based authentication by these dates:

* Test Environment: April 15, 2026
* Production validation test (shock test): September 30, 2026. This applies only to selected merchants.
* Production Environment: October 7, 2026

{#soap-p12_ul_hbm_lwq_zjc} Your API requests to Cybersource will be rejected if you do not implement P12 authentication by the required dates.  
See [*P12 Authentication Upgrade for SOAP Toolkit Key Users Migration Guide*.](https://developer.cybersource.com/docs/cybs/en-us/so-p12/migration/all/so/so-p12/so-p12-intro.md "")

Batch Upload Service IP Address Updates {#ip-addresses}
=======================================================

The legacy IP address for the Cybersource Batch Upload service will be replaced by two new IP addresses. We recommend that you use domain names instead of IP addresses.  
The new addresses will take effect at these URLs and times:  
**Testing Environment**  
`batchtest.cybersource.com`  
July 28, 2026, at 4:00 am GMT  
**Production Environment:**  
`batch.cybersource.com`  
September 15, 2026, at 4:00 am GMT

Enhanced Webhook URL Review and Approval Process {#webhooks-urls}
=================================================================

We have introduced an enhancement to webhook subscription processing to improve security, compliance, and visibility for webhook-related URLs. Webhook URLs are now validated and reviewed before they can be used. This includes both subscriptions and existing subscriptions currently on file.

**What is Changing** {#webhooks-urls_section_dnx_jdt_1jc}
---------------------------------------------------------

When a webhook subscription is created or updated, the URLs associated with that subscription are evaluated through a validation and approval process.  
Applies to:

* **Webhook URL** (required)
* **OAuth URL** (if applicable)
* **Health Check URL** (if applicable)

{#webhooks-urls_ul_enx_jdt_1jc}  
As part of this enhancement, clients might now see user-facing statuses:

* **PENDING_REVIEW**
* **BLOCKED**

{#webhooks-urls_ul_fnx_jdt_1jc}  
The existing **INACTIVE** status remains unchanged and continues to indicate that the subscription is approved and ready within the current lifecycle.

Status Descriptions
-------------------

|     **Status**     |                                                            **Description**                                                             |
|--------------------|----------------------------------------------------------------------------------------------------------------------------------------|
| **PENDING_REVIEW** | One or more submitted URLs are being validated or awaiting required security approval.                                                 |
| **BLOCKED**        | One or more URLs were rejected or identified as unsafe or non-compliant. The subscription cannot proceed until the URL(s) are updated. |
| **INACTIVE**       | All required approvals are complete, and the subscription is ready under the existing activation flow.                                 |

**How the New Process Works** {#webhooks-urls_section_hnx_jdt_1jc}
------------------------------------------------------------------

1. A webhook subscription is created or updated.

2. Submitted URLs are checked against existing approval records.

3. New or unknown URLs are evaluated through automated validation.

4. If additional review is required, the subscription status changes to **PENDING_REVIEW**.

5. If any URL is rejected or blocked, the subscription status changes to **BLOCKED**.

6. If all required URLs are approved, the subscription status changes to **INACTIVE**.
   {#webhooks-urls_ol_inx_jdt_1jc} In cases where a subscription status is change to **BLOCKED**, clients are expected to perform these tasks:

7. Review the affected endpoint(s).

8. Update the URL(s) to an acceptable endpoint.

9. Resubmit the subscription for processing.
   {#webhooks-urls_ul_lnx_jdt_1jc}

**For New Subscriptions** {#webhooks-urls_section_mnx_jdt_1jc}
--------------------------------------------------------------

New webhook-related URLs may go through validation and, if necessary, security review before the subscription can proceed.

**Why We Are Making This Change** {#webhooks-urls_section_pnx_jdt_1jc}
----------------------------------------------------------------------

This enhancement is designed to:

* **Reduce security risk** by preventing outbound calls to unapproved endpoints.
* **Improve compliance** through stronger review and approval controls.
* **Increase transparency** with clearer client-visible statuses.
* **Support scale** through a standardized and repeatable validation process.
  {#webhooks-urls_ul_qnx_jdt_1jc}

Message-Level Encryption Upcoming Mandate {#announcement-mle}
=============================================================

An updated version of message-level encryption (MLE) will become mandatory in order for merchants to use the APIs. Portfolio owners must enable this updated version of MLE for their merchants by **March 2027**.  
This required MLE update encrypts all data in your API response messages. The previous version of MLE encrypted only request messages. If your merchants are already using custom JSON Web Token messaging, they must also update how their system constructs JWTs. **Merchants who are using HTTP signature messaging must migrate their system to JWT messaging.**

> You risk transaction failures if you do not implement this MLE update.

Overview of MLE
---------------

MLE is a robust security protocol designed to encrypt individual messages or payloads at the application layer. By protecting sensitive data at the message level, MLE ensures that your information remains secure as it moves through systems and networks, providing a layer of security beyond traditional transport encryption.  
Enabling MLE requires you to create a REST API key for request messages and a *REST -- API Response MLE* key for response messages. If your organization is using a meta key, the portfolio account or merchant account user who created the meta key must also create the REST -- API Response MLE key.

Update Methods
:
* Create or update your custom MLE integration using JWTs with P12 certificates. For more information, see the [Enable Message-Level Encryption](https://developer.cybersource.com/docs/cybs/en-us/platform/developer/all/rest/rest-getting-started/restgs-jwt-message-intro/restgs-mle-intro.md "") section in the *Getting Started with REST Developer Guide*. For a method using shared secret key pairs, see the HTTP Messaging Migration to JWT Messaging section below.
* Update your REST API SDK. For more information, see the *REST API related products* section in the [Cybersource GitHub](https://github.com/CyberSource "").

JSON Web Token Construction Update
----------------------------------

There are new requirements for how to construct JSON Web Tokens (JWTs) in order to send API request messages. If you use a custom integration to construct JWTs, you must update your system to remain compliant. This update is necessary to support the new MLE requirements.

Update Methods
:
* See [Construct JWT Messages Using a P12 Certificate](https://developer.cybersource.com/docs/cybs/en-us/platform/developer/all/rest/rest-getting-started/restgs-jwt-message-intro/restgs-jwt-const-intro.md "") in the *Getting Started with REST Developer Guide*
* See [Construct JWT Messages Using a Shared Secret Key Pair](https://developer.cybersource.com/docs/cybs/en-us/platform/developer/all/rest/rest-getting-started/restgs-jwt-shared-secret-intro/restgs-jwt-con-shared-secret-intro.md "") in the *Getting Started with REST Developer Guide*

HTTP Messaging Migration to JWT Messaging
-----------------------------------------

By **March 2027** , all merchants using HTTP signature messaging must migrate to JWT messaging in order to support MLE. Merchants already using HTTP signature messaging with shared secret key pairs can now continue using their existing keys with JWT messaging.

Update Method
:
* See [Construct JWT Messages Using a Shared Secret Key Pair](https://developer.cybersource.com/docs/cybs/en-us/platform/developer/all/rest/rest-getting-started/restgs-jwt-shared-secret-intro.md "") in the *Getting Started with REST Developer Guide*
{#announcement-mle_ul_mkf_nff_1kc}

Secure Acceptance Sunset {#secure-acceptance-sunset}
====================================================

Secure Acceptance is being sunset as part of a move toward modern, web-based payment acceptance solutions. The target date for merchants to complete migration from Secure Acceptance is September 30, 2026. If you have already begun migrating off Secure Acceptance and expect to complete the move by this date, disregard this message.  
Unified Checkout is available as the recommended migration path. It provides a low-code payment acceptance experience with support for expanded payment options and integrated services.  
For more details about this change and guidance on how to migrate, see this knowledge base article: [Secure Acceptance Sunset (KA-11531)](https://support.visaacceptance.com/knowledgebase/Knowledgearticle/?code=KA-11531 "").  
Review your migration plans and take the necessary steps to move off Secure Acceptance before the deadline. If you need assistance, contact your Visa representative.

Network Routing Architecture Update {#network-routing-ip-migration}
===================================================================

Cybersource endpoints will be migrated from the current routing model to a new architecture using updated IP subnet ranges.  
This enhancement is designed to improve the performance, resiliency, and reliability of transaction delivery over the Internet. It will also enable seamless transaction routing across multiple Visa data centers, supporting more consistent and reliable transaction processing.  
**Cybersource Endpoints and IP Addresses Included**  
Current Application and endpoints:  
**CAS/Test** : `apitest.cybersource.com` (current IP address: `66.185.182.49`)  
**Production** : `api.cybersource.com` (current IP address: `66.185.182.149`)  
**Potential Impact**  
Clients who connect to the REST API endpoints listed above using Domain Name System (DNS) are not expecting to experience any impact. DNS records will be updated automatically to use the new routing architecture.  
Clients whose networks are configured to allowlist IP addresses or who have hardcoded IP addresses will likely be impacted. These clients must update their proxy or firewall settings to include the new Visa IP address ranges.  
There are no changes to TLS/SSL certificates or supported ciphers as part of this migration. However, Cybersource continues to recommend trusting the root TLS certificates for all secure endpoints.  
**Migration Timeline**  
**CAS/Test**: October 15, 2026  
**Production**: January 31, 2027  
**Now Available**  
This technology is now available in both the test and production environments through these domains:  
**CAS/Test** : `apitest.visaacceptance.com`  
**Production** : `api.visaacceptance.com`  
Deploying in the CAS/Test Environment provides a safe environment to test and validate access. Once testing is complete, you may migrate production processing anytime thereafter.  
**How to Adopt This Change**  
To use the new routing architecture, your firewall, or your commerce platform provider's firewall, must be configured to permit outbound traffic to the Visa cloud.  
This large, dynamic IP address space represents a significant change from current access configurations. Therefore, it is critically important to test firewall configurations and confirm that connections are successful before migrating production traffic.  
Clients who require IP address allowlists may use one of the following options.  
**Option 1**: Add these specific subnet ranges to your allowlist:

* `198.217.128.0/17`
* `198.241.128.0/17`
* `66.185.176.0/20`

**Option 2**: Add these generic subnet ranges to your allowlist:

* `198.241.206.0/24`
* `198.241.207.0/24`

Transaction Search Performance Update {#trans_search_perform_update}
====================================================================

We are aware of an intermittent issue that impacts transaction search performance. The search functions in our APIs and Business Center are served from a shared search platform that is used by all Transaction Management module customers. An issue can occur when there is an unusually high search activity, which places a heavy load on the shared search service. We applied traffic controls to reduce the impact and are rolling out additional safeguards to prevent recurrence.
This issue does not impact payment processing transactions.  
To improve transaction search performance and provide more consistent response times, transaction search platform is being updated for requests that use multiple search identifiers. As part of this enhancement, searches that include multiple identifiers will support up to 15 identifiers per request. Merchants whose integrations currently submit larger batches should update their systems to divide searches into smaller requests.

Merchant Impact
---------------

* You might occasionally experience slower response times or timeouts.
* For API integrators, an HTTP `429` response, often indicates that there are too many request responses on Transaction Search, Case Search, or the Find Similar Transactions feature, particularly for large, broad, or long-date-range searches.

Recommended Actions
-------------------

* Keep multi-value lookups to 15 identifiers or less per search.
* Use the narrowest date range that answers your question. A period of 7 days or less is recommended for interactive transaction searches.
* Break large bulk lookups into smaller batches instead of using one large combined search.
* Avoid broad wildcard searches, especially searches that use a short prefix and an asterisk (\*).
* If a search is slow or times out, wait a moment before retrying instead of retrying immediately.
* For API integrators:
  * Limit each request to 15 or fewer identifiers.
  * Use the narrowest date range your job needs.
  * Implement back off on timeouts or errors instead of not tight-loop retries.
  * If you receive a `429` response, honor any Retry-After value and reduce your request rate and batch size rather than immediately retrying.
* If your workflow requires a large multi-identifier or long-date-range search on a recurring basis, contact your support or account team so it can be reviewed for the batch and export path or an appropriate exception.

Recommended Next Step
---------------------

Review your search and integration patterns and adhere to the guidance provided in the ***Transaction Management Best Practices*** section below.

Best Practices for Implementing Searches {#trans_search_perform_update_best-practices}
--------------------------------------------------------------------------------------

These best practices apply to searches you implement using the Transaction Search API, Case Search, API and the Business Center. Following the practices below will help keep your searches and detail lookups fast and reliable.

General Guidance
:
* Keep multi-value lookups to 15 identifiers or less per search. For example, reference numbers, request IDs, or account numbers. For larger lookups, use another method instead of one very large interactive request.
* Use the narrowest date range that answers your question. Use 7 days or less for interactive transaction searches.
* Break large bulk lookups into smaller batches. For example, implement several searches of less than or equal to 15 identifiers and less than or equal to 7 days instead of implementing one combined search that spans many identifiers and a long date range.
* Retry failed or slow searches manually, using a short pause, instead of immediately re-running the identical search in an automated loop.

Practices to Avoid
:
* Do not implement broad wildacard searches. These searches scan a large portion of the search index and are the most resource-intensive type of search.
* The following wildcard validation rules now apply:
* Leading wildcard searches are no longer accepted.
* Wildcard searches must contain a minimum of three characters preceding the wildcard character (\*).  
The following examples demonstrate the accepted and unsupported wildcard formats.  
Unsupported Wildcard Formats:
* \*ABC
* A\*
* AB\*
* 12\*

        Accepted Wildcard Formats:
        * ABC\*
        * ABCD\*
        * 123\*




    * Avoid combining a large number of identifiers with a long date range in the same search. Cost increases roughly with identifiers multiplied by a date range, so a search that is fine on its own can be expensive when both are large together.
    * Avoid automated rapid-retry on a timeout. An identical search that timed out will typically time out again if re-run immediately, which adds load on the service without improving results.

API Searches: Request Shape
:
* Cap each request to 15 or fewer identifiers when using multi-value lookups. If your integration currently sends larger batches, split them into multiple smaller requests.
* Use an end-of-day reconciliation or bulk report instead of paging through many large interactive search calls.
* Use the narrowest date range your job actually needs. Recurring jobs that request a wide window are a common source of avoidable load.
* Avoid wildcard or short-prefix values in identifier fields. Search for an exact full value when it is available.

API Searches: Retry and Error Handling
:
* Implement a back off retry instead of tight-loop retry. If a request times out or errors, wait before retrying, and increase the wait time on repeated failures (exponential back off).
* If you receive a `429` (rate limited) response, treat it as a signal to slow down, not a bug to route around. Honor any Retry-After value if present, and reduce your request rate/batch size rather than retrying immediately or in parallel.
* Cap your retry attempts for a given request. For example, 3 to 5 attempts with increasing back off retries and alert/log instead of retrying indefinitely.
* Watch for repeated identical requests from your own systems. A scheduled job that re-issues the exact same search on every run because a prior run did not complete can create a sustained load without your team realizing it. Add job-level locking or de-duplication search so a stopped run does not stack up.

Business Center Searches
:
* **Transaction Search:** search on a specific field (order number, request ID, reference number) instead of a broad free-text and keyword term when possible. Keep the date range to 7 days or less.
* **Quick Search:** use a reasonably narrow date range rather than the widest default. If you manage multiple sub-accounts under a parent account, searching from the specific sub-account instead of searching from the top-level parent view when you know what account from which the transaction belongs.
* **Bulk Export and Reporting:** if you need a large number of transactions or cases, use the Business Center report feature to pull the full set at once instead of repeatedly re-running and paging through search results. If a search is slow or times out, wait a moment and retry once instead of repeatedly clicking search or refresh in quick succession.

Features Introduced This Week {#rn-features}
============================================

**Boarding Page updates for the Chase Paymentech Processor \| RM-45908**
------------------------------------------------------------------------

Description
:
Boarding page enhancements provide greater flexibility for merchants using the Chase Paymentech processor, improving setup options.

Audience
:
Portfolio users onboarding merchants using the Chase Paymentech processor.

Technical Details
:
Portfolio users can now access an additional terminalIds section on the Boarding Page when onboarding merchants for the Chase Paymentech processor with acceptanceType set to CardPresent or Both.

Important Dates
:
Released on September 10, 2026

Fixed Issues {#rn-fixed-issues}
===============================

Known Issues {#rn-known-issues}
===============================

**Payments** \| EPS-42357
-------------------------

Description
:
Some clients that use a payment facilitator ID (aggregator ID) through Visa Platform Connect might notice a data integrity mismatch between the authorization and clearing messages. Cybersource does not populate the payment facilitator ID in the outgoing authorization request, though the field populates correctly in the clearing message.

Audience
:
Clients that use a payment facilitator ID (aggregator ID) through Visa Platform Connect.

Technical Details
:
The authorization request does not return an error; the payment facilitator ID field is left empty.

Workaround
:
None.

**Decision Manager** \| EPS-42523
---------------------------------

Description
:
When a client uses the Boarding API to enable Decision Manager and assign a Token Management Service ID for Decision Manager Hierarchy, the request might return an HTTP 422 error. The Decision Manager subscription succeeds, but the Decision Manager Hierarchy configuration fails hierarchy-group validation, leaving the boarding request in a partial state.

Audience
:
Portfolio merchant IDs that use the Boarding API to enable Decision Manager and Decision Manager Hierarchy.

Technical Details
:
The response returns the error message **configuration.request.invalid**.

Workaround
:
Contact Cybersource to have the merchant manually assigned to Decision Manager Hierarchy in the Business Center.

**Payer Authentication** \| EPS-42544
-------------------------------------

Description
:
When a merchant receives a declined payer authentication setup response, for example when the card is expired, the response returns an incorrect value in the **status** field. The field returns a numeric code instead of the expected text value, such as **COMPLETED**.

Audience
:
All merchants that use Payer Authentication.

Technical Details
:
The **status** field in the payer authentication setup response returns a numeric code instead of a text value. Cybersource has always returned this status as a numeric code, so changing the field to a text value might break existing merchant integrations that rely on the numeric format.

Workaround
:
Use the **errorInformation.reason** and **errorInformation.message** fields for more detail instead of relying only on the status code.

**Webhooks** \| EPS-42913
-------------------------

Description
:
When a suspended webhook subscription passes a health check, the platform is expected to automatically reactivate the webhook and update its status to active. In some cases, the status update does not save successfully, so the webhook might repeatedly appear suspended even though the health check succeeded. This issue occurs in backend processing and is not related to endpoint connectivity or certificate issues.

Audience
:
All merchants and portfolios that use webhook subscriptions.

Technical Details
:
None.

Workaround
:
Keep the webhook endpoint available and responsive so that health checks continue to succeed.
