| Méthode | Chemin | Résumé |
|---|---|---|
| GET | /workspaces/{workspaceId}/read-consents | List read consents granted to access banking data |
| POST | /workspaces/{workspaceId}/read-consents | Create a new read consent with a banking provider |
| POST | /workspaces/{workspaceId}/read-consents/{consentId}/finalize | Finalize a read consent after the provider authorization step |
| POST | /workspaces/{workspaceId}/read-consents/{consentId}/renew | Renew an expiring or expired read consent |
| POST | /workspaces/{workspaceId}/read-consents/{consentId}/revoke | Revoke an active read consent |
| POST | /workspaces/{workspaceId}/read-consents/{consentId}/solve | Solve a pending read consent issue requiring user action |
| POST | /workspaces/{workspaceId}/write-consents | Create a write consent to enable initiating payments |
Les endpoints GET demandent consents:read, les autres consents:write.
L’objet ReadConsent
firestoreIdstringobligatoireID of the read consent.
expirationDateTimestringdate-timeauthorizationStatusobjectobligatoireAfficher les 2 champs enfants
statusstringobligatoireValeurspendingauthorisedrejectedrevokedconsumedexpired
updateDateTimestringdate-timeobligatoireproductsstring[]obligatoireBanking product, a group of bank services that a consent can cover.
Afficher les 15 valeurs
identityIdentity of the account holder.
read_consentsConsents that give read access to account data.
write_consentsConsents that allow payments.
accountsBank accounts and their details.
beneficiariesPayees saved at the bank.
balancesBalances of the accounts.
transactionsTransactions of the accounts.
statementsStatements of the accounts.
cardsPayment cards of the accounts.
variable_recurring_paymentsRecurring payments with variable amounts.
direct_debitsDirect debits of the accounts.
draft_paymentsPayments submitted to the bank and approved by the account holder in e-banking.
single_paymentsOne-time payments that the bank executes.
scheduled_paymentsPayments that the bank executes at a later date.
standing_order_paymentsStanding orders, recurring payments of a fixed amount.
featuresstring[]obligatoireBanking feature, a capability of the banking product named before the dot.
Afficher les 44 valeurs
identity.detailsReads the identity details of the account holder.
read_consents.multiple_consents_allowedAllows several read consents at the bank, each for its own accounts.
read_consents.single_consent_allowedAllows one read consent at the bank; a new consent replaces the previous one.
read_consents.redirectAuthorises read consents on the website or app of the bank.
read_consents.embeddedAuthorises read consents without leaving Sway.
write_consents.redirectAuthorises payment consents on the website or app of the bank.
write_consents.embeddedAuthorises payment consents without leaving Sway.
accounts.listLists the bank accounts.
accounts.detailsReads the details of a bank account.
beneficiaries.listLists the payees saved at the bank.
beneficiaries.detailsReads the details of a saved payee.
balances.intradayReads the balance during the day.
balances.closingReads the closing balance of each day.
transactions.intradayReads the transactions of the current day.
transactions.historyReads the past transactions.
statements.listLists the account statements.
statements.iso_camt053_xmlProvides account statements as ISO 20022 camt.053 XML files.
statements.pdfProvides account statements as PDF files.
direct_debits.listLists the direct debits.
direct_debits.detailsReads the details of a direct debit.
draft_payments.revolut_csvSubmits payments as a CSV file in the Revolut format.
draft_payments.iso_pain001_ch_xmlSubmits payments as an ISO 20022 pain.001 XML file in the Swiss variant.
draft_payments.iso_pain001_xmlSubmits payments as an ISO 20022 pain.001 XML file.
draft_payments.domesticSubmits domestic payments.
draft_payments.internationalSubmits international payments.
draft_payments.bulkSubmits several payments at once.
draft_payments.listLists the submitted payments.
draft_payments.detailsReads the details of a submitted payment.
single_payments.domesticExecutes domestic one-time payments.
single_payments.internationalExecutes international one-time payments.
single_payments.instantExecutes domestic instant payments.
single_payments.bulkExecutes several one-time payments at once.
single_payments.listLists the one-time payments.
single_payments.detailsReads the details of a one-time payment.
scheduled_payments.domesticSchedules domestic payments.
scheduled_payments.internationalSchedules international payments.
scheduled_payments.bulkSchedules several payments at once.
scheduled_payments.listLists the scheduled payments.
scheduled_payments.detailsReads the details of a scheduled payment.
standing_order_payments.domesticSets up domestic standing orders.
standing_order_payments.internationalSets up international standing orders.
standing_order_payments.bulkSets up several standing orders at once.
standing_order_payments.listLists the standing orders.
standing_order_payments.detailsReads the details of a standing order.
rangeobjectAfficher les 2 champs enfants
fromDateTimestringdate-timetoDateTimestringdate-timereferencestringobligatoireAfficher les 11 champsMasquer la liste des champs
serviceProviderIdstringobligatoireID of the service provider.
workspaceIdstringobligatoireID of the workspace.
creationobjectobligatoireWhen and by whom the resource was created.
Afficher les 2 champs enfants
creationDateTimestringdate-timeobligatoireDate and time when the resource was created.
createdBystringID of the user who created the resource, when recorded.
solvedbooleanobligatoire{
"firestoreId": "rcons_UkVBRC0wMDQy",
"expirationDateTime": "2026-03-02T09:30:00.000Z",
"authorizationStatus": {
"status": "pending",
"updateDateTime": "2026-03-02T09:30:00.000Z"
},
"products": [
"identity"
],
"features": [
"identity.details"
],
"range": {
"fromDateTime": "2026-03-02T09:30:00.000Z",
"toDateTime": "2026-03-02T09:30:00.000Z"
},
"reference": "string",
"serviceProviderId": "sprov_SUlEUDAwMjMw",
"workspaceId": "Wk7fQ2xR9bLm4tZp8sNv",
"creation": {
"creationDateTime": "2026-03-02T09:15:00.000Z",
"createdBy": "Xq3vT9mB2kLpR7sN4wYc8dZf1aHj"
},
"solved": true
}/workspaces/{workspaceId}/read-consentsList read consents granted to access banking data
Portéeconsents:read
Paramètres de chemin
workspaceIdstringobligatoireID of the workspace.
Paramètres de requête
limitintegerMaximum number of items to return, from 1 to 100. A missing, invalid or non-positive value falls back to 20, and a larger value to 100.
Par défaut20
startAfterstringCursor of the page to return: the nextCursor of the previous page.
fieldsstringComma-separated property paths to include in the response, or in each item of a list. Use dots for nested paths.
idsstring[]Comma-separated IDs of the items to return, up to 30. When set, limit, startAfter and the filters are ignored.
Renvoie
List of items
Items of the page, in list order.
limitintegerobligatoirePage size of the request, or the number of requested ids.
nextCursorstringCursor of the next page, to pass as startAfter. Absent when the page holds fewer items than limit; a full last page still has one, and the page it points to is empty.
curl 'https://api.business.swayapp.io/v1/workspaces/Wk7fQ2xR9bLm4tZp8sNv/read-consents' \
-H "Authorization: Bearer $SWAY_API_KEY"const response = await fetch('https://api.business.swayapp.io/v1/workspaces/Wk7fQ2xR9bLm4tZp8sNv/read-consents', {
headers: {
Authorization: `Bearer ${process.env.SWAY_API_KEY}`,
},
});
console.log(await response.json());import os
import requests
response = requests.get(
"https://api.business.swayapp.io/v1/workspaces/Wk7fQ2xR9bLm4tZp8sNv/read-consents",
headers={"Authorization": f"Bearer {os.environ['SWAY_API_KEY']}"},
)
print(response.json()){
"data": [
{
"firestoreId": "rcons_UkVBRC0wMDQy",
"expirationDateTime": "2026-03-02T09:30:00.000Z",
"authorizationStatus": {
"status": "pending",
"updateDateTime": "2026-03-02T09:30:00.000Z"
},
"products": [
"identity"
],
"features": [
"identity.details"
],
"range": {
"fromDateTime": "2026-03-02T09:30:00.000Z",
"toDateTime": "2026-03-02T09:30:00.000Z"
},
"reference": "string",
"serviceProviderId": "sprov_SUlEUDAwMjMw",
"workspaceId": "Wk7fQ2xR9bLm4tZp8sNv",
"creation": {
"creationDateTime": "2026-03-02T09:15:00.000Z",
"createdBy": "Xq3vT9mB2kLpR7sN4wYc8dZf1aHj"
},
"solved": true
}
],
"limit": 0,
"nextCursor": "string"
}{
"error": {
"code": "invalid-argument",
"message": "Invalid request"
}
}{
"error": {
"code": "unauthenticated",
"message": "Invalid or expired credentials"
}
}{
"error": {
"code": "permission-denied",
"message": "Missing required scope: invoices:read"
}
}{
"error": {
"code": "not-found",
"message": "Resource not found"
}
}{
"error": {
"code": "internal",
"message": "An internal error occurred"
}
}/workspaces/{workspaceId}/read-consentsCreate a new read consent with a banking provider
Portéeconsents:write
Paramètres de chemin
workspaceIdstringobligatoireID of the workspace.
Paramètres de requête
fieldsstringComma-separated property paths to include in the response, or in each item of a list. Use dots for nested paths.
Corps de la requête
serviceProviderIdstringobligatoireID of the service provider.
referencestringobligatoireconsentIdstringID of an earlier read consent to revoke and replace; the new consent keeps its reference.
Renvoie
Successful response
curl -X POST 'https://api.business.swayapp.io/v1/workspaces/Wk7fQ2xR9bLm4tZp8sNv/read-consents' \
-H "Authorization: Bearer $SWAY_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"serviceProviderId": "sprov_SUlEUDAwMjMw",
"reference": "string",
"consentId": "rcons_UkVBRC0wMDQy"
}'const response = await fetch('https://api.business.swayapp.io/v1/workspaces/Wk7fQ2xR9bLm4tZp8sNv/read-consents', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.SWAY_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
"serviceProviderId": "sprov_SUlEUDAwMjMw",
"reference": "string",
"consentId": "rcons_UkVBRC0wMDQy"
}),
});
console.log(await response.json());import os
import requests
response = requests.post(
"https://api.business.swayapp.io/v1/workspaces/Wk7fQ2xR9bLm4tZp8sNv/read-consents",
headers={"Authorization": f"Bearer {os.environ['SWAY_API_KEY']}"},
json={
"serviceProviderId": "sprov_SUlEUDAwMjMw",
"reference": "string",
"consentId": "rcons_UkVBRC0wMDQy",
},
)
print(response.json()){
"data": {
"firestoreId": "rcons_UkVBRC0wMDQy",
"expirationDateTime": "2026-03-02T09:30:00.000Z",
"authorizationStatus": {
"status": "pending",
"updateDateTime": "2026-03-02T09:30:00.000Z"
},
"products": [
"identity"
],
"features": [
"identity.details"
],
"range": {
"fromDateTime": "2026-03-02T09:30:00.000Z",
"toDateTime": "2026-03-02T09:30:00.000Z"
},
"reference": "string",
"serviceProviderId": "sprov_SUlEUDAwMjMw",
"workspaceId": "Wk7fQ2xR9bLm4tZp8sNv",
"creation": {
"creationDateTime": "2026-03-02T09:15:00.000Z",
"createdBy": "Xq3vT9mB2kLpR7sN4wYc8dZf1aHj"
},
"solved": true
}
}{
"error": {
"code": "invalid-argument",
"message": "Invalid request"
}
}{
"error": {
"code": "unauthenticated",
"message": "Invalid or expired credentials"
}
}{
"error": {
"code": "permission-denied",
"message": "Missing required scope: invoices:read"
}
}{
"error": {
"code": "not-found",
"message": "Resource not found"
}
}{
"error": {
"code": "internal",
"message": "An internal error occurred"
}
}/workspaces/{workspaceId}/read-consents/{consentId}/finalizeFinalize a read consent after the provider authorization step
Portéeconsents:write
Paramètres de chemin
workspaceIdstringobligatoireID of the workspace.
consentIdstringobligatoireID of the read consent.
Paramètres de requête
fieldsstringComma-separated property paths to include in the response, or in each item of a list. Use dots for nested paths.
Renvoie
Successful response
curl -X POST 'https://api.business.swayapp.io/v1/workspaces/Wk7fQ2xR9bLm4tZp8sNv/read-consents/rcons_UkVBRC0wMDQy/finalize' \
-H "Authorization: Bearer $SWAY_API_KEY"const response = await fetch('https://api.business.swayapp.io/v1/workspaces/Wk7fQ2xR9bLm4tZp8sNv/read-consents/rcons_UkVBRC0wMDQy/finalize', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.SWAY_API_KEY}`,
},
});
console.log(await response.json());import os
import requests
response = requests.post(
"https://api.business.swayapp.io/v1/workspaces/Wk7fQ2xR9bLm4tZp8sNv/read-consents/rcons_UkVBRC0wMDQy/finalize",
headers={"Authorization": f"Bearer {os.environ['SWAY_API_KEY']}"},
)
print(response.json()){
"data": {
"firestoreId": "rcons_UkVBRC0wMDQy",
"expirationDateTime": "2026-03-02T09:30:00.000Z",
"authorizationStatus": {
"status": "pending",
"updateDateTime": "2026-03-02T09:30:00.000Z"
},
"products": [
"identity"
],
"features": [
"identity.details"
],
"range": {
"fromDateTime": "2026-03-02T09:30:00.000Z",
"toDateTime": "2026-03-02T09:30:00.000Z"
},
"reference": "string",
"serviceProviderId": "sprov_SUlEUDAwMjMw",
"workspaceId": "Wk7fQ2xR9bLm4tZp8sNv",
"creation": {
"creationDateTime": "2026-03-02T09:15:00.000Z",
"createdBy": "Xq3vT9mB2kLpR7sN4wYc8dZf1aHj"
},
"solved": true
}
}{
"error": {
"code": "invalid-argument",
"message": "Invalid request"
}
}{
"error": {
"code": "unauthenticated",
"message": "Invalid or expired credentials"
}
}{
"error": {
"code": "permission-denied",
"message": "Missing required scope: invoices:read"
}
}{
"error": {
"code": "not-found",
"message": "Resource not found"
}
}{
"error": {
"code": "internal",
"message": "An internal error occurred"
}
}/workspaces/{workspaceId}/read-consents/{consentId}/renewRenew an expiring or expired read consent
Portéeconsents:write
Paramètres de chemin
workspaceIdstringobligatoireID of the workspace.
consentIdstringobligatoireID of the read consent.
Paramètres de requête
fieldsstringComma-separated property paths to include in the response, or in each item of a list. Use dots for nested paths.
Corps de la requête
serviceProviderIdstringobligatoireID of the service provider.
referencestringobligatoireRenvoie
Successful response
curl -X POST 'https://api.business.swayapp.io/v1/workspaces/Wk7fQ2xR9bLm4tZp8sNv/read-consents/rcons_UkVBRC0wMDQy/renew' \
-H "Authorization: Bearer $SWAY_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"serviceProviderId": "sprov_SUlEUDAwMjMw",
"reference": "string"
}'const response = await fetch('https://api.business.swayapp.io/v1/workspaces/Wk7fQ2xR9bLm4tZp8sNv/read-consents/rcons_UkVBRC0wMDQy/renew', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.SWAY_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
"serviceProviderId": "sprov_SUlEUDAwMjMw",
"reference": "string"
}),
});
console.log(await response.json());import os
import requests
response = requests.post(
"https://api.business.swayapp.io/v1/workspaces/Wk7fQ2xR9bLm4tZp8sNv/read-consents/rcons_UkVBRC0wMDQy/renew",
headers={"Authorization": f"Bearer {os.environ['SWAY_API_KEY']}"},
json={
"serviceProviderId": "sprov_SUlEUDAwMjMw",
"reference": "string",
},
)
print(response.json()){
"data": {
"firestoreId": "rcons_UkVBRC0wMDQy",
"expirationDateTime": "2026-03-02T09:30:00.000Z",
"authorizationStatus": {
"status": "pending",
"updateDateTime": "2026-03-02T09:30:00.000Z"
},
"products": [
"identity"
],
"features": [
"identity.details"
],
"range": {
"fromDateTime": "2026-03-02T09:30:00.000Z",
"toDateTime": "2026-03-02T09:30:00.000Z"
},
"reference": "string",
"serviceProviderId": "sprov_SUlEUDAwMjMw",
"workspaceId": "Wk7fQ2xR9bLm4tZp8sNv",
"creation": {
"creationDateTime": "2026-03-02T09:15:00.000Z",
"createdBy": "Xq3vT9mB2kLpR7sN4wYc8dZf1aHj"
},
"solved": true
}
}{
"error": {
"code": "invalid-argument",
"message": "Invalid request"
}
}{
"error": {
"code": "unauthenticated",
"message": "Invalid or expired credentials"
}
}{
"error": {
"code": "permission-denied",
"message": "Missing required scope: invoices:read"
}
}{
"error": {
"code": "not-found",
"message": "Resource not found"
}
}{
"error": {
"code": "internal",
"message": "An internal error occurred"
}
}/workspaces/{workspaceId}/read-consents/{consentId}/revokeRevoke an active read consent
Portéeconsents:write
Paramètres de chemin
workspaceIdstringobligatoireID of the workspace.
consentIdstringobligatoireID of the read consent.
Renvoie
No content
curl -X POST 'https://api.business.swayapp.io/v1/workspaces/Wk7fQ2xR9bLm4tZp8sNv/read-consents/rcons_UkVBRC0wMDQy/revoke' \
-H "Authorization: Bearer $SWAY_API_KEY"const response = await fetch('https://api.business.swayapp.io/v1/workspaces/Wk7fQ2xR9bLm4tZp8sNv/read-consents/rcons_UkVBRC0wMDQy/revoke', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.SWAY_API_KEY}`,
},
});
console.log(response.status);import os
import requests
response = requests.post(
"https://api.business.swayapp.io/v1/workspaces/Wk7fQ2xR9bLm4tZp8sNv/read-consents/rcons_UkVBRC0wMDQy/revoke",
headers={"Authorization": f"Bearer {os.environ['SWAY_API_KEY']}"},
)
print(response.status_code){
"error": {
"code": "invalid-argument",
"message": "Invalid request"
}
}{
"error": {
"code": "unauthenticated",
"message": "Invalid or expired credentials"
}
}{
"error": {
"code": "permission-denied",
"message": "Missing required scope: invoices:read"
}
}{
"error": {
"code": "not-found",
"message": "Resource not found"
}
}{
"error": {
"code": "internal",
"message": "An internal error occurred"
}
}/workspaces/{workspaceId}/read-consents/{consentId}/solveSolve a pending read consent issue requiring user action
Portéeconsents:write
Paramètres de chemin
workspaceIdstringobligatoireID of the workspace.
consentIdstringobligatoireID of the read consent.
Renvoie
No content
curl -X POST 'https://api.business.swayapp.io/v1/workspaces/Wk7fQ2xR9bLm4tZp8sNv/read-consents/rcons_UkVBRC0wMDQy/solve' \
-H "Authorization: Bearer $SWAY_API_KEY"const response = await fetch('https://api.business.swayapp.io/v1/workspaces/Wk7fQ2xR9bLm4tZp8sNv/read-consents/rcons_UkVBRC0wMDQy/solve', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.SWAY_API_KEY}`,
},
});
console.log(response.status);import os
import requests
response = requests.post(
"https://api.business.swayapp.io/v1/workspaces/Wk7fQ2xR9bLm4tZp8sNv/read-consents/rcons_UkVBRC0wMDQy/solve",
headers={"Authorization": f"Bearer {os.environ['SWAY_API_KEY']}"},
)
print(response.status_code){
"error": {
"code": "invalid-argument",
"message": "Invalid request"
}
}{
"error": {
"code": "unauthenticated",
"message": "Invalid or expired credentials"
}
}{
"error": {
"code": "permission-denied",
"message": "Missing required scope: invoices:read"
}
}{
"error": {
"code": "not-found",
"message": "Resource not found"
}
}{
"error": {
"code": "internal",
"message": "An internal error occurred"
}
}/workspaces/{workspaceId}/write-consentsCreate a write consent to enable initiating payments
Portéeconsents:write
Paramètres de chemin
workspaceIdstringobligatoireID of the workspace.
Paramètres de requête
fieldsstringComma-separated property paths to include in the response, or in each item of a list. Use dots for nested paths.
Corps de la requête
serviceProviderIdstringobligatoireID of the service provider.
paymentDataobjectobligatoireAfficher les 11 champs enfants
scopestring | nullScope of the payment, which depends on the countries and currencies of the debtor and creditor accounts.
domesticA GBP payment between two accounts in the United Kingdom, or a EUR payment between two accounts in SEPA countries.
internationalAny other payment, which needs the BIC of the creditor bank.
idempotencyIdstring | nullexecutionDatestringobligatoireamountnumberobligatoireAmount of the payment, in currency.
currencystringobligatoirereferencestring | nullcommunicationstring | nullinvoiceIdstring | nullID of the invoice.
chargeBearerstring | nullValeursCREDDEBTSHARSLEV
debtorobjectobligatoireAfficher les 4 champs enfants
bankAccountIdstringobligatoireID of the bank account.
namestringobligatoireaccountIdentificationsobject[]obligatoireAfficher les 2 champs enfants
typestringobligatoireKind of identifier of a bank account or of its bank.
Afficher les 14 valeurs
bicBank Identifier Code of the bank.
sortCodeSix-digit code of a bank and branch in the United Kingdom.
ibanInternational Bank Account Number.
bbanBasic Bank Account Number, the country-specific format of an account number.
accountNumberAccount number that the bank assigns, unique within the bank or the branch.
panPrimary Account Number, the number of a credit or debit card.
emailEmail address that identifies the account.
msisdnMobile phone number that identifies the account.
virtualAccountIdIdentifier of a virtual sub-account of a main account.
globalWalletIdentifier of a digital wallet that holds and pays in several currencies.
clabeCLABE, the 18-digit standardized bank code of a Mexican bank account.
bitcoinAddressSingle Bitcoin address, the only address the account tracks.
bitcoinXpubBitcoin extended public key (xpub, ypub or zpub), from which the addresses of the wallet are derived.
otherAnother kind of identifier.
valuestringobligatoireValue of the identifier, for example the IBAN or the BIC.
currencystringobligatoirecreditorobjectobligatoireAfficher les 6 champs enfants
counterpartyIdstringobligatoireID of the counterparty.
counterpartyCashAccountIdstringobligatoirenamestringobligatoireaccountIdentificationsobject[]obligatoireAfficher les 2 champs enfants
typestringobligatoireKind of identifier of a bank account or of its bank.
Afficher les 14 valeurs
bicBank Identifier Code of the bank.
sortCodeSix-digit code of a bank and branch in the United Kingdom.
ibanInternational Bank Account Number.
bbanBasic Bank Account Number, the country-specific format of an account number.
accountNumberAccount number that the bank assigns, unique within the bank or the branch.
panPrimary Account Number, the number of a credit or debit card.
emailEmail address that identifies the account.
msisdnMobile phone number that identifies the account.
virtualAccountIdIdentifier of a virtual sub-account of a main account.
globalWalletIdentifier of a digital wallet that holds and pays in several currencies.
clabeCLABE, the 18-digit standardized bank code of a Mexican bank account.
bitcoinAddressSingle Bitcoin address, the only address the account tracks.
bitcoinXpubBitcoin extended public key (xpub, ypub or zpub), from which the addresses of the wallet are derived.
otherAnother kind of identifier.
valuestringobligatoireValue of the identifier, for example the IBAN or the BIC.
currencystringobligatoireaddressobjectAfficher les 12 champs enfants
countrystringISO 3166-1 alpha-2 country code
postCodestringPost code of the address.
townNamestringName of the town or city.
streetNamestringName of the street.
buildingNumberstringNumber of the building in the street.
namestringName of the building or place.
sortingCodestringAdditional sorting code of the postal service, used in a few countries such as France.
postBoxstringPost office box.
administrativeAreastringRegion of the country, such as a canton or a state.
recipientsstring[]Names of the people the address is for.
organizationstringName of the organization at the address.
sourcestring[]Text the address was read from, one item per line.
callbackParamsRecord<string, string | number | boolean>Renvoie
Successful response
dataWriteConsentobligatoireAfficher les 12 champs enfants
firestoreIdstringobligatoireID of the write consent.
expirationDateTimestringdate-timeauthorizationStatusobjectobligatoireAfficher les 2 champs enfants
statusstringobligatoireValeurspendingauthorisedrejectedrevokedconsumedexpired
updateDateTimestringdate-timeobligatoireauthorizationUristringuriproductsstring[]obligatoireBanking product, a group of bank services that a consent can cover.
Afficher les 15 valeurs
identityIdentity of the account holder.
read_consentsConsents that give read access to account data.
write_consentsConsents that allow payments.
accountsBank accounts and their details.
beneficiariesPayees saved at the bank.
balancesBalances of the accounts.
transactionsTransactions of the accounts.
statementsStatements of the accounts.
cardsPayment cards of the accounts.
variable_recurring_paymentsRecurring payments with variable amounts.
direct_debitsDirect debits of the accounts.
draft_paymentsPayments submitted to the bank and approved by the account holder in e-banking.
single_paymentsOne-time payments that the bank executes.
scheduled_paymentsPayments that the bank executes at a later date.
standing_order_paymentsStanding orders, recurring payments of a fixed amount.
featuresstring[]obligatoireBanking feature, a capability of the banking product named before the dot.
Afficher les 44 valeurs
identity.detailsReads the identity details of the account holder.
read_consents.multiple_consents_allowedAllows several read consents at the bank, each for its own accounts.
read_consents.single_consent_allowedAllows one read consent at the bank; a new consent replaces the previous one.
read_consents.redirectAuthorises read consents on the website or app of the bank.
read_consents.embeddedAuthorises read consents without leaving Sway.
write_consents.redirectAuthorises payment consents on the website or app of the bank.
write_consents.embeddedAuthorises payment consents without leaving Sway.
accounts.listLists the bank accounts.
accounts.detailsReads the details of a bank account.
beneficiaries.listLists the payees saved at the bank.
beneficiaries.detailsReads the details of a saved payee.
balances.intradayReads the balance during the day.
balances.closingReads the closing balance of each day.
transactions.intradayReads the transactions of the current day.
transactions.historyReads the past transactions.
statements.listLists the account statements.
statements.iso_camt053_xmlProvides account statements as ISO 20022 camt.053 XML files.
statements.pdfProvides account statements as PDF files.
direct_debits.listLists the direct debits.
direct_debits.detailsReads the details of a direct debit.
draft_payments.revolut_csvSubmits payments as a CSV file in the Revolut format.
draft_payments.iso_pain001_ch_xmlSubmits payments as an ISO 20022 pain.001 XML file in the Swiss variant.
draft_payments.iso_pain001_xmlSubmits payments as an ISO 20022 pain.001 XML file.
draft_payments.domesticSubmits domestic payments.
draft_payments.internationalSubmits international payments.
draft_payments.bulkSubmits several payments at once.
draft_payments.listLists the submitted payments.
draft_payments.detailsReads the details of a submitted payment.
single_payments.domesticExecutes domestic one-time payments.
single_payments.internationalExecutes international one-time payments.
single_payments.instantExecutes domestic instant payments.
single_payments.bulkExecutes several one-time payments at once.
single_payments.listLists the one-time payments.
single_payments.detailsReads the details of a one-time payment.
scheduled_payments.domesticSchedules domestic payments.
scheduled_payments.internationalSchedules international payments.
scheduled_payments.bulkSchedules several payments at once.
scheduled_payments.listLists the scheduled payments.
scheduled_payments.detailsReads the details of a scheduled payment.
standing_order_payments.domesticSets up domestic standing orders.
standing_order_payments.internationalSets up international standing orders.
standing_order_payments.bulkSets up several standing orders at once.
standing_order_payments.listLists the standing orders.
standing_order_payments.detailsReads the details of a standing order.
rangeobjectAfficher les 2 champs enfants
fromDateTimestringdate-timetoDateTimestringdate-timereferencestringserviceProviderIdstringobligatoireID of the service provider.
workspaceIdstringobligatoireID of the workspace.
creationobjectobligatoireWhen and by whom the resource was created.
Afficher les 2 champs enfants
creationDateTimestringdate-timeobligatoireDate and time when the resource was created.
createdBystringID of the user who created the resource, when recorded.
paymentDataobjectobligatoireAfficher les 11 champs enfants
scopestringScope of the payment, which depends on the countries and currencies of the debtor and creditor accounts.
domesticA GBP payment between two accounts in the United Kingdom, or a EUR payment between two accounts in SEPA countries.
internationalAny other payment, which needs the BIC of the creditor bank.
idempotencyIdstringexecutionDatestringobligatoireamountnumberobligatoirecurrencystringobligatoirereferencestringcommunicationstringinvoiceIdstringID of the invoice.
chargeBearerstringValeursCREDDEBTSHARSLEV
debtorobjectobligatoireAfficher les 4 champs enfants
bankAccountIdstringobligatoireID of the bank account.
namestringobligatoireaccountIdentificationsobject[]obligatoireAfficher les 2 champs enfants
typestringobligatoireKind of identifier of a bank account or of its bank.
Afficher les 14 valeurs
bicBank Identifier Code of the bank.
sortCodeSix-digit code of a bank and branch in the United Kingdom.
ibanInternational Bank Account Number.
bbanBasic Bank Account Number, the country-specific format of an account number.
accountNumberAccount number that the bank assigns, unique within the bank or the branch.
panPrimary Account Number, the number of a credit or debit card.
emailEmail address that identifies the account.
msisdnMobile phone number that identifies the account.
virtualAccountIdIdentifier of a virtual sub-account of a main account.
globalWalletIdentifier of a digital wallet that holds and pays in several currencies.
clabeCLABE, the 18-digit standardized bank code of a Mexican bank account.
bitcoinAddressSingle Bitcoin address, the only address the account tracks.
bitcoinXpubBitcoin extended public key (xpub, ypub or zpub), from which the addresses of the wallet are derived.
otherAnother kind of identifier.
valuestringobligatoireValue of the identifier, for example the IBAN or the BIC.
currencystringobligatoirecreditorobjectobligatoireAfficher les 6 champs enfants
counterpartyIdstringobligatoireID of the counterparty.
counterpartyCashAccountIdstringobligatoirenamestringobligatoireaccountIdentificationsobject[]obligatoireAfficher les 2 champs enfants
typestringobligatoireKind of identifier of a bank account or of its bank.
Afficher les 14 valeurs
bicBank Identifier Code of the bank.
sortCodeSix-digit code of a bank and branch in the United Kingdom.
ibanInternational Bank Account Number.
bbanBasic Bank Account Number, the country-specific format of an account number.
accountNumberAccount number that the bank assigns, unique within the bank or the branch.
panPrimary Account Number, the number of a credit or debit card.
emailEmail address that identifies the account.
msisdnMobile phone number that identifies the account.
virtualAccountIdIdentifier of a virtual sub-account of a main account.
globalWalletIdentifier of a digital wallet that holds and pays in several currencies.
clabeCLABE, the 18-digit standardized bank code of a Mexican bank account.
bitcoinAddressSingle Bitcoin address, the only address the account tracks.
bitcoinXpubBitcoin extended public key (xpub, ypub or zpub), from which the addresses of the wallet are derived.
otherAnother kind of identifier.
valuestringobligatoireValue of the identifier, for example the IBAN or the BIC.
currencystringobligatoireaddressobjectAfficher les 12 champs enfants
countrystringISO 3166-1 alpha-2 country code
postCodestringPost code of the address.
townNamestringName of the town or city.
streetNamestringName of the street.
buildingNumberstringNumber of the building in the street.
namestringName of the building or place.
sortingCodestringAdditional sorting code of the postal service, used in a few countries such as France.
postBoxstringPost office box.
administrativeAreastringRegion of the country, such as a canton or a state.
recipientsstring[]Names of the people the address is for.
organizationstringName of the organization at the address.
sourcestring[]Text the address was read from, one item per line.
curl -X POST 'https://api.business.swayapp.io/v1/workspaces/Wk7fQ2xR9bLm4tZp8sNv/write-consents' \
-H "Authorization: Bearer $SWAY_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"serviceProviderId": "sprov_SUlEUDAwMjMw",
"paymentData": {
"scope": "domestic",
"idempotencyId": "string",
"executionDate": "2026-03-02",
"amount": 0,
"currency": "string",
"reference": "string",
"communication": "string",
"invoiceId": "Iv5zP2nK7wRt3xMq9bLd",
"chargeBearer": "CRED",
"debtor": {
"bankAccountId": "bacc_Q0gzMTA4NzY1NDM",
"name": "string",
"accountIdentifications": [
{
"type": "bic",
"value": "string"
}
],
"currency": "string"
},
"creditor": {
"counterpartyId": "Cp2nG7vB4xLq9wRt5hMz",
"counterpartyCashAccountId": "string",
"name": "string",
"accountIdentifications": [
{
"type": "bic",
"value": "string"
}
],
"currency": "string",
"address": {
"country": "CH",
"postCode": "string",
"townName": "string",
"streetName": "string",
"buildingNumber": "string",
"name": "string",
"sortingCode": "string",
"postBox": "string",
"administrativeArea": "string",
"recipients": [
"string"
],
"organization": "string",
"source": [
"string"
]
}
}
},
"callbackParams": {
"key": "string"
}
}'const response = await fetch('https://api.business.swayapp.io/v1/workspaces/Wk7fQ2xR9bLm4tZp8sNv/write-consents', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.SWAY_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
"serviceProviderId": "sprov_SUlEUDAwMjMw",
"paymentData": {
"scope": "domestic",
"idempotencyId": "string",
"executionDate": "2026-03-02",
"amount": 0,
"currency": "string",
"reference": "string",
"communication": "string",
"invoiceId": "Iv5zP2nK7wRt3xMq9bLd",
"chargeBearer": "CRED",
"debtor": {
"bankAccountId": "bacc_Q0gzMTA4NzY1NDM",
"name": "string",
"accountIdentifications": [
{
"type": "bic",
"value": "string"
}
],
"currency": "string"
},
"creditor": {
"counterpartyId": "Cp2nG7vB4xLq9wRt5hMz",
"counterpartyCashAccountId": "string",
"name": "string",
"accountIdentifications": [
{
"type": "bic",
"value": "string"
}
],
"currency": "string",
"address": {
"country": "CH",
"postCode": "string",
"townName": "string",
"streetName": "string",
"buildingNumber": "string",
"name": "string",
"sortingCode": "string",
"postBox": "string",
"administrativeArea": "string",
"recipients": [
"string"
],
"organization": "string",
"source": [
"string"
]
}
}
},
"callbackParams": {
"key": "string"
}
}),
});
console.log(await response.json());import os
import requests
response = requests.post(
"https://api.business.swayapp.io/v1/workspaces/Wk7fQ2xR9bLm4tZp8sNv/write-consents",
headers={"Authorization": f"Bearer {os.environ['SWAY_API_KEY']}"},
json={
"serviceProviderId": "sprov_SUlEUDAwMjMw",
"paymentData": {
"scope": "domestic",
"idempotencyId": "string",
"executionDate": "2026-03-02",
"amount": 0,
"currency": "string",
"reference": "string",
"communication": "string",
"invoiceId": "Iv5zP2nK7wRt3xMq9bLd",
"chargeBearer": "CRED",
"debtor": {
"bankAccountId": "bacc_Q0gzMTA4NzY1NDM",
"name": "string",
"accountIdentifications": [
{
"type": "bic",
"value": "string",
},
],
"currency": "string",
},
"creditor": {
"counterpartyId": "Cp2nG7vB4xLq9wRt5hMz",
"counterpartyCashAccountId": "string",
"name": "string",
"accountIdentifications": [
{
"type": "bic",
"value": "string",
},
],
"currency": "string",
"address": {
"country": "CH",
"postCode": "string",
"townName": "string",
"streetName": "string",
"buildingNumber": "string",
"name": "string",
"sortingCode": "string",
"postBox": "string",
"administrativeArea": "string",
"recipients": [
"string",
],
"organization": "string",
"source": [
"string",
],
},
},
},
"callbackParams": {
"key": "string",
},
},
)
print(response.json()){
"data": {
"firestoreId": "wcons_V1JJVEUtMDA0Mg",
"expirationDateTime": "2026-03-02T09:30:00.000Z",
"authorizationStatus": {
"status": "pending",
"updateDateTime": "2026-03-02T09:30:00.000Z"
},
"authorizationUri": "https://example.com",
"products": [
"identity"
],
"features": [
"identity.details"
],
"range": {
"fromDateTime": "2026-03-02T09:30:00.000Z",
"toDateTime": "2026-03-02T09:30:00.000Z"
},
"reference": "string",
"serviceProviderId": "sprov_SUlEUDAwMjMw",
"workspaceId": "Wk7fQ2xR9bLm4tZp8sNv",
"creation": {
"creationDateTime": "2026-03-02T09:15:00.000Z",
"createdBy": "Xq3vT9mB2kLpR7sN4wYc8dZf1aHj"
},
"paymentData": {
"scope": "domestic",
"idempotencyId": "string",
"executionDate": "2026-03-02",
"amount": 0,
"currency": "string",
"reference": "string",
"communication": "string",
"invoiceId": "Iv5zP2nK7wRt3xMq9bLd",
"chargeBearer": "CRED",
"debtor": {
"bankAccountId": "bacc_Q0gzMTA4NzY1NDM",
"name": "string",
"accountIdentifications": [
{
"type": "bic",
"value": "string"
}
],
"currency": "string"
},
"creditor": {
"counterpartyId": "Cp2nG7vB4xLq9wRt5hMz",
"counterpartyCashAccountId": "string",
"name": "string",
"accountIdentifications": [
{
"type": "bic",
"value": "string"
}
],
"currency": "string",
"address": {
"country": "CH",
"postCode": "8001",
"townName": "Zürich",
"streetName": "Bahnhofstrasse",
"buildingNumber": "10",
"name": "Haus zur Linde",
"sortingCode": "string",
"postBox": "Postfach 1234",
"administrativeArea": "Zürich",
"recipients": [
"Anna Meier"
],
"organization": "Muster AG",
"source": [
"Muster AG",
"Bahnhofstrasse 10",
"8001 Zürich"
]
}
}
}
}
}{
"error": {
"code": "invalid-argument",
"message": "Invalid request"
}
}{
"error": {
"code": "unauthenticated",
"message": "Invalid or expired credentials"
}
}{
"error": {
"code": "permission-denied",
"message": "Missing required scope: invoices:read"
}
}{
"error": {
"code": "not-found",
"message": "Resource not found"
}
}{
"error": {
"code": "internal",
"message": "An internal error occurred"
}
}