Quickstart
This guide lets you familiarize yourself with Swan's interfaces and API in less than 10 minutes.
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.
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.
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
onboardIndividualAccountHolder
mutation. 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 redirectUrl
was not configured, the user will be redirected to our web banking interface.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.
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.
- 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.
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.
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
!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.
Last modified 4mo ago