Skip to main content
Coming up

Beneficiary management for credit transfers, accepting online card payments, and more!
Check out Swan's public roadmap to see what's in the works. πŸš€

Β· 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.

Β· 2 min read

New features​

πŸ’³ Our first cards are reaching expiration in 2024. Therefore, we deployed an automatic renewal process so virtual and physical cards renew automatically before they expire. Your cardholders can update their delivery address for the new physical card if needed.

Users can now choose their PIN when printing a physical card. To allow this for your cardholders, set the new choosePin boolean to true. Allowing cardholders to choose their PIN will reduce friction to use their physical card, therefore driving more transactions.

Improvements​

πŸ”Ž In 1 week, we're generating Bank Details documents for all accounts created before 16 November 2023, which weren't available automatically when we launched this feature. Subscribe to the Account.Updated webhook to synchronize your system if necessary.

🌐 Choose and update the account membership language, used for the invitation email and when ordering and using cards.

  • By default, the new AccountMembership.language inherits the Account.language chosen during onboarding.
  • The available languages are: Dutch nl, English en, French fr, German de, Italian it, Portuguese pt, and Spanish es.
  • Finnish fi isn't supported for the account membership language yet.
  • If you're subscribed to the AccountMembership.Updated webhook, you'll receive a webhook notification when AccountMembership.language is live.
  • If you've already used the updateAccountMembership mutation to choose the language for an account membership, the language won't change with this update.

Upcoming breaking changes​

⚠️ In 4 weeks, we're adding new values to the SupportingDocumentPurpose and SupportingDocumentType enums.

  • SupportingDocumentPurpose enum: PersonalIncome, PersonalSavings, Investment, Donation, Inheritance, RealEstateIncome, GamblingPrizeWinnings, Trade, CompanyTreasury, and CompanyObligations
  • SupportingDocumentType enum: WinningsCertificate and Invoice

Β· One min read

New​

🀝🏾 Visit the new Swan Trust Center to learn how Swan keeps you, your users, and Swan secure. Understand security measures in depth, review policies, and find answers to frequent security questions.

Improvements​

πŸ”Ž Search account holders by account holder ID on your Dashboard > Data > Account holders. You will need to enter the full account holder ID.

πŸ”€ To ensure the best identification experience for your users, set the identificationLevel to Auto when constructing your authorization URL. This lets Swan choose the best flow for your user's situation. Using Auto is ideal if you include the onboardingId in the authorization URL, or if you're trying to reengage your user to complete identification.

Breaking changes​

⚠️ As announced on May 24th, the notStarted identification status was removed. Instead, use Started to streamline identification flows and reduce confusion.
Nothing changed for account holder verification statuses.

Β· One min read

Improvements​

βœ–οΈ Cancel Upcoming Instant SEPA Credit Transfers (SepaInstantCreditTransferOut) from your Dashboard.

πŸ–ŠοΈ Check returns now have a specific returnReason. These reasons can be tested using the simulateIncomingCheckReturn mutation with the reasonCode field.

πŸ™…πŸΎ Check why a capital deposit document was refused from your Dashboard > Data > Capital deposits.

πŸ”Ž Search accounts by account ID on your Dashboard > Data > Accounts. You will need to enter the full account ID.

πŸ’³ Issued card transaction types CardOutDebit, CardOutDebitReversal, CardOutCredit, and CardOutCreditReversal are now received and created 3 times per day (previously 1 time per day). This will improve user experience and positively impact performance.

πŸ“± We added a second SMS/text message provider. Sending text messages will automatically switch between the two providers in case of an outage.

Upcoming breaking changes​

πŸ’₯ Reminder: on July 15th, the Ultimate Beneficial Owner's (UBO) residency country (individualUltimateBeneficialOwners.residencyAddress.country) becomes mandatory in our onboarding API.

🌐 In 4 weeks, only AccountLanguage enum values for language will be accepted in the onboarding object. Previously, this field was a string and accepted other values. Please take this into account to avoid any breaking changes.

Β· One min read

Improvements​

πŸ“± Deactivate users who aren't using Swan anymore. This way, their phone number can be reused for a different user.

🌐 In about 2 weeks, you'll be able to choose and update the preferred language for account memberships, which is used for the invitation email and when ordering and using cards.

  • By default, the new AccountMembership.language inherits the Account.language chosen during onboarding.
  • The available languages are: Dutch nl, English en, French fr, German de, Italian it, Portuguese pt, and Spanish es.
  • Finnish fi won't be supported for the account membership language yet.
  • If you're subscribed to the AccountMembership.Updated webhook, you'll receive a webhook notification when AccountMembership.language is live.
  • If you've already used the updateAccountMembership mutation to choose the language for an account membership, it won't change with this update.

Β· One min read

New features​

πŸͺ You can now manage webhooks automatically with the API. Use the API to create webhooks dynamically, retry failed events automatically, and keep track of webhook delivery.

Improvements​

⏸️ When an account is suspended or reactivated, we now trigger an Account.Updated webhook notification.

πŸ“ƒ If a KBIS document for a newly-created company is refused at the end of a French capital deposit process, you can now upload a new one and we'll process it again.

Upcoming breaking changes​

πŸͺͺ In 4 weeks, we will deprecate the notStarted identification status and replace it with Started to streamline identification flows and reduce confusion.

πŸ’³ In 4 weeks, we will start using the new following issued card rejection reason codes: ThreeDsError, PeriodTransactionNumberLimitExceeded, MissingExpirationDate, MissingPin, DigitalWalletDeactivated, DigitalWalletEnrolmentInvalid, DigitalWalletTokenInvalid, DigitalWalletRefusal, DigitalWalletSuspended, InvalidAmount, and CardholderCancellation. The new rejection reasons are available in Sandbox using the Event Simulator.

Β· One min read

Improvements​

πŸ’° We're supporting additional fees to provide a more flexible billing solution for our partners. This will allow further customization of our standard fee list, facilitating extra revenue generation. You can check our public documentation for further details.

πŸ” Access the returnReason when receiving a return transaction for returned SEPA Credit Transfers and reversed SEPA Direct Debits.

βœ… Get better visibility about your account holders' ongoing verification processes by going to Dashboard > Data > Account holders.

Upcoming breaking changes​

πŸ’³ For naming consistency, we deprecated choosePINCode in the printPhysicalCard mutation and made it optional. In the coming weeks, choose PINs for your cardholders by using the new optional field choosePin.

⚠️ The list of documentReasonCode for a Refused capital deposit document has been expanded with nine new values. They'll take effect in 4 weeks.