Links

Quickstart

This guide lets you familiarize yourself with Swan's interfaces and API in less than 10 minutes.

Get access to Swan

It's easy to jump into our Sandbox and start building. You don't need to get in touch or ask for a demo. Click this link to Start now.
You'll just have to fill out a short form, verify your identity using your phone, then you're in!
In this Quickstart, we walk you through the quickest path to launch. You have other options that allow for more customization and control over the user experience.

Configure your banking experience

Once you have access to the dashboard, you can start testing our product via the Sandbox. The Sandbox is just like Swan, but all the accounts are fake. It lets you try out all our available features, and test how easily you can integrate them into your processes or products.
Our administration dashboard
First of all, you should personalize our interfaces with your branding. Go to Settings > Branding to upload your logo and pick your accent color. We will display that information to your users when they use our interfaces.
If you want to use our API you will also need to configure it. Go to API to get your credentials. You also need to whitelist all your URLs. Any URL not in Redirect URLs will be considered malicious and we won't redirect users to it. For security purposes, make sure to add all URLs you use, not just the domain.
Use Swan's open source banking app to further customize your user's banking experience.

Create your first account

Onboard the user

To create your first payment account you can head over to Onboarding and choose the public URL corresponding to your use case. Let's say you want to open accounts for individuals; you can do so by using the first link. This generic URL can be used by anyone to create an account on your project. It will redirect you to an onboarding form that lets us collect the information necessary to open the account.
You can also create a unique onboarding URL for a specific client through our API. To do so, call the onboardIndividualAccountHoldermutation. It will return a unique link to a pre-filled form. This call must be done with a project access token (click "Connected to the sandbox as the project" on the API Explorer).
Request
Reponse
mutation MyMutation {
onboardIndividualAccountHolder(
input: {
monthlyIncome: Between500And1500
language: "en"
employmentStatus: Employee
email: "{{YOUR_EMAIL}}"
accountName: "{{YOUR_ACCOUNT_NAME}}"
redirectUrl: "{{YOUR_REDIRECT_URL}}"
}
) {
... on OnboardIndividualAccountHolderSuccessPayload {
__typename
onboarding {
id
onboardingUrl
}
}
... on ForbiddenRejection {
__typename
message
}
... on ValidationRejection {
__typename
message
}
}
}
{
"data": {
"onboardIndividualAccountHolder": {
"__typename": "OnboardIndividualAccountHolderSuccessPayload",
"onboarding": {
"id": "{{YOUR_ONBOARDING_ID}}",
"onboardingUrl": "https://api.banking.sandbox.swan.io/projects/{{YOUR_PROJECT_ID}}/onboardings/{{YOUR_ONBOARDI_ID}}?lang=en"
}
}
}
}
In this example you can provide the onboardingUrl to your clients. Once the onboarding is done we will redirect the user to the redirectUrl you configured. In this example, since a redirectUrlwas not configured, the user will be redirected to our web banking interface.

Access the account

At Swan, everything can be accessed either through our API or through the web banking interface. The same goes for account information. To get account balances, IBANs and all other account-related data, you can use the account query.
Request
Response
query MyQuery {
accounts {
edges {
node {
BIC
IBAN
balances {
available {
currency
value
}
booked {
currency
value
}
pending {
currency
value
}
}
cashAccountType
currency
name
number
paymentLevel
statusInfo {
status
}
}
}
}
}
{
"data": {
"account": {
"BIC": "",
"IBAN": null,
"balances": {
"available": {
"currency": "EUR",
"value": "0"
},
"booked": {
"currency": "EUR",
"value": "0"
},
"pending": {
"currency": "EUR",
"value": "0"
}
},
"cashAccountType": "Current",
"currency": "EUR",
"name": "{{YOUR_ACCOUNT_NAME}}",
"number": "{{YOUR_ACCOUNT_NUMBER}}",
"paymentLevel": "Limited",
"statusInfo": {
"status": "Opened"
}
}
}
}
You can also explore our web banking interface to familiarize yourself with our features.

Validate the new account

Like a lot of critical domains, banking services are highly regulated. You cannot simply "Sign up" without first going through a compliance check. At Swan, the compliance process takes place in two steps: identity verification and document collection. Identity verification is done automatically and is processed in about 10 minutes, while document collection is handled by our compliance department.
In the sandbox you can simulate those two processes with Sandbox User:
  • Identity verification: Go to Sandbox users to edit your current Sandbox User and select ValidIdentity on the "Verification Status" input.
  • Compliance review: go to Event Simulator > Account Holder, input the Account Holder Id, and select the status on the Verification Status field.
All of Swan's features are available as soon as your account is validated.

Execute the first payment

Credit your account

When you create an account you usually want to credit it with money. In real life, you would do this with a SEPA Credit Transfer from another account using your newly acquired IBAN. In the sandbox, the accounts are fake so you will need to simulate this. Go to Event Simulator > SEPA Credit Transfers > Receive an incoming Transfer, then describe the transfer you wish to simulate. The money will be instantly credited to your account.

Initiate a transfer

If you want to use this money you can make a payment by performing a SEPA transfer. Use the Payments tab in the web banking interface, or do it using our API. The initiateCreditTransfers mutation allows you to make one or more SEPA credit transfers to one or more IBANs.
Request
Response
mutation MyMutation {
initiateCreditTransfers(
input: {
creditTransfers: {
amount: { value: "100", currency: "EUR" }
label: "{{YOUR_CREDIT_TRANSFER_LABEL}}"
reference: "{{YOUR_CREDIT_TRANSFER_REFERENCE}}"
sepaBeneficiary: {
iban: "{{YOUR_IBAN}}"
name: "{{YOUR_ACCOUNT_NAME}}"
isMyOwnIban: false
save: false
}
}
consentRedirectUrl: "{{YOUR_REDIRECT_URL}}"
accountNumber: "{{YOUR_ACCOUNT_NUMBER}}"
}
) {
... on InitiateCreditTransfersSuccessPayload {
__typename
payment {
id
statusInfo {
status
... on PaymentConsentPending {
__typename
consent {
consentUrl
}
}
}
}
}
... on AccountNotFoundRejection {
id
message
}
... on ForbiddenRejection {
__typename
message
}
}
}
{
"data": {
"initiateCreditTransfers": {
"__typename": "InitiateCreditTransfersSuccessPayload",
"payment": {
"id": "{{YOUR_PAYMENT_ID}}",
"statusInfo": {
"status": "ConsentPending",
"__typename": "PaymentConsentPending",
"consent": {
"consentUrl": "{{YOUR_CONSENT_URL}}"
}
}
}
}
}
}
Don't forget to change the consentRedirectUrl and the accountNumber with your account number.
If you try this request, you will see that we fetch the consentUrl. At Swan, like any other bank, we need to comply with PSD2, so we provide you with an easy-to-use two-factor authentication. We use a process called consent, which sends a notification to the user whenever a sensitive operation needs to be validated. Open theconsentUrl on your browser to receive a notification asking to confirm the credit transfer. Once that is done, we redirect you to the URL you specified in consentRedirectUrl.
To follow the transaction lifecycle you can do a query to get all the account's payments.
Request
Response
query MyQuery {
accounts {
edges {
node {
transactions {
edges {
node {
amount {
currency
value
}
statusInfo {
status
}
id
createdAt
type
}
}
}
}
}
}
}
{
"data": {
"accounts": {
"edges": [
{
"node": {
"transactions": {
"edges": [
{
"node": {
"amount": {
"currency": "EUR",
"value": "100.00"
},
"statusInfo": {
"status": "Pending"
},
"id": "{{YOUR_TRANSACTION_ID}}",
"createdAt": "2021-08-26T15:26:22.492Z",
"type": "SepaCreditTransferOut"
}
}
]
}
}
]
}
}
}
As you can see above, the transaction status is Pending, meaning that the transaction was initiated but not yet sent to the beneficiary. In real life, the transaction would automatically be sent to the SEPA Network within a few hours. In the sandbox you can go to Event Simulator > SEPA Credit Transfers > Book an outgoing Transfer and enter the transaction to simulate the event. If you try the last request again, you will see that the status has changed to Booked !

Next steps

Bravo, you've completed Swan's Quickstart guide! You are now familiar with the onboarding process, the administration dashboard, and how to execute a payment. Feel free to explore our other features by yourself, including features like cards, standing orders, account memberships or payment control.
Or continue on with the next guide: How to use our API