Skip to main content

ยท 2 min read

New featuresโ€‹

๐Ÿ‡ฉ๐Ÿ‡ช IBANs starting with DE are live after 3 successful months in beta. 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 about requirements for individual and company German accounts.

๐Ÿชช 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 identification process.

Improvementsโ€‹

โšก Our reachability on Instant SEPA 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โ€‹

๐Ÿ’ฅ 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: CreditorBankTechnicalErrorOccurred and CreditorBankTimeout.

ยท One min read

New featuresโ€‹

โœ… 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.

โœ‰๏ธ Non-verified users can now use reset passcode by email.

๐Ÿ’ฐ On March 1 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.

Improvementsโ€‹

๐Ÿ“ƒ You can now use the accountStatement query to return an account statement from its id.

Breaking changesโ€‹

๐Ÿ’ฅ As mentioned in past release notes, the new rejection reasons for CardOut transactions are as follows: RetryWithChipAndPin, PinRequiredForFurtherTransaction, InvalidSecurityNumber, and InvalidExpirationDate. These have been added to the Graph. Please take them into account to avoid breaking changes on your side.

ยท 2 min read

New featuresโ€‹

๐ŸŽจ 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.

๐Ÿ” Secure all webhooks by adding a secret in the HTTP Request.

๐Ÿ” 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.

Improvementsโ€‹

๐Ÿ‡ซ๐Ÿ‡ท 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.

๐Ÿ’ธ Indicate a spendingLimit when using the addCard mutation. To avoid breaking changes, the spendingLimit is an optional input for the addCard mutation.

๐Ÿคณ๐Ÿพ Create a card and add it to Apple Pay or Google Pay simultaneously using the multiple consent feature.

Bug fixโ€‹

๐Ÿ’ฐ 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โ€‹

๐Ÿ’ฅ 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โ€‹

โš ๏ธ 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.
  • New rejection reason codes for SepaInstantCreditTransferOut transactions. The new values are: CreditorBankTechnicalErrorOccurred and CreditorBankTimeout.
  • New transaction types SepaInstantCreditTransferInRecall and SepaInstantCreditTransferOutRecall.
  • Add Refused in accountHolder.verificationStatus enum

ยท 2 min read

New featuresโ€‹

๐Ÿ’ธ 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).

๐Ÿค– 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 PIM (Product Integration Manager), check the documentation and start consenting on the go!

โšก 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.

Improvementsโ€‹

๐Ÿ’ณ Display the numbers of a physical card using the new viewPhysicalCardNumbers mutation. This is especially useful if you only issue physical cards.

๐Ÿ” When using server-to-server consent to add single-use virtual cards, 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.

Upcoming breaking changesโ€‹

โš ๏ธ 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

ยท 2 min read

New featuresโ€‹

๐Ÿ’ฐ 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.

๐Ÿ‘ฉ๐Ÿผโ€๐Ÿ’ป 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โ€‹

โ›” UBO doesn't mean anything to French "syndicat de copropriรฉtรฉ" and "associations" so we removed them from the nocode onboarding.

โš–๏ธ A "legal representative" tile was added to the dashboard for company account holders.

๐Ÿ”— The authentication SMS was changed from swan.io to authmsg.co, for better whitelabeling.

๐Ÿ” 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.

๐ŸŒฌ๏ธ The Refund API mutation can now be used on SepaInstantCreditTransferIn transactions

Breaking changesโ€‹

๐Ÿ“… The deprecated field executionDate used as an input for the initiateCreditTransfers mutation was permanently removed and replaced by requestedExecutionAt.

๐Ÿˆฒ 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.

ยท 2 min read

New featuresโ€‹

โšก We can now receive Instant SEPA Credit Transfers! These will be shown as SepaInstantCreditTransferIn in the TransactionTypeEnum.

๐Ÿ’ณ Manage multiple card products from the dashboard, with different designs and spending limits.

Improvementsโ€‹

๐Ÿ’ณ 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.

๐Ÿ“… 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.

๐Ÿšฅ 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, core 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.

๐Ÿ—“๏ธ 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.

Bug fixโ€‹

๐Ÿ’ฅ A very small proportion of users experienced errors when using their 6-digit passcode during consent. This has been fixed.

Breaking changesโ€‹

๐Ÿ‘ฅ 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โ€‹

๐Ÿ“… By the end of October, the deprecated field executionDateused as an input for the intitiateCreditTransfer mutation will be permanently removed and replaced by requestedExecutionAt.

ยท 2 min read

New featuresโ€‹

๐ŸŒ 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!

๐Ÿ”Ž We added an API Reference to help you during integration. Use it alongside the Doc and the Explorer.

Improvementsโ€‹

๐ŸŒฌ๏ธ 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โ€‹

๐Ÿ”— The new web banking navigation comes with new URL formats. If you use deep links, you'll have to update them accordingly.

๐Ÿ” For security reasons, PUT method is no longer supported when uploading a supporting document.

๐Ÿ… For performance reasons, we added a rate-limiting to 60 requests per minute for introspections queries.

๐Ÿ’ฐ 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โ€‹

๐Ÿ‘ฅ 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.

๐Ÿ“… 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.

ยท One min read

Improvementsโ€‹

๐Ÿš” 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.

๐Ÿ’ณ 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.

ยท 2 min read

New featuresโ€‹

๐Ÿ“ˆ Account funding beta testers, you can now push your end customers' balances in order to calculate a funding limit.

Improvementsโ€‹

๐Ÿคณ Review and optimize the user experience of our Strong Customer Authentication flows and encourage biometric authentication each time the passcode is used.

๐Ÿ“ƒ Add a supporting document section in the dashboard to consult the list of uploaded documents required for KYC/KYB and upload new ones.

๐Ÿ“ˆ 2 new countries are available for company onboarding: Cyprus and Bulgaria

๐Ÿ” We added more search filters and sorting in the account list and in the account membership list.

๐Ÿช A new webhook account.closing is triggered when closing an account

โœ… The sepaBeneficiary.name input of the initiateCreditTransfer API mutation now needs to have a minimum of 2 characters.

โ™ป๏ธ A new simulation (simulateReleaseReservedBalance) lets you release the reserved balance for a transaction. As a reminder, the reserve balance depends on the rolling reserve

โ›” 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.

๐Ÿ›‘ Onboarding API data validation: new rejection type raised in case of incorrect data format/type

Bug fixโ€‹

โŒ› We fixed some performance issues with the card and the account membership list

Breaking changesโ€‹

๐Ÿ“ƒ The Supporting Document status has been renamed from ReviewPending to PendingReview.

๐Ÿ’ฅ accountHolder.fundingLimitand and accountHolder.instantFundingLimit were deprecated since the previous release and have been totally removed.

Upcoming breaking changesโ€‹

๐Ÿ“ƒ We changed the upload method from PUT to POST. PUT still works but is now deprecated and will be removed by end of August.

๐ŸŽ™๏ธ Next release, we will implement a rate-limiting to 60 req/minutes for introspections queries.

ยท 2 min read

New featuresโ€‹

๐Ÿ“ˆ 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.

๐Ÿคณ๐Ÿฟ Accept up to 100 consents with just one single Strong Customer Authentication.

๐Ÿ“„ 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.

Improvementsโ€‹

โœ… Clearly see where you are in the activation process, right from the dashboard header. Just click โ€œActivate.โ€

๐Ÿ“ƒ If you're opening accounts for companies, you can now upload supporting documents using the nocode onboarding interface.

๐Ÿ‘ค For a better UX, we decided to remove the last page of user registration (Sign in).

๐Ÿ” You can now search a first or last name in the account membership list.

๐Ÿช A new webhook onboarding.updated is triggered when onboarding is finalized.

๐Ÿ”„ Funding sources are listed in the dashboard.

โœ–๏ธ 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.

๐Ÿ‘ฎ๐Ÿป 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)

๐Ÿ’ณ A new reason code has been added for refused card transactions: MerchantShouldResubmitAuthorization

๐Ÿ’ธ Card spending was not being released when the authorization amount was released.

Bug fixโ€‹

๐Ÿ’ณ Some card options were recently desynchronized at our card processor. We've fixed this.

Breaking changesโ€‹

๐Ÿ’ฅ 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โ€‹

๐Ÿ“ƒ Next release, in early July, we will rename the Supporting Document status ReviewPending to PendingReview.