Links

Fund an account

Learn how to fund a Swan account using push or pull payments.
Swan provides 2 ways to fund an account:
  • Push payments: send money to your Swan account from an external source. Swan lets you do this with a credit transfer.
  • Pull payments: use a Swan account to pull money from an external source. Swan lets you do this with methods like Sepa Direct Debit.

Push payments

Funding a live account is easy. Just use your primary bank account to transfer money toward your Swan account; the IBAN is the identifier. Once Swan receives the money, we instantly credit your account and the money is available.
In sandbox, you can practice funding an account using the Event Simulator and a fake IBAN: Event Simulator > SEPA Credit Transfers > Receive an incoming transfer. Select the desired amount, and it will be instantly credited to the account of your choice.
A new payment associated with the account is created, along with one transactionwith SepaCreditTransferIn type in the Booked state. The payment is instantly available through the web banking interface or the API. The money is directly available to make payments, the Booked balance being impacted as soon as the transaction is processed.

Pull payments

If you want to use SEPA Direct Debit Core or if you want to have a instant funding (without rolling reserve), please contact your account manager.

Add a funding source

To add a direct debit funding source via the API, use the addDirectDebitFundingSource mutation. To call this mutation, you need to use a User Access Token. Replace {{YOUR_ACCOUNT_ID}} with the concerned account ID and fill {{YOUR_REDIRECT_URL}}with the URL you want the user to be redirected to after they've consented to the direct debit payment mandate. In this guide, the FundingSource is an external account and we will use the SEPA Direct Debit B2B scheme to pull money from it. For more information about SEPA Direct Debit, read the documentation here.
Request
Response
mutation MyMutation {
addDirectDebitFundingSource(
input: {
scheme: SepaDirectDebitB2B
accountId: "{{YOUR_ACCOUNT_ID}}"
iban: "{{YOUR_IBAN}}"
consentRedirectUrl: "{{YOUR_REDIRECT_URL}}"
name: "{{YOUR_FUNDING_SOURCE_NAME}}"
}
) {
... on AddDirectDebitFundingSourceSuccessPayload {
__typename
fundingSource {
id
name
createdAt
... on DirectDebitFundingSource {
paymentMandate {
... on SEPAPaymentDirectDebitMandate {
statusInfo {
... on PaymentMandateConsentPendingStatusInfo {
__typename
consent {
consentUrl
}
}
}
mandateDocumentUrl
}
}
}
}
}
}
}
{
"data": {
"addDirectDebitFundingSource": {
"__typename": "AddDirectDebitFundingSourceSuccessPayload",
"fundingSource": {
"createdAt": "2022-07-04T09:10:23.472Z",
"id": "{{YOUR_FUNDING_SOURCE_ID}}",
"name": null,
"statusInfo": {
"status": "Pending"
},
"paymentMandate": {
"id": "{{YOUR_PAYMENT_MANDATE_ID}}",
"statusInfo": {
"status": "ConsentPending",
"__typename": "PaymentMandateConsentPendingStatusInfo",
"consent": {
"consentUrl": "{{YOUR_CONSENT_URL}}"
}
},
"mandateDocumentUrl": "{{YOUR_MANDATE_DOCUMENT_URL}}"
}
}
}
}
}
To validate the funding source, you will need to:
  • Get the user to consent to the payment mandate. To do so, you must display the consentUrl to the end-user. Once the payment mandate is consented to, it will be moved from ConsentPending to Enabled status.
Once the payment mandate is in the Enabled status, the funding source is moved to the Enabled status and can be used. You can check the funding source status using a query on the fundingSource.
Request
query MyQuery {
fundingSource(id: "{{YOUR_FUNDING_SOURCE_ID}}") {
id
statusInfo {
status
}
name
createdAt
... on DirectDebitFundingSource {
id
name
iban
}
}
}

Initiating a funding request

To pull money from the external account onto the concerned Swan account, you must use the initiateFundingRequest mutation. To call this mutation, you need to use a User Access Token. Replace {{YOUR_FUNDING_SOURCE_ID}} with the funding source ID which has been previously created and fill {{YOUR_REDIRECT_URL}} with the URL you want the user to be redirected to after they've consented to the funding request.
Request
Response
mutation MyMutation {
initiateFundingRequest(
input: {
fundingSourceId: "{{YOUR_FUNDING_SOURCE_ID}}"
amount: { value: "100", currency: "EUR" }
consentRedirectUrl: "{{YOUR_CONSENT_REDIRECT_URL}}"
}
) {
... on InitiateFundingRequestSuccessPayload {
__typename
payment {
statusInfo {
... on PaymentConsentPending {
__typename
consent {
consentUrl
}
}
}
}
}
}
}
{
"data": {
"initiateFundingRequest": {
"__typename": "InitiateFundingRequestSuccessPayload",
"payment": {
"statusInfo": {
"__typename": "PaymentConsentPending",
"consent": {
"consentUrl": "{{YOUR_CONSENT_URL}}"
}
}
}
}
}
}
A transaction with SepaDirectDebitIn type is created with Upcoming status.
It takes a maximum of 2 interbank business days following the initiation of the funding requestion for the transaction to be moved to Booked status. The money may go into the balance.reserved of the concerned account. Learn more about the Account Funding Rolling Reserve.
To learn more about the different ways to fund a Swan account, please read :