Skip to main content
Upcoming features

Accept online card payments, allow users to edit their phone number, and more!
Check out Swan's public roadmap to see what's in the works. πŸš€

Upcoming breaking changes

πŸ”Ž Starting on December 4th, we're removing the user.idVerified field. Please start using the new field user.identificationsLevels.expert.

🧭 On January 8th, we're adding three new values to the DocumentReasonCode Enum to handle more reasons for capital deposit document refusal: ComplianceReason, InvalidDepositBankName, and MissingCompanyProviderRegisterExtract.

🚫 On January 20th, we’re removing the filters from the following resources: accountMemberships.firstName, accountMemberships.lastName, accountMemberships.email, accountHolders.firstName, accountHolders.lastName, onboardings.email, users.firstName, and users.lastName.

🌍 On January 30th, accountCountry will become a mandatory input for the following mutations: onboardCompanyAccountHolder, onboardIndividualAccountHolder, and createCapitalDepositCase.

πŸͺͺ Starting on January 30th, the idVerified scope in authorization URL parameters won't be supported anymore. Instead, use the identificationLevel parameter.

Β· 2 min read

New features​

πŸ‘₯ Invite account members without a phone number for certain membership permissions. Instead, use verified email to invite account members who prefer not to use their personal phone number for professional purposes.

πŸͺͺ We added a new identification level for authorization links, Auto. With Auto, Swan automatically guides users to the correct identification process for their situation. We recommend choosing Auto instead of a specific process when constructing your OAuth URLs. Make sure to include either the OnboardingId or the AccountMembershipId in your URL.

Improvements​

πŸ’³ We improved transaction visibility for cardholders without the canViewAccount membership permission. They can now view their own card transactions.

πŸ‘₯ We improved account membership visibility for account members who have the canManageAccountMembership membership permission, but not canViewAccount. They can now view a list of account members.

🌐 Finnish is now a supported account language and account membership language, with a few exceptions. You can update the account language with the updateAccount mutation, and the account membership language with the updateAccountMembership mutation.

πŸ”Ž Starting on December 2nd, API search queries will allow for similarity and full-text search. They won't be sensitive to case or accents anymore. This update only applies to search, not other filters.

API updates​

Upcoming breaking changes​

🧭 On January 8th, we're adding three new values to the DocumentReasonCode Enum to handle more reasons for capital deposit document refusal: ComplianceReason, InvalidDepositBankName, and MissingCompanyProviderRegisterExtract.

🚫 On January 20th, we’re removing the filters from the following resources: accountMemberships.firstName, accountMemberships.lastName, accountMemberships.email, accountHolders.firstName, accountHolders.lastName, onboardings.email, users.firstName, and users.lastName.

🌍 On January 30th, accountCountry will become a mandatory input for the following mutations: onboardCompanyAccountHolder, onboardIndividualAccountHolder, and createCapitalDepositCase.

πŸͺͺ Starting on January 30th, the idVerified scope in authorization URL parameters won't be supported anymore. Instead, use the identificationLevel parameter.

Β· One min read

New feature​

πŸ€–Β Try AI on docs.swan.io for faster, comprehensive answers from the Documentation, API Reference, and Support Center. Ask questions in any language and receive an answer with direct links to relevant sections make sure you're never lost.

Screenshot of docs.swan.io homepage with AI open

Improvements​

πŸ’³Β  We upgraded the design and quality of our standard black cards with silver ink, recycled plastic, a sleek matte finish, and added particles to minimize scratches.

Upcoming breaking change​

⚠️ Starting on November 28th, we’ll start enforcing two required fields for ultimate beneficial owners (UBO)β€”directΒ andΒ indirectβ€”for the mutations onboardCompanyAccountHolder and createCapitalDepositCase.

Β· One min read

New features​

πŸ”— Send an account closure link to the account's legal representative, which they can use to request the closure of their account. Get the link from the account's page on your Dashboard.

πŸ“„ Transaction statements, which act as confirmation that a transaction was initiated, are now available on your Dashboard and from Swan's Web Banking interface.

Upcoming breaking change​

🌍 Starting October 31st, Monaco will no longer be accepted for account holder residency. Swan account holders must reside in the European Economic Area; refer to Swan's country coverage for the full list.

Β· One min read

New features​

🎨 We updated your Dashboard interface for capital deposit documents to improve readability and provide easier access to information.

πŸ’³ The transaction reason code enum InvalidSecurityNumber is back by popular demand. We previously deprecated it, but we reversed our decision following your feedback.

Upcoming breaking changes​

β›” In 2 months, we're removing the user.idVerified field. Please start using the new field user.identificationsLevels.expert.

ℹ️ In 4 weeks, the cardDetails.Card field will no longer be mandatory.

Β· One min read

New features​

πŸ“„ Generate transaction statements with the API to prove a transaction was executed by Swan. Today, the mutation works for incoming and outgoing Booked SEPA and Instant SEPA Credit Transfers. Up next, we'll make the feature available on your Dashboard and in Swan's Web Banking, as well as for other transaction types.

πŸ‘₯ Add trusted beneficiaries with the API and Web Banking to facilitate credit transfers. Account members can send credit transfers to beneficiaries according to their membership permissions. This provides an extra layer of security, reducing the risk of sending transfers to unintended recipients.

Breaking change​

ℹ️ As announced on August 29th, we implemented a webhook subscription limit. In order to avoid overconsumption, you're now restricted to 10 subscriptions per Sandbox event and 5 subscriptions per Live event.

Β· One min read

New features​

πŸ“₯ Provide transaction supporting documents with the API. Build your own communication flow between you and your users to request documents justifying a transaction ID, then submit the requested documents to Swan with the API. Also, you can subscribe to the SupportingDocumentCollection.Updated webhook to learn when a document is requested by Swan for a transaction ID. If you choose not to implement the API feature, you'll continue to use the current email process.

πŸ“¨ Proactively share supporting documents when initiating an transaction with the API. To bypass potential requests for supporting documents, you can attach a supporting document to a transaction proactively when initiating the transaction with the API. In that case, if a document is required at a later stage, Swan won't need to contact the user to provide it.

Breaking change​

ℹ️ As announced on November 30th and July 19th, we removed the user > identificationStatus. Instead, use the identificationLevels booleans.

Upcoming breaking changes​

πŸ“ƒ In 4 weeks, we're adding a new value to the SupportingDocumentPurpose enum: CompanyFormationRegistration.

Β· 2 min read

New features​

πŸ“₯ You can now export the user and onboarding data available on the Dashboard in .csv format, either from your Dashboard or with the API by calling the exportUserData and exportOnboardingData mutations. More data will be available to export soon.

Improvements​

πŸ“ˆ The Insights tab on the Dashboard has been updated to include the Accounts funded step in the Onboarding funnel. You can now access a detailed conversion rate of account holders that have opened and funded their accounts.

πŸ“Š We’ve added two new graphs to the transactions data within your Dashboard's Insights tab. We now display the total volume of incoming and outgoing transactions by payment method.

🚌 Payment Control now allows you to filter transactions related to transportation expenses. Use the TransactionTransportType field, which mirrors the Transit Transaction Type Indicator shared from Mastercard.

Breaking changes​

ℹ️ As announced on July 19th, the onboardingUrl parameter of our onboarding object is now set to null when an onboarding is finalized.

Upcoming breaking changes​

⚠️ In the coming weeks, we'll introduce an additional permission to initiate a credit transfer to an unsaved beneficiary, meaning not previously added as a trusted beneficiary.

  • From October 21st, account members must have both canInitiatePayment and canManageBeneficiary permissions to initiate a credit transfer to an unsaved beneficiary.
  • Swan will grant existing account members with canInitiatePayment with the canManageBeneficiary on October 21st.

Please ensure that new account members, created after October 21st, have both permissions to initiate a credit transfer to an unsaved beneficiary.

Β· 2 min read

Improvements​

πŸ‘€ In order to reduce user binding errors when adding account memberships, we now consider the account member's birthLastName. If it matches their lastName, we won't raise a lastNameMatchError.

🧭 Enriched transaction information is now available for all card transactions, including those from the start of Swan. When available, detailed merchant and transaction data can be accessed through the API, Dashboard, and Web Banking.

πŸ“„ Get information about supporting documents related to onboarding and account holder verification from your Dashboard. We also revamped the document collection portal.

πŸ‘― Access and change the Sandbox user you're impersonating when using Web Banking in the Sandbox environment.

Breaking changes​

πŸ’³ As announced on August 1st, we now use additional issued card rejection reason codes: CanceledByCardHolder, DigitalCardDeactivated, DigitalCardEnrollmentInvalid, DigitalCardRefusal, DigitalCardSuspended, DigitalCardTokenInvalid, InPersonTransactionsNotAuthorized, MagstripeNotSupported, MerchantNotFound, PeriodTransactionNumberLimitExceeded, PinRequired, and ThreeDsError.

Upcoming breaking changes​

πŸ”’ In 4 weeks, we're introducing a webhook subscription limit. In order to avoid overconsumption caused by too many subscriptions to the same event, you'll be restricted to 10 subscriptions per Sandbox event and 5 subscriptions per Live event.

⚠️ In 4 weeks, we're adding a new value to the SupportingDocumentPurpose Enum: PepDeclaration.

β›” In 8 weeks, if you call the API with a user access token attributed to a Blocked user, it will be rejected.

Β· One min read

Improvements​

βœ–οΈ Partners can cancel a capital deposit case in the early stages of a case with the API mutation cancelCapitalDepositCase.

πŸ›Ÿ We updated the Swan Support Center to better serve your users and operational support teams. The redesign brings a sleek, user-friendly interface and clear architecture, simplifying navigation. New articles are available in eight languages, and we're working on delivering even more optimized content. The support request form has also been enhanced for quicker issue resolution.

Use the Swan Support Center either by sharing links directly or by using the content to inspire your own support articles.

Upcoming breaking changes​

πŸ’³ In 4 weeks, we'll start using some new, additional, issued card rejection reason codes: CanceledByCardHolder, DigitalCardDeactivated, DigitalCardEnrollmentInvalid, DigitalCardRefusal, DigitalCardSuspended, DigitalCardTokenInvalid, InPersonTransactionsNotAuthorized, MagstripeNotSupported, MerchantNotFound, PeriodTransactionNumberLimitExceeded, PinRequired, and ThreeDsError.

Β· One min read

New feature​

↩️ You can now request a refund for outgoing SEPA Direct Debits. A new returnTransaction mutation allows your users to request a refund on SepaDirectDebitOut and InternalDirectDebitOut transactions with a Booked status following the SEPA rules. Refund through API will be available only for direct debits created after the 12 June 2024.

Breaking changes​

ℹ️ As announced on March 15th, the Ultimate Beneficial Owner's (UBO) residency country (individualUltimateBeneficialOwners > residencyAddress > country) is now mandatory in our onboarding API.

🌐 As announced on June 21st, only AccountLanguage enum values for language are accepted in the onboarding object.

Upcoming breaking changes​

πŸ“ƒ In 4 weeks, we're deprecating the SupportingDocumentStatus > downloadUrl field in the supporting document collection process.

πŸ” In 4 weeks, we'll set the onboardingUrl parameter of our onboarding object to null when an onboarding is finalized.

πŸ” We added a new value to the SupportingDocumentCollectMode enum: EndCustomerCcPartner. We'll start to use it in 4 weeks.

πŸͺͺ In 2 months, we're finally removing the user > identificationStatus field. We announced its deprecation on November 30th, and it's replaced with the identificationLevels booleans and identification collection.