Links

Changelog

Additions and updates to the Swan platform

Next steps

​
:rocket:
Spanish IBANs, PVID, SEPA direct debit for merchants, and many other great features are in the works. Check out our public roadmap to learn more.

1 June 2023

💲 When a transaction is processed in a currency other than euros €, this currency with the converted amount is now displayed on your Dashboard.
​
🔎
On the Dashboard Accounts page, we added a "fees" option to the payment product filter.
​
⚡
When an instant transfer is requested but can't be processed for any reason, we automatically execute a regular transfer instead. In the transaction history, users will see the method "transfer" instead of "instant transfer", and there will be an alert in the transaction details. This is only for Swan Web Banking.
⏲️ The Time-To-Live (TTL, auto-disconnection) from both our Dashboard and Web Banking platforms have been reduced.
  • Dashboard: reduced to 72 hours; the session will refresh every time an API call is sent.
  • Web Banking: reduced to 5 minutes; the session token will refresh as long as the Web Banking page stays open.
📱 We improved mobile navigation for Web Banking for a smoother user experience.

24 May 2023

NEW FEATURES
👩🏽‍💻 Subscribe to our new User webhooks to receive real-time updates on any changes related to your users. You can track the identity verification process and more. You can also get the list of users who have connected to your project with the new API users query. Learn more​
​
🤖
Act as a user with a project access token to unlock certain use cases. Learn more​
  • Act as the legal representative to perform server consent operations
  • Illustrate a user's problem internally and to Swan Customer Support
  • Use the Swan API on behalf of a user
    • without a user access token
    • without asking the user to reconnect
    • without using the refresh token
💼 We’re ready to onboard our first Partners to collect French checks. Please contact us if you're interested in beta testing! Learn more​
IMPROVEMENTS
​
🔍
A new filter period was added to the account statements collection. Use it to filter account statements, whether you create them when you need them or you generate them automatically.
​
🇪🇺
On your PDF account statements, amounts are now displayed in the local format based on the account language. We'll continue to improve the localized experience.
​
👑
The project owner's legal representative can now see their card numbers with the API. Also, in Sandbox, promote any account holder in the project to project owner with the testing API mutation promoteAccountHolderToProjectOwner.
BUG FIX
​
🇫🇷
From May 12th to May 15th, Bouygues Telecom blocked text message delivery to French phone numbers (+33), messages that included a link to authenticate. As a quick fix, we will temporarily send https://link.swan.io instead of https://authmsg.co.
​
💳
In the Card.Updated webhook, eventDate changed to updatedAt (previously createdAt).
BREAKING CHANGES
​
⏲
To improve our webhook performance, we added a timeout of 15 seconds to endpoint requests. When there is no response after 15 seconds, the webhook fails and will automatically retry.
​
💥
In the addCards mutation, the input field additionalEmbossedLine is now additionalPrintedLine for consistency and user clarity.
UPCOMING BREAKING CHANGES
​
📱
In four weeks, Swan will stop sending a text message to users when their identity is successfully verified. Why? With the new User webhook, you can track their progress and notify them however you choose!

15 May 2023

​
🎉
Customize your web banking app and onboarding process starting from Swan's open source code. Consider this a reference implementation: you can learn from it, then copy and modify it to fit your needs! Learn more​

27 April 2023

IMPROVEMENTS
⚡
SCT inst fallback can be tested using the Testing API. Initiate an outgoing instant SEPA credit transfer, then reject it using simulateOutgoingSepaCreditTransferRejection mutation. Use reasonCode: BeneficiaryBankNotReachable.
🫢 Upcoming outgoing instant SEPA credit transfer can be canceled using the cancelTransaction mutation.
​
✍
The externalReference field in initiateCreditTransfers is now working for outgoing instant SEPA credit transfers.
​
🆔
We added the accountId field to Invoice. Use it to find the account associated to an AccountInvoice.Generated webhook event.
BUG FIX 📄 Fee amount are displayed in the .csv account statement
UPCOMING BREAKING CHANGES
👮♀
To avoid undesired behaviors with our API, we are changing the tax identification number accepted format in all the taxIdentificationNumber inputs from 1-11 characters to 7-11 characters in 4 weeks.
​
💥
isInstant field for initiateCreditTransfer is depreciated and will be removed in 6 months. Please use mode field instead to initiate an instant SEPA Credit Transfer.
DOCS
💶
Learn how to build a compliant billing offer.

19 April 2023

NEW FEATURES: ↪️ Direct debit a Swan account within the same project. It's our first step for our new feature, Merchant Payment Collection. Please contact us if you're interested in beta testing!
IMPROVEMENTS:
💳
You can print one line of custom text, such as a company name, on your physical cards. To do so, you'll need to design a custom card with your Technical Account Manager and include this additional line. Contact us if you're interested in designing a custom card, or adapting an existing custom design.
BREAKING CHANGES:
💥
To avoid undesired behaviors with our API, we changed the accepted date format for two fields in the Onboarding API:
  • IndividualUltimateBeneficialOwnerInput.birthDate must be a date YYYY-MM-DD
  • IndividualUltimateBeneficialOwner.birthDate format change from date time to date

29 March 2023

NEW FEATURES:
:zap:
We implemented a fallback option for instant transfers. When an instant transfer is unavailable, whether for technical reasons or due to a manual risk assessment, the instant transfer will run as a standard transfer instead. Your customer won’t need to reinitiate a transfer or consent a second time. How? We added a new input mode to the initiateCreditTransfer mutation, as well as the new filter includeRejectedWithFallback to the transactions query. Tip: We recommend you choose false by default so your customers won’t see the rejected instant transfer on their transaction history. Learn more​
IMPROVEMENTS:
:page_with_curl:
To reduce back and forth with our KYC team, we're asking some partners to collect additional supporting documents during onboarding for some use cases: • Lithuanian companies: Company Registration, UBO Declaration • Netherlands, Austria, Luxembourg companies: UBO Declaration • German self-employed: Self-employed Registration
​
:de:
For German account onboarding (accountCountry: DEU), three fields are now API-optional: • UBO birth date: individualUltimateBeneficialOwners.birthDate • UBO birth city: individualUltimateBeneficialOwners.birthCity • UBO birth postal code: individualUltimateBeneficialOwners.birthCityPostalCode
​
:older_man:
We added a new field originTransaction to the API at the transaction level. It contains its parent transaction (for example, the card debit for a card debit reversal).
​
:test_tube:
We added instant SEPA credit transfers and their associated recalls to the event simulator in your dashboard.
​
:credit_card:
You can now approve authorizations with a partial amount. To do so, indicate the partialAuthorizationAmountValue within your Payment Control response (more information here). Note that not all authorizations can be authorized partially; to identify eligible authorizations, look for the allowsPartialAuthorization: true on the Payment Control notification we send you.
BUGFIX:
:hammer_and_wrench:
We fixed some latency issues on our OAuth2.0 server. Let us know if you still have trouble getting your access tokens.
BREAKING CHANGES:
:boom:
We added a new value SwornStatement in SupportingDocumentPurposeEnum. To avoid breaking changes on your side, please take these into account. We'll request this supporting document during onboarding for Spanish companies.

21 March 2023

NEW FEATURES:
:art:
The onboarding and transfer pages have a fresh, new design. And guess what? We'll be ready to share our code and design system with you in the coming weeks.
​
:chart_with_upwards_trend:
We added Capital Deposits to the dashboard data, which was the first step to removing the current dashboard. Next, you'll be able to upload documents and simulate everything with the Event Simulator.

28 February 2023

NEW FEATURES:
:de:
IBANs starting with DE are live after 3 successful months in beta.
:confetti_ball:
You can use them via the API or no-code, across all use cases including B2B and B2C! To test them, use the new German onboarding link. You'll find it in your dashboard, on the Settings/Onboarding tab. The German onboarding flow is a little different, in order to comply with German law. Learn more​
​
:identification_card:
Verify the identity of individual account holders using a Qualified Electronic Signature. This new identification level is mandatory for individual German IBANs but can also be used for individual French IBANs in order to avoid the first transfer to finalize their verification process. Learn more​
IMPROVEMENTS:
:zap:
Our reachability on SEPA instant credit transfers has been extended to TIPS in addition to EBA-RT1. We're now connected to most banks for initiating and receiving these transactions.
BREAKING CHANGES:
:boom:
We will begin using some changes we already warned you about, and have added them to the Graph. To avoid breaking changes on your side, please take these into account:
  • New transaction types SepaInstantCreditTransferInRecall and SepaInstantCreditTransferOutRecall
  • New rejection reason codes for SepaInstantCreditTransferOut transactions. The new values are: CreditorBankTechnicalErrorOccurred and CreditorBankTimeout Learn more​

20 February 2023

NEW FEATURES:
:white_check_mark:
We added a new Account activation tab to the web banking. This makes it easy for our no-code customers to finalize the account holder verification process. Just follow the steps.
​
:email:
Non-verified users can now use Reset passcode by email. Learn more​
​
:moneybag:
On March 1st 2023, we will start charging banking fees directly on your customers' Swan accounts. This is the first phase of our billing project. Ultimately, this will enable you to choose which fees you want to charge your customers through Swan, and lead to additional revenue. Learn more​
IMPROVEMENTS:
:page_with_curl:
You can now use the accountStatement query to return an account statement from its id Learn more​
BREAKING CHANGES:
:boom:
As mentioned in past release notes, the new rejection reasons for CardOut transactions are as follows: RetryWithChipAndPin , PinRequiredForFurtherTransaction , InvalidSecurityNumber , InvalidExpirationDate These have been added to the Graph. Please take them into account to avoid breaking changes on your side. Learn more​

18 January 2023

NEW FEATURES:
:art:
The web banking has a fresh new design for transaction history, members, and card tabs. And guess what? We're getting ready to share our code and design system with you.
​
:closed_lock_with_key:
Secure all webhooks by adding a secret in the HTTP Request. Learn more​
​
:repeat:
Automatically trigger the funding of a Swan account based on pre-defined events without user consent. Restricted to Account funding SEPA Direct Debit B2B with Rolling reserve. Learn more​
IMPROVEMENTS:
:fr:
Automatically fetch UBOs for french registered companies with the updateOnboardCompanyAccountHolder mutation. This was already available in the no-code interface and now it's in the API.
​
:money_with_wings:
Indicate a spendingLimit when using the addCard mutation. To avoid breaking changes, the spendingLimit is an optional input for the addCard mutation. Learn more​
​
:selfie:
Create a card and add it to Apple Pay or Google Pay simultaneously using the multiple consent feature. Learn more​
BUGFIX:
:moneybag:
We have fixed some bugs on Capital Deposit:
  • Account Holders linked to multiple Capital Deposits don’t have status errors anymore.
  • Shareholder status is now properly updated when the funds are deposited.
  • We fixed an error that was preventing some Capital Deposits from moving to completion.
BREAKING CHANGES:
:boom:
We will begin using some changes we already warned you about, and have added them to the Graph. To avoid breaking changes on your side, please take these into account:
  • new types of Transaction FeeTransaction and InternalDirectDebitTransaction
  • A new enum at Transaction level: paymentProduct = Fees and transactionType = FeesOut, FeesIn
  • A new payment mandate type InternalDirectDebitPaymentMandate
  • A new received payment mandate type InternalReceivedDirectDebitMandate
  • A new rejection reason code on SepaInstantCreditTransferOut and SepaInstantCreditTransferIn
  • A new enum at Onboarding level: companyType = SelfEmployed
UPCOMING BREAKING CHANGES:
:warning:
In February we will start using a lot of changes that have been added to the Graph. To avoid breaking changes on your side, please take these into account:
  • New rejection reasons for CardOut transactions. The new values are: RetryWithChipAndPin, PinRequiredForFurtherTransaction, InvalidSecurityNumber, InvalidExpirationDate Learn more​
  • New rejection reason codes for SepaInstantCreditTransferOut transactions. The new values are: CreditorBankTechnicalErrorOccurred and CreditorBankTimeout Learn more​
  • New transaction types SepaInstantCreditTransferInRecall and SepaInstantCreditTransferOutRecall
  • Add Refused in accountHolder.verificationStatus enum

6 December 2022

NEW FEATURES:
:money_with_wings:
Initiate SEPA Instant Credit Transfers (SepaInstantCreditTransferOut) transactions using the existing initiateCreditTransfers API mutation with the isInstant input flag. Please note that to guarantee instantaneity, we automatically reject instructions that hit our risk scoring engine (with the RegulatoryReason rejection reason code). In this case, we recommend you suggest your users to issue a new, non-instant SEPA Credit Transfer transaction (SepaCreditTransferOut). Learn more​
​
:robot_face:
Use server-to-server consent to avoid any human interaction with the new grantConsentWithServerSignature mutation! To start playing with this highly secure yet easy feature, head to your Sandbox > Developers > Server Consent. If you are interested in using this feature in Live, please reach out to your TAM, check the documentation and start consenting on the go! Learn more​
​
:zap:
During onboarding, once we have verified the legal representative of the account holder is not a politically exposed person or on a sanctions list, we will distribute the IBAN via API and Web Banking. Most times, this should occur within 10min after ID Verification is completed. Learn more​
IMPROVEMENTS:
:credit_card:
Display the numbers of a physical card using the new viewPhysicalCardNumbers mutation. This is especially useful if you only issue physical cards. Learn more​
​
:closed_lock_with_key:
When using server-to-server consent for addSingleUseVirtualCard, the AddSingleUseVirtualCardSuccessForProjectOwnerPayload will now return a card in ConsentPending status. The card will be enabled after the consent is validated. We would still recommend that you verify the card status before using it. Learn more​
UPCOMING BREAKING CHANGES:
:warning:
In early January we will start using a lot of changes that have been added to the Graph in order to improve the product in the following month of the release. Please make sure you take it into account before we use them to avoid breaking changes on your side:
  • new types of Transaction FeeTransaction and InternalDirectDebitTransaction
  • A new enum at Transaction level: paymentProduct = Fees and transactionType = FeesOut, FeesIn
  • A new payment mandate type InternalDirectDebitPaymentMandate
  • A new received payment mandate type InternalReceivedDirectDebitMandate
  • New rejection reason codes on SepaInstantCreditTransferOut and SepaInstantCreditTransferIn
  • A new enum at Onboarding level: companyType = SelfEmployed

4 November 2022

NEW FEATURES:
:moneybag:
Add an Account detail tab in the web banking menu (level 1) lets you access the main IBAN, manage virtual IBANs, and update account settings.
:female-technologist:
The web banking has a new profile page that allows users to manage their languages, reminds them to verify their identity, and provides access to FAQ and support.
IMPROVEMENTS:
:man_in_business_suit_levitating:
UBO doesn't mean anything to French "syndicat de copropriété" and "associations" so we removed them from the nocode onboarding.
:female-office-worker:
A "legal representative" tile was added to the dashboard for company account holders.
:link:
The authentication SMS was changed from swan.io to authmsg.co, for better whitelabeling.
:closed_lock_with_key:
Most of the time, we won't display the Captcha anymore — the one displayed when the user enters their phone number. This doesn't take away from the level of security.
:dash:
The Refund API mutation can now be used on SepaInstantCreditTransferIn transactions
BREAKING CHANGES:
:date:
The deprecated field executionDate used as an input for the initiateCreditTransfers mutation was permanently removed and replaced by requestedExecutionAt
:u6709:
For regulatory reasons, we will no longer accept special characters in the SepaBeneficiary name input fields for the initiateCreditTransfers mutation. Chinese and Cyrillic characters will no longer be allowed.

4 October 2022

NEW FEATURES:
:zap:
We can now receive Instant SEPA Credit Transfers! These will be shown as SepaInstantCreditTransferIn in the TransactionTypeEnum. Learn more
:credit_card:
Manage multiple card products from the dashboard, with different designs and spending limits. Learn more​
IMPROVEMENTS:
:credit_card:
Order cards from the web banking with all our API capabilities: card design, format (Virtual, Physical or Single Use), spending settings, one or multiple members, grouped or individual delivery.
:date:
The Rolling Reserve for B2B SepaDirectDebitIn transactions in an Account Funding context has been decreased from 4 to 3 inter-bank business days + the booking date/time for SDD-In transactions was changed from 6PM CET to 8PM CET.
:vertical_traffic_light:
Funding Sources are no longer suspended when a rejection is received for SepaDirectDebitIn within the B2B scheme created for Account Funding. When a rejection is received for InsufficientFunds, cord scheme Funding Sources won't be suspended either. This can be simulated via the testing API and by adding a reasonCode in the simulateIncomingSepaDirectDebitReject and simulateIncomingSepaDirectDebitReturn API mutations. Learn more
:spiral_calendar_pad:
We’ve removed the 14 calendar day limitation on the requestedExecutionAt for initiateFundingRequest. When the requestedExecutionAt input is used, SEPADirectDebitIn transactions created with Upcoming status can now be canceled up to 1 day before the executionDate and 1 hour before Swan cut-off. Learn more​
BUG FIX:
:boom:
A very small proportion of users experienced errors when using their 6-digit passcode during consent. This has been fixed.
BREAKING CHANGES:
:female-technologist:
The hierarchy of Membership rights has been updated: A member cannot give permissions to others, that they don't themselves have. We will keep you posted on the new rejection that will occur in case this happens.
UPCOMING BREAKING CHANGES:
:date:
By the end of October, the deprecated field executionDateused as an input for the intitiateCreditTransfermutation will be permanently removed and replaced by requestedExecutionAt

5 September 2022

NEW FEATURES:
:globe_with_meridians:
We changed the web banking navigation to improve your end-customer’s UX. This is the first step of our web banking redesign. Thanks so much for all your feedback!
:mag_right:
We added an API Reference to help you during integration. Use it alongside the Doc and the Explorer.
IMPROVEMENTS:
:dash:
We added some shortcuts to our GraphQL Schema. Now you can get the legal representative account membership directly from the account using account.legalRepresentativeMembership and the account created by the onboarding using onboarding.account (only for onboardings created after 2022-02-01)
BREAKING CHANGES:
:link:
The new web banking navigation comes with new URL formats. If you use deep links, you'll have to update them accordingly.
:closed_lock_with_key:
For security reasons, PUT method is no longer supported when uploading a supporting document.
:sports_medal:
For performance reasons, we added a rate-limiting to 60 requests per minute for introspections queries. Learn more
:moneybag:
For Partners using Account Funding, the mutation addExternalAccountBalance is now deprecated. We just created a new one: addOrUpdateExternalAccountBalance. Both have the following behavior, with no breaking impacts: if you already added a balance for a specific date and then you add another balance for the same date, the existing balance will be updated with the characteristics you set, so you'll always have only one balance for the day.
UPCOMING BREAKING CHANGES:
:female-technologist:
By the end of September, we will update the hierarchy of Membership rights: A member will not be able to give permissions they don't themselves have, to other members. We will keep you posted on the new rejection that will occur in case this happens.
:date:
By the end of October, the deprecated field executionDate used as an input of the intitiateCreditTransfer mutation will be permanently removed and replaced by requestedExecutionAt

12 July 2022

IMPROVEMENTS:
:oncoming_police_car:
We added a security captcha when there is some doubt concerning the phone number entered, in order to increase the level of security. This should impact only 0.5% of users.
:credit_card:
To avoid strong authentication for the end customer each time the card number is revealed, we now allow calling the same consentUrl for 5 minutes after consenting. For this, we advise you to store the consentId on your side and to run a consent query each time before reusing the consentUrl to check that the consent status is Accepted and the updatedAt is less than 5min. Learn more​

6 July 2022

NEW FEATURES:
:chart_with_upwards_trend:
Account funding beta testers, you can now push your end customers' balances in order to calculate a funding limit. Learn more​
IMPROVEMENTS:
:selfie:
Review and optimize the user experience of our Strong Customer Authentication flows and encourage biometric authentication each time the passcode is used.
:page_with_curl:
Add a supporting document section in the dashboard to consult the list of uploaded documents required for KYC/KYB and upload new ones.
:earth_africa:
2 new countries are available for company onboarding: Cyprus
:flag-cy:
and Bulgaria
:flag-bg:
:mag:
We added more search filters and sorting in the account list and in the account membership list.
:globe_with_meridians:
A new webhook account.closing is triggered when closing an account
:white_check_mark:
The sepaBeneficiary.name input of the initiateCreditTransfer API mutation now needs to have a minimum of 2 characters
:recycle:
A new simulation (simulateReleaseReservedBalance) lets you release the reserved balance for a transaction. As a reminder, the reserve balance depends on the rolling reserve
:no_good:
When the blockSDD field is set to true at the account level, SDD-Out transactions presented on any virtual IBAN attached to it will be rejected.
:octagonal_sign:
Onboarding API data validation: new rejection type raised in case of incorrect data format/type
BUG FIXES:
:hourglass_flowing_sand:
We fixed some performance issues with the card and the account membership list
BREAKING CHANGES:
:page_with_curl:
The Supporting Document status has been renamed from ReviewPending to PendingReview
:boom:
accountHolder.fundingLimitand accountHolder.instantFundingLimit were deprecated since the previous release and have been totally removed
UPCOMING BREAKING CHANGES:
:page_with_curl:
We changed the upload method from PUT to POST. PUT still works but is now deprecated and will be removed by end of August.
:level_slider:
Next release, we will implement a rate-limiting to 60 req/minutes for introspections queries

7 June 2022

NEW FEATURES:
:chart_with_upwards_trend:
Instantly load your customers' accounts with SEPA Direct Debit. This is one of our biggest features of the year! Contact us if you're interested in joining the beta testers group. Learn more
:selfie:
Accept up to 100 consents with just one single Strong Customer Authentication. Learn more
:page_facing_up:
When finalizing your customers' onboarding, you can now use the API to consult the list of minimum required supporting document purposes. Using this feature will reduce a lot of back-and-forths. In 90% of account openings, we require documents for just one single purpose. However, if an individual presents a higher risk than expected, we ask for additional documents. Learn more​
IMPROVEMENTS:
:white_check_mark:
Clearly see where you are in the activation process, right from the dashboard header. Just click “Activate.” Learn more
:page_with_curl:
If you're opening accounts for companies, you can now upload supporting documents using the nocode onboarding interface.
:female-technologist:
For a better UX, we decided to remove the last page of user registration (Sign in).
:mag:
You can now search a first or last name in the account membership list.
:globe_with_meridians:
A new webhook onboarding.updated is triggered when onboarding is finalized.
:arrows_counterclockwise:
Funding sources are listed in the dashboard.
:heavy_multiplication_x:
A funding source with Pending or Enabled status can be Canceled by any account member with Can Manage Account Membership user rights using the cancelFundingSource mutation.
:cop:
The Account Verification status of a SDD B2B funding source is automatically switched to verified when the Rolling Reserve amount is released from the reserved balance (if no R-transaction has been received)
:credit_card:
A new reason code has been added for refused card transactions: MerchantShouldResubmitAuthorization
:money_with_wings:
Card spending was not being released when the authorization amount was released.
BUG FIXES:
:credit_card:
Some card options were recently desynchronized at our card processor. We've fixed this.
BREAKING CHANGES:
:boom:
Account funding is in beta, so there are sometimes breaking changes: accountHolder.fundingLimit and accountHolder.instantFundingLimit is deprecated and moved to a new resource accountHolder.fundingLimitSettings respectively in accountHolder.fundingLimitSettings.fundingLimit and accountHolder.fundingLimitSettings.instantFundingLimit
UPCOMING BREAKING CHANGES:
:page_with_curl:
Next release, in early July, we will rename the Supporting Document status ReviewPending to PendingReview

5 May 2022

NEW FEATURES:
:chart_with_upwards_trend:
Seamlessly load your customers' accounts, with SEPA Direct Debit. Contact us if you want to join the beta testers group. Learn more
:credit_card:
Skip identity verification for some corporate card holders. Learn more
:closed_lock_with_key:
Users can reset their passcode via facial recognition in less that 3 minutes. Learn more​
IMPROVEMENTS:
:mag:
The dashboard data list now includes search, count, filters, and more. We'll add more each cycle, so you can enhance your customer support experience. Let us know if you have any feedback or special wishes.
:mailbox_with_mail:
Simulate the reception of a physical card using the Testing API. The event simulator will soon feature this, as well.

11 April 2022

NEW FEATURES:
:art:
Full redesign of our dashboard to improve the Developer Experience.
IMPROVEMENTS:
:x:
Your customer service folks can easily cancel upcoming credit transfers, or cancel and suspend cards, thanks to some new buttons.
:spiral_note_pad:
Account statements are listed in the dashboard, or you can generate them yourself.
:calendar:
In the onboarding API, we added creation date and last updated date, and improved some error messages.
BUG FIXES:
:id:
The cardId is now correctly sent within the redirection URL of the activatePhysicalCard mutation.
BREAKING CHANGES:
:1234:
We activated pagination on onboarding.

15 March 2022

NEW FEATURES:
:chart_with_upwards_trend:
Display your customers' data on the dashboard. This is a great first round; the next release will feature even more data with added filters and a search field.
:credit_card:
Cardholders can now activate a card after receiving it, thanks to the new activatePhysicalCard mutation. They just have to input the identifier printed on the card and give their consent. Learn more
:page_with_curl:
Upload supporting documents using the generateSupportingDocumentUploadUrl mutation during the onboarding. This way you don't have to ask users a second time by email. Learn more​
IMPROVEMENTS:
:shopping_trolley:
To facilitate the interpretation of the merchantCategoryCode, you can now get the description of each code in the merchantCategoryDescription field for every transaction of CardTransactiontype.
BUG FIXES:
:dollar:
The amounts displayed in thecard.spending.amount.value field are now more consistent. Values previously returned as 0 will now be returned as 0.00
BREAKING CHANGES:
:female-technologist:
To update the verification status of an individual account holder, you have two options:
  • from the dashboard using the event simulator for Update Account Holder (instead of the sandbox users page).
  • from the Testing API with the updateAccountHolder mutation (instead of updateSandboxUser)
​
:chart_with_downwards_trend:
We've decided to reduce the number of cards we can issue using addCards mutation up to 250 while we fix a performance issue.
UPCOMING BREKING CHANGES:
:credit_card:
Please note that after the next release (estimated for April 7th), the physical card identifier will return null if its status is ToActivate.

17 February 2022

NEW FEATURE:
:safety_vest:
A new Testing API exposes the event simulators and Sandbox user management. Developers can now call them programmatically and perform end-to-end tests without having to connect to the Dashboard. Big improvement to our developer experience! Try it now or Learn more​

3 February 2022

NEW FEATURES:
:fr:
Offer Capital Deposit to your French customers. Enable the registration of new companies directly from your product, by providing an account and proof that the share capital has been wired by shareholders. Learn more
:package:
Ship a group of cards altogether to the same address using the addCardsWithGroupDelivery mutation. It's more cost-effective, and better for the planet!
IMPROVEMENTS:
:female-office-worker:
Simulate Sandbox user’s identification status from the dashboard Learn more
:date:
Transactions are better sorted in our web banking thanks to a new transaction.executionDate field. For Upcoming transactions, it reflects the requested execution date. For all other transactions it reflects the creation date.
:credit_card:
The maximum number of cards you can create using the addCards mutation has been increased from 200 to 500
:arrows_counterclockwise:
New webhooks are available for creating and updating Received Direct Debit Mandates and
:memo:
SEPA Direct Debit-Out B2B Mandates Amendments can now be registered with Swan using the UpdateReceivedSepaDirectDebitB2bMandate mutation. Learn more​
BUG FIXES:
:selfie:
We fixed some bugs for the users of old browsers (IndexedDB issues)
BREAKING CHANGES:
:classical_building:
New PaymentProduct and TransactionType enum values have been added in order to provide you with a greater level of detail and an improved experience. These new enum values that were previously listed as COMING SOON are now populated. The enum values marked COMING SOON will be populated during the next release. Some other enum values (listed as SOON TO BE DEPRECATED) will be deprecated in the next Swan release, therefore please make sure you take these changes into account.
:no_good:
We will start sending the following RejectedReasonCodes for card transactions that were created during the last release: CardNotActivated, InvalidPin, InvalidPinAttemptsExceeded
:woman-gesturing-no:
Many new Rejections related to the card and already added during the last release are now populated. They should provide you with a greater level of detail and an improved experience.

6 January 2022

NEW FEATURES:
:arrow_right_hook:
We fully support all kinds of Received Sepa Direct Debit: Core and B2B. Learn more
:end:
You can now close an account by API using the closeAccount mutation. Learn more​
IMPROVEMENTS:
:recycle:
It’s now possible to release a card authorization using the Event Simulator.
:mag:
You can now filter cards by statuses for a given Account Membership using the accountMembership.cards query.
:page_with_curl:
Default pagination has been increased to 50 items per page in the payments query in order to align with other queries.
:memo:
For each card transaction on the Account Statement, the description field now shows the card holder name and the last four digits of the card.
:email:
Webhooks offer 2 new onboarding events: Onboarding.Created and Onboarding.Updated
:arrows_counterclockwise:
Exponential backoff when retrying failed webhook events, with up to a maximum of 7 retries.
BUG FIXES:
:white_check_mark:
The list of accepted characters in the reference field of the initiateCreditTransfer mutation has been updated to match current SEPA guidelines.
:credit_card:
The image returned in the cardUrl (card query) is now updated when the Account Member name is updated
:boom:
When issuing cards, Cardholder names and delivery addresses can include special characters and accents like "Amélie" or "Hauptstraße".
BREAKING CHANGES:
:id:
It's been 3 months now (that's 3 releases ago), that partners integrating by API must make sure their UX entices users to prove their identity. To give you time to develop this user flow, we've been texting all users about identity verification as soon as they are created. Starting today, we no longer send new users this sms. Learn more​

16 December 2021

NEW FEATURES:
:selfie:
Users can now consent using biometry. To try it out for yourself, just clear your browser data. During your next consent, we'll ask you to register your FaceId, TouchId, or Fingerprint. Passcode will only be requested if a user has changed their mobile device. Learn more
:calling:
Some of you wish to send notifications via your own app, to offer a great UX just like the best neobanks. This is now possible. Just define your preferred consent notification channel, SMS or App, by using the new updateUserConsentSettings mutation. Learn more
:white_check_mark:
Thanks to the new updateOnboarding and finalizeOnboarding mutations you are not obligated to use our #nocode interfaces. You can onboard customers directly from your product, if you prefer. Learn more​
IMPROVEMENTS:
:mag:
We added new account filters : canManageAccountMembership, canManageBeneficiaries, canInitiatePayments and new accountMemberships filters: status, canInitiatePayments, canManageAccountMembership, canManageBeneficiaries
:scroll:
The list of transactions associated to a received direct debit mandate can now be retrieved using the API.
:runner:
The dashboard lets you sort webhook event logs using 2 new filters: eventId and resourceId. View each webhook's KPIs for the last 7 days: hits, counter, and error rate. We also added 2 new events: Onboarding.created and Onboarding.updated
:put_litter_in_its_place:
Transactions where paymentProduct is SEPACreditTransfer and status is Upcoming can now be canceled using the cancelTransaction mutation.
BUG FIXES:
:credit_card:
When requesting physical cards, the Company Name and the Name/Last Name are now truncated to 38 characters. This is a mail delivery requirement.
:earth_africa:
The card language (used for 3DS, ATM screens and delivery envelopes) is dynamically assigned. Available languages: DE, FR, IT, NL, EN, ES. When a language is not available, the default language is EN.
BREAKING CHANGES:
:1234:
Pagination on the accountHolders, accountMemberships, and accounts queries has been fixed. It might break if you implement the filter on the front-end. These queries now only return the requested number of items, rather than all items at once.

7 December 2021

NEW FEATURE:
:party-apple:
Swan's Apple Pay offer is expanded across 19 EU countries!
:flag-eu:
(Austria
:flag-at:
, Belgium
:flag-be:
, Cyprus
:flag-cy:
, Estonia
:flag-ee:
, Finland
:flag-fi:
, France
:fr:
, Germany
:de:
, Greece
:flag-gr:
, Ireland
:flag-ie:
, Italy
:it:
, Latvia
:flag-lv:
, Lithuania
:flag-lt:
, Luxembourg
:flag-lu:
, Malta
:flag-mt:
, The Netherlands
:flag-nl:
, Portugal
:flag-pt:
, Slovakia
:flag-sk:
, Slovenia
:flag-si:
, Spain
:es:
)

18 November 2021

NEW FEATURES:
:male-office-worker:
Add up to 200 account memberships using just one consent with the addAccountMemberships mutation. Learn more
:credit_card:
Add up to 200 cards, and print their physical version using just one consent with the addCards mutation. Since card creation is executed asynchronously, we created a new card status: Processing . We deprecated the status filter on the cards query and created statuses so you can filter when there are multiple ones. Learn more
:white_check_mark:
The new ibanValidation query helps you verify the format of an external IBAN, get all available bank info (name, BIC code, etc.) and account data available for this IBAN, as well as the reachability of this IBAN across all SEPA schemes. Learn more
:page_with_curl:
Sepa Direct Debit Core Mandates are now visible in the API under the account.receivedDirectDebitMandates query and can be suspended with the suspendReceivedDirectDebitMandate mutation or resumed with the resumeReceivedDirectDebitMandate mutation. Learn more
:selfie:
During SCA, avoid asking your customer to enter their phone number, first name, last name, and birth date on the Swan user form. Query parameters during the oauth 2 process let you do this. Learn more​
IMPROVEMENTS:
:runner:
Some webhook events used to be fired a few milliseconds too early, and now are fired right on time.
:arrows_counterclockwise:
Just in case a webhook event is incorrectly integrated on your side, we've added a retry button to the dashboard.
:mailbox_with_mail:
Simulate physical card delivery from the dashboard.
:flag-eu:
Our compliance team did a lot of work to allow you to onboard individuals and now companies across all of Europe. Learn more​

2 November 2021

NEW FEATURE:
:mastercard:
Swan's Google Pay offer is expanded across 15 EU countries!
:flag-eu:
(Austria
:flag-at:
, Belgium
:flag-be:
, Estonia
:flag-ee:
, Finland
:flag-fi:
, France
:fr:
, Germany
:de:
, Greece
:flag-gr:
, Ireland
:flag-ie:
, Italy
:it:
, Latvia
:flag-lv:
, Lithuania
:flag-lt:
, The Netherlands
:flag-nl:
, Portugal
:flag-pt:
, Slovakia
:flag-sk:
, Spain
:es:
)

21 October 2021

NEW FEATURES:
:selfie:
Embedded Web SCA is out! After 2 years of good and loyal service, it's "bye-bye" to Swan app! Having to use Swan app was a major issue for many of you...so we look forward to receiving your feedback on this improvement!
:loudspeaker:
​
:loudspeaker:
​
:loudspeaker:
:credit_card:
Supsend and Resume Card directly from the web banking
:mailbox_with_mail:
Get the shipping information of a physical card from the web banking
IMPROVEMENTS:
:credit_card:
Display card numbers during the addCard or addSingleUseVirtualCard consent by using the new viewCardNumbers property. This way, you save the time of one consent and can use the card immediately

13 October 2021

NEW FEATURES:
:memo:
generateAccountStatement mutation allows you to generate account statements on demand.
:credit_card:
suspendPhysicalCard and resumePhysicalCard mutations are now available.
:male-astronaut:
All new users receive a first sandbox user; they don't need to have a dashboard member in order to use the sandbox.
IMPROVEMENTS:
:mastercard:
New options during card authorization simulation (card type, authorization type, 3 wrong PINs ...)
:moneybag:
The transaction query can now fetch its related account . If you're using webhooks for transactions, this is very helpful.
:one:
Add pagination and filtering on the cards query.
:warning:
Limit GQL queries if they are too complex.
:recycle:
Standing orders are now fully available in the web banking.
:male-office-worker:
The card holder name is displayed in the web banking's transaction details.
:flag-eu:
Edit an account's language in the web banking.
:selfie:
SMS after failed id verification includes more detailed reasons.
:es:
All interfaces including the web banking and onboarding process are now also available in Spanish.
BUG FIXES:
:id:
Id verification of documents from Kosovo.

16 September 2021

NEW FEATURES:
:credit_card:
Add a category to: the card authorization event simulator, the payment control, the card transaction API
​
:fuelpump:
Add an authorizationType to: the card authorization event simulator, the payment control, the card transaction API. Values include Classic ,PreAuthorization,and DataRequest
:lower_left_ballpoint_pen:
Add a name field to the card in the API
:mailbox_with_no_mail:
Set estimatedDeliveryDate , trackingNumber , shippingProvider when you order new physical cards
:flag-eu:
Change the account language using updateAccount mutation
:selfie:
Start an identity verification process via the web banking
:recycle:
Schedule Standing Orders via the web banking
IMPROVEMENTS:
:id:
Expose the query param resourceId in the consent callbacks Url
:female-police-officer:
Allow a membership with canManageMembership rights to cancel a physical card
:vertical_traffic_light:
Company account holders verification status remains NotStarted as long as the legal representative is not idverified
:clock2:
mutation scheduleStandingOrder : accept datetime format for firstExecutionDat
:flag-eu:
Account Statements and SMS are now all translated
BUG FIXES:
:stethoscope:
Resolve a non-coherent value in isPinReady when a physical card was printed before 5 PM Paris time

19 August 2021

NEW FEATURES:
:runner:
Webhooks are now available. This allows you to process all events in real-time. Learn more
:recycle:
Standing Orders are ready to be used after a few weeks of beta testing Learn more
:lock:
A new Developer role for dashboard members. We encourage you to update members accordingly.
:female-police-officer:
Payment control settings are now available in the dashboard. Learn more
:no_entry_sign:
Permanently cancel a card via the web banking
:id:
Query transaction by Id in the Graph
IMPROVEMENTS:
:heart:
API Explorer has shareable links and the prettify function was improved
:mag:
We added autocompletion for Ultimate Beneficial owners to the onboarding for French companies
:black_right_pointing_double_triangle_with_vertical_bar:
When an upcoming transaction is executed, this same transaction is updated to Pending rather than being deleted. Learn more​

17 August 2021

NEW FEATURE:
:party-apple:
Apple Pay is live, you can add your card from the Swan app or directly from your Wallet app !

4 August 2021

NEW FEATURE:
:lower_left_ballpoint_pen:
Update the account name from the Web banking
:credit_card:
Cancel a card to immediately and permanently cease usage of a card, its physical card and its digital cards and will no longer be billed for it by calling the cancelCard mutation Learn more​
IMPROVEMENTS:
:id:
We added the paymentId in the payment control payload during the card authorization Learn more​

21 July 2021

NEW FEATURE:
:it:
Our end-user interfaces are now available in Italian
IMPROVEMENTS:
:email:
A second address line is available for ordering a physical card
:postbox:
The number of characters allowed for addresses for physical card deliveries has been limited
:face_with_monocle:
Check IBAN consistency when using the InitiateCreditTransfers mutation

8 July 2021

NEW FEATURES:
:credit_card:
Issue Single Use Virtual Cards with the new addSingleUseVirtualCard mutation. Learn more
:recycle:
Schedule, cancel, and fetch Standing Orders from the API. Execution is not yet up and running, but it's coming soon. Learn more
:lower_left_ballpoint_pen:
Change an account name from the onboarding mutation or at any time from the updateAccount mutation.
:no_entry_sign:
Permanently block a physical card via the web banking or with the cancelPhysicalCard mutation.
IMPROVEMENTS:
:interrobang:
Membership binding is no longer case sensitive nor accent sensitive (Rémi and remi are seen as a match now)
​
Last modified 6d ago