finoOS API Documentation

Download OpenAPI specification:Download

Support: os.support@fino.run License:

Introduction

The finoOS API provides a safe and secure way to access financial services powered by fino. Once you have obtained a name and secret, you can start using the finoOS API as described in the following sections. All endpoints are located at https://os.fino.cloud/api/v1 for production access and https://os.test.fino.cloud/api/v1 for testing access.

To get started with the finoOS API, check out our Quickstart guide.

Quickstart

Follow these steps to get up and running with the finoOS API by connecting a bank login with our Banking service and retrieve the bank data of your user.

Before you can start to integrate with our API, make sure you have received your credentials name and secret for our testing environment.

Step 1: Authentication

To access the finoOS API, you need to authenticate yourself with the API and obtain an accessToken. This accessToken needs to be provided in every subsequent request, otherwise you will not be able to access the API.

To authenticate with the API you need your name and secret and request a token via our Authenticate endpoint.

curl -s -X POST https://os.test.fino.cloud/api/v1/auth \ 
-H "Content-Type: application/json" \ 
-d '{"name": "<YOUR_NAME>", "secret": "<YOUR_SECRET>"}'

The finoOS API will return the following object.

{
  "accessToken": "<ACCESS_TOKEN>",
  "refreshToken": "<REFRESH_TOKEN>",
  "expiresIn": 300,
  "refreshExpiresIn": 1800
}

The response contains the required accessToken which you will need to provide in the next steps. It also contains a refreshToken which you will need to refresh your authentication when the accessToken has expired.

Step 2: Create a user

To connect a bank login, you first need to create a user for whom you want to connect the bank login. finoOS distinguishes users in two different types:

  • person (a real human being)
  • company (businesses, SMEs, etc.)

Choosing the type of the user will influence how finoOS analyzes the user's data. To learn more about this, check out the Users section. For now, we will assume the user is a person.

To access the Create User endpoint, you need to provide the accessToken from the first step via the Authorization header and send the following request.

curl -s -X POST https://os.test.fino.cloud/api/v1/users \
-H "Content-Type: application/json" \ 
-H "Authorization: <ACCESS_TOKEN>" \ 
-d '{"type": "person"}'

The finoOS API will return the following object.

{
  "id": "<USER_ID>"
}

The provided id is a unique identifier belonging to this user, which you need to provide in the next steps.

Step 3: Connect a bank login

The finoOS API provides two different ways to connect a bank login. Depending on how you want to process your user's data, you can connect the bank login of a user via

  • our Banking UI, allowing the user to connect their real bank accounts from various banks and other financial institutions
  • our API, if you already possess the data and do not need a direct connection to the bank

If you want to use our Banking UI, proceed with Step 4a. If you already possess the user's bank data and want to send it directly to our API, proceed with Step 4b.

Step 4a: Connect a bank login via the Banking UI

To access our Banking UI, you need to create a session to connect the user to the Banking service and redirect your user to our UI.

You need to provide three URLs where we can redirect the user to after the bank login. This way, you can provide different URLs in case of

  • a successful login: the redirectURL
  • an error happens during the bank login process: the errorURL
  • a user exits the banking UI during the bank login process: the exitURL

To access the Create Connect User Session endpoint, you will also need the id of the user from the second step and your accessToken. Send the following request.

curl -s -X POST https://os.test.fino.cloud/api/v1/users/<USER_ID>/banking/connect \
-H "Content-Type: application/json" \
-H "Authorization: <ACCESS_TOKEN>" \
-d '{
  "errorURL": "https://yourapp.com/your-error-redirect-resource",
  "exitURL": "https://yourapp.com/your-exit-redirect-resource",
  "recurring": true,
  "redirectURL": "https://yourapp.com/your-success-redirect-resource"
}'

The finoOS API will return the following object.

{
  "redirectURL": "https://uba.test.fino.run/auth..."
}

Redirect your user to the redirectURL of the response object. The user will now be presented our secure Banking UI to connect the bank login.

Enter the bank credentials

First, the user needs to choose a bank and provide their credentials. To try it out, you can search for the fino Bank (bank code is 10020000) and enter the following credentials:

  • username: dummy
  • password: 654321

Strong Customer Authentication

Second, the user needs to enter a generated TAN for the Strong Customer Authentication(SCA). For the provided test bank login, the TAN will be presented on the Banking UI screen as shown below.

The user is now connected to our Banking service and will be redirected to the redirectURL you provided on the initial request.

Step 4b: Connect a bank login via the API

To connect the bank login directly via our API, you need to possess the bank login data and set the logins of the user via the Set Logins endpoint.

To try it out, you can use the provided bank login data in the request below. You need to provide the id of the user from Step 3 and your accessToken.

curl -s -X POST https://os.test.fino.cloud/api/v1/users/<USER_ID>/banking/logins \ 
-H "Authorization: <ACCESS_TOKEN>" \
-d '{
  "logins": [
    {
      "accounts": [
        {
          "balance": 2004.41,
          "creditLine": 0,
          "currency": "EUR",
          "iban": "DE64100200007791587578",
          "id": "A38253.f837c3ab353",
          "monthlySpendingLimit": 6000,
          "name": "Girokonto",
          "number": "83767594",
          "owner": "Torben Mais",
          "securities": [
            {
              "accountID": "A5ecd4d9bb9e14800012d99e9.1356664d2044208d10cf439e5009e810382ba932",
              "amount": 200,
              "currency": "EUR",
              "exchangeRate": 1.23,
              "id": "5ecd4d9bb9e14800012d99e9",
              "isin": "US0378331005",
              "market": "NASDAQ",
              "name": "finoOS Security",
              "priceAmount": 100,
              "priceCurrency": "EUR",
              "purchasePriceAmount": 150,
              "purchasePriceCurrency": "EUR",
              "quantity": 40
            }
          ],
          "standingOrders": [
            {
              "accountID": "A5ecd4d9bb9e14800012d99e9.1356664d2044208d10cf439e5009e810382ba932",
              "amount": 200,
              "creationDate": "2020-05-26T17:11:22Z",
              "currency": "EUR",
              "executionDay": 2,
              "firstExecutionDate": "2020-05-26T17:11:22Z",
              "id": "5ecd4d9bb9e14800012d99e9",
              "interval": "MONTHLY",
              "lastExecutionDate": "2020-05-26T17:11:22Z",
              "purpose": "Taschengeld"
            }
          ],
          "transactions": [
            {
              "accountID": "A5ecd4d9bb9e14800012d99e9.1356664d2044208d10cf439e5009e810382ba932",
              "amount": 24.99,
              "booked": true,
              "bookingDate": "2020-05-26T17:11:22Z",
              "codes": [
                {
                  "type": "transactionCode",
                  "value": "999"
                }
              ],
              "counterPart": {
                "bic": "GENODEF1S04",
                "creditorId": "DE97ZZZ12345678901",
                "iban": "DE83701999010000002000",
                "name": "Schettchens Schnittchen"
              },
              "currency": "EUR",
              "id": "5ecd4d9bb9e14800012d99e9",
              "mref": "MREF123ZZ678JJ",
              "purpose": "Welcome to finoOS",
              "tags": [
                {
                  "name": "salary",
                  "source": "string"
                }
              ],
              "valueDate": "2020-05-26T17:11:22Z"
            }
          ],
          "type": "GIRO"
        }
      ],
      "bank": {
        "bankCode": "70199901",
        "bic": "SUBSDE71",
        "logo": {
          "type": "string",
          "url": "string"
        },
        "name": "fino Bank"
      },
      "id": "5d7267d1b747aa683d88668f"
    }
  ]
}'

The user is now connected to our Banking service.

Step 5: Retrieve the bank login data

Finally, access the user's bank logins with the Get Logins endpoint. Send the following request.

curl -s -X GET https://os.test.fino.cloud/api/v1/users/5f22c402b6968c000128edb6/banking/logins \
-H "Authorization: <ACCESS_TOKEN>"

The finoOS API will return the following object.

{
  "logins": [
    {
      "id": "5d7267d1b747aa683d88668f",
      "bank": {
        "name": "fino Bank",
        "bic": "SUBSDE71",
        "bankCode": "70199901",
        "logo": {
          "url": "",
          "type": ""
        }
      },
      "accounts": [
        {
          "iban": "DE64100200007791587578",
          "id": "A38253.f837c3ab353",
          "number": "83767594",
          "name": "Girokonto",
          "owner": "Torben Mais",
          "type": "GIRO",
          "balance": 2004.41,
          "creditLine": 0,
          "monthlySpendingLimit": 6000,
          "currency": "EUR",
          "transactions": [
            {
              "id": "5ecd4d9bb9e14800012d99e9",
              "accountID": "A38253.f837c3ab353",
              "bookingDate": "2020-05-26T17:11:22Z",
              "valueDate": "2020-05-26T17:11:22Z",
              "currency": "EUR",
              "mref": "MREF123ZZ678JJ",
              "purpose": "Welcome to finoOS",
              "booked": true,
              "amount": 24.99,
              "counterPart": {
                "bic": "GENODEF1S04",
                "iban": "DE83701999010000002000",
                "creditorId": "DE97ZZZ12345678901",
                "name": "Schettchens Schnittchen"
              },
              "tags": [
                {
                  "name": "salary"
                }
              ],
              "codes": [
                {
                  "value": "999",
                  "type": "transactionCode"
                }
              ]
            }
          ],
          "standingOrders": [
            {
              "id": "",
              "accountID": "A5ecd4d9bb9e14800012d99e9.1356664d2044208d10cf439e5009e810382ba932",
              "creationDate": "2020-05-26T17:11:22Z",
              "firstExecutionDate": "2020-05-26T17:11:22Z",
              "lastExecutionDate": "2020-05-26T17:11:22Z",
              "executionDay": 2,
              "interval": "MONTHLY",
              "amount": 200,
              "currency": "EUR",
              "purpose": "Taschengeld"
            }
          ],
          "securities": [
            {
              "id": "5ecd4d9bb9e14800012d99e9",
              "accountID": "A38253.f837c3ab353",
              "amount": 200,
              "priceAmount": 100,
              "purchasePriceAmount": 150,
              "currency": "EUR",
              "priceCurrency": "EUR",
              "purchasePriceCurrency": "EUR",
              "exchangeRate": 1.23,
              "quantity": 40,
              "isin": "US0378331005",
              "name": "finoOS Security",
              "market": "NASDAQ"
            }
          ]
        }
      ]
    }
  ]
}

Principles

To integrate with the finoOS API, we assume you to be familiar with the following technical principles:

For more information on these topics, follow the respective links. If you are unsure how to integrate with the finoOS API after reading the documentation, feel free to contact us.

Versioning

To guarantee backwards compatibility, each breaking change causes an upgrade of the API version. This way, users are still able to use the API as usual and can upgrade to a newer version when they are ready.

The API version is part of your account but can be overwritten using a request header. Future new versions will be configurable within our developer portal (not released yet) without any need to update anything on your side. As a precaution, it's recommended to test a new API version before committing to an upgrade.

Every API response contains an API-Version header with the current version of your account. The version is a string date of the format YYYY-MM-DD. The date itself refers to the day of the version's release. The latest version of the API is 2020-06-16.

New features, bug fixes and patches will always be backwards compatible. They can be found in the Changelog. We only release a new version of the API when we introduce breaking changes. We consider breaking changes as one of the following:

  • Changing a HTTP method or a resource name
  • Adding new required parameters to a resource
  • Changing the response structure, not extending it by adding new values to a response
  • Changing a HTTP response code
  • Changing error codes

Errors

Error responses of the API will return one of the HTTP error codes listed below in the Status Codes and Errors table. Error responses will contain a JSON-encoded body of the following format:

{
    "type": "forbidden",
    "message": "Forbidden. No access to this resource"
}

Status Codes and Errors

Code Name Description
200 OK Success
204 OK Success, but no response content
400 Bad Request The provided request was invalid. Most of the times, the given format is incorrect.
401 Unauthorized Invalid authorization. Check your access tokens or tenant id and secret
403 Forbidden Access for the given resource or operation was denied
404 Not Found The requested resource doesn't exist
409 Conflict The request conflicts with a previous request
429 Too Many Requests Too many requests hit the API too quickly. Rate limit exceeded
5xx Server Errors Unknown finoOS server errors

Tracing

The finoOS API returns a X-Request-ID header with every API response. This way, you can trace a specific request. If you want to make tracing requests easier for yourself, you can overwrite the X-Request-ID header on your requests. When reporting a failure during a request to our API, providing the respective request ID will greatly improve our ability to provide support.

Changelog

September 25, 2020

July 29, 2020 Add Scope To User payload changed - renamed scope to name

July 02, 2020

  • Implementation of the DocumentShipment service. You can now send a fax or a letter via our API

June 25, 2020

  • Routes now hold a scope. If your account holds a certain scope, you are permitted to use the respective routes
  • New Get Settings route to request your account specific settings via the API. For now, this returns your API version and scopes
  • Users now are assigned scopes to handle permissions on a per User basis

June 22, 2020

  • Some Banking routes now require the User-IP header to adhere to the latest PSD2 regulations

June 15, 2020

May 25, 2020

  • Implementation of the Banking service. You can now connect and manage a user's bank login(s) via our API

May 19, 2020

  • Implementation of the Search Companies feature of the Companies service. You can now search for multiple companies via a bulk request of queries

May 4, 2020

  • Implementation of the Search Logos feature of the Companies service. You can now search for multiple logos of companies via a bulk request of queries

Authentication

To authenticate yourself with the finoOS API, you exchange your credentials name and secret for a temporary valid pair of JSON web tokens(JWT) via the Authenticate endpoint. The returned accessToken has to be provided in every following request via the Authorization header. Once the returned accessToken expires, exchange the refreshToken for a new pair of JWT. If this is not possible, because the refreshToken has expired too, restart the authentication process from the beginning.

The diagram below shows a sample flow of the authentication process before calling the Search Companies resource of our Companies service.

authentication flow

Authenticate

Authenticate with your credentials name and secret to retrieve a JWT. The expiresIn and refreshExpiresIn properties indicate the lifetime of the accessToken and refreshToken in seconds.

Request Body schema: application/json

credentials

name
required
string

Your name

secret
required
string

Your secret

Responses

Request samples

Content type
application/json
{
  • "name": "fino",
  • "secret": "3bdfef4d-e122-4c8d-a3cf-01ac776eca17"
}

Response samples

Content type
application/json
{
  • "accessToken": "jA1nN-pl4uEwyJ0_-v3rIr3byH2PwyQ_deE20sWDEdolpJB-NBASpQyxXnjL1M9Yorq3QZAUCuaam9DH_KoLb3NlOPVDar83lI3_Ns3R_LrMcs_P4hs_m57Z-h-BBBdKklvqibLAZTp_0l90-Quy1vcrER7lN3oIfwSEpxhebA8CWKlTYROUfTax6g_25JSAKtUT-wjGl29_rRlFIs9tQcmDrwCkz7iRv5y9tE_S5hbiJ5n7vBPKna7zaeYqcq-09K_SP8iopGkiUC1LVUIiwYt2UdDGi2FnebhtWiuPQTE0zVqqe_ivY0GTKvbQndXfAYkMnWS3L6BXcIAFNPxBpcRynkAsOM5GUKtGa8laHkcAJ5uzPsurlWhPnlmFQv41fQvyzMH-jWWqzeU0RHyIufgy2Zj6-sO4ImbH1lhK2M_Y4dplIAtAfWIcWzatz3SAuksdCp1r8FuSBP2uMS0Y2v0nQU6QC78WymqNPebv7XO-q55Tl4CO3z-uf4qeV0RnQLMvNa0LIz-IduJicV01_QKw8dCfn4zLNCV5l8Tc15G1CumDIpFFe_kbuYWyQ9v6111EyPVOu3Qeom8zDWE5qmaiQ8eB-LE45zi7Da_6HKVH0LSSMEzneNDYonJqQR1Ea1mkHglzjbQRiylclCzMRNKbAKhXM7erolX0HwLj27iliGoQ1itIgeAsNYtty2JVmIE2pI2p2YimvUkLNiqhhZtFhagDVmxo2GeFD7PBS4-RxdmM0kuyb-VB8sDFMEeZ5hW1wec2rfy1eNfS5sVLtSvCBpMbUvG0eHZWHvYAFX-4yJ5F1tQoYlK_Yc7RJuR_D0lcpBTiobYwRCXIsuGMf-hhrSyzSKDMG0rIowf-XC1XInAjdzpq4LLNykUIntJrFsDobbngoKJAMJUcRA3SUElRXvYkms6E62lSQPEGeuPTLcMrM3mumUND6uf0wcw96VM3Rd6NgSJ-U6Xd8ofy76X-GSYxj3O7j4r5EjEqHFaogLpthA85PYJmYdinH7eXRQ47AHLJmAwXfS-Tiu776Iep8_lUY2n78_i4QaA8gPPyLXa6JN-IL6uFdnowjGfpDWnIjUmUqVODMIrtIr7LjNtQhz0PXj-PvUIjXTcA__wkGZDi3TXSJ9X8C7XH7xUJbXo1jQsya-A_5erTd6RGSZs4Pgtn6Q714sC2PVhB0Ks3qOVe6t42iFQ_1Y4VYBa9e-5PW4TRMn4VjF0wrXHWZqlF1uEf5c3zbFF9JDT4NehvdcAnBc9HcyY18V9V7tZGnrmIVeKSZIXO1nKBplQR_roSS-ikIBYwR0V6sVjy8czM6eE2-9WL64d0V7PNGth5XTUF3BLwVpKXFq6nyRdLJvN_5ASDUtOXV6Gwxv2a_hFMA9Sx1KzewxQZVNiOEwO7WGgja46JsmLg0EUDLAKXMFsUGAqdE9E6b8CY_EbSPfEEFayt6KOpihVKDwDsvhe-rIJiQlszfLDvPHQTC3DRL6KbmncdHjlV93RjcBK2HsF1DQM8MOjAtBQMDvZv46PA56kYnSPKqNH_vaLo7bX173j829KikrfJcCj8ca2fYOKh7kY6nZfFInceJFVmKFO0Ea1EqI4o9koCRNMVA4IRBJTVA4EC0WBPQ_KqY7K2tA85zDwFCVx8uxT8bdu7XUd3jU24KVkAucQoP_OcTCgPjaDCqoO0rta-EJ45547sxzhfaCoG4QFP5XMXFwwo756O5_QXBk8PUIwMDKKMCqvFn0ySswcOE5vLxhtXvRq7OXytEPtfVvmF_Tt0Kkb6KBvBrFjrWiJkNfWEvwZonPC5xN4FgJcIW-Xm4mOAuIJVIEH3I-JvmTYAMfgMz85L0C7O2ls9n9_vMsHAKpeDUn4iJ9UuIOp3x8QkEgBTBSoIC3e22wVGjdExzeuqIT_e_6poFl6l7Vx-UBi_dPrNGETxvW4K5-svXtiV-Igsw3YonweKIpZ516C3PajGK1_BjwyzsdyqKoKfadtdMXgv9llh98OfqAjXOju-BsWf9Z7DBpxC8G7ZgArHOKauh8bGORtC3iBph-Pe_YYuJhayTsD2iaf_JpMiZS2fS2ooeuLHC86A5ZFhQJ8dbrFCGDfWds_WCpKyy8igEZVjBdTZS5vRLJ5BJKvZw_vNa37FLjAH0EyuSCXaPHF9TpdsqtfJbauv-yvPBlwxVh3j8zm8WipFeRBdPitDlDWAvwIYrgYRIgGaq_FrSYVrXoSwTxSoahjRAGE7YdpEJWGssDttSol4fIdZA5IyDnhGV6zk-IYYZuPjWs8p49b0yyuvPiDCen-hgYIdaVrB3UyzdX9MxPfqopLAtp8KIr_9RbPkNg26eEfQOxqTCS6qPNIpnSHKEOxEQACdMEJ6VUFZcKzS41cywiGoqNHvu0PrwTQxcAYqS9A2d-xpf7M4ZJ73",
  • "expiresIn": 300,
  • "refreshExpiresIn": 1800,
  • "refreshToken": "xBaVaO-xzWsUiGixAJD1YaOUyQQJ1KBYIJxqxtmwYhr1Rgxbq3YvDi1X1bxUcSRZVk-78g_SCsqK5aKKj__GHxS7BLeS7BaJ6XHRn9wwNKhvZ5pHgcpayV8v7qKP7lhDyPS54fIret3xXtQqR50pmZ3ybqjmOYc7MttP3aBc1RD1ZuKB0JibtPdENOA4qHsBvrWBxMiQ2UQdEglO4aaKGla0wCCu7FoLhVm_oVQxVATw2Y6w5ox_WxT_bwCpZFZ_ixsdc-ecMoR8k-wBOns5gu57qlhQc1m5nI9drrdQ6WYbvDSmbiVjCxiqs2Pwm9usYFMfx1h76GmEc9m9zZ59b2g5v857dNqCxD4sqzUYyVe4HtKF2XVLsTGQlEP4xGOz6lwMtLvFAQ-u3w5AWEoj4B4Hd3XcpxaN-4SjZeOA7uR16KSxmTBIQz2g7khdoWdEnv1qYThw7DsVK8BBhIax1hBYnC1vt4DDijowy8pwozmoFHXEvDB3_GgT5rsImkENQsdBP4sN3LTS30-blxTA8XTeNMZbKslYUBYtJ6ZTNxGopa4CvujAyvYOe6dskUDeXWG3qXCWwvP2uVXV4XkRc4IiKiqyTJ0nx_UAs51M_crHwnbXpYEqA0Rgoe-1CdmC1k1TYcIzECxtu-wDwJdYPYGBjg8CaGi27ZCW-vRcZeJjWNTr-DviQpcj0T9lXw8IwHyZ287s5YVblL98PU7E3EGRIqpmeryQrmMUdwB1K6JMzZTEcLN5Dmt8xIkKnCQ5-kHOfVUEDaYqx6nY87IXMxVfdLFjwW2zHef4uPJ_YbAKxU3B2gEdP5qfZ-b8MPnAVbCtO_EwnwvsU1N3MT_9NIuiIxrPFjcZdm0IFJ1P0hdbT2Ccu2qYE-bBMScHwlTUoFmPRI3jvpAesINhIgpmZC3uSOX-dsvzT9ul7ISz6fAFdmxdiK3W62faQQ8JDJ0Y_iljSoc7uD_H45lBFBwvBbmRVm47IEvwWfPZwDtnV390zZSZrg4deH7qcNIHks59As5VVfMgSptySv20OjP1RlzRLGLTc7XYO9R3Jqi3Qfyf4bcpw0WF7VaYy-k8dfdjNIeWU-Qp7PSJM80UU0Ny1vZGIr2CHEE6P8z0lo021SJW917-6NfyHfztqQ_ID_Vsuodqhtn9oiJgy_ONEBN4kHjR2k3vyvb0-zrkyHkfh6P9dcJBOVz2Fe92A_ts3nBgFQVAssATXZklndE7tjBTQRt8J2Ys4qBARY8f3P8cPuJADQ5DTqlE_-m7p6_PuHxyij-nLSbTrTWi0Zotv957kIgSHLkXl-djHxUghsetuX9r8waWX6pDaWRpRBjjGvHpTeK_YyvLBDfdd_KB9GQfmOohxx_IPuvvpttCQdGq7Xz_oAcQyUoMVMufsQDgrJH3aYYqTDd3x55pCYTTSLnVmDx_n1C2Jfb3VjUFqQbfjZJ1ndndYtIoK4uxR7nfyq3NauKnPAAzymis-2ALvDENFejE8VwCr9MngLgjlom24OAYhP2CyRqWDqLy7VZZ6-3PlGp9aEz0nVAxmiyEIkJnPcDsuAEXAI-oy1y_CeBr7bHFKhMpn20rVmWWxs7JQBgJbzzlikcJunMhIiI4MuSGnGZHqnxc7_8mI-TyacudbaasdjkyZq98YU0JKXhBWEY-BwynZB4CNEuFLBzpk_f6CdKTXQmC_1d7vQhgVdsEfN4U-jEbZiBtjBQtHjYQbA=="
}

Refresh Authentication

Refresh your authentication. Retrieve a new JWT by providing your credentials name and secret and a valid refreshToken.

Request Body schema: application/json

credentials and refresh token

name
required
string

Your name

refreshToken
required
string

The received refresh token

secret
required
string

Your secret

Responses

Request samples

Content type
application/json
{
  • "name": "fino",
  • "refreshToken": "xBaVaO-xzWsUiGixAJD1YaOUyQQJ1KBYIJxqxtmwYhr1Rgxbq3YvDi1X1bxUcSRZVk-78g_SCsqK5aKKj__GHxS7BLeS7BaJ6XHRn9wwNKhvZ5pHgcpayV8v7qKP7lhDyPS54fIret3xXtQqR50pmZ3ybqjmOYc7MttP3aBc1RD1ZuKB0JibtPdENOA4qHsBvrWBxMiQ2UQdEglO4aaKGla0wCCu7FoLhVm_oVQxVATw2Y6w5ox_WxT_bwCpZFZ_ixsdc-ecMoR8k-wBOns5gu57qlhQc1m5nI9drrdQ6WYbvDSmbiVjCxiqs2Pwm9usYFMfx1h76GmEc9m9zZ59b2g5v857dNqCxD4sqzUYyVe4HtKF2XVLsTGQlEP4xGOz6lwMtLvFAQ-u3w5AWEoj4B4Hd3XcpxaN-4SjZeOA7uR16KSxmTBIQz2g7khdoWdEnv1qYThw7DsVK8BBhIax1hBYnC1vt4DDijowy8pwozmoFHXEvDB3_GgT5rsImkENQsdBP4sN3LTS30-blxTA8XTeNMZbKslYUBYtJ6ZTNxGopa4CvujAyvYOe6dskUDeXWG3qXCWwvP2uVXV4XkRc4IiKiqyTJ0nx_UAs51M_crHwnbXpYEqA0Rgoe-1CdmC1k1TYcIzECxtu-wDwJdYPYGBjg8CaGi27ZCW-vRcZeJjWNTr-DviQpcj0T9lXw8IwHyZ287s5YVblL98PU7E3EGRIqpmeryQrmMUdwB1K6JMzZTEcLN5Dmt8xIkKnCQ5-kHOfVUEDaYqx6nY87IXMxVfdLFjwW2zHef4uPJ_YbAKxU3B2gEdP5qfZ-b8MPnAVbCtO_EwnwvsU1N3MT_9NIuiIxrPFjcZdm0IFJ1P0hdbT2Ccu2qYE-bBMScHwlTUoFmPRI3jvpAesINhIgpmZC3uSOX-dsvzT9ul7ISz6fAFdmxdiK3W62faQQ8JDJ0Y_iljSoc7uD_H45lBFBwvBbmRVm47IEvwWfPZwDtnV390zZSZrg4deH7qcNIHks59As5VVfMgSptySv20OjP1RlzRLGLTc7XYO9R3Jqi3Qfyf4bcpw0WF7VaYy-k8dfdjNIeWU-Qp7PSJM80UU0Ny1vZGIr2CHEE6P8z0lo021SJW917-6NfyHfztqQ_ID_Vsuodqhtn9oiJgy_ONEBN4kHjR2k3vyvb0-zrkyHkfh6P9dcJBOVz2Fe92A_ts3nBgFQVAssATXZklndE7tjBTQRt8J2Ys4qBARY8f3P8cPuJADQ5DTqlE_-m7p6_PuHxyij-nLSbTrTWi0Zotv957kIgSHLkXl-djHxUghsetuX9r8waWX6pDaWRpRBjjGvHpTeK_YyvLBDfdd_KB9GQfmOohxx_IPuvvpttCQdGq7Xz_oAcQyUoMVMufsQDgrJH3aYYqTDd3x55pCYTTSLnVmDx_n1C2Jfb3VjUFqQbfjZJ1ndndYtIoK4uxR7nfyq3NauKnPAAzymis-2ALvDENFejE8VwCr9MngLgjlom24OAYhP2CyRqWDqLy7VZZ6-3PlGp9aEz0nVAxmiyEIkJnPcDsuAEXAI-oy1y_CeBr7bHFKhMpn20rVmWWxs7JQBgJbzzlikcJunMhIiI4MuSGnGZHqnxc7_8mI-TyacudbaasdjkyZq98YU0JKXhBWEY-BwynZB4CNEuFLBzpk_f6CdKTXQmC_1d7vQhgVdsEfN4U-jEbZiBtjBQtHjYQbA==",
  • "secret": "3bdfef4d-e122-4c8d-a3cf-01ac776eca17"
}

Response samples

Content type
application/json
{
  • "accessToken": "jA1nN-pl4uEwyJ0_-v3rIr3byH2PwyQ_deE20sWDEdolpJB-NBASpQyxXnjL1M9Yorq3QZAUCuaam9DH_KoLb3NlOPVDar83lI3_Ns3R_LrMcs_P4hs_m57Z-h-BBBdKklvqibLAZTp_0l90-Quy1vcrER7lN3oIfwSEpxhebA8CWKlTYROUfTax6g_25JSAKtUT-wjGl29_rRlFIs9tQcmDrwCkz7iRv5y9tE_S5hbiJ5n7vBPKna7zaeYqcq-09K_SP8iopGkiUC1LVUIiwYt2UdDGi2FnebhtWiuPQTE0zVqqe_ivY0GTKvbQndXfAYkMnWS3L6BXcIAFNPxBpcRynkAsOM5GUKtGa8laHkcAJ5uzPsurlWhPnlmFQv41fQvyzMH-jWWqzeU0RHyIufgy2Zj6-sO4ImbH1lhK2M_Y4dplIAtAfWIcWzatz3SAuksdCp1r8FuSBP2uMS0Y2v0nQU6QC78WymqNPebv7XO-q55Tl4CO3z-uf4qeV0RnQLMvNa0LIz-IduJicV01_QKw8dCfn4zLNCV5l8Tc15G1CumDIpFFe_kbuYWyQ9v6111EyPVOu3Qeom8zDWE5qmaiQ8eB-LE45zi7Da_6HKVH0LSSMEzneNDYonJqQR1Ea1mkHglzjbQRiylclCzMRNKbAKhXM7erolX0HwLj27iliGoQ1itIgeAsNYtty2JVmIE2pI2p2YimvUkLNiqhhZtFhagDVmxo2GeFD7PBS4-RxdmM0kuyb-VB8sDFMEeZ5hW1wec2rfy1eNfS5sVLtSvCBpMbUvG0eHZWHvYAFX-4yJ5F1tQoYlK_Yc7RJuR_D0lcpBTiobYwRCXIsuGMf-hhrSyzSKDMG0rIowf-XC1XInAjdzpq4LLNykUIntJrFsDobbngoKJAMJUcRA3SUElRXvYkms6E62lSQPEGeuPTLcMrM3mumUND6uf0wcw96VM3Rd6NgSJ-U6Xd8ofy76X-GSYxj3O7j4r5EjEqHFaogLpthA85PYJmYdinH7eXRQ47AHLJmAwXfS-Tiu776Iep8_lUY2n78_i4QaA8gPPyLXa6JN-IL6uFdnowjGfpDWnIjUmUqVODMIrtIr7LjNtQhz0PXj-PvUIjXTcA__wkGZDi3TXSJ9X8C7XH7xUJbXo1jQsya-A_5erTd6RGSZs4Pgtn6Q714sC2PVhB0Ks3qOVe6t42iFQ_1Y4VYBa9e-5PW4TRMn4VjF0wrXHWZqlF1uEf5c3zbFF9JDT4NehvdcAnBc9HcyY18V9V7tZGnrmIVeKSZIXO1nKBplQR_roSS-ikIBYwR0V6sVjy8czM6eE2-9WL64d0V7PNGth5XTUF3BLwVpKXFq6nyRdLJvN_5ASDUtOXV6Gwxv2a_hFMA9Sx1KzewxQZVNiOEwO7WGgja46JsmLg0EUDLAKXMFsUGAqdE9E6b8CY_EbSPfEEFayt6KOpihVKDwDsvhe-rIJiQlszfLDvPHQTC3DRL6KbmncdHjlV93RjcBK2HsF1DQM8MOjAtBQMDvZv46PA56kYnSPKqNH_vaLo7bX173j829KikrfJcCj8ca2fYOKh7kY6nZfFInceJFVmKFO0Ea1EqI4o9koCRNMVA4IRBJTVA4EC0WBPQ_KqY7K2tA85zDwFCVx8uxT8bdu7XUd3jU24KVkAucQoP_OcTCgPjaDCqoO0rta-EJ45547sxzhfaCoG4QFP5XMXFwwo756O5_QXBk8PUIwMDKKMCqvFn0ySswcOE5vLxhtXvRq7OXytEPtfVvmF_Tt0Kkb6KBvBrFjrWiJkNfWEvwZonPC5xN4FgJcIW-Xm4mOAuIJVIEH3I-JvmTYAMfgMz85L0C7O2ls9n9_vMsHAKpeDUn4iJ9UuIOp3x8QkEgBTBSoIC3e22wVGjdExzeuqIT_e_6poFl6l7Vx-UBi_dPrNGETxvW4K5-svXtiV-Igsw3YonweKIpZ516C3PajGK1_BjwyzsdyqKoKfadtdMXgv9llh98OfqAjXOju-BsWf9Z7DBpxC8G7ZgArHOKauh8bGORtC3iBph-Pe_YYuJhayTsD2iaf_JpMiZS2fS2ooeuLHC86A5ZFhQJ8dbrFCGDfWds_WCpKyy8igEZVjBdTZS5vRLJ5BJKvZw_vNa37FLjAH0EyuSCXaPHF9TpdsqtfJbauv-yvPBlwxVh3j8zm8WipFeRBdPitDlDWAvwIYrgYRIgGaq_FrSYVrXoSwTxSoahjRAGE7YdpEJWGssDttSol4fIdZA5IyDnhGV6zk-IYYZuPjWs8p49b0yyuvPiDCen-hgYIdaVrB3UyzdX9MxPfqopLAtp8KIr_9RbPkNg26eEfQOxqTCS6qPNIpnSHKEOxEQACdMEJ6VUFZcKzS41cywiGoqNHvu0PrwTQxcAYqS9A2d-xpf7M4ZJ73",
  • "expiresIn": 300,
  • "refreshExpiresIn": 1800,
  • "refreshToken": "xBaVaO-xzWsUiGixAJD1YaOUyQQJ1KBYIJxqxtmwYhr1Rgxbq3YvDi1X1bxUcSRZVk-78g_SCsqK5aKKj__GHxS7BLeS7BaJ6XHRn9wwNKhvZ5pHgcpayV8v7qKP7lhDyPS54fIret3xXtQqR50pmZ3ybqjmOYc7MttP3aBc1RD1ZuKB0JibtPdENOA4qHsBvrWBxMiQ2UQdEglO4aaKGla0wCCu7FoLhVm_oVQxVATw2Y6w5ox_WxT_bwCpZFZ_ixsdc-ecMoR8k-wBOns5gu57qlhQc1m5nI9drrdQ6WYbvDSmbiVjCxiqs2Pwm9usYFMfx1h76GmEc9m9zZ59b2g5v857dNqCxD4sqzUYyVe4HtKF2XVLsTGQlEP4xGOz6lwMtLvFAQ-u3w5AWEoj4B4Hd3XcpxaN-4SjZeOA7uR16KSxmTBIQz2g7khdoWdEnv1qYThw7DsVK8BBhIax1hBYnC1vt4DDijowy8pwozmoFHXEvDB3_GgT5rsImkENQsdBP4sN3LTS30-blxTA8XTeNMZbKslYUBYtJ6ZTNxGopa4CvujAyvYOe6dskUDeXWG3qXCWwvP2uVXV4XkRc4IiKiqyTJ0nx_UAs51M_crHwnbXpYEqA0Rgoe-1CdmC1k1TYcIzECxtu-wDwJdYPYGBjg8CaGi27ZCW-vRcZeJjWNTr-DviQpcj0T9lXw8IwHyZ287s5YVblL98PU7E3EGRIqpmeryQrmMUdwB1K6JMzZTEcLN5Dmt8xIkKnCQ5-kHOfVUEDaYqx6nY87IXMxVfdLFjwW2zHef4uPJ_YbAKxU3B2gEdP5qfZ-b8MPnAVbCtO_EwnwvsU1N3MT_9NIuiIxrPFjcZdm0IFJ1P0hdbT2Ccu2qYE-bBMScHwlTUoFmPRI3jvpAesINhIgpmZC3uSOX-dsvzT9ul7ISz6fAFdmxdiK3W62faQQ8JDJ0Y_iljSoc7uD_H45lBFBwvBbmRVm47IEvwWfPZwDtnV390zZSZrg4deH7qcNIHks59As5VVfMgSptySv20OjP1RlzRLGLTc7XYO9R3Jqi3Qfyf4bcpw0WF7VaYy-k8dfdjNIeWU-Qp7PSJM80UU0Ny1vZGIr2CHEE6P8z0lo021SJW917-6NfyHfztqQ_ID_Vsuodqhtn9oiJgy_ONEBN4kHjR2k3vyvb0-zrkyHkfh6P9dcJBOVz2Fe92A_ts3nBgFQVAssATXZklndE7tjBTQRt8J2Ys4qBARY8f3P8cPuJADQ5DTqlE_-m7p6_PuHxyij-nLSbTrTWi0Zotv957kIgSHLkXl-djHxUghsetuX9r8waWX6pDaWRpRBjjGvHpTeK_YyvLBDfdd_KB9GQfmOohxx_IPuvvpttCQdGq7Xz_oAcQyUoMVMufsQDgrJH3aYYqTDd3x55pCYTTSLnVmDx_n1C2Jfb3VjUFqQbfjZJ1ndndYtIoK4uxR7nfyq3NauKnPAAzymis-2ALvDENFejE8VwCr9MngLgjlom24OAYhP2CyRqWDqLy7VZZ6-3PlGp9aEz0nVAxmiyEIkJnPcDsuAEXAI-oy1y_CeBr7bHFKhMpn20rVmWWxs7JQBgJbzzlikcJunMhIiI4MuSGnGZHqnxc7_8mI-TyacudbaasdjkyZq98YU0JKXhBWEY-BwynZB4CNEuFLBzpk_f6CdKTXQmC_1d7vQhgVdsEfN4U-jEbZiBtjBQtHjYQbA=="
}

Users

Users in the finoOS API represent the end-user of your application. All services that require some kind of data persistence are only usable in connection with a user. The resource paths of these services are prefixed with /users/:userID. At the end of the Types section, you will find a list of all services which require a user.

Types

Every user has a type. A user can either be of type person or company. The type of your user will determine which services can be used. It also impacts how we analyze the user's data. You need to specify the type of your user when you create a user.

The below table shows which services are available for which user type and provides details on how each service differs for the different types.

Service Type "person" Type "company" Details
Banking X X Connecting a user to our banking service with the type person will result in categorized transaction data for personal accounts and personal finance use cases. In contrast, setting the type to company will result in categorized transactions for business accounts.
Payment Partner Analysis - X This service is only available for users of the type company.

Scopes

The same way, as your account is assgined scopes, scopes need to be assigned to users to access certain endpoints and services. Set the user's scopes once when you create a user or later when you add a scope to a user

Be aware that when you assign a scope to a user, you will be billed for this scope for the user.

Get Users

Gets a list of all users. Specify page and perPage for pagination.

query Parameters
page
required
integer

The page of the list. Pages start at 0

perPage
required
integer

The number of users per page (max. 50)

header Parameters
Authorization
required
string

The authorization token

Responses

Response samples

Content type
application/json
{
  • "users": [
    ]
}

Create User

Creates a user of the specified type.

header Parameters
Authorization
required
string

The authorization token

Request Body schema: application/json

The payload of the request

scopes
Array of strings
Items Enum: "banking" "companies" "companiesLogo" "contracts" "documentShipment" "paymentPartnerAnalysis"

The scopes which will be activated for the user (default are all available scopes)

type
string
Enum: "person" "company"

The type of the user (person or company)

Responses

Request samples

Content type
application/json
{
  • "scopes": [
    ],
  • "type": "person"
}

Response samples

Content type
application/json
{
  • "id": "string"
}

Delete User

Deletes a user. This will also delete all stored data connected to the user and disconnect him from all services. You cannot restore a user once it was deleted.

header Parameters
Authorization
required
string

The authorization token

Responses

Response samples

Content type
application/json
{
  • "message": "not found",
  • "type": "notFound"
}

Add Scope To User

Adds a scope to the user. You can only add scopes which are activated for your account. If you are not sure which scopes are activated for your account, check out your Settings.

header Parameters
Authorization
required
string

The authorization token

Request Body schema: application/json

The payload of the request

name
string
Enum: "banking" "companies" "companiesLogo" "contracts" "documentShipment" "paymentPartnerAnalysis"

The scope which will be activated for the user

Responses

Request samples

Content type
application/json
{
  • "name": "banking"
}

Response samples

Content type
application/json
{
  • "message": "not found",
  • "type": "notFound"
}

Delete Scope From User

Removes a scope from the user. You can only removes scopes which are activated for your account and the user. If you are not sure which scopes are activated for your account, check out your Settings.

header Parameters
Authorization
required
string

The authorization token

Responses

Response samples

Content type
application/json
{
  • "message": "not found",
  • "type": "notFound"
}

Settings

You can manage the settings of your account directly with the finoOS API. The following sections describe what is configurable and how you can do it.

Scopes

Your account is assigned a set of scopes on creation. Scopes define which service or endpoints can be used with your account. In the future, you will be able to update your scopes by booking or cancelling them via our Developer Portal. For now, this can only be done manually by one of our engineers. If you want to book or cancel a certain scope or service, please contact us.

To determine which scopes you need, just check out the endpoints and services you want to implement. The required scope is documented on every endpoint.

Get Settings

Gets the settings for your account.

header Parameters
Authorization
required
string

The authorization token

Responses

Response samples

Content type
application/json
{
  • "apiVersion": "string",
  • "name": "string",
  • "scopes": "string"
}

Banking

The finoOS Banking service provides a secure and reliable way to access and manage financial data of bank accounts. It is based on the Revised Payment Services Directive (PSD2) and adheres to its regulations. PSD2 prohibits non-regulated third-parties to transfer sensitive consumer data such as bank login credentials via an API.

Connecting bank logins with our Banking UI

Therefore, the finoOS Banking service comes with a Banking UI which can be used to connect a bank login by the consumer directly. The Banking UI also handles the mandatory Strong Customer Authentication (SCA) for the bank login. Once a bank login is connected to a user, the finoOS API will synchronize the account data automatically as long as no new SCA of the user is required. You can check if a new SCA is required via the Get Logins Synchronization Status endpoint.

Manually adding bank logins and transaction data

If you already possess the bank login and transaction data of your customers, you can use the finoOS Banking Service by adding this data via the Set Logins and Update Logins routes. You will not be able touse our Banking UI and the particular routes. Make sure to enable the bankingExternal scope for the respective user.

Create Connect User Session

Scope: banking

Connect the user with the banking service. This creates a session for our Banking UI and returns a URL to the bank login section of the Banking UI. Redirect your user to this URL. After connecting the bank login or in case of an error or exit of the user, we will redirect the user to your application. Specify your own redirect URLs for the following cases:

  • redirectURL: The bank login was successful
  • errorURL: An error happened
  • exitURL: The user exits the Banking UI The redirect URLs will contain an userID query parameter to match the redirect to the respective finoOS user.
header Parameters
Authorization
required
string

The authorization token

Request Body schema: application/json

The payload of the request

errorURL
required
string

The URL your user will be redirect to in case of an error during bank login

exitURL
required
string

The URL your user will be redirect to in case she or he exits the process

recurring
boolean

Whether the user will be connected permanently or only once (default is "true")

redirectURL
required
string

The URL your user will be redirect to in case of a successful bank login

Responses

Disconnect User

Scope: banking

Disconnects a user from the banking service. This will also delete all stored banking data connected to the user such as his bank logins and accounts. It will not delete the user itself.

header Parameters
Authorization
required
string

The authorization token

User-IP
required
string

The IP address of the user. This is mandatory due to PSD2 regulations.

Responses

Response samples

Content type
application/json
{
  • "message": "not found",
  • "type": "notFound"
}

Get Logins

Scope: banking

Get all connected bank logins with their respective account and transaction data.

query Parameters
includeTransactions
required
string

Whether the response should include the transactions of the accounts. Default is true.

header Parameters
Authorization
required
string

The authorization token

Responses

Response samples

Content type
application/json
{
  • "logins": [
    ]
}

Set Logins

Scope: bankingExternal

Note: You can only set bank logins if you do not use our Banking UI and already possess the bank data of your user.

Set the bank logins of the user. When you set bank logins with their accounts and transactions, make sure to provide a unique id on each

  • bank login
  • account
  • transaction object. Otherwise our services will not be able to handle your data correctly and return unexpected results.

This will overwrite any existing bank login data you may have added before.

header Parameters
Authorization
required
string

The authorization token

Request Body schema: application/json

The payload of the request

Array of objects (banking.BankLogin)

The bank login data of your user

Responses

Request samples

Content type
application/json
{
  • "logins": [
    ]
}

Response samples

Content type
application/json
{
  • "message": "not found",
  • "type": "notFound"
}

Update Logins

Scope: bankingExternal

Note: You can only add bank logins if you do not use our Banking UI and already possess the bank data of your user.

Update the bank logins of the user. This will merge the existing bank login data with data of the request. Bank logins and accounts will be matched by their id. Make sure, your bank login and account ids are always unique. Otherwise, this will return an invalid input error.

header Parameters
Authorization
required
string

The authorization token

Request Body schema: application/json

The payload of the request

Array of objects (banking.BankLogin)

The bank login data of your user

Responses

Request samples

Content type
application/json
{
  • "logins": [
    ]
}

Response samples

Content type
application/json
{
  • "message": "not found",
  • "type": "notFound"
}

Delete Login

Scope: banking

Delete a connected bank login of the user.

header Parameters
Authorization
required
string

The authorization token

User-IP
required
string

The IP address of the user. This is mandatory due to PSD2 regulations.

Responses

Response samples

Content type
application/json
{
  • "message": "not found",
  • "type": "notFound"
}

Get Logins Synchronization Status

Scope: banking

Get the synchronization status of the connected bank logins. Determine whether the connected bank login is still synchronized automatically in background or if you need to Trigger a Synchronization manually

header Parameters
Authorization
required
string

The authorization token

Responses

Response samples

Content type
application/json
{
  • "loginsStatuses": [
    ]
}

Create Management Session

Scope: banking

This creates a session for our Banking UI and returns a URL to the overview section of the Banking UI. Redirect your user to this URL. After connecting the bank login or in case of an error or exit of the user, we will redirect the user to your application. Specify your own redirect URLs for the following cases:

  • redirectURL: The bank login was successful
  • errorURL: An error happened
  • exitURL: The user exits the Banking UI The redirect URLs will contain an userID query parameter to match the redirect to the respective finoOS user.
query Parameters
addBankLogin
required
string

Jump directly to the add bank login screen in the banking UI

header Parameters
Authorization
required
string

The authorization token

User-IP
required
string

The IP address of the user. This is mandatory due to PSD2 regulations.

Request Body schema: application/json

The payload of the request

errorURL
required
string

The URL your user will be redirect to in case of an error during bank login

exitURL
required
string

The URL your user will be redirect to in case she or he exits the process

redirectURL
required
string

The URL your user will be redirect to in case of a successful bank login

Responses

Create Synchronization Session

Scope: banking

Trigger the synchronization of a connected bank login to fetch new account and transaction data from the bank. This can result in two responses:

  • 204: The synchronization was successful and you can query the latest bank login data via Get Logins
  • 200: This creates a session in our Banking UI, because the user has to redo the SCA process to fetch new data. Redirect your user to the response URL. After connecting the bank login or in case of an error or exit of the user, we will redirect the user to your application. Specify your own redirect URLs for the following cases:
  • redirectURL: The bank login was successful
  • errorURL: An error happened
  • exitURL: The user exits the Banking UI The redirect URLs will contain a userID query parameter to match the redirect to the respective finoOS user.
header Parameters
Authorization
required
string

The authorization token

User-IP
required
string

The IP address of the user. This is mandatory due to PSD2 regulations.

Request Body schema: application/json

The payload of the request

bankLoginId
required
string

The ID of the bank login to be synchronized

errorURL
required
string

The URL your user will be redirect to in case of an error during bank login

exitURL
required
string

The URL your user will be redirect to in case she or he exits the process

redirectURL
required
string

The URL your user will be redirect to in case of a successful bank login

Responses

Companies

The finoOS Companies service provides access to a database with several hundred thousand verified companies. It holds information about these companies' addresses, contact information, logos, creditor identifiers, related bank accounts and more.

Search Logos

Scope: companiesLogo

Search for logos of companies via queries. If you provide a queryID on each query object, you can match the query result objects to the respective queries. The order of the results list is not guaranteed to match the order of the queries list. The maximum number of queries in a request is 200.

query Parameters
exactMatch
boolean

determines whether to perform an exact match on the name instead of a fuzzy match (default is false)

fuzziness
string

determines the fuzziness (levenshtein distance) performed on the name - not used if exact match is set to true (recommended values 'AUTO'/'1'/'2', default is 'AUTO')

header Parameters
Authorization
required
string

The authorization token

Request Body schema: application/json

queries

required
Array of objects (companies.LogoQuery)

The queries to search for the logos

Responses

Request samples

Content type
application/json
{
  • "queries": [
    ]
}

Response samples

Content type
application/json
{}

DocumentShipment

The finoOS Document Shipment service provides an easy way to send documents via fax or a letter. You can simply encode a PDF file as a base64-encoded string and send it to any recipient.

Send Fax

Scope: documentShipment

Send a fax. This triggers an asynchronous process in our backend which will inform you whether or not the the delivery succeeded. To get informed, specify a CallbackURL and a UUID on the request object. We will send a HTTP POST request to the specified CallbackURL of the following format http://yourapp.com/callback?requestid=<processID>&success=<true|false> The success parameter tells you if the delivery succeeded.

header Parameters
Authorization
required
string

The authorization token

Request Body schema: application/json

The payload of the request

required
object (shared.Address)
callbackURL
required
string

The URL to notify you about the process

pdfContent
required
string

PDF content is a base64 encoded string

processID
required
string

An unique identifier for the shipment process

recipient
required
string

The name of the recipient

subject
required
string

The subject of the letter

Responses

Request samples

Content type
application/json
{
  • "address": {
    },
  • "pdfContent": "YXNkYXNkbGFzYXNkYXNkaWFpc29wZG9xc2lwZGFzaW9kYWlwZHNpc2FvZG9wdzkxMjM4OTEwODEyMzAxOTI4w58xwrQyMDM5McK0MzEyMzE",
  • "processID": "f976b0ee-d9fb-4327-bdbf-f34ac1938054",
  • "recipient": "string",
  • "subject": "string"
}

Response samples

Content type
application/json
{
  • "message": "not found",
  • "type": "notFound"
}

Send Letter

Scope: documentShipment

Send a letter. This triggers an asynchronous process in our backend which will inform you whether or not the the delivery succeeded. To get informed, specify a CallbackURL and a UUID on the request object. We will send a HTTP POST request to the specified CallbackURL of the following format http://yourapp.com/callback?requestid=<processID>&success=<true|false> The success parameter tells you if the delivery succeeded.

header Parameters
Authorization
required
string

The authorization token

Request Body schema: application/json

The payload of the request

required
object (shared.Address)
callbackURL
required
string

The URL to notify you about the process

pdfContent
required
string

PDF content is a base64 encoded string

processID
required
string

An unique identifier for the shipment process

recipient
required
string

The name of the recipient

subject
required
string

The subject of the letter

Responses

Request samples

Content type
application/json
{
  • "address": {
    },
  • "pdfContent": "YXNkYXNkbGFzYXNkYXNkaWFpc29wZG9xc2lwZGFzaW9kYWlwZHNpc2FvZG9wdzkxMjM4OTEwODEyMzAxOTI4w58xwrQyMDM5McK0MzEyMzE",
  • "processID": "f976b0ee-d9fb-4327-bdbf-f34ac1938054",
  • "recipient": "string",
  • "subject": "string"
}

Response samples

Content type
application/json
{
  • "message": "not found",
  • "type": "notFound"
}

PaymentPartnerAnalysis

The finoOS Payment Partner Analysis service is an intelligent bank account analysis service. It analyses your payment partners and returns information on how relevant an individual payment partner is for your liquidity. This information includes details on how long the relationship to this customer or supplier exists, how much of your income/outcome is dedicated to this partner and much more.

Get Payment Partner Analysis

Scope: paymentPartnerAnalysis

Get the payment partner analysis for the user.

header Parameters
Authorization
required
string

The authorization token

Responses

Response samples

Content type
application/json
[
  • {
    }
]