{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"416c9a7f-f2f6-494e-8835-0484e475771b","name":"Finverse API - Docs","description":"Still have questions or need help setting up your API access? Contact us: [support@finverse.com](https://mailto:support@finverse.com).\n\n# Try Finverse's Demo App in your browser\n\nSign-up on our [Developer Portal](https://dashboard.finverse.com) to access Finverse's Demo App and try our Payment Links, Mandates and bank data linking UI.\n\n- **Payments products:** our Demo App only allows payments from a Test Bank or Test Card (e.g. card number: 4242 4242 4242 4242).\n    \n- **Data products**: our Demo App allows linking either a Test Bank or a real bank.\n    \n\n# Get Started with Finverse API\n\n## A. Developer authentication\n\n1. Sign-up on our [Developer Portal](https://dashboard.finverse.com) and obtain your API credentials (`customer_app_id`, `client_id` and `client_secret`).\n    \n    1. **Data products**: you also need to register a valid `redirect_uri`.\n        \n2. Input your API credentials (and `redirect_uri` for Data products) into Postman as Collection variables or Environment variables (e.g. go to Collection > Edit > Variables)\n    \n3. Generate a `customer_token` to authenticate with Finverse's API (POST /auth/customer/token). Each `customer_token` expires after 60min, but can be re-generated. You should securely store the `customer_token` in your back-end to make other API calls.\n    \n\n## **B. Test vs. Live usage**\n\nAll API calls (both for test and live usage) should be made to our production environment: `https://api.prod.finverse.net/`\n\nBy default, when you create API credentials on our [Developer Portal](https://dashboard.finverse.com), your app will be enabled as a \"Test\" app only. This allows you to make test payments (using test cards or our testbank) and access test data (by linking our testbank), but you can not make any real payments or access real banks.\n\n- **Data products**: we can enable free live usage for testing purposes, subject to a limited quota for your app. Please contact [support@finverse.com](https://mailto:support@finverse.com) to request this\n    \n\nTo enable live usage:\n\n1. Go to our [Developer Portal](https://dashboard.finverse.com) and setup a new team (to separate live vs. test usage)\n    \n2. Go to API Settings to create API credentials for your new \"Live\" team\n    \n3. Contact [support@finverse.com](https://mailto:support@finverse.com) and specify your \"Live\" team's Customer App ID (viewable under API settings). Finverse will then turn on live usage for your app (this typically requires signing commercial documents which Finverse will send to you)\n    \n\n## C. Use Payments API\n\nRefer to \"Get Started\" guidance in the Payments API folder.\n\n## D. Use Data API\n\nRefer to \"Get Started\" guidance in the Data API folder.\n\n## E. Contact us for support or to go live\n\nContact us at: [support@finverse.com](https://mailto:support@finverse.com) for any questions or for support.\n\nIn particular, contact us to:\n\n- **All products:**\n    \n    - Turn on your app to live usage (live payments / bank data linking)\n        \n    - Customize the Finverse Link UI (e.g. to add your logo and business name)\n        \n- **Payments products**:\n    \n    - Configure allowed payment methods (e.g. direct debit mandates / QR code bank payments / credit card payments)\n        \n    - Configure payments redirect URIs and webhooks\n        \n\n# Getting started with the Finverse Link UI\n\nThe Finverse Link UI provides a pre-built UI allowing end-users to use the Finverse platform without any additional UI work from you. In particular, with the Finverse Link UI, an end-user can:\n\n- **(Payments products)** Make a payment, setup a payment method (using Payment Links), or setup direct debit mandates (using Mandates)\n    \n- **(Data products)** Select and link their bank, to access & share their bank data\n    \n\n## Pre-requisites\n\nFirst generate a Link `url` or `link_url` using the following end-points:\n\n- **Payments products:**\n    \n    - **Payment Links** (recommended integration): `POST /payment_links`\n        \n    - **Direct Debit Mandates:** `POST /mandates/link`\n        \n- **Data products**: `POST /link/token`\n    \n\nRefer to the documentation on each of the above endpoints for details.\n\n## Platform-specific considerations\n\n### Finverse Link UI in a Web App\n\nWhen opening the Finverse Link UI in a Web App, it is important to note that we currently support the following `ui_mode`:\n\n| `ui_mode` value | Description |\n| --- | --- |\n| `iframe` | Default mode. In this mode, Finverse Link UI expects the `link_url` to be opened in an iframe. The parent app is responsible for closing the Finverse Link UI (e.g. after a success or failure screen, or when the user clicks a close/exit button). |\n| `redirect` | In this mode, the Finverse Link UI expects the `link_url` to be directly opened in a browser. When a user clicks a button to close/exit/finish the flow, the Finverse Link UI will redirect the user to the `redirect_uri` provided when the Link `access_token` was created. |\n| `auto_redirect` | Same as `redirect` mode, but in this case the user will be automatically redirected if the user doesn't perform any action on the success or failure screen. |\n| `standalone` | In this mode, the Finverse Link UI expects the `link_url` to be directly opened in a browser, without any UI redirect at the end of the Link flow. The Finverse Link UI will prompt the user to close the browser tab upon completion of the flow. |\n\n#### Closing iframe from the parent web app\n\nWhen in `iframe` mode the Customer App (parent app) will open Finverse Link in an iframe like the following code.  \n**Code**\n\nWhen the user presses the continue or the close button after linking, it will send a message back (either `close` or `success`) to the parent app. The Customer App will need to handle it as follow:\n\n**Code**\n\n``` preserveHtml\n// add a listener so we get the message sent by the iframe\nwindow.addEventListener('message', receiveMessage, false);\nconst receiveMessage = (message: any) => {\n    if (message.data === 'close') {\n        // do whatever is required to close the iframe. The linking did not succeeded due to user pressing the close button.\n        setLinkOpen(false);\n    }\n    if (message.data === 'success') {\n        // do whatever is required to close the iframe\n        setLinkOpen(false);\n        // Since the linking was successful display the next screen\n        history.push('/user');\n    }\n};\n\n ```\n\n### Finverse Link UI in a Mobile App\n\nWhen opening Finverse Link in a mobile app it is important to note that we currently support the following `ui_mode`:\n\n| **ui_mode** | **Description** |\n| --- | --- |\n| iframe | This is the default mode. In this mode finverse link url is opened in an iframe and the parent app is responsible for closing finverse link after success or failure |\n\nPlease review Finverse's public [Github repository](https://github.com/finversetech) for guidance on how to link Finverse Link in React Native, Android and iOS.\n\n## Product-specific considerations\n\n### Finverse Link UI for Payments\n\nWhen using the Finverse Link UI to authorize Payment Links or Mandates, a webhook will be called when the Payment Link / Mandate is successful (or fails). Contact the Finverse team to configure this `payment_webhook`.\n\n### Finverse Link UI for Data retrieval\n\nWhen using Finverse Link to retrieve data it will eventually redirect to the `redirect_uri` supplied when creating the link token. It will pass along `code` and `state`. The `code` should be exchanged for a Login Identity `access token` (see `POST /auth/token`) and the `state` can be used to reconcile which user the token should be associated with.","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"11503733","team":1064586,"collectionId":"416c9a7f-f2f6-494e-8835-0484e475771b","publishedId":"2s83tJGAfA","public":true,"publicUrl":"https://docs.finverse.com","privateUrl":"https://go.postman.co/documentation/11503733-416c9a7f-f2f6-494e-8835-0484e475771b","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"EF5B25"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":"Finverse Payments API and Data API Docs"},{"name":"title","value":"Finverse API Docs"}],"appearance":{"default":"light","themes":[{"name":"dark","logo":null,"colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"FF6C37"}},{"name":"light","logo":null,"colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"EF5B25"}}]}},"version":"8.11.6","publishDate":"2026-04-24T05:59:42.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"Finverse API Docs","description":"Finverse Payments API and Data API Docs"},"logos":{"logoLight":null,"logoDark":null}},"statusCode":200},"environments":[],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/4b8b3d7857890aa25c3b3b998ab7234fe22678a6daaec68ad0e37ae4164562d5","favicon":"https://res.cloudinary.com/postman/image/upload/v1610458995/team/eemlkmbovfvlzmsbzqfr.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"}],"canonicalUrl":"https://docs.finverse.com/view/metadata/2s83tJGAfA"}