๐
Set card spending limits based on calendar periods (resetting monthly on the 1st, weekly on Monday, or daily at midnight) instead of rolling periods. Calendar-based limits make it easier for finance teams to control budgets by calendar month, week, or day. Configure calendar limits using the new mode field in SpendingLimitInput with options for daily, weekly, or monthly calendar recurrence.
Card insurance, Belgian IBANs, and more! Check out Swan's public roadmap to see what's in the works. ๐
โ ๏ธ Upcoming breaking changes
โ ๏ธ On January 23, 2026, the following fields will be removed from the accountStatement and accountStatements queries and from the generateAccountStatement mutation response:
feesis replaced byfeeCreditsandfeeDebits.statusis replaced by thestatusInfoobject.- The statement download
url, previously in thetypeobject, is now only instatusInfo.
๐งน On February 5, 2026, the deprecated status field will be removed from the CapitalDepositCase object. Use the statusInfo field (introduced October 23, 2025) instead. The statusInfo field provides more granular status updates including WaitingForInitialRequirements, PendingInternalReview, and WaitingForAdditionalInformation.
15 January 2026
New featuresโ
๐ Subscribe to email notifications directly from the Changelog to stay informed about API updates and breaking changes.
Improvementsโ
๐ The generateTransactionStatement mutation now works for incoming and outgoing Booked International Credit Transfers. Use it to prove a transaction was executed by Swan.
API updatesโ
Upcoming breaking changesโ
๐ Starting January 19, a new accountId field is available as an optional parameter in internationalBeneficiaryDynamicForms. It becomes mandatory on March 31, 2026. Update your integration during this period to ensure continued support for international credit transfer queries.
Remindersโ
๐ On April 1, 2026, the following fields will be removed from the accountStatement and Account.statements queries and from the generateAccountStatement mutation response:
feeswill be replaced byfeeCreditsandfeeDebits.statuswill be replaced by thestatusInfoobject.- The statement download
url, previously in thetypeobject, will only be available instatusInfo.
18 December 2025
New featuresโ
๐งญ We're releasing a preview of the documentation for our new onboarding API. Built to strengthen risk assessment and regulatory compliance through improved data collection, it also delivers a better developer experience with cleaner mutations and queries, structured inputs, and typed responses. Full launch is planned for Q1 2026.
Improvementsโ
๐ The Insights tab on your Dashboard now includes new visualizations:
- Capital deposits: New data improving visibility on iteration time for internal reviews.
- Support: New dedicated section tracking support tickets, categorization, and SLAs.
Important updateโ
๐ฉ Following an incident during activation of the new white-labelled email notifications announced on December 4, we rolled back to the previous account opening notifications within an hour. The December 18 breaking change for account membership invitations is also postponed.
We plan to activate all new white-labelled notifications in January 2026 with two weeks' notice. You'll be able to test them in Production Sandbox beforehand.
Affected notifications:
- Your account terms and conditions.
- First transfer.
- Request supporting documents.
- Request supporting documents reminders.
- Your account is opened.
- Join your banking space.
4 December 2025
New featuresโ
๐ค Swan's new MCP (Model Context Protocol) servers give AI assistants direct access to Swan's GraphQL schema and documentation. Use them with Claude Desktop, Claude Code, or Cursor to generate accurate queries and get answers about the API.
Improvementsโ
๐ Your users can now upload merchant profile supporting documents directly in Web Banking. Retrieve the upload link from supportingDocumentCollectionUrl in the SupportingDocumentCollection object and share it with them.
๐ฉ Account opening email notifications have been rebranded to support your project's branding (logo, accent colors):
- Account onboarding: Your account terms and conditions.
- Account holder verification: First transfer, Request supporting documents, Request supporting documents reminders, Your account is opened.
Your current configuration has been applied automatically to avoid disruptions. Swan can configure some of these notifications on your behalf; submit a request if you're interested.
๐ The Insights tab on your Dashboard now includes new visualizations:
- Capital deposits: New section tracking deposit status, total lead time, and step duration.
- KYC multi-touch lead time: New graph tracking total verification time for complex cases. The "One-touch vs. multi-touch" graph now focuses on completed processes, with iterations simplified to match service level agreements ("Within 9 hours" vs. "More than 9 hours").
Coming soon: Support operations graphs.
API updatesโ
Upcoming breaking changesโ
๐ก๏ธ Starting December 18, we're introducing stricter input validation for several mutations to improve security and error handling. The following fields now enforce specific formats, returning a ValidationRejection for invalid values:
| Mutation | Field | Required format |
|---|---|---|
addVirtualIbanEntry | accountId | Valid UUID |
disableAccountMembership | accountMembershipId | Valid UUID |
resumeAccountMembership | accountMembershipId | Valid UUID |
resumeAccountMembership | consentRedirectUrl | Valid URL |
๐ฉ Starting December 18, the account membership invitation notification will be rebranded with your project's branding (logo, accent colors). If you use a forked version of Web Banking, fetch and deploy the latest version from Swan's repository to continue receiving Swan-sent invitation emails.
6 November 2025
Improvementsโ
โ
The beneficiary name field in the verifyBeneficiary mutation now enforces a maximum length of 70 characters for SEPA beneficiaries and Swan accounts. This matches the maximum length supported for SEPA Credit Transfer initiations, preventing rejections during the payment flow.
๐ณ Recurring SingleUseVirtualCard instances now remain active when their cardholder's account membership is disabled. When that happens, the card automatically reassigns to the account's legal representative, ensuring uninterrupted recurring expenses.
Updatesโ
๐ Starting December 1, Swan Support will no longer manually register SEPA Direct Debit B2B mandates. You can now:
- Share a SEPA Direct Debit B2B mandate registration link directly with your users.
- Embed the registration link in your application.
- Use Swan's API to manage mandate registration programmatically.
API updatesโ
Upcoming breaking changesโ
๐งน Starting December 1, the deprecated companyInfoBySiren query will be removed. Company information can now be retrieved directly during onboarding creation and updates, eliminating the need for separate queries.
๐งน On February 5, 2026, the deprecated status field will be removed from the CapitalDepositCase object. Migrate to the statusInfo field, which was introduced on October 23. This provides more granular status updates, including WaitingForInitialRequirements, PendingInternalReview, and WaitingForAdditionalInformation.
23 October 2025
Improvementsโ
We've made improvements to capital deposits to give you better visibility into case progress and more flexibility to correct information without restarting the process.
๐ We improved granular status tracking for capital deposit cases by introducing the statusInfo field in the CapitalDepositCase object. This field provides more detailed status updates and replaces the generic WaitingForRequirements status with three clear stages:
WaitingForInitialRequirements: Shareholder verification, fund transfers, document uploads, and company onboarding are pending.PendingInternalReview: Swan is reviewing submitted information and documents.WaitingForAdditionalInformation: Swan has requested corrections or additional details.
The existing status field remains available but is deprecated. We recommend migrating to statusInfo for more detailed status information, though you can adopt it at your own pace without breaking your integration. The Dashboard continues to display the status label.
๐ฐ You can now correct shareholder deposit amounts with the updateCapitalDepositShareholderAmount mutation. Requirements:
- Capital deposit case status is
WaitingForInitialRequirements,PendingInternalReview, orWaitingForAdditionalInformation. Also supports the deprecatedWaitingForRequirementsstatus. - Shareholder status is
PendingOnboarding,WaitingForVerification, orWaitingForTransfer.
Updating an amount automatically recalculates the total capital deposit.
๐ฌ You can now correct company details linked to capital deposits with the updateCapitalDepositCompany mutation. This lets you update the company name and postal address. Requirements:
- Capital deposit case status is
WaitingForInitialRequirements,PendingInternalReview, orWaitingForAdditionalInformation. Also supports the deprecatedWaitingForRequirementsstatus. - Company onboarding is
Finalized.
Updates sync automatically across both the capital deposit case and the associated account holder.
๐ Account statements now feature a more refined structure, clearer field names, and precise status tracking.
- New
Voidedstatus: We've added the Voided status to mark incorrect statements. When a statement is voided, a corrected version automatically regenerates with identical characteristics (format, language, dates). ThestatusInfoobject reflects this new status. - Refined fee fields: The
feesfield is now split intofeeCredits(sum of credit fee transactions) andfeeDebits(sum of debit fee transactions). - Clearer format naming: The
typefield is now renamed toformat. - New webhook:
AccountStatement.Voidednow triggers when a statement is marked asVoided.
API updatesโ
Upcoming breaking changesโ
๐งน On December 1, the deprecated totalCapitalDepositAmount field will be removed from the CreateCapitalDepositCaseInput object. Instead, specify each shareholder's deposit amount in the individualShareholders and companyShareholders arrays. Swan automatically calculates the total. The calculated total remains available in the CapitalDepositCase response.
โ ๏ธ Starting January 23, 2026, the following fields will be removed from the accountStatement and accountStatements queries and from the generateAccountStatement mutation response:
feesis replaced byfeeCreditsandfeeDebits.statusis replaced by thestatusInfoobject.- The statement download
url, previously in thetypeobject, is now only instatusInfo.
9 October 2025
Improvementsโ
๐ญ To improve data quality for physical card orders, we now use a regex to enforce better formatting of the postalCode field in physical addresses.
API updatesโ
Upcoming breaking changesโ
๐ Starting November 12:
- The
onboarding(id: ID!)query may returnnullwhen no onboarding exists for the given ID, instead of always returning anOnboardingobject. - The following deprecated fields will be removed:
verificationFlowfrom theOnboardingInfoobject.redirectUrlfrom both theOnboardingandOnboardingInfoobjects. It has been replaced by theoauthRedirectParametersobject.titlefrom the Ultimate Beneficial Owner (UBO) object. It has been replaced by thegenderfield.onboardingStatefrom theOnboardingInfoobject.
๐ธ On October 19, we will introduce the following updates to the initiateCreditTransfers endpoint to improve its usability and clarity:
- The
saveparameter now defaults tofalse. - The
modeparameter is now a required field. The default value is set toRegular. - The
isMyOwnIbanandbeneficiaryIdinput fields have been removed. - The API now returns a
ValidationRejectionerror instead ofForbiddenRejectionwhen an input contains invalid data.
Updatesโ
โ๏ธ Starting October 31, the taxIdentificationNumber will be a mandatory field at onboarding when an account holder's residency country does not match the accountCountry. This is to comply with CRS (Common Reporting Standard) regulations.
25 September 2025
New featuresโ
๐ฆ With Multiple Accounts, company account holders can create additional accounts without repeating onboarding or Know Your Business (KYB) processes.
Improvementsโ
๐ We've added LaPosteTracked as a new shipping method for international card deliveries. This gives cardholders outside of France a reliable way to track their card's delivery from our printing hub.
๐ We've made it easier to reconcile payments by allowing you to use structured and unstructured formats for invoice references in transactions. For SEPA Credit Transfers, use the labelType field to choose the reference standard and the label field for the value. When you retrieve transaction data, this value will be in the transaction.label. You can also specify the ogmVcs type for Belgian OGM VCS references.
Verification of Payee (VoP) updatesโ
โ ๏ธ The following updates are currently available in our Sandbox environment and will be released to the Live environment on October 9.
๐ธ initiateCreditTransfers endpoint updatesโ
- We'll automatically verify the beneficiary's details and display the results on the consent screen for single SEPA Credit Transfers without a
beneficiaryVerificationTokenin theinitiateCreditTransferscall. - You can now include a
beneficiaryVerificationTokenwhen initiating a credit transfer instead of providing full beneficiary details. Account membership rights remain the same as those described in beneficiaries permissions when using tokens. - A new
beneficiaryVerificationResultsfield has been added toInitiateCreditTransfersSuccessPayload.
๐
scheduleStandingOrder endpoint updatesโ
- When calling the
scheduleStandingOrdermutation, we'll automatically verify the beneficiary's details and display the results in the consent screen. - A new
beneficiaryVerificationResultfield has been added to theScheduleStandingOrderSuccessPayload.
๐ You can now retrieve the beneficiaryVerificationResult using the transaction, transactions, standingOrder, and TrustedBeneficiary queries.
VoP rolloutโ
๐ฅ Starting October 5, we'll automatically handle all incoming VoP requests from other Payment Service Providers (PSPs). Beneficiary details will be verified, and the result will be returned to the PSP before funds are transferred into a Swan account. No action is required from you.
๐ On October 9, company accounts will be opted out of VoP for bulk credit transfers by default, while individual accounts will be opted in. You can change the setting for bulk transfers with the updateAccountSettings mutation, once the verifyBeneficiary mutation is implemented.
๐ก On October 9, the verifyBeneficiary mutation will be available to verify beneficiary details before initiating credit transfers. Use the save parameter to add a trusted beneficiary when the returned token successfully initiates the credit transfer.
๐ฉ On October 19, the save parameter of the verifyBeneficiary mutation will default to false.
Upcoming breaking changesโ
๐ Starting October 9, the initiateCreditTransfers mutation will return a new rejection reason if the BeneficiaryVerificationToken was already used to initiate another credit transfer.
โ๏ธ Starting October 31, the beneficiaryVerification query will be deprecated. Use the verifyBeneficiary mutation instead to ensure uninterrupted service.
18 September 2025
Improvementsโ
๐ Improvements to merchant profiles and merchant payment methods, and the requestMerchantProfile and requestMerchantProfileUpdate mutations:
-
The Testing APIs
simulateMerchantProfileRequestOutcomeandsimulateMerchantPaymentMethodRequestOutcomemutations now support the newWaitingForInformationstatus and return a list ofverificationRequirements. -
A new optional field
expectedMerchantProfileAdditionalInformationis now available at theprojectInfolevel. This field allows you to customize information collected for merchant profiles when configured as part of your merchant feature approval process.The information can then be provided using the
additionalInformationfield in merchant profiles and in therequestMerchantProfileandrequestMerchantProfileUpdatemutations. -
The
invoiceExamplefield has been deprecated. -
The
expectedMonthlyPaymentVolume,merchantWebsite,socialNetwork,supportWebsite, andtermsAndConditionsfields are being deprecated. -
We've deprecated the
rejectReasonsfield and replaced it withrejectionReasons.
API updatesโ
Upcoming breaking changesโ
๐ก Starting October 9, bulk SEPA Credit Transfers from individual account holders will be rejected if verification tokens aren't included in the payment initiation. You must either implement the verifyBeneficiary mutation (recommended) or restrict bulk credit transfer access to company accounts only. This change applies to both Live and Sandbox environments.
๐ณ On October 16, the CardUrl field will be removed. Use cardMaskedNumber, expiryDate, and cardDesignUrl instead.
๐ On October 16, the following merchant onboarding and payment methods breaking changes will take effect:
- A new
WaitingForInformationstatus andverificationRequirementslist will be available to show missing information on merchant profiles and payment methods. Submit the required information using therequestMerchantProfileorrequestMerchantProfileUpdatemutations. - A new
supportingDocumentCollectionsfield will also be available at the merchant profile level for providing required documents. - The
invoiceExample,expectedMonthlyPaymentVolume,merchantWebsite,socialNetwork,supportWebsite,termsAndConditionswill be removed. UseexpectedMonthlyMerchantProcessingVolume,merchantWebsiteUrl,socialNetworkUrl,supportWebsiteUrl, andtermsAndConditionsUrlinstead. rejectReasonswill be removed for card payment methods.rejectionReasonsforRejectedmerchant profiles and merchant payment methods will become mandatory in Testing APIssimulateMerchantProfileRequestOutcomeandsimulateMerchantPaymentMethodRequestOutcome.- Dynamic rolling reserve changes and maximum payment amount limits will be introduced at the merchant payment method level to mitigate risk. Subscribe to the
MerchantPaymentMethod.CreatedandMerchantPaymentMethod.Updatedwebhooks for these updates.
๐ธ Effective October 19, we're introducing updates to the initiateCreditTransfers endpoint to improve its usability and clarity:
- The
saveparameter will default tofalse. - The
modeparameter will be a required field. The default value is set toRegular. - The
isMyOwnIbanandbeneficiaryIdinput fields will be removed. - The API will return a
ValidationRejectionerror instead ofForbiddenRejectionwhen an input contains invalid data.
Updateโ
๐งญ Starting October 21, card-issuing spending limits will be aggregated at the hour level.
To calculate card spending limits, each payment is recorded at the start of the hour. The rolling period resets every hour.
This change applies to cards with daily, weekly, and monthly spending limit periods.
3 September 2025
New featuresโ
๐ Get a head start on what's next. We've added a Preview section to our documentation, giving you early access to our features. Use these previews to plan your future roadmap. Note that functionality may change before the official release.
Improvementsโ
โน๏ธ You can now cancel merchant SEPA Direct Debit payments using the cancelMerchantPayment mutation.
Refer to the availableToCancel balance to check if a specific payment can be canceled.
๐ Use the isCancelable field to verify whether scheduled account funding transactions are eligible for cancellation.
API updatesโ
Upcoming breaking changesโ
๐ Starting October 1, we're removing the paymentId field from the initiateSepaDirectDebitMerchantPayment mutation.
Instead, retrieve the ID from the merchantPayment field, which now returns the Merchant Payment object.
We're also deprecating the paymentId field.
โ๏ธ Starting October 31, the taxIdentificationNumber will be a mandatory field at onboarding when an account holder's residency country does not match the accountCountry. This is to comply with CRS (Common Reporting Standard) regulations.
For example, Spanish residents opening French accounts will need to provide their tax identification number.