Introduction
Learn how to use Flow Finance's REST API, which allows platforms to quickly and programmatically issue loans to their users.
We've strived to make our API easy to use and hope you find it so.
If you have any suggestions on how we can make it even easier, feel free to get in touch with us.
Follow the steps below to get started:
- Contact our sales team in order to register your platform and get access to API credentials.
- You will be assigned an Integration Engineer who will guide you through the integration process.
- Create accounts on behalf of your users following the KYC (Know Your Customer) guidelines.
- Upload documents that verify your user's identity.
- Wait for the account approval.
- Issue a loan.
Since Flow Accounts are transparent to your users, you are in charge of all interactions with your users and for gathering all the information needed to verify the account. It's also up to you to build the onboarding process, UIs, and reporting functionalities.
Overview
A brief, high-level technical overview of how to use the API.
- Your platform details and configuration will be set up for you by our team. Meanwhile, you will receive API credentials to be able to make requests.
- Using the above credentials you will be able to create accounts for your users.
- (Optional) You can use the
pre-qualify
endpoint to check if your user might not be eligible for an account before registration. This is not a mandatory step but it will help you to avoid offering credit to users who aren't eligible. - Upload business and beneficial owners' information.
- Upload all the necessary documents, verifying business and persons identities.
- Collect your user's acceptance of our Terms of Service.
- The newly-created account will then go through an internal analysis (it usually takes less than 24 hours).
- After account approval, a line of credit will be established for the account.
- Using the
loan preview
endpoint you can get all available offers. - Show these offers to your use and store the corresponding offer token for later use.
- Submit the offer token using the
/loan
endpoint to initiate the loan creation process. - Once a loan has been successfully created, show the Loan Agreement Terms to your user and collect their acceptance (digital signature).
- Submit the above digital signature and the loan will then be issued.
Getting started
Platform Onboarding Steps
There are roughly 6 steps in the integration process.
1. Transactional Data Samples
In this step, you provide us with platform transactional data samples, which will be used by our data science team to train our algorithms.
2. Real Transactional Data
We will also need your platform API endpoint that will be used for retrieving transactional data. It must be capable of being queried by business id (cnpj/cpf). This allows us to perform real-time credit decisions.
We understand that providing an external API endpoint may not be an option for your platform, so we also provide 2 alternatives: * You can attach the relevant data on every request where transactional data is needed * You can send us your transactional data and we will process everything offline.
3. API Walkthrough
With the samples processed and an accessible API endpoint, we will schedule an API walkthrough where your assigned engineer will give you an overview of the Flow API, tailored to your platform, and explain relevant API calls and the suggested order in which to use them.
4. Sandbox Credentials
A sandbox environment that replicates the production API will be configured for you within 3 business days. An email with your credentials will be sent. Note that in this environment events such as loan processing and account registration might appear faster than in production to make it easier to test your integration.
5. Integration
This is the phase where we will describe KYC compliance requirements, security best practices, and general guidelines.
We urge you to thoroughly examine all of the API endpoints in your sandbox environment since it replicates our real production platform. This is also the time to bring us any suggestions or customizations that would make our product better for your use case. Be sure to let us know of any problems you may encounter.
6. Testing and Review
During the final phase, we will work with you to make sure your integration is ready to go to production, performing security checks and manual tests.
Once we've performed these checks, a set of production credentials will be generated for the production environment.
Additional Infomation
KYC
The collection of Know Your Customer (KYC) documentation from your users is an important step in the onboarding process. This not only facilitates compliance with regulators but also helps prevent fraudulent user activity.
The documents collected for both businesses and individuals also help us understand who our customers are and the nature of their relationship with us.
There are two steps to these requirements: * Gathering information about the platform user (business) and associated individuals (persons); * Verifying the information is current and accurate.
Different platforms and limits will have different KYC requirements because the underlying risks can vary greatly. We encourage you to collect more KYC than our minimum requirements.
Types of Information
There are two types of information we need to collect: business information (name, cnpj, address, etc) and information about the owners.
How We Validate
Submitted user information is validated through public and private databases and partner APIs. Physical documents, such as government IDs, are validated through automated software, which incorporates:
- OCR
- Facial detection
Physical Documents
Physical documents must be encoded to Base64 before being submitted to our API. You can submit these documents separately or (preferably) all at once in one API call.
User Onboarding Process
- First, you will make an API call to create a new account -
POST /account
. You can either send the business information later -PATCH /account
, or within the account creation process. - For every beneficial owner of the business, you'll create a separate Person entity -
POST /persons
. - Upload the required documentation -
PATCH /account
andPATCH /persons
. - Subscribe to
accounts.update
andpersons.update
events -POST /webhook_endpoints
or poll the appropriate endpoints -GET /accounts/id
andGET /persons/id
. - Watch for status changes in the verification object.
- If there aren't any verification problems, wait for the enabled account status change.
Dashboard
A dashboard is provided at /dashboard
to which you can log in with your credentials and perform the following operations:
- Reset your client_id
.
- Browse all accounts registered through your platform, their approval status and line of credit.
- Browse all loans issued through your platform and their detailed information.
Glossary
Here are some of the terms we use throughout our documentation for ease of reference.
Pre-qualify
Pre-qualification
is an optional step that you can take advantadge of by calling the specific endpoint.
This endpoint will perform an analysis using publicly available data to decide whether the user qualifies for an account. This allows you to choose not to offer loans to those that will not qualify, making you UX better.
Platform Tokens
Two types of JWT tokens can be generated: client and account.
Client Tokens Client tokens refer to your platform tokens; they have full permissions on every API endpoint, being able to perform account creation/deletion and operations on behalf of any account. You should keep these tokens in your backend only and never share with mobile or web devices.
Account Tokens
Account tokens have account-specific permissions; they cannot create/delete accounts and can only operate within the bounds of the account for which they were created. They must always be paired with an account-id
header parameter.
Documents
Physical Documents Physical documents are the image scans or photos of a physical document.
All physical documents have a value
and a type
. type
is the document type (ie: driver's license, passport, etc) and value
is a base64 encoded string of the actual document. Note: don't use a mime type header; we automatically detect the file format.
Virtual Documents
Virtual documents are personally identifiable document besides business id and government id number that might be required.
A virtual document has a value
(business id number, for example), a type
(passport, drivers license id), expiration date
and issuer
.
OAuth
We use a modified OAuth2, Grant Type "Refresh Token" for authentication.
Two types of JWT tokens can be generated: client and account.
Client tokens refer to your platform tokens; they have full permissions on every API endpoint and are able to perform account creation/deletion and operations on behalf of any account.
Account tokens have account-specific permissions; they cannot create/delete accounts and can only operate within the bounds of the account for which they were created. If you need to ship credentials to mobile or web devices, this should be used.
Login
Code samples
# You can also use wget
curl -X POST /api/v1/oauth/login \
-H 'Accept: application/json' \
-H 'authorization: string' \
-H 'account-id: 0'
import requests
headers = {
'Accept': 'application/json',
'authorization': 'string',
'account-id': '0'
}
r = requests.post('/api/v1/oauth/login', headers = headers)
print(r.json())
const headers = {
'Accept':'application/json',
'authorization':'string',
'account-id':'0'
};
fetch('/api/v1/oauth/login',
{
method: 'POST',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
POST /api/v1/oauth/login
Generate token pair given username and password in the 'Authorization
' header.
Authorization header expects 'Basic client_id:client_secret
' where the string client_id:client_secret
is your client_id and your client_secret base64 encoded.
Parameters
Name | In | Type | Required |
---|---|---|---|
authorization | header | string | true |
account-id | header | integer(int32) | false |
Example responses
200 Response
{
"data": {
"access_token": "string",
"token_type": "string",
"expires_in": 0,
"refresh_token": "string"
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | none | Inline |
Response Schema
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
» data | object | true | none | none |
»» access_token | string | true | none | none |
»» token_type | string | true | none | none |
»» expires_in | integer(int32) | true | none | none |
»» refresh_token | string | true | none | none |
Refresh an Access Token
POST /api/v1/oauth/token
Refresh access-token given a refresh-token.
Refresh an expired access-token with a refresh-token.
Body parameter
{
"refresh_token": "string"
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
account-id | header | integer(int32) | false | none |
body | body | object | true | none |
» refresh_token | body | string | true | none |
Example responses
200 Response
{
"data": {
"access_token": "string",
"token_type": "string",
"expires_in": 0,
"refresh_token": "string"
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | none | Inline |
Response Schema
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
» data | object | true | none | none |
»» access_token | string | true | none | none |
»» token_type | string | true | none | none |
»» expires_in | integer(int32) | true | none | none |
»» refresh_token | string | true | none | none |
Pre-qualify
Eligibility for a line of credit
Code samples
# You can also use wget
curl -X POST /api/v1/pre-qualify \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'authorization: string'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'authorization': 'string'
}
r = requests.post('/api/v1/pre-qualify', headers = headers)
print(r.json())
const inputBody = '{
"cnpj": "string"
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'authorization':'string'
};
fetch('/api/v1/pre-qualify',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
POST /api/v1/pre-qualify
This endpoint returns whether a business entity is eligible for applying for an account.
Body parameter
{
"cnpj": "string"
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
authorization | header | string | true | none |
body | body | object | true | none |
» cnpj | body | string | true | none |
Example responses
200 Response
{
"data": {
"cnpj": "string",
"eligible": true
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | none | Inline |
Response Schema
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
» data | object | true | none | none |
»» cnpj | string | true | none | none |
»» eligible | boolean | true | none | none |
Accounts
List all connected accounts
Code samples
# You can also use wget
curl -X GET /api/v1/accounts \
-H 'Accept: application/json' \
-H 'authorization: string'
import requests
headers = {
'Accept': 'application/json',
'authorization': 'string'
}
r = requests.get('/api/v1/accounts', headers = headers)
print(r.json())
const headers = {
'Accept':'application/json',
'authorization':'string'
};
fetch('/api/v1/accounts',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
GET /api/v1/accounts
Retrieve all connected accounts.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
authorization | header | string | true | none |
page | query | integer(int32) | false | none |
limit | query | integer(int32) | false | none |
Example responses
200 Response
{
"page": 0,
"total": 0,
"data": [
{
"id": 0,
"status": "pending",
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z",
"line_of_credit": 0,
"available_credit": 0,
"business": {
"legal_name": "string",
"name": "string",
"updated_at": "2019-08-24T14:15:22Z",
"address": {
"street_name": "string",
"street_number": "string",
"postal_code": "string",
"district": "string",
"city": "string",
"state_code": "string",
"country": "string",
"extra_address_info": "string"
},
"documents": {
"virtual": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"value": "string",
"timestamp": "2019-08-24T14:15:22Z",
"type": "string",
"exp": "string",
"issuer": "string"
}
],
"physical": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"timestamp": "2019-08-24T14:15:22Z",
"type": "string",
"extension": "string"
}
]
},
"contact_info": {
"email": "string",
"phone_number": "string"
},
"created_at": "2019-08-24T14:15:22Z",
"account_id": 0,
"business_id": "string"
},
"tos_acceptance": {
"date": "2019-08-24T14:15:22Z",
"ip": "string",
"user_agent": "string"
}
}
]
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | none | Inline |
Response Schema
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
» page | integer(int32) | true | none | none |
» total | integer(int32) | true | none | none |
» data | [object] | true | none | none |
»» id | integer(int32) | true | none | none |
»» status | string | true | none | none |
»» created_at | string(date-time) | true | none | none |
»» updated_at | string(date-time) | true | none | none |
»» line_of_credit | number(double)¦null | true | none | none |
»» available_credit | number(double)¦null | true | none | none |
»» business | object¦null | true | none | none |
»»» legal_name | string | true | none | none |
»»» name | string | true | none | none |
»»» updated_at | string(date-time) | true | none | none |
»»» address | object | true | none | none |
»»»» street_name | string | true | none | none |
»»»» street_number | string | true | none | none |
»»»» postal_code | string | true | none | none |
»»»» district | string | true | none | none |
»»»» city | string | true | none | none |
»»»» state_code | string | true | none | none |
»»»» country | string | true | none | none |
»»»» extra_address_info | string | false | none | none |
»»» documents | object | true | none | none |
»»»» virtual | [object] | false | none | none |
»»»»» flow-app.schemas.models/VirtualDocument | object | false | none | none |
»»»»»» id | string(uuid) | true | none | none |
»»»»»» value | string | true | none | none |
»»»»»» timestamp | string(date-time) | true | none | none |
»»»»»» type | string | true | none | none |
»»»»»» exp | string | false | none | none |
»»»»»» issuer | string | false | none | none |
»»»» physical | [object] | false | none | none |
»»»»» flow.schema/PhysicalDocumentRes | object | false | none | none |
»»»»»» id | string(uuid) | true | none | none |
»»»»»» timestamp | string(date-time) | true | none | none |
»»»»»» type | string | true | none | none |
»»»»»» extension | string¦null | false | none | none |
»»» contact_info | object | true | none | none |
string | true | none | none | |
»»»» phone_number | string | true | none | none |
»»» created_at | string(date-time) | true | none | none |
»»» account_id | integer(int32) | true | none | none |
»»» business_id | string | true | none | none |
»» tos_acceptance | object¦null | true | none | none |
»»» date | string(date-time) | true | none | none |
»»» ip | string | true | none | none |
»»» user_agent | string | true | none | none |
Enumerated Values
Property | Value |
---|---|
status | pending |
status | approved |
status | under-review |
Create an account
Code samples
# You can also use wget
curl -X POST /api/v1/accounts \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'authorization: string'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'authorization': 'string'
}
r = requests.post('/api/v1/accounts', headers = headers)
print(r.json())
const inputBody = '{
"business": {
"business_id": "string",
"name": "string",
"legal_name": "string",
"address": {
"street_name": "string",
"street_number": "string",
"postal_code": "string",
"district": "string",
"city": "string",
"state_code": "string",
"country": "string",
"extra_address_info": "string"
},
"contact_info": {
"email": "string",
"phone_number": "string"
},
"documents": {
"physical": [
{
"value": "string",
"type": "CONTRATO-SOCIAL"
}
]
}
}
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'authorization':'string'
};
fetch('/api/v1/accounts',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
POST /api/v1/accounts
Create a new account.
Body parameter
{
"business": {
"business_id": "string",
"name": "string",
"legal_name": "string",
"address": {
"street_name": "string",
"street_number": "string",
"postal_code": "string",
"district": "string",
"city": "string",
"state_code": "string",
"country": "string",
"extra_address_info": "string"
},
"contact_info": {
"email": "string",
"phone_number": "string"
},
"documents": {
"physical": [
{
"value": "string",
"type": "CONTRATO-SOCIAL"
}
]
}
}
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
authorization | header | string | true | none |
body | body | object | true | none |
» business | body | object | false | none |
»» business_id | body | string | true | none |
»» name | body | string | true | none |
»» legal_name | body | string | true | none |
»» address | body | object | true | none |
»»» street_name | body | string | true | none |
»»» street_number | body | string | true | none |
»»» postal_code | body | string | true | none |
»»» district | body | string | true | none |
»»» city | body | string | true | none |
»»» state_code | body | string | true | none |
»»» country | body | string | true | none |
»»» extra_address_info | body | string | false | none |
»» contact_info | body | object | true | none |
body | string | true | none | |
»»» phone_number | body | string | true | none |
»» documents | body | object | true | none |
»»» physical | body | [object] | true | none |
»»»» flow.schema/BusinessPhysicalDocumentCreate | body | object | false | none |
»»»»» value | body | string | true | none |
»»»»» type | body | string | true | none |
Enumerated Values
Parameter | Value |
---|---|
»»»»» type | CONTRATO-SOCIAL |
Example responses
200 Response
{
"data": {
"id": 0,
"status": "pending",
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z",
"line_of_credit": 0,
"available_credit": 0,
"business": {
"legal_name": "string",
"name": "string",
"updated_at": "2019-08-24T14:15:22Z",
"address": {
"street_name": "string",
"street_number": "string",
"postal_code": "string",
"district": "string",
"city": "string",
"state_code": "string",
"country": "string",
"extra_address_info": "string"
},
"documents": {
"virtual": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"value": "string",
"timestamp": "2019-08-24T14:15:22Z",
"type": "string",
"exp": "string",
"issuer": "string"
}
],
"physical": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"timestamp": "2019-08-24T14:15:22Z",
"type": "string",
"extension": "string"
}
]
},
"contact_info": {
"email": "string",
"phone_number": "string"
},
"created_at": "2019-08-24T14:15:22Z",
"account_id": 0,
"business_id": "string"
},
"tos_acceptance": {
"date": "2019-08-24T14:15:22Z",
"ip": "string",
"user_agent": "string"
}
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | none | Inline |
Response Schema
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
» data | object | true | none | none |
»» id | integer(int32) | true | none | none |
»» status | string | true | none | none |
»» created_at | string(date-time) | true | none | none |
»» updated_at | string(date-time) | true | none | none |
»» line_of_credit | number(double)¦null | true | none | none |
»» available_credit | number(double)¦null | true | none | none |
»» business | object¦null | false | none | none |
»»» legal_name | string | true | none | none |
»»» name | string | true | none | none |
»»» updated_at | string(date-time) | true | none | none |
»»» address | object | true | none | none |
»»»» street_name | string | true | none | none |
»»»» street_number | string | true | none | none |
»»»» postal_code | string | true | none | none |
»»»» district | string | true | none | none |
»»»» city | string | true | none | none |
»»»» state_code | string | true | none | none |
»»»» country | string | true | none | none |
»»»» extra_address_info | string | false | none | none |
»»» documents | object | true | none | none |
»»»» virtual | [object] | false | none | none |
»»»»» flow-app.schemas.models/VirtualDocument | object | false | none | none |
»»»»»» id | string(uuid) | true | none | none |
»»»»»» value | string | true | none | none |
»»»»»» timestamp | string(date-time) | true | none | none |
»»»»»» type | string | true | none | none |
»»»»»» exp | string | false | none | none |
»»»»»» issuer | string | false | none | none |
»»»» physical | [object] | false | none | none |
»»»»» flow.schema/PhysicalDocumentRes | object | false | none | none |
»»»»»» id | string(uuid) | true | none | none |
»»»»»» timestamp | string(date-time) | true | none | none |
»»»»»» type | string | true | none | none |
»»»»»» extension | string¦null | false | none | none |
»»» contact_info | object | true | none | none |
string | true | none | none | |
»»»» phone_number | string | true | none | none |
»»» created_at | string(date-time) | true | none | none |
»»» account_id | integer(int32) | true | none | none |
»»» business_id | string | true | none | none |
»» tos_acceptance | object¦null | true | none | none |
»»» date | string(date-time) | true | none | none |
»»» ip | string | true | none | none |
»»» user_agent | string | true | none | none |
Enumerated Values
Property | Value |
---|---|
status | pending |
status | approved |
status | under-review |
Retrieve an account by id
Code samples
# You can also use wget
curl -X GET /api/v1/accounts/{account-id} \
-H 'Accept: application/json' \
-H 'authorization: string'
import requests
headers = {
'Accept': 'application/json',
'authorization': 'string'
}
r = requests.get('/api/v1/accounts/{account-id}', headers = headers)
print(r.json())
const headers = {
'Accept':'application/json',
'authorization':'string'
};
fetch('/api/v1/accounts/{account-id}',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
GET /api/v1/accounts/{account-id}
Retrieve the details of an existing account by account id.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
authorization | header | string | true | none |
account-id | path | integer(int32) | true | none |
Example responses
200 Response
{
"data": {
"id": 0,
"status": "pending",
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z",
"line_of_credit": 0,
"available_credit": 0,
"business": {
"legal_name": "string",
"name": "string",
"updated_at": "2019-08-24T14:15:22Z",
"address": {
"street_name": "string",
"street_number": "string",
"postal_code": "string",
"district": "string",
"city": "string",
"state_code": "string",
"country": "string",
"extra_address_info": "string"
},
"documents": {
"virtual": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"value": "string",
"timestamp": "2019-08-24T14:15:22Z",
"type": "string",
"exp": "string",
"issuer": "string"
}
],
"physical": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"timestamp": "2019-08-24T14:15:22Z",
"type": "string",
"extension": "string"
}
]
},
"contact_info": {
"email": "string",
"phone_number": "string"
},
"created_at": "2019-08-24T14:15:22Z",
"account_id": 0,
"business_id": "string"
},
"tos_acceptance": {
"date": "2019-08-24T14:15:22Z",
"ip": "string",
"user_agent": "string"
}
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | none | Inline |
Response Schema
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
» data | object | true | none | none |
»» id | integer(int32) | true | none | none |
»» status | string | true | none | none |
»» created_at | string(date-time) | true | none | none |
»» updated_at | string(date-time) | true | none | none |
»» line_of_credit | number(double)¦null | true | none | none |
»» available_credit | number(double)¦null | true | none | none |
»» business | object¦null | false | none | none |
»»» legal_name | string | true | none | none |
»»» name | string | true | none | none |
»»» updated_at | string(date-time) | true | none | none |
»»» address | object | true | none | none |
»»»» street_name | string | true | none | none |
»»»» street_number | string | true | none | none |
»»»» postal_code | string | true | none | none |
»»»» district | string | true | none | none |
»»»» city | string | true | none | none |
»»»» state_code | string | true | none | none |
»»»» country | string | true | none | none |
»»»» extra_address_info | string | false | none | none |
»»» documents | object | true | none | none |
»»»» virtual | [object] | false | none | none |
»»»»» flow-app.schemas.models/VirtualDocument | object | false | none | none |
»»»»»» id | string(uuid) | true | none | none |
»»»»»» value | string | true | none | none |
»»»»»» timestamp | string(date-time) | true | none | none |
»»»»»» type | string | true | none | none |
»»»»»» exp | string | false | none | none |
»»»»»» issuer | string | false | none | none |
»»»» physical | [object] | false | none | none |
»»»»» flow.schema/PhysicalDocumentRes | object | false | none | none |
»»»»»» id | string(uuid) | true | none | none |
»»»»»» timestamp | string(date-time) | true | none | none |
»»»»»» type | string | true | none | none |
»»»»»» extension | string¦null | false | none | none |
»»» contact_info | object | true | none | none |
string | true | none | none | |
»»»» phone_number | string | true | none | none |
»»» created_at | string(date-time) | true | none | none |
»»» account_id | integer(int32) | true | none | none |
»»» business_id | string | true | none | none |
»» tos_acceptance | object¦null | true | none | none |
»»» date | string(date-time) | true | none | none |
»»» ip | string | true | none | none |
»»» user_agent | string | true | none | none |
Enumerated Values
Property | Value |
---|---|
status | pending |
status | approved |
status | under-review |
Delete an account
Code samples
# You can also use wget
curl -X DELETE /api/v1/accounts/{account-id} \
-H 'Accept: application/json' \
-H 'authorization: string'
import requests
headers = {
'Accept': 'application/json',
'authorization': 'string'
}
r = requests.delete('/api/v1/accounts/{account-id}', headers = headers)
print(r.json())
const headers = {
'Accept':'application/json',
'authorization':'string'
};
fetch('/api/v1/accounts/{account-id}',
{
method: 'DELETE',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
DELETE /api/v1/accounts/{account-id}
Delete an account by id.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
authorization | header | string | true | none |
account-id | path | integer(int32) | true | none |
Example responses
204 Response
"string"
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | none | string |
Update an account
Code samples
# You can also use wget
curl -X PATCH /api/v1/accounts/{account-id} \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'authorization: string'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'authorization': 'string'
}
r = requests.patch('/api/v1/accounts/{account-id}', headers = headers)
print(r.json())
const inputBody = '{
"business": {
"business_id": "string",
"name": "string",
"legal_name": "string",
"address": {
"street_name": "string",
"street_number": "string",
"postal_code": "string",
"district": "string",
"city": "string",
"state_code": "string",
"country": "string",
"extra_address_info": "string"
},
"contact_info": {
"email": "string",
"phone_number": "string"
},
"documents": {
"physical": [
{
"value": "string",
"type": "CONTRATO-SOCIAL"
}
]
}
},
"tos_acceptance": {
"date": "2019-08-24T14:15:22Z",
"ip": "string",
"user_agent": "string"
}
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'authorization':'string'
};
fetch('/api/v1/accounts/{account-id}',
{
method: 'PATCH',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
PATCH /api/v1/accounts/{account-id}
Update one or many fields of an existing account.
Body parameter
{
"business": {
"business_id": "string",
"name": "string",
"legal_name": "string",
"address": {
"street_name": "string",
"street_number": "string",
"postal_code": "string",
"district": "string",
"city": "string",
"state_code": "string",
"country": "string",
"extra_address_info": "string"
},
"contact_info": {
"email": "string",
"phone_number": "string"
},
"documents": {
"physical": [
{
"value": "string",
"type": "CONTRATO-SOCIAL"
}
]
}
},
"tos_acceptance": {
"date": "2019-08-24T14:15:22Z",
"ip": "string",
"user_agent": "string"
}
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
authorization | header | string | true | none |
account-id | path | integer(int32) | true | none |
body | body | object | true | none |
» business | body | object | false | none |
»» business_id | body | string | true | none |
»» name | body | string | true | none |
»» legal_name | body | string | true | none |
»» address | body | object | true | none |
»»» street_name | body | string | true | none |
»»» street_number | body | string | true | none |
»»» postal_code | body | string | true | none |
»»» district | body | string | true | none |
»»» city | body | string | true | none |
»»» state_code | body | string | true | none |
»»» country | body | string | true | none |
»»» extra_address_info | body | string | false | none |
»» contact_info | body | object | true | none |
body | string | true | none | |
»»» phone_number | body | string | true | none |
»» documents | body | object | true | none |
»»» physical | body | [object] | true | none |
»»»» flow.schema/BusinessPhysicalDocumentCreate | body | object | false | none |
»»»»» value | body | string | true | none |
»»»»» type | body | string | true | none |
» tos_acceptance | body | object | false | none |
»» date | body | string(date-time) | true | none |
»» ip | body | string | true | none |
»» user_agent | body | string | true | none |
Enumerated Values
Parameter | Value |
---|---|
»»»»» type | CONTRATO-SOCIAL |
Example responses
204 Response
"string"
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | none | string |
List all persons
Code samples
# You can also use wget
curl -X GET /api/v1/accounts/{account-id}/persons \
-H 'Accept: application/json' \
-H 'authorization: string'
import requests
headers = {
'Accept': 'application/json',
'authorization': 'string'
}
r = requests.get('/api/v1/accounts/{account-id}/persons', headers = headers)
print(r.json())
const headers = {
'Accept':'application/json',
'authorization':'string'
};
fetch('/api/v1/accounts/{account-id}/persons',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
GET /api/v1/accounts/{account-id}/persons
Retrieve all persons associated with the account.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
authorization | header | string | true | none |
account-id | path | integer(int32) | true | none |
Example responses
200 Response
{
"data": [
{
"id_number": "string",
"marital_status": "married",
"pep": true,
"id": 0,
"updated_at": "2019-08-24T14:15:22Z",
"address": {
"street_name": "string",
"street_number": "string",
"postal_code": "string",
"district": "string",
"city": "string",
"state_code": "string",
"country": "string",
"extra_address_info": "string"
},
"last_name": "string",
"first_name": "string",
"documents": {
"virtual": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"value": "string",
"timestamp": "2019-08-24T14:15:22Z",
"type": "string",
"exp": "string",
"issuer": "string"
}
],
"physical": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"timestamp": "2019-08-24T14:15:22Z",
"type": "string",
"extension": "string"
}
]
},
"contact_info": {
"email": "string",
"phone_number": "string"
},
"created_at": "2019-08-24T14:15:22Z",
"account_opener": true,
"account_id": 0
}
]
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | none | Inline |
Response Schema
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
» data | [object] | true | none | none |
»» id_number | string | true | none | none |
»» marital_status | string | true | none | none |
»» pep | boolean | true | none | none |
»» id | integer(int32) | true | none | none |
»» updated_at | string(date-time) | true | none | none |
»» address | object | true | none | none |
»»» street_name | string | true | none | none |
»»» street_number | string | true | none | none |
»»» postal_code | string | true | none | none |
»»» district | string | true | none | none |
»»» city | string | true | none | none |
»»» state_code | string | true | none | none |
»»» country | string | true | none | none |
»»» extra_address_info | string | false | none | none |
»» last_name | string | true | none | none |
»» first_name | string | true | none | none |
»» documents | object | true | none | none |
»»» virtual | [object] | false | none | none |
»»»» flow-app.schemas.models/VirtualDocument | object | false | none | none |
»»»»» id | string(uuid) | true | none | none |
»»»»» value | string | true | none | none |
»»»»» timestamp | string(date-time) | true | none | none |
»»»»» type | string | true | none | none |
»»»»» exp | string | false | none | none |
»»»»» issuer | string | false | none | none |
»»» physical | [object] | false | none | none |
»»»» flow.schema/PhysicalDocumentRes | object | false | none | none |
»»»»» id | string(uuid) | true | none | none |
»»»»» timestamp | string(date-time) | true | none | none |
»»»»» type | string | true | none | none |
»»»»» extension | string¦null | false | none | none |
»» contact_info | object | true | none | none |
string | true | none | none | |
»»» phone_number | string | true | none | none |
»» created_at | string(date-time) | true | none | none |
»» account_opener | boolean | false | none | none |
»» account_id | integer(int32) | true | none | none |
Enumerated Values
Property | Value |
---|---|
marital_status | married |
marital_status | legally-separated |
marital_status | single |
marital_status | other |
marital_status | divorced |
marital_status | widowed |
Create a person
Code samples
# You can also use wget
curl -X POST /api/v1/accounts/{account-id}/persons \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'authorization: string'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'authorization': 'string'
}
r = requests.post('/api/v1/accounts/{account-id}/persons', headers = headers)
print(r.json())
const inputBody = '{
"id_number": "string",
"marital_status": "married",
"pep": true,
"address": {
"street_name": "string",
"street_number": "string",
"postal_code": "string",
"district": "string",
"city": "string",
"state_code": "string",
"country": "string",
"extra_address_info": "string"
},
"last_name": "string",
"first_name": "string",
"documents": {
"physical": [
{
"value": "string",
"type": "CNH"
}
],
"virtual": [
{
"value": "string",
"exp": "string",
"issuer": "string",
"type": "CNH"
}
]
},
"contact_info": {
"email": "string",
"phone_number": "string"
},
"account_opener": true
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'authorization':'string'
};
fetch('/api/v1/accounts/{account-id}/persons',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
POST /api/v1/accounts/{account-id}/persons
Create a new person.
Body parameter
{
"id_number": "string",
"marital_status": "married",
"pep": true,
"address": {
"street_name": "string",
"street_number": "string",
"postal_code": "string",
"district": "string",
"city": "string",
"state_code": "string",
"country": "string",
"extra_address_info": "string"
},
"last_name": "string",
"first_name": "string",
"documents": {
"physical": [
{
"value": "string",
"type": "CNH"
}
],
"virtual": [
{
"value": "string",
"exp": "string",
"issuer": "string",
"type": "CNH"
}
]
},
"contact_info": {
"email": "string",
"phone_number": "string"
},
"account_opener": true
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
authorization | header | string | true | none |
account-id | path | integer(int32) | true | none |
body | body | object | true | none |
» id_number | body | string | true | none |
» marital_status | body | string | true | none |
» pep | body | boolean | true | none |
» address | body | object | true | none |
»» street_name | body | string | true | none |
»» street_number | body | string | true | none |
»» postal_code | body | string | true | none |
»» district | body | string | true | none |
»» city | body | string | true | none |
»» state_code | body | string | true | none |
»» country | body | string | true | none |
»» extra_address_info | body | string | false | none |
» last_name | body | string | true | none |
» first_name | body | string | true | none |
» documents | body | object | true | none |
»» physical | body | [object] | true | none |
»»» flow.schema/PersonPhysicalDocumentCreate | body | object | false | none |
»»»» value | body | string | true | none |
»»»» type | body | string | true | none |
»» virtual | body | [object] | false | none |
»»» value | body | string | true | none |
»»» exp | body | string | false | none |
»»» issuer | body | string | false | none |
»»» type | body | string | true | none |
» contact_info | body | object | true | none |
body | string | true | none | |
»» phone_number | body | string | true | none |
» account_opener | body | boolean | false | none |
Enumerated Values
Parameter | Value |
---|---|
» marital_status | married |
» marital_status | legally-separated |
» marital_status | single |
» marital_status | other |
» marital_status | divorced |
» marital_status | widowed |
»»»» type | CNH |
»»»» type | RG |
»»» type | CNH |
»»» type | RG |
Example responses
200 Response
{
"data": {
"id_number": "string",
"marital_status": "married",
"pep": true,
"id": 0,
"updated_at": "2019-08-24T14:15:22Z",
"address": {
"street_name": "string",
"street_number": "string",
"postal_code": "string",
"district": "string",
"city": "string",
"state_code": "string",
"country": "string",
"extra_address_info": "string"
},
"last_name": "string",
"first_name": "string",
"documents": {
"virtual": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"value": "string",
"timestamp": "2019-08-24T14:15:22Z",
"type": "string",
"exp": "string",
"issuer": "string"
}
],
"physical": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"timestamp": "2019-08-24T14:15:22Z",
"type": "string",
"extension": "string"
}
]
},
"contact_info": {
"email": "string",
"phone_number": "string"
},
"created_at": "2019-08-24T14:15:22Z",
"account_opener": true,
"account_id": 0
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | none | Inline |
Response Schema
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
» data | object | true | none | none |
»» id_number | string | true | none | none |
»» marital_status | string | true | none | none |
»» pep | boolean | true | none | none |
»» id | integer(int32) | true | none | none |
»» updated_at | string(date-time) | true | none | none |
»» address | object | true | none | none |
»»» street_name | string | true | none | none |
»»» street_number | string | true | none | none |
»»» postal_code | string | true | none | none |
»»» district | string | true | none | none |
»»» city | string | true | none | none |
»»» state_code | string | true | none | none |
»»» country | string | true | none | none |
»»» extra_address_info | string | false | none | none |
»» last_name | string | true | none | none |
»» first_name | string | true | none | none |
»» documents | object | true | none | none |
»»» virtual | [object] | false | none | none |
»»»» flow-app.schemas.models/VirtualDocument | object | false | none | none |
»»»»» id | string(uuid) | true | none | none |
»»»»» value | string | true | none | none |
»»»»» timestamp | string(date-time) | true | none | none |
»»»»» type | string | true | none | none |
»»»»» exp | string | false | none | none |
»»»»» issuer | string | false | none | none |
»»» physical | [object] | false | none | none |
»»»» flow.schema/PhysicalDocumentRes | object | false | none | none |
»»»»» id | string(uuid) | true | none | none |
»»»»» timestamp | string(date-time) | true | none | none |
»»»»» type | string | true | none | none |
»»»»» extension | string¦null | false | none | none |
»» contact_info | object | true | none | none |
string | true | none | none | |
»»» phone_number | string | true | none | none |
»» created_at | string(date-time) | true | none | none |
»» account_opener | boolean | false | none | none |
»» account_id | integer(int32) | true | none | none |
Enumerated Values
Property | Value |
---|---|
marital_status | married |
marital_status | legally-separated |
marital_status | single |
marital_status | other |
marital_status | divorced |
marital_status | widowed |
Retrieve a person
Code samples
# You can also use wget
curl -X GET /api/v1/accounts/{account-id}/persons/{person-id} \
-H 'Accept: application/json' \
-H 'authorization: string'
import requests
headers = {
'Accept': 'application/json',
'authorization': 'string'
}
r = requests.get('/api/v1/accounts/{account-id}/persons/{person-id}', headers = headers)
print(r.json())
const headers = {
'Accept':'application/json',
'authorization':'string'
};
fetch('/api/v1/accounts/{account-id}/persons/{person-id}',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
GET /api/v1/accounts/{account-id}/persons/{person-id}
Retrieve a person by id.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
authorization | header | string | true | none |
account-id | path | integer(int32) | true | none |
person-id | path | integer(int32) | true | none |
Example responses
200 Response
{
"data": {
"id_number": "string",
"marital_status": "married",
"pep": true,
"id": 0,
"updated_at": "2019-08-24T14:15:22Z",
"address": {
"street_name": "string",
"street_number": "string",
"postal_code": "string",
"district": "string",
"city": "string",
"state_code": "string",
"country": "string",
"extra_address_info": "string"
},
"last_name": "string",
"first_name": "string",
"documents": {
"virtual": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"value": "string",
"timestamp": "2019-08-24T14:15:22Z",
"type": "string",
"exp": "string",
"issuer": "string"
}
],
"physical": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"timestamp": "2019-08-24T14:15:22Z",
"type": "string",
"extension": "string"
}
]
},
"contact_info": {
"email": "string",
"phone_number": "string"
},
"created_at": "2019-08-24T14:15:22Z",
"account_opener": true,
"account_id": 0
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | none | Inline |
Response Schema
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
» data | object | true | none | none |
»» id_number | string | true | none | none |
»» marital_status | string | true | none | none |
»» pep | boolean | true | none | none |
»» id | integer(int32) | true | none | none |
»» updated_at | string(date-time) | true | none | none |
»» address | object | true | none | none |
»»» street_name | string | true | none | none |
»»» street_number | string | true | none | none |
»»» postal_code | string | true | none | none |
»»» district | string | true | none | none |
»»» city | string | true | none | none |
»»» state_code | string | true | none | none |
»»» country | string | true | none | none |
»»» extra_address_info | string | false | none | none |
»» last_name | string | true | none | none |
»» first_name | string | true | none | none |
»» documents | object | true | none | none |
»»» virtual | [object] | false | none | none |
»»»» flow-app.schemas.models/VirtualDocument | object | false | none | none |
»»»»» id | string(uuid) | true | none | none |
»»»»» value | string | true | none | none |
»»»»» timestamp | string(date-time) | true | none | none |
»»»»» type | string | true | none | none |
»»»»» exp | string | false | none | none |
»»»»» issuer | string | false | none | none |
»»» physical | [object] | false | none | none |
»»»» flow.schema/PhysicalDocumentRes | object | false | none | none |
»»»»» id | string(uuid) | true | none | none |
»»»»» timestamp | string(date-time) | true | none | none |
»»»»» type | string | true | none | none |
»»»»» extension | string¦null | false | none | none |
»» contact_info | object | true | none | none |
string | true | none | none | |
»»» phone_number | string | true | none | none |
»» created_at | string(date-time) | true | none | none |
»» account_opener | boolean | false | none | none |
»» account_id | integer(int32) | true | none | none |
Enumerated Values
Property | Value |
---|---|
marital_status | married |
marital_status | legally-separated |
marital_status | single |
marital_status | other |
marital_status | divorced |
marital_status | widowed |
Delete a person
Code samples
# You can also use wget
curl -X DELETE /api/v1/accounts/{account-id}/persons/{person-id} \
-H 'Accept: application/json' \
-H 'authorization: string'
import requests
headers = {
'Accept': 'application/json',
'authorization': 'string'
}
r = requests.delete('/api/v1/accounts/{account-id}/persons/{person-id}', headers = headers)
print(r.json())
const headers = {
'Accept':'application/json',
'authorization':'string'
};
fetch('/api/v1/accounts/{account-id}/persons/{person-id}',
{
method: 'DELETE',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
DELETE /api/v1/accounts/{account-id}/persons/{person-id}
Delete a person.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
authorization | header | string | true | none |
account-id | path | integer(int32) | true | none |
person-id | path | integer(int32) | true | none |
Example responses
204 Response
"string"
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | none | string |
Update a person
Code samples
# You can also use wget
curl -X PATCH /api/v1/accounts/{account-id}/persons/{person-id} \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'authorization: string'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'authorization': 'string'
}
r = requests.patch('/api/v1/accounts/{account-id}/persons/{person-id}', headers = headers)
print(r.json())
const inputBody = '{
"id_number": "string",
"marital_status": "married",
"pep": true,
"address": {
"street_name": "string",
"street_number": "string",
"postal_code": "string",
"district": "string",
"city": "string",
"state_code": "string",
"country": "string",
"extra_address_info": "string"
},
"last_name": "string",
"first_name": "string",
"documents": {
"physical": [
{
"value": "string",
"type": "CNH"
}
],
"virtual": [
{
"value": "string",
"exp": "string",
"issuer": "string",
"type": "CNH"
}
]
},
"contact_info": {
"email": "string",
"phone_number": "string"
},
"account_opener": true
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'authorization':'string'
};
fetch('/api/v1/accounts/{account-id}/persons/{person-id}',
{
method: 'PATCH',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
PATCH /api/v1/accounts/{account-id}/persons/{person-id}
Update one or many fields of an existing person.
Body parameter
{
"id_number": "string",
"marital_status": "married",
"pep": true,
"address": {
"street_name": "string",
"street_number": "string",
"postal_code": "string",
"district": "string",
"city": "string",
"state_code": "string",
"country": "string",
"extra_address_info": "string"
},
"last_name": "string",
"first_name": "string",
"documents": {
"physical": [
{
"value": "string",
"type": "CNH"
}
],
"virtual": [
{
"value": "string",
"exp": "string",
"issuer": "string",
"type": "CNH"
}
]
},
"contact_info": {
"email": "string",
"phone_number": "string"
},
"account_opener": true
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
authorization | header | string | true | none |
account-id | path | integer(int32) | true | none |
person-id | path | integer(int32) | true | none |
body | body | object | true | none |
» id_number | body | string | false | none |
» marital_status | body | string | false | none |
» pep | body | boolean | false | none |
» address | body | object | false | none |
»» street_name | body | string | true | none |
»» street_number | body | string | true | none |
»» postal_code | body | string | true | none |
»» district | body | string | true | none |
»» city | body | string | true | none |
»» state_code | body | string | true | none |
»» country | body | string | true | none |
»» extra_address_info | body | string | false | none |
» last_name | body | string | false | none |
» first_name | body | string | false | none |
» documents | body | object | false | none |
»» physical | body | [object] | true | none |
»»» flow.schema/PersonPhysicalDocumentCreate | body | object | false | none |
»»»» value | body | string | true | none |
»»»» type | body | string | true | none |
»» virtual | body | [object] | false | none |
»»» value | body | string | true | none |
»»» exp | body | string | false | none |
»»» issuer | body | string | false | none |
»»» type | body | string | true | none |
» contact_info | body | object | false | none |
body | string | true | none | |
»» phone_number | body | string | true | none |
» account_opener | body | boolean | false | none |
Enumerated Values
Parameter | Value |
---|---|
» marital_status | married |
» marital_status | legally-separated |
» marital_status | single |
» marital_status | other |
» marital_status | divorced |
» marital_status | widowed |
»»»» type | CNH |
»»»» type | RG |
»»» type | CNH |
»»» type | RG |
Example responses
204 Response
"string"
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | none | string |
Loan Preview
Preview loan offers
Code samples
# You can also use wget
curl -X POST /api/v1/loan-preview \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'authorization: string' \
-H 'account-id: 0' \
-H 'beneficiary-id: string'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'authorization': 'string',
'account-id': '0',
'beneficiary-id': 'string'
}
r = requests.post('/api/v1/loan-preview', headers = headers)
print(r.json())
const inputBody = '{
"amount": 0
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'authorization':'string',
'account-id':'0',
'beneficiary-id':'string'
};
fetch('/api/v1/loan-preview',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
POST /api/v1/loan-preview
Prior to submitting the loan application, submit the prospective loan to a preview API call.
Body parameter
{
"amount": 0
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
authorization | header | string | true | none |
account-id | header | integer(int32) | true | none |
beneficiary-id | header | string | false | none |
body | body | object | true | none |
» amount | body | number(double) | true | none |
Example responses
200 Response
{
"data": [
{
"amount": 0,
"interest_rate": 0,
"term": 0,
"total_debt": 0,
"installment_amount": 0,
"offer_token": "string"
}
]
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | none | Inline |
Response Schema
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
» data | [object] | true | none | none |
»» amount | number(double) | true | none | none |
»» interest_rate | number(double) | true | none | none |
»» term | integer(int32) | true | none | none |
»» total_debt | number(double) | true | none | none |
»» installment_amount | number(double) | true | none | none |
»» offer_token | string | true | none | none |
Loans
Retrieve all loans by Account
Code samples
# You can also use wget
curl -X GET /api/v1/loans \
-H 'Accept: application/json' \
-H 'authorization: string' \
-H 'account-id: 0'
import requests
headers = {
'Accept': 'application/json',
'authorization': 'string',
'account-id': '0'
}
r = requests.get('/api/v1/loans', headers = headers)
print(r.json())
const headers = {
'Accept':'application/json',
'authorization':'string',
'account-id':'0'
};
fetch('/api/v1/loans',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
GET /api/v1/loans
Retrieve all loans associated with the account-id.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
authorization | header | string | true | none |
account-id | header | integer(int32) | true | none |
page | query | integer(int32) | false | none |
limit | query | integer(int32) | false | none |
Example responses
200 Response
{
"page": 0,
"total": 0,
"data": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"offer_token": "string",
"account_id": 0,
"ccb_url": "string",
"balance": 0,
"created_at": "2019-08-24T14:15:22Z",
"details": {
"pt_br": {
"vlr_financiado": 0,
"qtde_parcelas": 0,
"perc_juros_mensal": 0,
"perc_cet_mensal": 0,
"vlr_parcela": 0,
"vlr_total_divida": 0
}
},
"signature": {
"date": "2019-08-24T14:15:22Z",
"ip": "string",
"user_agent": "string"
}
}
]
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | none | Inline |
Response Schema
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
» page | integer(int32) | true | none | none |
» total | integer(int32) | true | none | none |
» data | [object] | true | none | none |
»» id | string(uuid) | true | none | none |
»» offer_token | string | true | none | none |
»» account_id | integer(int32) | true | none | none |
»» ccb_url | string | true | none | none |
»» balance | number(double) | false | none | none |
»» created_at | string(date-time) | true | none | none |
»» details | object | true | none | none |
»»» pt_br | object | true | none | none |
»»»» vlr_financiado | number(double) | true | none | none |
»»»» qtde_parcelas | integer(int32) | true | none | none |
»»»» perc_juros_mensal | number(double) | true | none | none |
»»»» perc_cet_mensal | number(double) | true | none | none |
»»»» vlr_parcela | number(double) | true | none | none |
»»»» vlr_total_divida | number(double) | true | none | none |
»» signature | object¦null | true | none | none |
»»» date | string(date-time) | true | none | none |
»»» ip | string | true | none | none |
»»» user_agent | string | true | none | none |
Create a loan
Code samples
# You can also use wget
curl -X POST /api/v1/loans \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'authorization: string' \
-H 'account-id: 0'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'authorization': 'string',
'account-id': '0'
}
r = requests.post('/api/v1/loans', headers = headers)
print(r.json())
const inputBody = '{
"offer_token": "string"
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'authorization':'string',
'account-id':'0'
};
fetch('/api/v1/loans',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
POST /api/v1/loans
Create a loan
Body parameter
{
"offer_token": "string"
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
authorization | header | string | true | none |
account-id | header | integer(int32) | true | none |
body | body | object | true | none |
» offer_token | body | string | true | none |
Example responses
200 Response
{
"data": {
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"offer_token": "string",
"account_id": 0,
"ccb_url": "string",
"balance": 0,
"created_at": "2019-08-24T14:15:22Z",
"details": {
"pt_br": {
"vlr_financiado": 0,
"qtde_parcelas": 0,
"perc_juros_mensal": 0,
"perc_cet_mensal": 0,
"vlr_parcela": 0,
"vlr_total_divida": 0
}
},
"signature": {
"date": "2019-08-24T14:15:22Z",
"ip": "string",
"user_agent": "string"
}
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | none | Inline |
Response Schema
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
» data | object | true | none | none |
»» id | string(uuid) | true | none | none |
»» offer_token | string | true | none | none |
»» account_id | integer(int32) | true | none | none |
»» ccb_url | string | true | none | none |
»» balance | number(double) | false | none | none |
»» created_at | string(date-time) | true | none | none |
»» details | object | true | none | none |
»»» pt_br | object | true | none | none |
»»»» vlr_financiado | number(double) | true | none | none |
»»»» qtde_parcelas | integer(int32) | true | none | none |
»»»» perc_juros_mensal | number(double) | true | none | none |
»»»» perc_cet_mensal | number(double) | true | none | none |
»»»» vlr_parcela | number(double) | true | none | none |
»»»» vlr_total_divida | number(double) | true | none | none |
»» signature | object¦null | true | none | none |
»»» date | string(date-time) | true | none | none |
»»» ip | string | true | none | none |
»»» user_agent | string | true | none | none |
Retrieve a loan by id
Code samples
# You can also use wget
curl -X GET /api/v1/loans/{id} \
-H 'Accept: application/json' \
-H 'authorization: string' \
-H 'account-id: 0'
import requests
headers = {
'Accept': 'application/json',
'authorization': 'string',
'account-id': '0'
}
r = requests.get('/api/v1/loans/{id}', headers = headers)
print(r.json())
const headers = {
'Accept':'application/json',
'authorization':'string',
'account-id':'0'
};
fetch('/api/v1/loans/{id}',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
GET /api/v1/loans/{id}
Retrieve the details of an existing loan by id.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
authorization | header | string | true | none |
account-id | header | integer(int32) | true | none |
id | path | string(uuid) | true | none |
Example responses
200 Response
{
"data": {
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"offer_token": "string",
"account_id": 0,
"ccb_url": "string",
"balance": 0,
"created_at": "2019-08-24T14:15:22Z",
"details": {
"pt_br": {
"vlr_financiado": 0,
"qtde_parcelas": 0,
"perc_juros_mensal": 0,
"perc_cet_mensal": 0,
"vlr_parcela": 0,
"vlr_total_divida": 0
}
},
"signature": {
"date": "2019-08-24T14:15:22Z",
"ip": "string",
"user_agent": "string"
}
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | none | Inline |
Response Schema
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
» data | object | true | none | none |
»» id | string(uuid) | true | none | none |
»» offer_token | string | true | none | none |
»» account_id | integer(int32) | true | none | none |
»» ccb_url | string | true | none | none |
»» balance | number(double) | false | none | none |
»» created_at | string(date-time) | true | none | none |
»» details | object | true | none | none |
»»» pt_br | object | true | none | none |
»»»» vlr_financiado | number(double) | true | none | none |
»»»» qtde_parcelas | integer(int32) | true | none | none |
»»»» perc_juros_mensal | number(double) | true | none | none |
»»»» perc_cet_mensal | number(double) | true | none | none |
»»»» vlr_parcela | number(double) | true | none | none |
»»»» vlr_total_divida | number(double) | true | none | none |
»» signature | object¦null | true | none | none |
»»» date | string(date-time) | true | none | none |
»»» ip | string | true | none | none |
»»» user_agent | string | true | none | none |
Update a Loan
Code samples
# You can also use wget
curl -X PATCH /api/v1/loans/{id} \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'authorization: string' \
-H 'account-id: 0'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'authorization': 'string',
'account-id': '0'
}
r = requests.patch('/api/v1/loans/{id}', headers = headers)
print(r.json())
const inputBody = '{
"signature": {
"date": "2019-08-24T14:15:22Z",
"ip": "string",
"user-agent": "string"
}
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'authorization':'string',
'account-id':'0'
};
fetch('/api/v1/loans/{id}',
{
method: 'PATCH',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
PATCH /api/v1/loans/{id}
Update (and sign) loan
Body parameter
{
"signature": {
"date": "2019-08-24T14:15:22Z",
"ip": "string",
"user-agent": "string"
}
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
authorization | header | string | true | none |
account-id | header | integer(int32) | true | none |
id | path | string(uuid) | true | none |
body | body | object | true | none |
» signature | body | object¦null | true | none |
»» date | body | string(date-time) | true | none |
»» ip | body | string | true | none |
»» user-agent | body | string | true | none |
Example responses
204 Response
"string"
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | none | string |
Webhook Endpoints
List all webhook endpoints
Code samples
# You can also use wget
curl -X GET /api/v1/webhook-endpoints \
-H 'Accept: application/json' \
-H 'authorization: string'
import requests
headers = {
'Accept': 'application/json',
'authorization': 'string'
}
r = requests.get('/api/v1/webhook-endpoints', headers = headers)
print(r.json())
const headers = {
'Accept':'application/json',
'authorization':'string'
};
fetch('/api/v1/webhook-endpoints',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
GET /api/v1/webhook-endpoints
Retrieve all your webhook endpoints.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
authorization | header | string | true | none |
Example responses
200 Response
{
"data": [
{
"id": 0,
"url": "string",
"status": "disabled",
"events": [
"account.created"
],
"created": "2019-08-24T14:15:22Z",
"updated": "2019-08-24T14:15:22Z"
}
]
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | none | Inline |
Response Schema
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
» data | [object] | true | none | none |
»» flow.schema/Webhook | object | false | none | none |
»»» id | integer(int32) | true | none | none |
»»» url | string | true | none | none |
»»» status | string | true | none | none |
»»» events | [string] | true | none | none |
»»» created | string(date-time) | true | none | none |
»»» updated | string(date-time) | true | none | none |
Enumerated Values
Property | Value |
---|---|
status | disabled |
status | enabled |
Create webhook endpoints
Code samples
# You can also use wget
curl -X POST /api/v1/webhook-endpoints \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'authorization: string'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'authorization': 'string'
}
r = requests.post('/api/v1/webhook-endpoints', headers = headers)
print(r.json())
const inputBody = '{
"url": "string",
"events": [
"account.created"
]
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'authorization':'string'
};
fetch('/api/v1/webhook-endpoints',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
POST /api/v1/webhook-endpoints
Create a new webhook endpoint.
Body parameter
{
"url": "string",
"events": [
"account.created"
]
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
authorization | header | string | true | none |
body | body | object | true | none |
» url | body | string | true | none |
» events | body | [string] | true | none |
Enumerated Values
Parameter | Value |
---|---|
» events | account.created |
» events | person.updated |
» events | account.updated |
» events | loan.updated |
» events | loan.created |
» events | person.created |
Example responses
200 Response
{
"data": {
"id": 0,
"url": "string",
"status": "disabled",
"events": [
"account.created"
],
"created": "2019-08-24T14:15:22Z",
"updated": "2019-08-24T14:15:22Z"
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | none | Inline |
Response Schema
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
» data | object | true | none | none |
»» id | integer(int32) | true | none | none |
»» url | string | true | none | none |
»» status | string | true | none | none |
»» events | [string] | true | none | none |
»» created | string(date-time) | true | none | none |
»» updated | string(date-time) | true | none | none |
Enumerated Values
Property | Value |
---|---|
status | disabled |
status | enabled |
Retrieve a webhook endpoint by id
Code samples
# You can also use wget
curl -X GET /api/v1/webhook-endpoints/{webhook-id} \
-H 'Accept: application/json' \
-H 'authorization: string'
import requests
headers = {
'Accept': 'application/json',
'authorization': 'string'
}
r = requests.get('/api/v1/webhook-endpoints/{webhook-id}', headers = headers)
print(r.json())
const headers = {
'Accept':'application/json',
'authorization':'string'
};
fetch('/api/v1/webhook-endpoints/{webhook-id}',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
GET /api/v1/webhook-endpoints/{webhook-id}
Retrieve the details of an existing webhook endpoint by webhook id.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
authorization | header | string | true | none |
webhook-id | path | integer(int32) | true | none |
Example responses
200 Response
{
"data": {
"id": 0,
"url": "string",
"status": "disabled",
"events": [
"account.created"
],
"created": "2019-08-24T14:15:22Z",
"updated": "2019-08-24T14:15:22Z"
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | none | Inline |
Response Schema
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
» data | object | true | none | none |
»» id | integer(int32) | true | none | none |
»» url | string | true | none | none |
»» status | string | true | none | none |
»» events | [string] | true | none | none |
»» created | string(date-time) | true | none | none |
»» updated | string(date-time) | true | none | none |
Enumerated Values
Property | Value |
---|---|
status | disabled |
status | enabled |
Delete webhook endpoint
Code samples
# You can also use wget
curl -X DELETE /api/v1/webhook-endpoints/{webhook-id} \
-H 'Accept: application/json' \
-H 'authorization: string'
import requests
headers = {
'Accept': 'application/json',
'authorization': 'string'
}
r = requests.delete('/api/v1/webhook-endpoints/{webhook-id}', headers = headers)
print(r.json())
const headers = {
'Accept':'application/json',
'authorization':'string'
};
fetch('/api/v1/webhook-endpoints/{webhook-id}',
{
method: 'DELETE',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
DELETE /api/v1/webhook-endpoints/{webhook-id}
Delete a webhook endpoint by id.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
authorization | header | string | true | none |
webhook-id | path | integer(int32) | true | none |
Example responses
204 Response
"string"
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | none | string |
Update a webhook endpoint
Code samples
# You can also use wget
curl -X PATCH /api/v1/webhook-endpoints/{webhook-id} \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'authorization: string'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'authorization': 'string'
}
r = requests.patch('/api/v1/webhook-endpoints/{webhook-id}', headers = headers)
print(r.json())
const inputBody = '{
"url": "string",
"status": "disabled",
"events": [
"account.created"
]
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'authorization':'string'
};
fetch('/api/v1/webhook-endpoints/{webhook-id}',
{
method: 'PATCH',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
PATCH /api/v1/webhook-endpoints/{webhook-id}
Update one or many fields of an existing webhook endpoint.
Body parameter
{
"url": "string",
"status": "disabled",
"events": [
"account.created"
]
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
authorization | header | string | true | none |
webhook-id | path | integer(int32) | true | none |
body | body | object | true | none |
» url | body | string | false | none |
» status | body | string | false | none |
» events | body | [string] | false | none |
Enumerated Values
Parameter | Value |
---|---|
» status | disabled |
» status | enabled |
» events | account.created |
» events | person.updated |
» events | account.updated |
» events | loan.updated |
» events | loan.created |
» events | person.created |
Example responses
200 Response
{
"data": {
"updated": true
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | none | Inline |
Response Schema
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
» data | object | true | none | none |
»» updated | boolean | true | none | none |