Applications API Now In Beta
The Applications API is now available in beta to support real-time workflows for lending and overdraft products. This API lets you submit underwriting decisions — approved, declined, or canceled — in real time, as an alternative to the file-based application workflow. It’s also compatible with existing credit use-cases. For example, you can submit Applications via API even if you plan to use files to report Balances and Transactions.Why this mattersThe file-based workflow surfaces validation errors via Slack notification, 5–10 minutes after submission. The Applications API returns errors synchronously — you know immediately whether your data is valid. For lending use-cases, it also works in tandem with the Subledger Balances and Funding APIs: Lead wants to ensure you are capturing loan application data compliantly before you instruct Lead to originate a loan. The API is also compatible with credit use-cases (e.g., credit cards) more broadly.Approved applications return anapplication_id, which you’ll use to create an Account. Accounts are the next step in the lending sequence and an Account API is coming soon.Functionality- Submit approved, declined, or canceled applications
- Retrieve applications by ID
- Retrieve all account holders and authorized signers associated with an application
Instant Payments & International Wires
Here’s what you need to plan for to take advantage of these new products.Instant Payments
Our first offering of instant payments will be FedNow — giving you the ability to send and receive payments in ~20 seconds, 24x7x365.Available NowTimeline- API GA: End of April
- Critical Deadline of April 30: When we enable instant payments at the end of April, incoming payments that previously used other rails may “rail hop” to FedNow.
- Important: Lead will auto-reject incoming instant payments if a partner is not yet configured to receive them.
- Recommendation: To avoid these missed payments and business disruptions, we strongly recommend all partners be prepared to receive incoming instant payments by this date.
International Wires
Outgoing USD wires (via intermediaries)We’ll support the ability to send USD wires to foreign financial institutions (reach depends on correspondent relationships).Two workflow options:- Provide your own intermediary by including it directly in the wire request
- Use our intermediary lookup and we’ll populate the appropriate U.S. correspondent for you
- Updated API Preview: March
- Sandbox: Early April
- API GA: End of April
Refreshed Documentation
We’ve made a significant investment in improving our documentation — and this refresh is just the first step. Our goal is to deliver clearer, more comprehensive, and more useful docs that continue to evolve alongside our products.What’s new in this release:- AI-powered search: Ask questions in plain English and get relevant answers instantly — going beyond simple keyword matches.
- Changelog RSS feed: Subscribe once and stay up to date on product and documentation changes.
- Faster load times: Pages now load significantly quicker, so you can get what you need without waiting.
- Improved navigation and structure: Find the right guide or reference with fewer clicks.
Updated Slack Alerts for File Validations
We’re improving the format and clarity of our file validation alerts in Slack to make issues easier to understand and resolve. This update affects message content only — there are no changes to validation logic or alert timing.What’s new- Standardized Format: Alerts now include clear Error Code, Detail, and Action sections.
- Program Visibility: Each alert specifies the affected program, helping you managing multiple programs.
- Actionable Guidance: Messages provide concrete steps to fix the issue and resubmit the file.
- Documentation Links: Alerts include links to relevant docs for faster troubleshooting.
New Payment Controls at the Account Number Level
You should be able to fully manage ACH, Wires, and Internal Transfers without contacting your bank partner. That’s why we’ve built powerful payment controls directly into our API — giving you the precision to block or allow transactions at the account number level.Here’s how it worksConfigure the controls through the create or update Account number API.- To determine if incoming ACH credit is accepted, use
accept_credit. - To determine if incoming ACH debit is accepted, use
accept_debit.
counterparty_filter (accept_all, reject_all, allowlist_only) and counterparty_account_numbers_allowlist determine which counterparties are allowed to send or receive payments.Default behaviorIf no controls are configured, we default to accept_credit=true, accept_debit=true, and counterparty_filter=accept_all, maintaining the current permissive behavior.Start using the new controls todayIf you’re currently relying on our team to return unexpected payments, it’s time to make the switch. By integrating with our APIs, you can automatically block transactions on specific accounts, reducing operational friction and ensuring funds don’t land where they shouldn’t.Save time, reduce risk, and streamline your payment operations — all while avoiding manual returns.Get started with the Account Number API today.New Originator Endpoint for ACH Transactions
We’ve introduced a neworiginator endpoint that gives you more control and flexibility when originating ACH payments. You can now manage multiple ACH Company IDs under a single bank account, making payments more clearly identifiable to your end users.What’s new- Configure ACH Company IDs, names, and other Nacha details directly through the new endpoint
- Send payments from a single bank account while using multiple company IDs
- Improve brand visibility and transparency for end users
- If you originate under a single Company ID:
- No changes are required. Lead will automatically handle setup. The only difference you’ll see is that an
originator_idwill now appear on theaccount_numberobject in API responses.
- No changes are required. Lead will automatically handle setup. The only difference you’ll see is that an
- If you originate under multiple Company IDs:
- You’ll be granted access to the new originator APIs. Once enabled, you can create and manage originators and associate them with your end users’ account numbers as needed.
Removal of Single-Character Last Name Validation for Entity API and Customer Files
Lead will no longer reject entities with single-character last names at the point of entry. There will no longer be a manual review process for Lead’s team to conduct additional due diligence on all individuals with single character last names.This change removes a validation restriction to improve the onboarding experience for legitimate users. This update is particularly beneficial for partners serving international customer bases where single-character last names are more common.What this means for API and file-based workflowsAPI Requests (POST and PATCH) and Customer File Uploads for entities with single-character last names will no longer be rejected by this specific validation. Requests that would have previously failed will now be accepted. No manual review submissions via file uploads for entities with single character last names will be required.This is a nonbreaking change as it removes a restriction; it does not introduce a new requirement.Validation Behavior| Previous Validation | New Validation |
|---|---|
| Entities with single-character last names were rejected at the point of entry. | Entities with single-character last names are accepted at the point of entry. Note: Partners continue to have the business expectation to provide valid last names that match KYC / identification documents. |
Settlement Amount Calculations
We’ve clarified our documentation and examples in Settlement Amount guide to accurately reflect how Lead has been calculating the SOFR rate for receivables during the hold period by adding the following note:- When applicable, the SOFR rate is set based on the rate published on the last business day of the month prior to the loan’s origination date. This rate remains fixed for the entire hold period, even if the hold period spans multiple months.
Updates to the Outstanding Credit Balance Payment Attribution
We’ve improved how payments are attributed to outstanding credit balances to ensure greater accuracy and consistency. This new method can help reduce your imputed interest charges.What’s changed- Refunds and disputes are now applied directly to the original transaction on a first-in, first-out (FIFO) basis.
- This clears the oldest outstanding balances first, leading to a more precise calculation of your credit balance and potential interest savings.
KYC Data Requirements For Non-US Authorized Users
Lead no longer requires full KYC to be complete for Non-US Authorized Users. Non-US Authorized User data requirements now match those of US entities.What this means for API and file-based workflows- API Requests (POST and PATCH) and Customer File Uploads that specify the intended role of
authorized userwill succeed as long as first name, last name, and contact information for theindividualentity is provided in the request. - You may now use an Entity ID for all Authorized User use-cases as long as you have provided a first name, last name, and contact information for the
individualentity.
status: active for the authorized_user role in the role_details property of a Lead Entity, in POST and PATCH responses as well as GET entity requests.Requirements| Previous Requirements | New Requirements |
|---|---|
| - First name - Last name - Contact method (email or phone number) - If not a US entity1, require full KYC2 1. An entity is a US entity if they have a US tax identification number 2. Full KYC: Name, date of birth (applies to individual entity only), physical address, and government verified ID | - First name - Last name - Contact method (email or phone number) |
Slack Integration Maintenance Completed
The scheduled maintenance for our Slack integration has been successfully completed, and all related services have been restored.The maintenance window occurred today, Sunday, September 7, 2025, from 7:00am to 9:00am ET. Our integration is now fully operational.- Team Availability: Our team is once again available and reachable via our shared Slack channels.
- Automated Alerts: Automated Slack alerts indicating successful or failed file processing outcomes are now generating as normal for all files uploaded after 9:00am ET.
Entity & Customers File Timestamp Precision
Previously, Lead’s Entity API and Customers’ file truncated timestamps to rounded-down second-precision. For example, a request with the timestamp of2025-02-10T17:22:34.0001Zwas stored by Lead, returned in GET requests, and used for Lead’s business validations, with a value of 2025-02-10T17:22:34.0000Z.Moving forward, all timestamps submitted by partners for customer/entity records will be persisted with the precision up to nanosecond.Existing timestamps stored in Lead will remain truncated.Before this change- POST/upload entity 1:
- Request:
2025-02-10T17:22:34.0001Z - Response:
2025-02-10T17:22:34.0000Z
- Request:
- GET entity 1
- Response:
2025-02-10T17:22:34.0000Z
- Response:
- GET entity 1
- Response:
2025-02-10T17:22:34.0000Z
- Response:
- POST/upload entity 2:
- Request:
2025-03-10T17:22:34.0001Z - Response:
2025-03-10T17:22:34.0001Z
- Request:
- GET entity 2:
- Response:
2025-03-10T17:22:34.0001Z
- Response:
Documentation Updates
We’ve made a few clarifications to our documentation:- Transactions Update File Schema
- Clarified which combinations of transaction and transfer types are permitted to have an updated settlement date
- Added additional description to clarify the purpose of the file and when it should be used
Updated Iconography for Slack Alerts
We’re changing our iconography for Slack alerts to ensure consistency and make it easier to quickly recognize the type of message you’re receiving.- 🔴 Error: a required file or action failed and needs your attention
- 🟡 Warning: something looks off, but may not block processing
- 🟢 Success: the file successfully processed or action completed
Documentation Updates
We’ve made a few updates and clarifications to our documentation:- Accepted Currencies
- Removed ANG as an accepted currency. Please use XCG as the currency going forward
- Removed SLL as an accepted currency. Please use SLE as the currency going forward
- File Naming Convention
- Clarified that the file naming convention must be either a generation time (must be an epoch timestamp and not ISO 8601) or version number (v1, v2, etc.).
- Validation messages for Sales Request and Sales Response files
- We’ve improved Slack validation messages for financial file submissions. You’ll now get clearer step-by-step alerts that make it easier to track progress, spot issues, and follow up as needed.
- Here’s what’s new:
- Balance and Transaction File Submission: You’ll receive a success alert as soon as these files are received and pass initial validation.
- Sales Request Generation: Once we generate the expected sales for your submitted data, you’ll get a dedicated alert confirming this step.
- Sales Response Submission: After your sales response file is received and validated, you’ll see a final alert confirming its acceptance.
Platform Upgrades FAQs
Why we’re upgradingAs part of our continued investment in banking infrastructure, we’re upgrading our systems to improve performance, reliability, and scalability for our clients. This migration is a key component of that effort.Timeline
- October 15, 2025: Redirect all incoming ACH and Wires to the account numbers and routing numbers listed in the List of Accounts file sent to your Signatories and Trusted Points of Contact..
- October 15, 2025 - February 28, 2025: In this phase, we’ll move you to the new platform with a transition and execution plan tailored to your program. Although we don’t anticipate using the full window, we’ve provided a clear timeframe to guide expectations.
- March 2026: Upgrade complete.
New Accordion
New Accordion
What happens if we don’t update the routing number by October 15, 2025?
What happens if we don’t update the routing number by October 15, 2025?
Who do we contact if we accidentally sent a payment to the old routing number after October 15, 2025?
Who do we contact if we accidentally sent a payment to the old routing number after October 15, 2025?
Will outgoing wires, ACH, or check processing be affected?
Will outgoing wires, ACH, or check processing be affected?
Will we need to redirect the account and routing numbers again?
Will we need to redirect the account and routing numbers again?
Do we need to notify our counterparties about this change?
Do we need to notify our counterparties about this change?
Do we need to notify our end users about this change?
Do we need to notify our end users about this change?
What’s different about the new platform?
What’s different about the new platform?
- Increased uptime with minimal to no maintenance-related downtime
- A modernized online banking interface with enhanced controls and expanded functionality
- A streamlined account opening experience designed for speed and ease of use
Will I be able to turn on Positive Pay on the new platform?
Will I be able to turn on Positive Pay on the new platform?
Will I still receive emails for incoming wires?
Will I still receive emails for incoming wires?
What work will be required between October 15, 2025 - February 28, 2025?
What work will be required between October 15, 2025 - February 28, 2025?
Will there be changes to reporting?
Will there be changes to reporting?
Enforcement of ACH & Wire Limits
Effective date: September 15thWe’re transitioning from soft to hard limits for ACH and Wire payments. Payments that exceed configured limits will be rejected immediately at submission - rather than being flagged for manual review.What’s changing:Previously, payments that exceeded per-transaction or aggregate limits were allowed to proceed and were routed to our team for manual review. This often caused processing delays and required follow-up with your team to confirm next steps.Why this helps:This update gives you faster, more actionable feedback and reduces uncertainty:- Faster feedback: You’ll know instantly if a payment exceeds your limits - no more waiting for a manual review.
- Fewer delays: Immediate rejection lets you adjust and resubmit right away, keeping payment flows moving.
- More control: Limit issues are surfaced at the point of submission, so you can troubleshoot and resolve them without relying on intervention from Lead’s support team.
| Submission Method | Format | Details |
|---|---|---|
| API | API response body | ACH or wire payments that exceed the outgoing per-transaction limit will return a synchronous error in the API response body: JSON { "title": "Validation Error", "code": "per_transaction_limit_exceeded", "detail": "Entry would exceed per transaction limit. Current limit value: [LIMITVALUE].", "status": "422" } |
| API | ach.rejected or wire.rejected webhooks | ACH or wire payments that exceed the outgoing daily or rolling 30 day aggregate limit will trigger an asynchronous webhook containing the rejection reason aggregate_limit_exceeded. Full rejection details are available in the rejection hash: JSON "rejection": { "reason": "aggregate_limit_exceeded", "details": "Entry would exceed the aggregate limit. Current limit value [LIMITVALUE].", } |
| File upload | Full file rejection | If a submitted file contains entries that exceed ACH limits, the entire file will be rejected. An alert will be sent to your dedicated alerting Slack channel: Text Error Code: "aggregate_limit_exceeded" Description: "Entry would exceed the aggregate limit. Current limit value: [LIMITVALUE]." |
Docuentation Updates
We’ve made a few updates and clarifications to our documentation:- Balances
- For deposit programs with interest,
interest_accrued_balanceandinterest_accrued_balance_in_usdmust be at least the minimum number of decimal places required by the currency. For example, if thecurrencyis USD, value must be at least 2 decimals11.500.
- For deposit programs with interest,
- Transactions
- When the
transaction.type=interest_accrued,amountandamount_in_usdmust be at least the minimum number of decimal places required by the currency. For example, if thecurrencyis USD, value must be at least 2 decimals11.500.
- When the
- Clarified definitions for some transfer types
- no_money_movement
- out_of_bank_settlement
- Bank Reporting Overview
- Added clarification that daily balance and activity reports are comma delimited, while ACH cash recon reports are pipe delimited
Documentation Updates
We’ve made a few clarifications to our documentation:- Accepted Currencies
- Corrected MGA to have 2 decimals
- Added the following currencies: XCG, KPW, UYW, ZWG, SYP, IRR, VES, STD, CUP, CUC, LYD, MRU, CNH
Upcoming Validations & Adoption Deadlines
We’ve made a one-time adjustment to the rollout timeline for upcoming account number and entity validations.To give customers more implementation time, we’ve shifted our original enforcement dates slightly. This delay is not part of a broader trend - you should continue to expect that future deadlines for breaking changes will be firm.Your systems should be fully prepared to handle the new validations by the adoption deadlines listed below. After those dates, Lead will begin our own rollout, with at least 7 days’ notice before enforcement begins on our side.Each phase below outlines what’s changing, how to prepare, and what to expect when enforcement starts.Enforce Account Number Creation Rules
Enforce Account Number Creation Rules
- What’s changing:
- New account numbers must be associated with the
account_holderrole.
- New account numbers must be associated with the
- How to prepare:
- Use the Entity API to create all customer records.
- (Optional but recommended) Set
intended_roles: [“account_holder”]when creating the entity. This ensures the entity can create Account Numbers.
- What happens after:
Lead will begin rejecting:- Requests to link account numbers to entities without the
account_holderrole (returns a 422 Unprocessable Entity error).
- Requests to link account numbers to entities without the
Deactivate Account Numbers Linked to Invalid Entities
Deactivate Account Numbers Linked to Invalid Entities
- What’s changing:
- All existing account numbers must be linked to an entity that holds the
account_holderrole.
- All existing account numbers must be linked to an entity that holds the
- How to prepare:
- If not already shared, Lead will provide a list of entities who don’t pass current data validations or whose records Lead is unable to retrieve from an Account Number
- Use the PATCH endpoint to update these entities.
- (Optional but recommended) Set
intended_roles: [“account_holder”]when creating the entity. This ensures the entity can create Account Numbers.
- What happens after:
Lead will run a migration to deactivate account numbers that:- Aren’t linked to an entity
- Are linked to entities not eligible for the
account_holderrole
Incoming Wire Name Validation
Incoming Wire Name Validation
- What’s changing:
We’ll validate that the creditor name on incoming wires matches the name of the entity linked to the receiving account number. - How to prepare:
- Lead will share a list of incoming wires that would fail under the new validation.
- Review the list and notify end customers if needed.
- What happens after:
We’ll begin rejecting incoming wires if:- The linked entity is missing or invalid
- The beneficiary name doesn’t reasonably match the entity name
Examples Addded to Accounts File Schema
We’ve added an example and clarified the description of the expected contents of thedocuments field in the Accounts File Schema| Field | Description | Required | Data Type |
|---|---|---|---|
| documents | An array of JSON hashes of customer-facing documents. The JSON hash should reference any dynamic document that has been uploaded to the Documents folder or the consented version of a static document approved by Lead compliance, and include the document name/type, its client_document_name or document_id, its version, and its consent date. The required docs will be defined between the client and Lead bank during setup. | Required | Example- [{"document_id": "client_document_123", "type": "xyz_firm_privacy_notice", "consented_at": "2025-02-12T15:38:34.101-06:00", "version": "20220202"}] Note: JSON strings embedded in CSV fields must be enclosed in double quotes, with internal double quotes escaped by doubling them (""). Original: [{"id":1,"name":"Alice"},{"id":2,"name":"Bob"}] CSV-escaped: "[\{""id"":1,""name"":""Alice""},{""id"":2,""name"":""Bob""}]" For documents uploaded via SFTP, please input the full file name as document_id. The suggested naming convention is: <Date>__<AccountID><FileType><Version>.<FileExtension> |
Changes
- Updated and clarified the
typeof transactions accepted for Deposit and Credit - Deposit:
- Added
Reversedas a supportedactionfor the followingtype:charge_off,charge_off_recovery - Removed
Reversedas a supportedactionfor the typedisbursement
- Added
- Removed the following as a
typeof transaction:CancelledFeewithfee_typeofatm,overdraft,periodic_maintenance,other
- Credit:
- Added
Reversedas a supportedactionfor the followingtype:charge_off,charge_off_recovery
- Added
Documentation Updates
We’ve made a few clarifications to our documentation to enable a more seamless onboarding experience for partners, specifically:- Accepted Currencies: Added an Accepted Currencies to show which currencies and their corresponding number of decimals are accepted by Lead
- Balances File Schema: Clarified enum options for
repayment_details - Transactions File Schema: Clarified requirements for
merchant_stateandoriginal_transaction_id
New Payments Functionality
We’re making important updates to our payment infrastructure based on your feedback. These changes are designed to improve predictability and reduce manual effort - especially around ACH, wires, and file-based processing.Some of the updates will require action on your end. Without these changes, certain payment workflows may fail or behave unexpectedly.We know updates like these take time and effort. Thank you in advance for adapting - we’re confident the improvements will result in faster feedback, easier troubleshooting, and a more reliable developer experience.This update includes the following key elements:- Synchronous ACH API validation errors
Starting June 18, More validation failures will now return real time HTTP 422 error responses instead of asynchronous webhooks. - File-Based ACH validations
Starting June 18, Nacha files containing validation failures will be rejected in full. - Fixed cutoff times for ACH processing windows
Starting August 11, all ACH submission cutoffs will be enforced as hard deadlines (no best-effort processing). Additionally, the final same-day and next-day ACH submission cutoffs are moving earlier. - ISO 20022 Fedwire migration
Fedwire is transitioning to ISO 20022 format. Partners must be ready for new message structures and can transition to Wires V1 between July 3rd and July 10th. July 10th onwards all partners must be on Wires V1. - Previously announced: upcoming Q2 feature deadlines
Reminders for previously announced changes taking effect July 1st, including Entity requirements, Wire validation, and Internal Transfers V1.
Synchronous ACH API validation errors
Synchronous ACH API validation errors
- Ensure your systems are prepared to handle synchronous responses.
- Update error handling logic as needed based on the validations list here .
File-Based ACH validations
File-Based ACH validations
- Review the list of possible validation failures here and update your file generation process to avoid common errors.
- Ensure your team monitors your Slack channel and is prepared to correct and resubmit rejected files promptly.
Extended ACH processing windows and fixed cutoff times
Extended ACH processing windows and fixed cutoff times
- All three same-day ACH windows
- All six next-day ACH windows
- Same-day ACH cutoff: shifting from 3:15 PM CT to 2:00 PM CT
- Next-day ACH cutoff: shifting from 12:45 AM CT to 10:00 PM CT (prior day)
- Next-day returns cutoff: shifting from 12:45 AM CT to 10:00 PM CT (prior day)
Same-day ACH
| Lead’s Cutoff Deadline | Corresponding Fed Window Deadline | Settlement Time (at Counterparty’s Bank) | Effective Date |
|---|---|---|---|
| 09:00 AM CT | 09:30 AM CT | 12:00 PM CT (Same Business Day) | current day |
| 01:15 PM CT | 01:45 PM CT | 04:00 PM CT (Same Business Day) | current day |
| 02:00 PM CT | 03:45 PM CT | 05:00 PM CT (Same Business Day) | current day |
Next-day ACH
| Lead’s Cutoff Deadline | Corresponding Fed Window Deadline | Settlement Time (at Counterparty’s Bank) | Effective Date |
|---|---|---|---|
| 09:00 AM CT | 09:30 AM CT | 07:30 AM CT (Next Business Day) | next business day |
| 01:15 PM CT | 01:45 PM CT | 07:30 AM CT (Next Business Day) | next business day |
| 03:15 PM CT | 03:45 PM CT | 07:30 AM CT (Next Business Day) | next business day |
| 06:30 PM CT | 07:00 PM CT | 07:30 AM CT (Next Business Day) | next business day |
| 09:15 PM CT | 09:45 PM CT | 07:30 AM CT (Next Business Day) | next business day |
| 10:00 PM CT | 01:15 AM CT | 07:30 AM CT (Next Business Day) | next business day |
- Access more FedACH processing windows, giving you additional flexibility to meet customer needs
- Eliminate uncertainty from “best-effort” processing - align your submission workflows to a clear, reliable schedule, which is easier to manage and automate
- Review your submission schedules to ensure alignment with the new cutoffs.
ISO 20022 Fedwire migration
ISO 20022 Fedwire migration
| Date | Release milestone | Required Action(s) |
|---|---|---|
| June 13, 2025 | Wires V1 Sandbox go-live | Begin testing against the Wires V1 Sandbox APIs and webhooks. |
| July 3, 2025 | Wires V1 Production APIs and webhooks go-live | Partners are now able to begin migrating from V0 to V1 APIs in production. Please reach out to Lead when you’d like to migrate. |
| July 10, 2025 | Deadline for V0 to V1 migration | Partners must complete the migration from V0 to V1 by this date. |
| July 11, 2025 | Wires V0 Production APIs and webhooks deprecated | No required action. |
- Review and test in the Wires V1 sandbox in accordance with the updated API documentation and sample payloads (coming soon).
- Migrate to Wires V1 in production between July 3rd and July 10th. This version includes updated request formats and response fields designed to support ISO 20022 structure.
- Validate any internal systems that process webhook data or depend on wire message structure.
Previously Announced: upcoming Q2 feature deadlines
Previously Announced: upcoming Q2 feature deadlines
| Announcement | Summary | Effective Date |
|---|---|---|
| Entity Association Requirement for Account Number Activation | Active Account Numbers must be linked to an Entity with the account_holder role, or they will be deactivated. | July 1, 2025 |
| Validation of Beneficiary on Incoming Wires | The beneficiary name on incoming wires must match the name on the Entity that owns the Account Number to meet FinCrimes compliance. | July 1, 2025 |
| Internal Transfer v1 Release; Removal of v0 | V0 will be deprecated. Migrate to internal_transfer V1 for improved async behavior. | July 1, 2025 |
| New Controls Available on Account Numbers | You will be able to set optional ACH permissions on account numbers, including flags for credits, debits, and allowed counterparties. | Early Q3 |
Documentation Improvements
We’ve made a few clarifications to our documentation to enable a more seamless onboarding experience for partners, specifically:- SFTP Connectivity:
- Clarified that SFTP folders are auto-created upon initial upload of a file to the desired path.
- File Delivery Overview:
- Clarified that CSV files should be formatted with a pipe delimiter, and not with a comma or semicolon delimiter.
- Added recommendation that partners use an open source CSV parser to confirm that a CSV file is valid before submitting it to Lead for more streamlined processing.
- Clarified that all file header values are case-sensitive, and partners should refer to specific file schemas to ensure they are formatted accordingly.
- Customer File Schema:
- Added in an example E.123-formatted phone number that will pass Lead’s validation for easy reference.
- Applications File Schema:
- Clarified the requirements for the credit bureau data-related fields (
credit_pulled_at,credit_score, andcredit_report_source). These fields are only required if your program’s underwriting policy requires credit bureau data on all applications. This will be agreed upon with Lead’s Legal team during your implementation process.
- Clarified the requirements for the credit bureau data-related fields (
- Accounts File Schema:
- Clarified the requirements for the credit bureau data-related fields (
credit_pulled_at,credit_score, andcredit_report_source). These fields are only required if your program’s underwriting policy requires credit bureau data on all accounts. This will be agreed upon with Lead’s Legal team during your implementation process. - Added
otheras a valid enum forstatus_reason
- Clarified the requirements for the credit bureau data-related fields (
- Transactions File Schema:
- Clarified that
card_transaction_effective_atmust be excluded if thetransfer_typeis not card - Clarified that
card_networkmust be excluded if thetransfer_typeis not card. Addedtabapayas a valid enum
- Clarified that
- Balances File Schema
- Clarified the data type requirements for
interest_rateacross deposit and credit products
- Clarified the data type requirements for
- Cards File Schema
- Clarified that the
activated_atdatetime must also be before theexpiry_dateif theexpiry_datefield is present
- Clarified that the
- Non Posted Transactions File Schema
- Clarified that
amountis Currency decimal field - Updated the hyperlink for
transfer_type
- Clarified that
Open API Spect Now Available
Lead’s Open API spec is now fully available.Improvements to Transactions File Requirements
We’ve clarified in our documentation the requirements for including transfer types (transfer_type) in the Transactions File, specifically:- Which transaction types require an associated transfer type to be submitted
- For transaction types that require a transfer type, which transfer types are valid enums to be submitted
- For transaction types that do not require a transfer type, which transfer types are valid enums to be optionally submitted
Updated Data Schema Examples
In the Lead Data Schemas for Applications and Accounts , thedocuments property correctly had the description: “An array of JSON hash of customer-facing documents.” However, in the Data Type column, the table included an erroneous outer nested JSON that does not match Lead’s implementation. We’ve updated the examples in both data schemas to correctly reflect the expected object structure.Expected [<object>]Unexpected {"documents":[<object>]}This change was exclusively to the documentation and does not reflect any change in the system behavior.Q2 2025 Product Announcements
Action Recommended: Migrate to the New Entity API for Better Efficiency
Action Recommended: Migrate to the New Entity API for Better Efficiency
Summary
Lead has historically only supported file-based methods for partners to submit entity records (i.e., data about your end-users) that are required for program oversight. The most common way that this was done was by submitting daily “customer files”.In December 2024, we released an Entity API that is an improvement over file-based submission process with support for:- Real-time entity record creation, meaning downstream workflows (e.g., account number creation) that require the existence of an entity record are immediately enabled
- Error handling for issues such as formatting that can be surfaced for individual records instead of for large batches of records
- Robust role types, with an immediate response for whether submitted entity data meets the requirements for a given role
What’s changing
To provide you with the best experience and streamline onboarding to future product enhancements (e.g., real-time payments), we are focusing our development efforts for entity data submission on the Entity API. While we will continue to support file-based submissions, this channel will not be a focus area for further development.Who is impacted
All partners not yet taking advantage of the Entity API are strongly recommended to take the following actions.- For creating new
entityrecords: We recommend you begin using the Entity API. - For existing
entityrecords:- Depending on the customer file version and type of data you have been uploading, many of your existing records may already be accessible through the Entity API. Please use the Retrieve an Entity by Entity ID or Retrieve an Entity by Client Customer ID endpoints to check.
- If your records are not yet available via the API, you will need to resubmit them using the Entity API. To simplify this process, please include the original
client_customer_idin your API requests so that we can help track whichentityrecords have been successfully resubmitted. - Once resubmitted, use the Retrieve an Entity by Entity ID endpoint to confirm that the
role_details(e.g., account holder, authorized signer) are correct. If necessary, use the Update an Entity endpoint to resubmit data as needed. - Your Implementation Manager can provide a list of records that require resubmission.
When this will be released
The Entity API is available now. We advise reviewing our documentation and working with your Implementation Manager to plan your migration. Please note that migrating to the API will be required to utilize future features.New ACH Controls Available on Account Numbers
New ACH Controls Available on Account Numbers
Summary
We are enhancing the utility of ouraccount_number object to give you greater control over how money moves in and out of your accounts. With this update, you can programmatically set permissions that automatically allow or reject different types of incoming and outgoing transfers. This ensures that only authorized transactions occur, reducing operational risk and providing a more seamless way to manage funds. Whether you want to prevent unauthorized deposits, restrict outgoing payments, or fine-tune which counterparties can interact with your accounts, these new controls put you in charge of your money flows.What’s changing
Note that Lead considers the addition of optional fields to theaccount numberobject a backwards-compatible change.Once released, you will be able to create account_number objects with the following new controls. If these controls are set to false, Lead will automatically return transfers. For outgoing, you will receive a failure response via API.For Incoming and Outgoing ACH:- Allow ACH Credits –
true/false - Allow ACH Debits –
true/false - Allowed ACH counterparties
account_number functionality.ACH Defaults:- Allow incoming ACH (both credit and debit) –
true - Allow outgoing ACH (both credit and debit) –
false(unless your current program allows this behavior, in which case, we will map the controls to match your existing configuration) - Allowed ACH counterparties – permissive of all counterparties
Who is impacted
Any partner that is utilizing the Account Number API will have access to this enhanced functionality.When this will be released
Development is currently in progress for these features with a target release of end of Q2 2025. We will provide additional clarity on release date and a finalizedaccount_number object specification and updated documentation at least a month before the release.Entity Association Requirement for Account Number Activation (Effective July 1, 2025)
Entity Association Requirement for Account Number Activation (Effective July 1, 2025)
Summary
To enhance compliance and improve operational efficiency, we are implementing a new requirement foraccount number activation. Effective July 1, 2025, an active account number must have a properly associated entity object with an account_holder role set.What’s changing
Starting July 1, 2025 (Tuesday), account numbers that do not meet the entity association requirements will be automatically deactivated. This will prevent any payments (ACH, wires, etc.) from being processed for these accounts.Account number objects with a status of:Unassignedwill not be impacted.Activeand associated entities that meet account_holder role requirements will remain active.Activebut do not have associated entities that meet account_holder role requirements will be moved to an inactive status.Inactivewill not be impacted.Canceledwill not be impacted.
Who is impacted
This change affects partners who useaccount number objects for ACH and wire payments.If you are already using the Entity API to create entities and the Account Number API to associate entities with account numbers, your account numbers are likely already compliant. However, if you are creating entities using file submissions, you will need to verify compliance.To verify compliance, use the Retrieve an Entity by Entity ID or Retrieve an Entity by Client Customer ID endpoints and check the role_details for the account_holder role. If your entity objects do not have the account_holder role enabled, refer to the data requirements for additional data needed. Use the Update an Entity endpoint to resubmit any required data.When this will be released
- Monitoring: Throughout June, we will monitor account number compliance and reach out to partners with a significant number of non-compliant accounts. Early verification and remediation are strongly encouraged to avoid disruptions.
- Production: Account number deactivation will begin on July 1, 2025 (Tuesday).
Learn more
- To learn more about whether there is an
entity_idorclient_customer_idassociated with anaccount number, use the Retrieve an Account Number endpoint. - To learn more about whether an
entityhas theaccount_holderrole enabled, use the Retrieve an Entity by Entity ID or Retrieve an Entity by Client Customer ID endpoints. - To assign an
account numberto anentity_idorclient_customer_id, use the Assign an Account Number endpoint. - To update an
entityand modify the roles it has access to, use the Update an Entity endpoint.
Validation of Beneficiary on Incoming Wires (Effective July 1, 2025)
Validation of Beneficiary on Incoming Wires (Effective July 1, 2025)
Summary
In order to ensure compliance with FinCrimes and risk requirements, the beneficiary name stated on an incoming wire transfer (i.e., the individual or business that the wire sender says the funds are intended for) must match Lead’s records of the entity or customer associated with the account number to which the wire is sent. This is to ensure that inbound wires are only posted to the account of an intended recipient, and flagged for review in cases where the intended recipient differs from the account number’s associated entity. Typically, wire transfers with a name mismatch will be returned.What’s changing
On July 1, 2025 (Tuesday), Lead will begin enforcement of beneficiary names matching with the name of the individual or business associated with the account number.As an example, let’s say a counterparty financial institution sends an incoming wire to Lead account number123412341234 and the beneficiary name on the wire is Jane Smith. Lead will do a lookup of the entity_id or client_customer_id associated with that account number.- If the entity type is an individual, we will look for approximate matches to the first name and last name on file.
- If the entity type is a business or sole proprietorship, we will look for approximate matches to the business name, the “doing business as” name of the entity, beneficial owner(s) name, and/or the sole proprietor’s name
rejection.reason of beneficiary_name_mismatch, and you will receive a webhook notifying you of the wire.rejected event. In certain cases where the names are close, the Lead team may reach out to you for more information.Who is impacted
All partners usingaccount number objects to receive wires will be impacted by this change, and should ensure that customer data (specifically names) are fully up to date and complete. We strongly recommend the use of the Entity API for this purpose.When this will be released
- Monitoring: We will begin monitoring the impact of this enforcement in shadow mode in June to evaluate impact to rejection rates. We will reach out to individual partners with high match failures to partner on how to improve on match rates.
- Production: We will begin enforcing this validation on July 1, 2025 (Tuesday).
Learn more
- To learn more about which
entity_idorclient_customer_idis associated with an account number (and therefore which name we will check against), use the Retrieve an Account Number endpoint. - If you are an Entity API user: To learn more about the name-related data associated with an
entity_id, use the Retrieve an Entity by Entity ID endpoint. - If you are a partner uploading Customer Files: To learn more about the name-related data associated with a
client_customer_id, use the Retrieve an Entity by Client Customer ID endpoint.
ISO 20022 Wire v1 Preparation
ISO 20022 Wire v1 Preparation
Summary
On the July 14, 2025 (Monday) business day, Fedwire is planning on executing a one-time migration in message formats. Its current Fedwire Application Interface Manual (FAIM) spec will be deprecated in favor of the ISO 20022 spec (more information on its website here). This migration date was previously slated for March 10, 2025, but was pushed back to allow Fedwire participants more time to prepare. There is work required for both Lead and our partners to be prepared for this change.We recognize that this will require considerable bandwidth from your teams between early June and mid-July, and appreciate your understanding as we work together to navigate this one-time transition. In addition to the below, we will follow up with additional details closer to date.What’s changing
In preparation for this message format migration, we are planning to up-version the Wire API from v0 to v1. The core workflows for the wire product are not changing (i.e., retrieve, create, update, return, and cancel operations will remain the same), but we will be up-versioning thewire object to enable a seamless transition. Existing wire objects will continue to be available via the v1 API endpoints (retrieve, return, and cancel), and we will publish clear documentation to support you in mapping any data fields where changes have been made.Who is impacted
All live partners currently sending or receiving wires in production, and currently implementing partners that plan to use Lead to send or receive wires.When this will be released
- Early June: Lead will release v1 endpoints in Sandbox, allowing you to simulate wire workflows end-to-end utilizing the new v1
wireobject - By June 27, 2025 (Friday): Fedwire will make a go or no-go decision on whether the ISO 20022 migration will proceed on July 14
- If it is a “no-go” decision: Lead will continue to use the v0
wireobject in production until further notice. We may decide to release v1 on an opt-in basis depending on when Fedwire’s plans to execute on the migration. - If it is a “go” decision, by June 30, 2025 (Monday): Lead will release v1 endpoints in Production, allowing you to start working with the v1
wireobject in production on an opt-in basis. We will begin sending v1 webhooks after the first time you call a v1 endpoint. The v0 API endpoints will no longer be available after the July 14 Fedwire migration.
- If it is a “no-go” decision: Lead will continue to use the v0
Learn more
We are working on a specific guide to support our partners’ migration efforts – what you need to know about ISO, key dates, and v1 wire object documentation. These will be shared by early June.Internal Transfer v1 Release; Removal of v0 (Effective July 1, 2025)
Internal Transfer v1 Release; Removal of v0 (Effective July 1, 2025)
Summary
We have received feedback from Lead Partners that the current behavior of theinternal_transfer functionality is confusing. Transfers can be processed synchronously or asynchronously depending on different factors that are not easily predictable.To address this, we have released a new v1 version of our Internal Transfers API to ensure that the behavior is fully asynchronous and predictable. We are requesting that all partners using the Internal Transfers API migrate to v1 before July 1, 2025 (Tuesday).What’s changing
The new v1 version introduces two key enhancements over the existing functionality:- Fully Asynchronous Processing
- In v1, all internal transfer requests will be processed asynchronously, ensuring a consistent and predictable response pattern for our Partners.
- Detailed Rejection Information
- If a transfer is rejected, the response will include a
rejectionhash with details on the reason for rejection, allowing for easier troubleshooting and resubmission. - For example, if an
internal_transferis attempted with an amount greater than the available balance, the rejection response will indicatenon_sufficient_fundsand provide the available balance at the time of the request.
- If a transfer is rejected, the response will include a
processing. As we process the transfer, we will update you on the status change events via webhooks.Note that events and webhooks are changing between v0 (processing, succeeded, and failed) and /v1 (processing, posted, and rejected).Please see below to view the different webhooks you should expect between v0 and v1:| Version | Event | Description | Webhook |
|---|---|---|---|
| v0 | internal_transfer.processing | The Internal Transfer is being executed. | N |
| v0 | internal_transfer.succeeded | The Internal Transfer has succeeded. | Y |
| v0 | internal_transfer.failed | The Internal Transfer has failed. | Y |
| v1 | internal_transfer.processing | The Internal Transfer is being executed. | N |
| v1 | internal_transfer.posted | The Internal Transfer was completed and money has successfully moved from the sender_account_number_id to the receiver_account_number_id. | Y |
| v1 | internal_transfer.rejected | The Internal Transfer was not completed and will not be retried. Please see rejection.reason and rejection.details for more information. | Y |
posted or rejected).Who is impacted
This change impacts all partners using the Internal Transfers API. If you are currently using v0, you will need to migrate to v1 before the deprecation deadline and will begin receiving webhooks for v1 once you call the endpoints.When this will be released
Beginning July 1, 2025 (Tuesday), calls to the v0 Internal Transfers API endpoints will be rejected.The v1 Internal Transfers API is now available for adoption. You can review the v1 Internal Transfer API endpoints below:Updates to File Schemas
Lead released a **Draft Data Schema ** on February 9, 2025. This Data Schema is now Stable. The Changelog below reflects all changes made between the Draft publication and the current Stable Data Schema.- Applications
- removal of
available_credit_limit - removal of
interest_rateandover_draft_limit
- removal of
- Accounts
- removal of
status_updated_at - removal of
interest_rateandover_draft_limit - removal of
is_exception_approvalandexception_reason - change
scra_ended_atvalidation to be optional and may not be present ifis_scrais false - change
decision_reasontostatus_reason - change
client_application_idtoapplication_id - change
user_closedtoentity_closedunderstatus_reason - addition of
paid_off,charged_offandcanceledunderstatus_reason - update of
account_holdermin size of 1 - enhanced validation where
authorized usersfiles are required ifauthorized_useris greater than max size 10 - enhanced validation where
available_credit=credit_limit- sum ofbalances
- removal of
- Cards
- update to
expiry_dateformat toYYYY-MM-DDfromdatetime - update to
entity_idaccepting eitherclient_customer_idorentity_id - change
client_account_idtoaccount_id - change
client_customer_idtoentity_id - enhanced validation where
activated_atmust be prior toexpires_at - removal of
updated_at
- update to
- Authorized Users
- update to
entity_idaccepting eitherclient_customer_idorentity_id - change
client_customer_idtoentity_id
- update to
- Collaterals
- change
client_account_idtoaccount_id - change
client_application_idtoapplication_id - change
client_balance_idtobalance_id
- change
- Balances
- removal of
status_updated_at - removal of
is_revolving - removal of
non_finance_charge_amount - removal of
is_autopay - addition of
paid_off,charged_offandcanceledunderstatus_reason - addition of
dispute_balanceandcharge_off_balanceas required fields for deposit balance. - change
client_settlement_bank_idtoclient_settlement_bank_account_id - change
client_account_idtoaccount_id - change
user_closedtoentity_closedunderstatus_reason - enhancement of
requiredvalidations (e.g.expected_finance_charge_amountandrepayment_detailsare required ifexpected_maturity_dateis present) - enhancement of examples on Balance Reconciliation and Examples
amountwill affect all ofbalance,interest_accrued_amount,dispute_balance,charge_off_balancerewards_amountwill affectrewards_balancepast_due_balancedoes not reconcile against amount but just tracking credit balance that are past due
- removal of
- Transactions
- removal of
client_funding_ids - addition of
interest_amountfor deposit programs. - updated
typeacrosstype,fee_type,action,tranfer_type. - updated
rewards_amountandrewards_unitto be applicable to non-card programs - change
client_settlement_bank_idtoclient_settlement_bank_account_id - change
client_balance_idtobalance_id - change
client_card_idtocard_id - enhancement of
requiredvalidations (e.g. (i) for card transactions related fields, required ifcard_idis provided, (ii) for credit balances, required if balance_id type = credit)
- removal of
- Sales Request
- change
client_balance_idtobalance_id
- change
Upcoming API Enhancements
- ACH - we are enhancing how we communicate details about rejected ACHs. Beginning on 11/12/2024, Lead will include a new object named rejection in our ACH object. This field will contain a reason and corresponding details. This will allow clients to understand why an ACH was rejected without having to contact Lead. More details are below.
- Internal Transfers - we are developing a new version of our Internal Transfers API to make the behavior asynchronous. You will no longer have to manage retries on your own system, and we will also provide additional details about rejections should they happen. We will send an additional communication once we are closer to a release date.
ACH Rejections
rejection object| Field Name | Type | Description |
|---|---|---|
| reason | enum | Provides the reason code if this ACH is in rejected status. |
| details | string | A short, human-readable string with more details about why the ACH was rejected. |
Mapping
| account_number_not_active | Account number [ACCOUNTNUMBER] has non-active status: [STATUS]. |
|---|---|
| aggregate_limit_exceeded | Entry would exceed the aggregate limit. Current limit value [LIMITVALUE]. |
| beneficiary_account_number_unrecognized | Account number [ACCOUNTNUMBER] not recognized. |
| client_customer_not_present | Account number [ACCOUNTNUMBER] does not have a client customer ID or entity ID. |
| client_request | Please contact Lead for further details. |
| disallowed_counterparty | Counterparty is not allowed. |
| disallowed_sec_code | SEC code [SECCODE] is not permitted. |
| duplicate_entry | A duplicate entry was found [ACHID]. |
| entry_link_failed | Entry is a return or correction, but the associated parent entry could not be found. |
| invalid_format | Invalid format. Please contact Lead for details. |
| non_sufficient_funds | Insufficient funds. Balance result: [BALANCERESULT]. |
| ofac_rejection | Please contact Lead for further details. |
| per_transaction_limit_exceeded | Entry would exceed per transaction limit. Current limit value [LIMITVALUE]. |
| previously_corrected | A previous ACH to the same counterparty was corrected (correction id = [ACHID]). |
| processor_discretionary_decision | Please contact Lead for further details. |
| related_prenote_exception | ACH entry cannot be created within 3 banking days of a prenote’s settlement date. (prenote id = [ACHID]). |
| related_prenote_exception | Previous prenote to this counterparty (id = [ACHID]) was not accepted. |
| return_untimely | Return is not within the proper return timeframe. |
| reversal_rejection | Reversal rejected upon review. |
| unexpected_change_code | Unexpected change code: [CHANGECODE]. |
| unexpected_return_code | Unexpected return code: [RETURNCODE]. |
| unexpected_routing_number | Invalid routing number provided. |
API Changes
- We now enforce the NACHA same-day limit of $1,000,000 USD. For transactions above $1,000,000 USD you will need to set the
delivery_typetonext_business_day. - We have removed the
account{}hash from the ACH object. It’s been replaced by two new fields,account_id, andaccount_number_id. - The maximum length of the
idempotency-keyheader across the API has been set at 255 characters. - We have renamed
individual_identificationon the ACH object toindividual_id. This field is optional and, if set, contains any relevant ID number to allow the ACH counterparty to verify the sender. - We have renamed
related_informationtoadditional_information. This field is optional and, if set, will contain any additional information provided by the counterparty. Note: For outgoing ACHes, the counterparties bank is not required to share this information with the ACH recipient.

