NAV Navigation
cURL HTTP JavaScript Ruby Python Java Go PHP

Welcome

This documentation was last updated on Mon Jul 14 13:29:58 UTC 2025 and covers Mambu Version v9.177.2

Welcome to the Mambu API v2 documentation. Here you can learn everything you need to know about API v2 and how to interact with Mambu!

We offer language bindings in cURL, HTTP, JavaScript, Node.js, Ruby, Python, Java, and Go. You can view code examples in the dark area to the right, and you can switch the programming language of the examples with the tabs at the top right.

You can also download OpenAPI specifications for all of our endpoints which can be used to generate client SDKs, interactive documentation, create mock servers and more. For more information, see the OpenAPI specification section.

About Mambu API v2

Scroll down for code samples, example requests, and responses. Select a language for code samples from the tabs above or the mobile navigation menu.

Mambu API v2 is a fully compliant RESTful API and we recommend building all new integrations with API v2 (instead of API v1).

Mambu APIs allow users to perform many tasks, including:

Providing so much functionality via API is a cornerstone of our "composable banking" ethos, allowing you to easily build up your business around Mambu's Core Banking feature set or just dip in to our complete feature set to take advantage of the features you need, such as our trusted general ledger solution.

Mambu APIs

Using API v1 and API v2

API v1 is no longer being actively developed. We strongly recommend that all customers use our API v2 endpoints for all new integrations and transition to API v2 endpoints for existing features wherever possible.

API v2 can however be used in parallel with API v1, as they do not conflict.

Request versioning is supported via the Accept header. An Accept header is required for all API v2 requests.

Example:

Accept: application/vnd.mambu.v2+json
or
Accept: application/vnd.mambu.v2+yaml

Base URLs

The base URL for requests to the API is:

To make requests to your tenant's sandbox, use the following base URL:

For more information, see the Sandbox section.

HTTP Verbs

Standard HTTP verbs are used to indicate the API request method.

Verb Function
GET To retrieve a resource or a collection of resources
POST To create a resource
PATCH To modify an existing resource
PUT To replace an existing resource
DELETE To delete a resource

Authentication

Mambu supports two methods for authenticating API requests:

Basic Authentication

curl --location --request GET 'https://TENANT_NAME.mambu.com/api/users' \
--header 'Authorization: Basic U29tZVVzZXI6T3BlblNlc2FtZQ=='
GET /api/users HTTP/1.1
Host: TENANT_NAME.mambu.com
Authorization: Basic U29tZVVzZXI6T3BlblNlc2FtZQ==
var settings = {
  "url": "https://TENANT_NAME.mambu.com/api/users",
  "method": "GET",
  "timeout": 0,
  "headers": {
    "Authorization": "Basic U29tZVVzZXI6T3BlblNlc2FtZQ=="
  },
};

$.ajax(settings).done(function (response) {
  console.log(response);
});
require "uri"
require "net/http"

url = URI("https://TENANT_NAME.mambu.com/api/users")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = "Basic U29tZVVzZXI6T3BlblNlc2FtZQ=="

response = https.request(request)
puts response.read_body
import requests

url = "https://TENANT_NAME.mambu.com/api/users"

payload={}
headers = {
  'Authorization': 'Basic U29tZVVzZXI6T3BlblNlc2FtZQ=='
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://TENANT_NAME.mambu.com/api/users")
  .method("GET", null)
  .addHeader("Authorization", "Basic U29tZVVzZXI6T3BlblNlc2FtZQ==")
  .build();
Response response = client.newCall(request).execute();
package main

import (
  "fmt"
  "net/http"
  "io/ioutil"
)

func main() {

  url := "https://TENANT_NAME.mambu.com/api/users"
  method := "GET"

  client := &http.Client {
  }
  req, err := http.NewRequest(method, url, nil)

  if err != nil {
    fmt.Println(err)
    return
  }
  req.Header.Add("Authorization", "Basic U29tZVVzZXI6T3BlblNlc2FtZQ==")

  res, err := client.Do(req)
  if err != nil {
    fmt.Println(err)
    return
  }
  defer res.Body.Close()

  body, err := ioutil.ReadAll(res.Body)
  if err != nil {
    fmt.Println(err)
    return
  }
  fmt.Println(string(body))
}

For basic authorization, provide your username and password directly via the Authorization header in the format Basic {base64-encoded-string}, where base64-encoded-string is the base-64-encoded value of your username and password separated by a colon ':'.

For example, a user with the username SomeUser and the password OpenSesame would take the value SomeUser:OpenSesame and base-64 encode it, yielding U29tZVVzZXI6T3BlblNlc2FtZQ==. They would then provide an Authorization header for their request with the value Basic U29tZVVzZXI6T3BlblNlc2FtZQ==.

See the code samples for this section for sample GET requests to the /users endpoint using the above example.

Note that the login credentials must be for a user account with API access permissions. For more information, see Creating a User - Access Rights in our User Guide.

API Keys

API keys are tokens that you provide in an apiKey header to authenticate requests. They are generated by API consumers, which are an abstraction similar to an OAuth client.

API consumers are currently an Early Access feature. If you would like to request access to this feature, please get in touch with your Mambu Customer Success Manager to discuss your requirements.

For more information on API consumers and keys, see API Consumers in our User Guide.

Versioning

# You can also use wget
curl -X {HTTP Verb} https://TENANT_NAME.mambu.com/api/{Insert resource URI here} \
  -H 'Accept: application/vnd.mambu.v2+json'

GET https://TENANT_NAME.mambu.com/api/Insert-Resource-URI-here HTTP/1.1
Host: TENANT_NAME.mambu.com

Accept: application/vnd.mambu.v2+json
var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: 'TENANT_NAME.mambu.com/api/{Insert resource URI here}',
  method: '{HTTP Verb}',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})
require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.{HTTP Verb} 'https://TENANT_NAME.mambu.com/api/{Insert resource URI here}',
  params: {
  }, headers: headers

p JSON.parse(result)
import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.{HTTP Verb}('https://TENANT_NAME.mambu.com/api/{Insert resource URI here}', params={

}, headers = headers)

print r.json()
URL obj = new URL("https://TENANT_NAME.mambu.com/api/{Insert resource URI here}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestProperty(ā€œAcceptā€, ā€œapplication/vnd.mambu.v2+jsonā€);
con.setRequestMethod("{HTTP Verb}");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("{HTTP Verb}", "https://TENANT_NAME.mambu.com/api/{Insert resource URI here}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

Mambu API v2 provides a versioning system to assist with backwards compatibility. Contract changes will result in a new version of each affected resource becoming available without the old version immediately becoming obsolete.

Versioning is supported in API requests via the Accept header.

Template: application/vnd.mambu.{version}+json

To retrieve a specific version of an entity, fill a value into the template above. The highest currently supported version is v2.

Payloads

Mambu API v2 currently has endpoints that accept and return either application/json, application/yaml, or multipart/form-data payloads.

When making a POST, PUT, or PATCH request, you must use the Content-Type header to specify the content type of the payload.

Requests

Code samples

# You can also use wget
curl -X {HTTP Verb} https://TENANT_NAME.mambu.com/api/{Insert resource URI here} \
  -H 'Accept: application/vnd.mambu.v2+json'

GET https://TENANT_NAME.mambu.com/api/Insert-Resource-URI-here HTTP/1.1
Host: TENANT_NAME.mambu.com

Accept: application/vnd.mambu.v2+json
var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: 'https://TENANT_NAME.mambu.com/api/{Insert resource URI here}',
  method: '{HTTP Verb}',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.{HTTP Verb} 'https://TENANT_NAME.mambu.com/api/{Insert resource URI here}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.{HTTP Verb}('https://TENANT_NAME.mambu.com/api/{Insert resource URI here}', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://TENANT_NAME.mambu.com/api/{Insert resource URI here}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestProperty(ā€œAcceptā€, ā€œapplication/vnd.mambu.v2+jsonā€);
con.setRequestMethod("{HTTP Verb}");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("{HTTP Verb}", "https://TENANT_NAME.mambu.com/api/{Insert resource URI here}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

API requests (also known as API calls) to the Mambu API identify who the requester is and exactly what information they wish to retrieve or which action they wish to perform.

To put together an API request you will need to combine:

Responses

Error Response

{
  "errorCode":"4",
  "errorSource":"Property scheduleSettings.repaymentInstallments may not be null",
  "errorReason":"INVALID_PARAMETERS"
}

The response to a request will contain either an error response or a payload in the content type that the endpoint accepts.

Error response

An error response will consist of:

Field Type Availability Content
errorCode number Always present A unique error code. For more information, see API Responses and Error Codes.
errorSource string Sometimes present A human-readable message capturing unsatisfied constraints.
errorReason string Always present A human-readable message stating the general category of the failure.

Idempotency

Code samples

# You can also use wget
curl -X POST https://TENANT_NAME.mambu.com/api/deposits/{depositAccountId}/transactions \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: 01234567-9abc-def0-1234-56789abcdef0'
POST https://TENANT_NAME.mambu.com/api/deposits/{depositAccountId}/transactions HTTP/1.1
Host: TENANT_NAME.mambu.com
Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: 01234567-9abc-def0-1234-56789abcdef0
var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'01234567-9abc-def0-1234-56789abcdef0'

};

$.ajax({
  url: 'https://TENANT_NAME.mambu.com/api/deposits/{depositAccountId}/transactions',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})
require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => '01234567-9abc-def0-1234-56789abcdef0'
}

result = RestClient.post 'https://TENANT_NAME.mambu.com/api/deposits/{depositAccountId}/transactions',
  params: {
  }, headers: headers

p JSON.parse(result)
import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': '01234567-9abc-def0-1234-56789abcdef0'
}

r = requests.post('https://TENANT_NAME.mambu.com/api/deposits/{depositAccountId}/transactions', params={

}, headers = headers)

print r.json()
URL obj = new URL("https://TENANT_NAME.mambu.com/api/deposits/{depositAccountId}/transactions");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
String idempotentKey = UUID.randomUUID().toString();
con.setRequestProperty(ā€œIdempotency-Keyā€, idempotentKey);
con.setRequestProperty(ā€œAcceptā€, ā€œapplication/vnd.mambu.v2+jsonā€);
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"01234567-9abc-def0-1234-56789abcdef0"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://TENANT_NAME.mambu.com/api/deposits/{depositAccountId}/transactions", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

Idempotent requests to the Mambu API are guaranteed to be executed no more than once.

Working with financial transactions, it is important to ensure some requests are not repeated for any reason, which may result in data loss or accidental duplication. You may configure requests to be idempotent by providing an Idempotency-Key header and providing a unique UUID token for the request. This will guard against the possibility of error if a request must be retried.

When an idempotent request is processed, the status code and body of the response is associated with the idempotency key and stored in a cache. If the request is duplicated for any reason, the duplicate request will not be processed, and the response will be re-sent to the client.

Idempotent requests that fail at the server level such validation failures are not stored in the cache. Subsequent requests with the same idempotency key will be processed as if they were new, receiving the same 400 BAD REQUEST status code.

For examples of idempotent requests, see the code samples for this section.

Idempotency Keys and Retry Mechanisms

Idempotency keys must use the v4 UUID format (32 hexadecimal digits, in a 8-4-4-4-12 arrangement, such as 01234567-9abc-def0-1234-56789abcdef0).

We recommend generating UUIDs programmatically or by using an online generator such as UUID Generator to ensure that all keys are valid V4 UUIDs.

Retry mechanisms must:

Sandbox

The sandbox tenant (also known as sandbox environment) is independent from the production tenant, and any changes you make in the sandbox will not affect the data in your production tenant. For more information, see Sandbox in our User Guide.

To make requests to your tenant's sandbox, use the following base URL:

The sandbox is generally one version ahead of the production tenant. As such, it may include changes that are currently in, or may soon be in, the production environment. For more information, see Mambu Release Cycle.

Sandbox management

To manage your sandbox go to the Customer Service Portal. For more information and instructions, see Customer Service Portal - Sandbox Management.

Pagination

Code samples

# You can also use wget
curl -X GET https://TENANT_NAME.mambu.com/api/{Insert resource URI here}?offset=10&limit=10&paginationDetails=ON \
  -H 'Accept: application/vnd.mambu.v2+json'

GET https://TENANT_NAME.mambu.com/api/Insert-Resource-URI-here?offset=10&limit=10&paginationDetails=ON HTTP/1.1
Host: TENANT_NAME.mambu.com

Accept: application/vnd.mambu.v2+json
var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: 'https://TENANT_NAME.mambu.com/api/{Insert resource URI here}?offset=10&limit=10&paginationDetails=ON',
  method: '{HTTP Verb}',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.{HTTP Verb} 'https://TENANT_NAME.mambu.com/api/{Insert resource URI here}?offset=10&limit=10&paginationDetails=ON',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.{HTTP Verb}('https://TENANT_NAME.mambu.com/api/{Insert resource URI here}?offset=10&limit=10&paginationDetails=ON', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://TENANT_NAME.mambu.com/api/{Insert resource URI here}?offset=10&limit=10&paginationDetails=ON");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestProperty(ā€œAcceptā€, ā€œapplication/vnd.mambu.v2+jsonā€);
con.setRequestMethod("{HTTP Verb}");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("{HTTP Verb}", "https://TENANT_NAME.mambu.com/api/{Insert resource URI here}?offset=10&limit=10&paginationDetails=ON", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

Response headers

(...)
content-type: application/vnd.mambu.v2+json
date: Mon, 03 Sep 2018 10:56:15 GMT
items-limit: 10
items-offset: 10
items-total: 35
(...)

Mambu API v2 has customisable pagination capabilities which can be used with all GET requests. It also has sorting and filtering capabilities for search endpoints.

We strongly recommend using the pagination, sorting, and filtering capabilities when making requests which will return a large number of records because response times are much faster.

Pagination query parameters

Pagination is deactivated by default and must be specified in each request. There are three available query parameters you may use, paginationDetails, offset, and limit.

paginationDetails

The paginationDetails query parameter returns pagination details in the header of your response. The default value is OFF. To include pagination details set the value to ON. Pagination details includes the total number of records, the limit value, and the offset value.

limit

The limit query parameter determines the number of records that will be retrieved. The default value is 50. The maximum value is 1,000.

offset

The offset query parameter determines how many records will be skipped before being included in the returned results. The default value is 0.

In the example, we can see that there are 35 total records. By setting offset to 10 and limit to 10, we are returning the second set of 10 records, essentially "Page 2" of our paginated response.

Pagination best practices

Once you have used the pagination query parameters to retrieve all the available records in the database for your specific query, you no longer need to make any additional API requests.

To determine whether you need to make any additional API requests you may compare the value of the limit parameter to the number of records retrieved in the body of your request.

If the number of records is less than the value of the limit parameter then no additional API requests are necessary.

If the number of records is equal to the limit value then you may make additional API requests.

If you receive an empty array [] in the body of your request, this means there are no records for that request and you do not need to make any additional API requests.

Sorting and filtering with search endpoints

All the search endpoints in API v2 end in :search. Search endpoints accept a filterCriteria array of objects and a sortingCriteria object in their request body.

When making broad searches that will return a lot of records, using pagination with appropriate values can ensure that your result set will not shift as new records matching your search criteria are created, which may otherwise lead to duplicates across pages.

sortingCriteria

The sortingCriteria object has two properties, field and order.

field property

We recommend you enter either an incremental ID or a timestamp as the value for the field property.

order property

The order property accepts two values, ascending (ASC) or descending (DESC). The default value is DESC, however, if using pagination or a search where new records are being actively created, for example transactions or journal entries created up to and including the current day, we strongly recommend you set the value to ASC. This will cause new records to be added to the end of your result set.

filterCriteria

If you are making a broad search that will return a lot of results, we recommend constraining your search query using a time interval. This may be done by setting the field property to a date property such as creationDate or valueDate. Setting the operator property to BETWEEN. And entering two dates as the values for the value and secondValue properties. This will ensure that no newly created records will interfere with a set of results. Please see the related note about searches using the BETWEEN operator in the considerations for specific field types section below for more information about this operator.

Details Level

Code samples

# You can also use wget
curl -X GET https://TENANT_NAME.mambu.com/api/{Insert resource URI here}?detailsLevel=FULL \
  -H 'Accept: application/vnd.mambu.v2+json'

GET https://TENANT_NAME.mambu.com/api/Insert-Resource-URI-here?detailsLevel=FULL HTTP/1.1
Host: TENANT_NAME.mambu.com

Accept: application/vnd.mambu.v2+json
var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: 'https://TENANT_NAME.mambu.com/api/{Insert resource URI here}?detailsLevel=FULL',
  method: '{HTTP Verb}',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.{HTTP Verb} 'https://TENANT_NAME.mambu.com/api/{Insert resource URI here}?detailsLevel=FULL',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.{HTTP Verb}('https://TENANT_NAME.mambu.com/api/{Insert resource URI here}?detailsLevel=FULL', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://TENANT_NAME.mambu.com/api/{Insert resource URI here}?detailsLevel=FULL");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestProperty(ā€œAcceptā€, ā€œapplication/vnd.mambu.v2+jsonā€);
con.setRequestMethod("{HTTP Verb}");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("{HTTP Verb}", "https://TENANT_NAME.mambu.com/api/{Insert resource URI here}?detailsLevel=FULL", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

Mambu API v2 supports two details levels for responses:

To view a higher level of detail, include detailsLevel as a query parameter in your request and give it the value FULL.

Audit Trail and the User-Agent Header

Error when User Agent header is not provided

{
  "errors": [
    {
      "errorCode": 4,
      "errorSource": "The user agent cannot be null when the Audit Trail feature is enabled",
      "errorReason": "INVALID_PARAMETERS"
    }
  ]
}

Audit trail tracks all activities performed in the Mambu Core Banking system via the UI or API v1 and v2. For more information, see Audit Trail in our User Guide.

When the audit trail feature is enabled, you must provide a User-Agent header for all requests to any endpoint, or the request will fail with the error message The user agent cannot be null when the Audit Trail feature is enabled.

Note that if you are using a REST client like Postman or Curl, this header is probably provided automatically. However, if you generate a request to the API, you must provide it yourself.

The User-Agent header provides information regarding the browser and operating system (such as the browser version), and information about the library or tool issuing the request (such as the client Java version). It is generally used to assist with debugging problems.

Fair Use Policy

Mambu applies reasonable usage limits on shared environments to ensure fair access for all users and prevent any individual user from monopolising the environment’s resources to the detriment of other users. By defining clear boundaries, such as maximum API call thresholds, Mambu mitigates the risk of the shared environment’s performance being negatively impacted by one user’s activities. These transparent guidelines allow users to use the platform fully while preserving system integrity and reliability for the entire user community.

Fair use

Mambu enforces fair usage policies to ensure that you receive consistent, high-quality service. Accordingly, the following activities are prohibited, including any attempt to do any of the following:

A material detrimental impact may include but is not limited to:

API throttling

Mambu is committed to providing reliable, high-quality services to our users. To maintain optimal performance in shared environments, Mambu reserves the right to implement API throttling measures when necessary to prevent service degradation for other users of the shared environment and to ensure fair usage, system stability, and optimal performance for all users.

Standard API rate limits

To maintain system integrity and performance, the following standard rate limits will be enforced for each of the following APIs:

Environment : Ireland2

Loans

API Requests per second limit
POST /api/loans/transactions:search 25
PATCH /api/loans/[a-zA-Z0-9]+$ 10

Ledger

API Requests per second limit
POST /api/gljournalentries:search 35
POST /api/gljournalentries 35
POST /api/accounting/interestaccrual:search 25
GET /api/glaccounts/[a-zA-Z0-9]+$ 35
GET /api/glaccounts 15

Deposits

API Requests per second limit
POST /api/deposits/[a-zA-Z0-9]+/deposit-transactions 35
POST /api/deposits/transactions:search 35
POST /api/deposits:search 25

Throttling mechanism

When a user reaches the defined RPS limit for a specific API endpoint:

These limits are permanent and set at the values defined above.

In cases where a user’s activity impacts the platform’s stability or the experience of other users, and where specific API limits have not yet been defined in this document, Mambu reserves the right to implement temporary throttling measures until the impact is mitigated.

Monitoring and compliance

Mambu reserves the right to monitor API usage to ensure compliance with this policy. Users may be required to provide additional information or documentation upon request.

Notifications

Contact information

For questions or concerns regarding this policy, please contact Mambu's support team at support@mambu.com.

API Response & Error Codes

For a full list of error code descriptions, refer to this page: API Response and Error Codes.

API Consumers

API consumers are an abstraction similar to an OAuth client. The primary purpose of an API consumer is to generate API keys, which are used to authenticate API requests by including them in an apiKey header.

Mambu currently supports two methods for authenticating API requests:

API consumers replace user accounts as the source of access credentials.

API keys inherit the scope of access settings from the API consumer that creates them. For more information, see API consumer access settings and permissions.

It is up to you to determine the right policy governing who has access to API consumers, how and when API keys are generated and expire, when to rotate keys, and so forth. Depending on how you configure your system, multiple users may be able to create and access one or many API consumers with different degrees of access, and each API consumer may generate multiple keys.

Once we have enabled API consumers for your account, you will no longer be able to add the API permission when creating a new user. However, you may edit any existing user to add the permission in Administration > Access > Users. Existing users with API access permissions may continue to use basic authentication.

Managing API consumers

API consumers are managed in two ways:

User permissions for managing API consumers

The following permissions are required for a user to be able to perform the relevant management actions on API consumers either via the UI or API:

If these permissions are not assigned to a user, that user will not be able to see the API Consumers tab under Administration > Access.

Once we have enabled API consumers for you, an API Consumers tab will appear under Administration > Access.

You may generate and manage API consumers and keys in Administration > Access > API consumers.

You may configure relevant settings in Administration > Access > Preferences.

Creating API consumers

To create an API consumer in the Mambu UI:

  1. On the main menu, go to Administration > Access > API Consumers.
  2. Select Add consumer.
  3. Enter all the necessary information in the Create Api Consumer dialog. For more information about access settings and permissions fields, see API consumer access settings and permissions.
  4. Select Save Api Consumer.

API consumer access settings and permissions

When you create an API consumer, you must assign the relevant access settings. The API keys that the API consumer creates, will then inherit the access settings scope.

The access settings determine which capabilities an API key may access and which actions it may authorize. They may be assigned either by assigning permissions directly to the API consumer, by assigning a role, or assigning a user type. For more information, see Understanding Users, Roles, and Permissions.

The table shows some of the available capabilities Mambu offers and which permissions an API consumer must have to access them.

Capability Permissions Links for more information
Audit Trail Manage Audit Trail (MANAGE_AUDIT_TRAIL) Audit Trail
Streaming API Manage Events Streaming (MANAGE_EVENTS_STREAMING) Streaming API
Payments API Manage Payments (MANAGE_PAYMENTS) Getting Started - Payments

Deleting API consumers

If you delete an API consumer, any API keys and secret keys the consumer created will be deleted and immediately invalidated as well.

You cannot delete an API consumer after any of its keys has been used. The API consumer will have an activity logged, and it must be maintained for audit trail purposes.

To delete an API consumer:

  1. On the main menu, go to Administration > Access > API Consumers.
  2. Find the API consumer in the list that you would like to delete and select Actions > Delete.
  3. In the Delete dialog, select Delete.

API keys

The primary purpose of an API consumer is to generate API keys, which are used to authenticate API requests by including them in an apiKey header. API keys inherit the access settings scope from the API consumer that was used to create them.

Generating API keys

When you generate an API key, it will be presented in clear text only once. After this, you may view the API key ID and a six character clear text prefix of the API key.

Since you are not able to retrieve an API key in clear text after generation, you must store your API key in a secure location upon generation.

Also, the six character API key prefix is not guaranteed to be unique. Therefore, you must base any identification process on the API key ID.

Manage Keys option displayed in API consumer list{height="" width=""}

To generate an API key:

  1. On the main menu, go to Administration > Access > API Consumers.
  2. Find the API consumer in the list that you would like to make an API key for, select Actions > Manage keys.
  3. In the Manage Keys dialog, select Generate.
  4. In the Generate New API Key dialog, you can optionally choose whether you want to enter an expiration time to live (TTL) in seconds.
  5. Select Generate to finish generating the key.
  6. Store your API key in a secure location.

Deleting API keys

When you delete an API key from the Mambu UI, it is immediately invalidated. Note that the grace period for key rotation does not apply when keys are deleted.

To delete an API key:

  1. On the main menu, go to Administration > Access > API Consumers.
  2. Find the API consumer in the list that you would like to make an API key for, select Actions > Manage keys.
  3. Find the API key you want to delete in the list and select Delete.
  4. In the dialog, select Delete.

API key rotation

API key rotation allows you to invalidate specific API keys using a secret key for authentication. When a key is rotated, you will immediately receive a replacement API key and a new secret key in the response body.

You may specify the expiration TTL for the replacement key in the rotation request. If you do not provide an expiration value, and no automatic expiration time is specified in the UI, then the replacement key will never expire. We generally recommend always setting an expiration value for better security.

Note that if an automatic expiration time is configured in Automatic Expiry of API consumer key in the Mambu UI, that value will overwrite any expiration value you provide with your API call. For more information, see Automatic API key expiration for rotated keys.

For more information about the API key rotation endpoint, see the API Key Rotation section of our API Reference.

Secret keys

Secret keys are generated by API consumers, and are used to authenticate API key rotation requests. They cannot be used to validate any other request.

Unless a grace period is configured for key rotation, secret keys expire in 5 minutes, as this is our minimum TTL used in caching for performance purposes. Secret keys otherwise never expire.

You may only have one active secret key per consumer at any one time. The key may not be invalidated, but it may be regenerated through the Mambu UI, which will invalidate any existing key.

To generate a secret key in the Mambu UI:

  1. On the main menu, go to Administration > Access > API Consumers.
  2. Find the API consumer in the list that has the API key that you want to rotate and select Actions > Manage keys.
  3. Select Generate Secret Key.
  4. In the Generate Secret Key dialog, select Generate.
  5. Copy the secret key and select Close.

Key rotation grace period

You may configure a grace period for key rotation in the Mambu UI. After a key is rotated, it will still be valid for the length of time specified by the grace period. The grace period applies to both API keys and secret keys.

To set the key rotation grace period:

  1. On the main menu, go to Administration > Access > Preferences.
  2. Under API Key Rotation Grace Period, enter the amount of seconds you want the grace period to last.
  3. Select Save Changes.

Automatic API key expiration for rotated keys

You may configure an expiration value for all API keys generated during key rotation by setting an Automatic Expiry of API Consumer Keys value in the Mambu UI. This value will not affect keys created in the UI, or created using the createApiKeyByConsumer endpoint.

If you set this value, it will override any specified value for key expiration when new keys are generated by key rotation through the API.

If no value is provided in the Automatic Expiry of API Consumer Keys field of the Mambu UI, then rotated API keys will never expire by default.

To set the Automatic Expiry of API Consumer Keys value for keys generated by key rotation:

  1. On the main menu, go to Administration > Access > Preferences.
  2. Select the Automatic Expiry of API Consumer Keys checkbox.
  3. Enter the TTL for the key in seconds.
  4. Select Save Changes.

Key lifecycle

The table summarizes our key lifecycle policy.

Key Where created Default expiration Can override? Default grace period Can override?
API Key API never yes 1800 s yes
API Key UI never yes 1800 s yes
Secret Key API 5 minutes after use no 1800 s yes
Secret Key UI 5 minutes after use no 1800 s yes
API Key rotation never yes 1800 s yes
Secret Key rotation 5 mintes after use no 1800 s yes

Blocking IP Adresses

Mambu automatically blocks any IP address that issues a total of 10 requests from an API consumer using invalid credentials. This applies even if the IP has been whitelisted. The addresses will be blocked regardless of how much time elapses between calls.

For more information on IP blocking and instructions on how to clear an address from being blocked, see the IP Access Restrictions section of our Access Preferences article.

OpenAPI Specification

This API Reference documentation is automatically generated from OpenAPI Specification (OAS) files.

We allow you to:

You can use the JSON-formatted OAS files to scaffold client SDKs in various languages. See Generating SDKs from OAS below.

API discovery

Request samples

Code samples

# You can also use wget
curl -X GET https://TENANT_NAME.mambu.com/api/swagger/resources \
  -H 'apikey: APIKEY'

GET https://TENANT_NAME.mambu.com/api/swagger/resources HTTP/1.1
Host: TENANT_NAME.mambu.com

apikey: APIKEY
var headers = {
  'apikey':'APIKEY'

};

$.ajax({
  url: 'https://TENANT_NAME.mambu.com/api/swagger/resources',
  method: 'GET',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'apikey' => 'APIKEY'
}

result = RestClient.get 'https://TENANT_NAME.mambu.com/api/swagger/resources',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'apikey': 'APIKEY'
}

r = requests.get('https://TENANT_NAME.mambu.com/api/swagger/resources', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://TENANT_NAME.mambu.com/api/swagger/resources");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestProperty("apikey", "APIKEY");
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "apikey": []string{"APIKEY"},

    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://TENANT_NAME.mambu.com/api/swagger/resources", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

Example response

{
    "items": [
        {
            "jsonPath": "json/clients_v2_swagger.json",
            "label": "Clients",
            "hashValue": "Clients",
            "index": 0
        },
        {
            "jsonPath": "json/clients_documents_v2_swagger.json",
            "label": "Client Documents",
            "hashValue": "Client_Documents",
            "index": 1
        },
        {
            "jsonPath": "json/branches_v2_swagger.json",
            "label": "Branches",
            "hashValue": "Branches",
            "index": 2
        },
        {
            "jsonPath": "json/centres_v2_swagger.json",
            "label": "Centres",
            "hashValue": "Centres",
            "index": 3
        },
        ...
        {
            "jsonPath": "json/configuration_iddocumenttemplates.yaml_v2_swagger.json",
            "label": "Identification Document Templates Configuration",
            "hashValue": "Identification_Document_Templates_Configuration",
            "index": 64
        },
        {
            "jsonPath": "json/configuration_loanrisklevels.yaml_v2_swagger.json",
            "label": "Loan Risk Levels Configuration",
            "hashValue": "Loan_Risk_Levels_Configuration",
            "index": 65
        },
        {
            "jsonPath": "json/currencies_v2_swagger.json",
            "label": "Currencies",
            "hashValue": "Currencies",
            "index": 66
        }
    ]
}

To retrieve either the basic OAS file or the enriched OAS file with custom field values for a specific API, you must first build the path for the resource.

To build the path for a resource you must retrieve the jsonPath value. This value is provided when you retrieve the list of all available APIs.

To retrieve the list of all available APIs you may use the https://TENANT_NAME.mambu.com/api/swagger/resources endpoint.

The response returns an array of objects. Each object represents an API and includes its jsonPath value.

Next, to retrieve the OAS file for a specific API. See Retrieving OAS Files below.

Retrieving OAS Files

Code Samples

# You can also use wget
curl -X GET https://TENANT_NAME.mambu.com/api/swagger/completejson/{OAS-file} \
  -H 'apikey: APIKEY'

GET https://TENANT_NAME.mambu.com/api/swagger/completejson/{OAS-file} HTTP/1.1
Host: TENANT_NAME.mambu.com

apikey: APIKEY
var headers = {
  'apikey':'APIKEY'

};

$.ajax({
  url: 'https://TENANT_NAME.mambu.com/api/swagger/completejson/{OAS-file}',
  method: 'GET',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'apikey' => 'APIKEY'
}

result = RestClient.get 'https://TENANT_NAME.mambu.com/api/swagger/completejson/{OAS-file}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'apikey': 'APIKEY'
}

r = requests.get('https://TENANT_NAME.mambu.com/api/swagger/completejson/{OAS-file}', params={

}, headers = headers)

print r.json()

URL obj = new URL("https://TENANT_NAME.mambu.com/api/swagger/completejson/{OAS-file}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestProperty("apikey", "APIKEY");
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "apikey": []string{"APIKEY"}
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://TENANT_NAME.mambu.com/api/swagger/completejson/{OAS-file}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

Example response

{
    "swagger": "2.0",
    "info": {
        "version": "v2",
        "title": "clients"
    },
    "host": "localhost:8889",
    "basePath": "/api",
    "tags": [
        {
            "name": "Clients",
            "description": "Allows you to retrieve, create, update, or delete clients. Clients may have associated information such as their address, identification documents, or custom field values."
        }
    ],
    "schemes": [
        "http",
        "https"
    ],
    "paths": {
    ...
    },
    "securityDefinitions": {
        "basic": {
            "description": "",
            "type": "basic"
        }
    },
    "definitions": {
    ...
    }
}

Once you have followed the steps to retrieve the jsonPath value for a specific API, you can build the path to a specific resource.

To retrieve the specification file for a given API, join the base URL with the value of the relevant jsonPath.

Basic OAS file

The basic OAS file will not include any custom field values and you do not need to authenticate to access this endpoint.

The endpoint to retrieve the basic OAS file is:

https://TENANT_NAME.mambu.com/api/swagger/{jsonPath}

For example, to retrieve the basic OAS file for the Clients API you would use:

https://TENANT_NAME.mambu.com/api/swagger/json/clients_v2_swagger.json

Enriched OAS file

The enriched OAS file will include any custom field values you have set up for your organisation at the time of generation. This endpoint requires authentication using either HTTP Basic Auth or an API key provided in an apikey header.

The endpoint to retrieve the enriched OAS file with custom field values is:

https://TENANT_NAME.mambu.com/api/swagger/complete{jsonPath}

For example, to retrieve the enriched OAS file for the Clients API you would use:

https://TENANT_NAME.mambu.com/api/swagger/completejson/clients_v2_swagger.json

Both endpoints are available for both your production and sandbox environments. Replace TENANT_NAME with TENANT_NAME.sandbox to access API specifications for the sandbox environment, which is usually one version ahead of production. This gives you time to investigate new features and functionality before using it in production.

Generating SDKs from OAS

Once you have your OAS file you are free to use any number of tools to generate a client SDK in your preferred language, for example, the freely available and online Swagger Editor. By either importing the file or copying the specification into the editor window you will be able to see both navigable documentation and the option located at the top of the window to Generate Client.

Generating a client SDK in your preferred language on Swagger Editor

Remember to edit the host field in your OAS file to reflect your Mambu domain before generating your SDK. For more information on your Mambu domain, see Base URLs.

Searching for Records

A basic search query for loans from a particular product type, sort by approval date
POST /loans:search

{
  "filterCriteria": [
    {
      "field": "loanName",
      "operator": "EQUALS_CASE_SENSITIVE",
      "value": "Agriculture Loan"
    }
  ],
  "sortingCriteria": {
    "field": "approvedDate",
    "order": "DESC"
  }
}

A search for current accounts which are active and overdrawn from two different branches using compound filters, sort by overdraft balance
POST /deposits:search

{
  "filterCriteria": [
    {
        "field": "accountState",
        "operator": "EQUALS_CASE_SENSITIVE",
        "value": "ACTIVE"
    },
    {
      "field": "accountType",
      "operator": "EQUALS_CASE_SENSITIVE",
      "value": "CURRENT_ACCOUNT"
    },
    {
        "field": "balances.overdraftAmount",
        "operator": "MORE_THAN",
        "value": 0
    },
    {
        "field": "assignedBranchKey",
        "operator": "in",
        "values": [
            "8a193c26722b51b701722d779e7122de",
            "8a193c26722b51b701722d779e7122df"
        ]

    }
  ],
  "sortingCriteria": {
    "field": "balances.overdraftAmount",
    "order": "DESC"
  }
}

Search functionality is provided for a number of entities through dedicated endpoints that can be identified by the :search suffix, for example to search for deposit accounts you can use the /deposits:search endpoint. Search endpoints accept a POST request that can include an object containing a filterCriteria array of objects and a sortingCriteria object in the request body.

The filterCriteria array of objects allows you to narrow your search using multiple fields to filter by. Every entity that supports search has a schema that provides the enumerated values available for the filter properties, for example, the schema for a deposit account search is DepositAccountFilterCriteria.

The sortingCriteria object allows you to specify according to which field and in what way you would like to sort the returned results. Every entity that supports search provides a schema with all the available fields you can sort by. For example, the schema for sorting the results of a deposit account search is DepositAccountSortingCriteria.

Apart from native fields that are enumerated in the relevant schemas that you can use in your filter criteria, you can also filter by custom fields. For more information, see Searching by custom fields.

API v2 also provides a couple of additional features that allow you to further customize and manage your search queries.

The pagination query parameters allow you to break up your search into smaller chunks, for more information, see Pagination and Optimising Searches.

Additionally you can perform cursor-based pagination which can significantly improve performance with large data sets. For more information, see cursor-based search pagination.

The detailsLevel query parameter allows you to specify the level of detail to include in the results. For more information, see Details Level and Optimising Searches.

Cursor-based search pagination

Cursor-based search pagination offers significantly better performance, particularly in large data sets, than offset-based search. This method uses a defined cursor, which represents the current position in the data set, and a limit to retrieve results. To start cursor pagination, the cursor: ā€œ_ā€ query parameter needs to used in combination with limit. This is equivalent to starting the search from the first item in the data set.

After each API call using a cursor query parameter, a new header is returned in the response: Items-Next-Cursor. This value is the cursor to be used in the next cursor-based search API call. When Items-Next-Cursor is empty (an empty string), the search is over: there are no items left in the data set.

Cursor-based searching is supported for the following data types:

Endpoint Query example Cursor field(s)
journal entries /gljournalentries:search?limit=100&cursor=_ entryId
deposit accounts /deposits:search?limit=1&cursor=_ lastModifiedDate and encodedKey
deposit transactions /deposits/transactions:search?limit=1&cursor=_ transactionId
loan accounts /loans:search?limit=1&cursor=_ lastModifiedDate and encodedKey
loan transactions /loans/transactions:search?limit=3&cursor=_ transactionId

The journal entries, deposit transactions, and loan transactions data types use an indexed auto-incrementing ID field as their cursor. While the cursor is indexed, performance issues could arise if the search query contains additional filters that use non-indexed columns. Deposit accounts and loan accounts use a compound field to define the cursor, and do not allow for further query filters.

When using cursor-based searching, some features of the search APIs are not supported:

For more information on pagination in Mambu APIs, see pagination.

Cursor-based search pagination with application/vnd.mambu.v2+octetstream Accept header

Some APIs can handle conditions where the application/vnd.mambu.v2+octetstream Accept header is sent together with the cursor=_ parameter . This sends back an octet stream of all the data until the end of the cursor to a single file. The connection will only be closed if the client terminates it or all the data is retrieved from the database.

Searching by custom fields

Search for entries where the given custom field definition has the value FALSE

{
  "filterCriteria": [
    {
      "field": "_marketing_opt_in.investor_newsletter",
      "operator": "EQUALS_CASE_SENSITIVE",
      "value": "FALSE"
    }
  ]
}

Search for entries where the given custom field definition has one of the given values, sort by ID

{
  "filterCriteria": [
    {
      "field": "_group_details.industry",
      "operator": "IN",
      "values": [
        "agriculture",
        "arboriculture"
      ]
    }
  ],
  "sortingCriteria": {
    "field": "id",
    "order": "ASC"
  }
}

You can build your filter and search queries using the native fields enumerated in the relevant schemas, for more information, see Searching for Records. However, you can also use custom field definitions and their values in your filter and search queries for any entities that support custom field definitions. For more information, see Custom Fields in our User Guide.

To filter or sort using a custom field definition you must provide the custom field set ID and the custom field definition ID using dot nation, for example _custom_field_set_ID.custom_field_ID. You can see an example of the syntax to the right. The custom field set can belong to the same entity or to a parent entity.

Filter Operators

Equals

{
    "field": "overdraftSettings.allowOverdraft",
    "operator": "EQUALS",
    "value": true
}

Equals (case sensitive)

{
    "field": "name",
    "operator": "EQUALS_CASE_SENSITIVE",
    "value": "Daily Savings"
}

More than

{
    "field": "balances.totalBalance",
    "operator": "MORE_THAN",
    "value": 500000.50
}

Less than

{
    "field": "accruedAmounts.interestAccrued",
    "operator": "LESS_THAN",
    "value": 10000.10
}

Between

{
    "field": "balances.feesDue",
    "operator": "BETWEEN",
    "value": 100,
    "secondValue" : 500
}

On

{
    "field": "approvedDate",
    "operator": "ON",
    "value": "2021-06-15"
}

After

{
    "field": "lastModifiedDate",
    "operator": "AFTER",
    "value": "2022-04-20"
}

Before

{
    "field": "creationDate",
    "operator": "BEFORE",
    "value": "2021-12-25"
}

Before inclusive

{
    "field": "creationDate",
    "operator": "BEFORE_INCLUSIVE",
    "value": "2020-06-15"
}

Starts with

{
    "field": "id",
    "operator": "STARTS_WITH",
    "value":"eban"
}

Starts with (case sensitive)

{
    "field": "id",
    "operator": "STARTS_WITH",
    "value":"EBAN"
}

In

{
    "field": "accountType",
    "operator": "IN",
    "values":[
        "REGULAR_SAVINGS",
        "CURRENT_ACCOUNT"
    ]
}

Today

{
    "field": "approvedDate",
    "operator": "TODAY"
}

This week

{
    "field": "disbursementDetails.expectedDisbursementDate",
    "operator": "THIS_WEEK"
}

This month

{
    "field": "lastPaymentDate",
    "operator": "THIS_MONTH"
}

This year

{
    "field": "expectedMaturityDate",
    "operator": "THIS_YEAR"
}

Last x days

{
    "field": "firstRepaymentDate",
    "operator": "LAST_DAYS",
    "value": 12
}

Empty

{
    "field": "overdraftRiskLevelKey",
    "operator": "EMPTY"
}

Not empty

{
    "field": "lastSetToArrearsDate",
    "operator": "NOT_EMPTY"
}

The table below contains available operators as well as the types of field they are compatible with and the number of values they support.

Operator Affected values Available for
EQUALS ONE_VALUE BIG_DECIMAL, BOOLEAN, LONG, MONEY, NUMBER, PERCENT, STRING, ENUM, KEY
EQUALS_CASE_SENSITIVE ONE_VALUE STRING, BOOLEAN, DATE, NUMBER, ENUM, KEY
MORE_THAN ONE_VALUE BIG_DECIMAL, NUMBER, MONEY
LESS_THAN ONE_VALUE BIG_DECIMAL, NUMBER, MONEY
BETWEEN TWO_VALUES BIG_DECIMAL, NUMBER, MONEY, DATE, DATE_TIME
ON ONE_VALUE DATE, DATE_TIME
AFTER ONE_VALUE DATE, DATE_TIME
BEFORE ONE_VALUE DATE, DATE_TIME
BEFORE_INCLUSIVE ONE_VALUE DATE, DATE_TIME
STARTS_WITH ONE_VALUE STRING
STARTS_WITH_CASE_SENSITIVE ONE_VALUE STRING
IN LIST ENUM,KEY
TODAY NO_VALUE DATE, DATE_TIME
THIS_WEEK NO_VALUE DATE, DATE_TIME
THIS_MONTH NO_VALUE DATE, DATE_TIME
THIS_YEAR NO_VALUE DATE, DATE_TIME
LAST_DAYS ONE_VALUE NUMBER
EMPTY NO_VALUE BIG_DECIMAL, LONG, MONEY, NUMBER, PERCENT, STRING, ENUM, KEY, DATE, DATE_TIME
NOT_EMPTY NO_VALUE BIG_DECIMAL, LONG, MONEY, NUMBER, PERCENT, STRING, ENUM, KEY, DATE, DATE_TIME

Considerations for specific field types

Optimising Searches

There are a few ways to make sure that your searches are optimised for performance. This becomes increasingly necessary the more records there are in the system.

Time Zone Offsets

Here is how we handle time zone offsets in API v2 calls:

Example JSON body showing an invalid date offset request

{
    "errors": [
        {
            "errorCode": 4,
            "errorSource": "Invalid date offset for value 2021-03-09T13:37:50 org offset is +02:00",
            "errorReason": "INVALID_PARAMETERS"
        }
    ]
}

Example

Each Mambu tenant has one time zone. Let’s take for example tenants in the East European time zone (UTC+02:00).

Date and time of request Error message or What is saved in the database
2021-03-09T13:37:50 ā€œInvalid date offset for value 2021-03-09T13:37:50 org offset is +02:00ā€
2021-03-09T13:37:50+03:00 ā€œInvalid date offset for value 2021-03-09T13:37:50 org offset is +02:00ā€
2021-03-09T13:37:50+02:00 2021-03-09 13:37:50

Using Custom Fields

Overview

Standard custom field set with custom field values

{
  ...
  "_customFieldSet": {
    "customFieldDefinitionId1": "value",
    "customFieldDefinitionId2": "value",
    "customFieldDefinitionId3": "value"
  }
  ...
}

Grouped custom field set with custom field values

{
  ...
  "_customFieldSet": [
          {
              "_index": "0",
              "customFieldDefinitionId1": "value",
              "customFieldDefinitionId2": "value",
              "customFieldDefinitionId3": "value"
          },
          {
              "_index": "1",
              "customFieldDefinitionId1": "value",
              "customFieldDefinitionId2": "value",
              "customFieldDefinitionId3": "value"
          }
      ]
  ...
}

Custom fields are fields you may create for several entities that allow you to capture additional relevant information and they are grouped together in custom field sets.

A custom field consists of the custom field definition and the custom field value. The custom field definition is the custom field you create using either the Mambu UI or API which contains information such as its name, ID, type, and usage settings. The custom field value is the actual value that a custom field attached to an entity holds. For more information about custom fields, how to create them, and which entities support them, see Custom Fields in our User Guide.

In API v2, if a JSON object includes a custom field value, then at the end of the JSON object, there will be a custom field set property which will contain the custom field definition ID and the custom field value.

There are two kinds of custom field sets, standard and grouped.

A standard custom field set can contain multiple single custom field definitions. Each custom field definition may contain only one value. In a JSON object, it is represented by a custom field set property that contains an object with the associated custom field values.

A grouped custom field set contains groups of custom field definitions. You may have multiple groups of custom field definitions within the custom field set. In a JSON object, it is represented by a custom field set property that contains an array of objects with the associated custom field values and the index of each object in the array.

The type of custom field set dictates how custom field definitions and their values must be handled in PATCH operations.

To the right you can see an example of a single custom field set and a grouped custom field set.

You can identify any custom field set because the ID starts with an underscore _. To retrieve the custom field values of any object, you must set the detailsLevel query parameter to FULL when making a request. For more information, see Details Level.

You may make PATCH requests to add, replace, or remove a custom field value that you have appropriate access to. We will provide more details on how to perform PATCH requests below. For more information on how access to custom field values is managed, see Custom Fields - Configuring rights for roles.

Example JSON body of a loan showing a standard custom field set with custom field values nested below

{
  "id": "ABC001",
  "loanName": "Mortgage Loan",
  "loanState": "PARTIAL_APPLICATION",
  ...
  "_loanPerformanceScore": {    //custom field set
    "amountScore": "10",       //custom field values nested under the set
    "timeScore": "5"
  }
}

Example JSON body of a client showing a grouped custom field set with custom field values nested below

{
  "encodedKey": "8a19aad43801888d017801f0dd841c1d",
  "id": "190955358",
  "state": "ACTIVE",
  "creationDate": "2021-03-05T11:31:05+01:00",
  "lastModifiedDate": "2022-08-08T12:42:35+02:00",
  "activationDate": "2021-11-18T10:19:13+01:00",
  "approvedDate": "2021-03-05T11:31:05+01:00",
  "firstName": "John ",
  "lastName": "Smith ",
  ...
  "_assets": [  //custom field set
          {     //custom field values in groups nested under the set
              "_index": "0",
              "asset_value": "965000",
              "asset_type": "land",
              "asset_age": "10"
          },
          {
              "_index": "1",
              "asset_value": "25,000",
              "asset_type": "car",
              "asset_age": "2"
          }
      ]
}

Example

To the right you can see an example of a standard custom field set with ID _loanPerformanceScore that includes two custom field definitions with IDs amountScore and timeScore and their values.

To the right you can see an example of a grouped custom field set with ID _assets and three custom field definitions with IDs asset_age, asset_type, and asset_value and their values.

Standard custom field sets

In the examples provided for standard custom fields sets, we assume we have a custom field set with ID _employer_information and it contains a total of two custom field definitions with IDs company and position.

Standard custom field set examples:

Affecting a single custom field value in a custom field set

Adding a value to a single custom field definition in a custom field set

[
  {
    "op": "ADD",
    "path": "/_employer_information/company",
    "value": "Google"
  }
]

To add, replace, or remove a value for a single custom field definition in a custom field set, pass the custom field set ID and the custom field definition ID to the path property. To add or replace a value, enter it directly to the value property. To remove a value, do not include the value property in the JSON object.

In the example to the right, we are adding a value for the company custom field definition.

Affecting all the custom field definitions in a custom field set

Replacing all the custom field values in a custom field set

[
  {
    "op": "REPLACE",
    "path": "/_employer_information",
    "value": {
        "company": "Amazon",
        "position": "senior frontend developer"
    }
  }
]

To add, replace, or remove all the custom field values in a custom field set, pass the custom field set ID to the path property. To add or replace values, provide an object with all the custom field values within the custom field set to the value property including the custom field value you are adding or replacing. To remove values, do not include the value property in the JSON object.

In the example to the right, we are replacing the values for both the company and position custom field definitions.

In the first example to the right, we are removing the value for the company custom field definition.

In the second example to the right, we are removing the values for all the custom field definitions in the _employer_information custom field set.

Removing one custom field value from the custom field set

[
  {
    "op": "REMOVE",
    "path": "/_employer_information/company"
  }
]

Removing all the custom field values from a custom field set

[
  {
    "op": "REMOVE",
    "path": "/_employer_information"
  }
]

Grouped custom field sets

Grouped custom field set examples

In the group custom field set examples, we assume we have a custom field set with ID _assets and it contains groups of three custom field definitions with IDs asset_type, asset_value, and asset_age. These are used to capture the client assets that are used as guarantees for loans.

Affecting one custom field value in a custom field group

Adding one custom field value in a custom field group

[
  {
    "op": "ADD",
    "path": "/_assets/2/asset_age",
    "value": "5"
  }
]

Adding two custom field groups to a custom field set

[
  {
    "op": "ADD",
    "path": "/_assets",
    "value": [
      {
        "asset_type": "Land",
        "asset_age": "10",
        "asset_value": "965000"
      },
      {
        "asset_type": "Car",
        "asset_age": "2",
        "asset_value": "25000"
      }
    ]
  }
]

To add, replace, or remove a single custom field value within a custom field group, the path property must specify the custom field set ID, the index of the group in the array, and the specific custom field definition.

In the example to the right, we are adding a value for the asset_age property for the custom field group with index 2 in the array.

Adding entire custom field groups to a custom field set

To add an entire new custom field group or multiple new groups, the path property must specify just the custom field set ID. The new group will always be added to the end of the array. You cannot specify a specific index in the array to add it to.

In the example to the right, we are adding two new custom field groups to the custom field set.






Replacing or removing one custom field group in a custom field set

Replacing one custom field group in a custom field set

[
  {
    "op": "REPLACE",
    "path": "/_assets/2",
    "value": {
        "asset_type": "House",
        "asset_age": "3",
        "asset_value": "100000"
    }
  }
]

To replace or remove an entire custom field group, the path property must specify the custom field set ID and the index of the group in the array.

In the example to the right, we are replacing the entire custom field group that is at index 2 in the array.

Replacing or removing all custom field groups in a custom field set

Removing all the custom field groups in a custom field set

[
  {
    "op": "REMOVE",
    "path": "/_assets"
  }
]

To replace or remove all the custom field groups for a custom field set, the path property only needs the custom field set ID.

In the example to the right we are removing the custom field group at index 2 in the array.

API Consumers

API consumers are used to generate API keys and secret keys for your Mambu account. They are an abstraction similar to an OAuth client.

API keys are used to authenticate API requests. They inherit the scope of access settings from the API consumer that creates them. The API consumer access settings determine which capabilities an API key may access and which actions it may authorize. For more information on how to manage or assign these permissions, see API consumer access settings and permissions in our User Guide.

Secret keys are used to authenticate API key rotation requests, which allow you to invalidate existing API keys and replace them with new ones.

For more information about API consumers and API keys, see API Consumers in our User Guide.

rotateKey (API Consumers)

Code samples

# You can also use wget
curl -X POST /apikey/rotation \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'secretkey: string'

POST /apikey/rotation HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
secretkey: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'secretkey':'string'

};

$.ajax({
  url: '/apikey/rotation',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'secretkey' => 'string'
}

result = RestClient.post '/apikey/rotation',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'secretkey': 'string'
}

r = requests.post('/apikey/rotation', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'secretkey' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/apikey/rotation', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/apikey/rotation");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "secretkey": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/apikey/rotation", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /apikey/rotation

Rotate API key

API key rotation allows you to invalidate an existing API key and replace it with a new one. To rotate an API key, you must use a secret key for authentication. The request will fail if you include an API key or basic authentication header. If you have set a value for the Automatic Expiry of API Consumer Key in Mambu UI then the value specified in the Mambu UI will override any value you include in the body of your request to the expirationTime field. For more information, see API key rotation in our User Guide.

Keys that have been invalidated by rotation remain valid for a default grace period of thirty minutes. This value can be configured using the API Key Rotation Grace Period field in the Mambu UI. For more information, see Key rotation grace period in our User Guide.

Body parameter

{
  "apiKey": "string",
  "expirationTime": 100000000,
  "id": "string"
}

Parameters

Name Type Description In
secretkey (required) string Secret key used to authenticate to this endpoint in order to perform a rotate key operation. header
body ApiKey Represents the action of rotating an existing API key, by providing the API key to be rotated and the time to live (TTL) of the newly created API key. If a TTL is set in preferences, it will have priority over the one provided in the API. If no TTL is set in preferences and none is provided in the API, the generated key will have unlimited TTL by default. body

Example responses

200 Response

{
  "apiKey": "string",
  "id": "string",
  "secretKey": "string"
}

Responses

Status Meaning Description Schema
200 OK API key rotated successfully. ApiKeyRotationResult
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

getById (API Consumers)

Code samples

# You can also use wget
curl -X GET /consumers/{apiConsumerId} \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /consumers/{apiConsumerId} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/consumers/{apiConsumerId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/consumers/{apiConsumerId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/consumers/{apiConsumerId}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/consumers/{apiConsumerId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/consumers/{apiConsumerId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/consumers/{apiConsumerId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /consumers/{apiConsumerId}

Get API consumer

Parameters

Name Type Description In
apiConsumerId (required) string The ID or encoded key of the API consumer. path

Example responses

200 Response

{
  "access": {
    "administratorAccess": true,
    "apiAccess": true,
    "canManageAllBranches": true,
    "canManageEntitiesAssignedToOtherOfficers": true,
    "creditOfficerAccess": true,
    "managedBranches": [
      {
        "branchKey": "string"
      }
    ],
    "permissions": [
      "AUDIT_TRANSACTIONS"
    ]
  },
  "assignedBranchKey": "string",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "encodedKey": "string",
  "id": "string",
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "name": "string",
  "role": {
    "encodedKey": "string",
    "id": "string"
  },
  "transactionLimits": {
    "property1": 0,
    "property2": 0
  }
}

Responses

Status Meaning Description Schema
200 OK API consumer returned. ApiConsumer
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found API consumer not found. ErrorResponse

update (API Consumers)

Code samples

# You can also use wget
curl -X PUT /consumers/{apiConsumerId} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

PUT /consumers/{apiConsumerId} HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/consumers/{apiConsumerId}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.put '/consumers/{apiConsumerId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.put('/consumers/{apiConsumerId}', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PUT','/consumers/{apiConsumerId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/consumers/{apiConsumerId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/consumers/{apiConsumerId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /consumers/{apiConsumerId}

Update API consumer

Body parameter

{
  "access": {
    "administratorAccess": true,
    "canManageAllBranches": true,
    "canManageEntitiesAssignedToOtherOfficers": true,
    "creditOfficerAccess": true,
    "managedBranches": [
      {}
    ],
    "permissions": [
      "AUDIT_TRANSACTIONS"
    ]
  },
  "assignedBranchKey": "string",
  "name": "string",
  "role": {
    "id": "string"
  },
  "transactionLimits": {
    "property1": 0,
    "property2": 0
  }
}

Parameters

Name Type Description In
apiConsumerId (required) string The ID or encoded key of the API consumer to be updated. path
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
body (required) ApiConsumer API consumer to be updated. body

Example responses

200 Response

{
  "access": {
    "administratorAccess": true,
    "apiAccess": true,
    "canManageAllBranches": true,
    "canManageEntitiesAssignedToOtherOfficers": true,
    "creditOfficerAccess": true,
    "managedBranches": [
      {
        "branchKey": "string"
      }
    ],
    "permissions": [
      "AUDIT_TRANSACTIONS"
    ]
  },
  "assignedBranchKey": "string",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "encodedKey": "string",
  "id": "string",
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "name": "string",
  "role": {
    "encodedKey": "string",
    "id": "string"
  },
  "transactionLimits": {
    "property1": 0,
    "property2": 0
  }
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
200 OK API consumer updated. ApiConsumer
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found API consumer not found. ErrorResponse

delete (API Consumers)

Code samples

# You can also use wget
curl -X DELETE /consumers/{apiConsumerId} \
  -H 'Accept: application/vnd.mambu.v2+json'

DELETE /consumers/{apiConsumerId} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/consumers/{apiConsumerId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.delete '/consumers/{apiConsumerId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.delete('/consumers/{apiConsumerId}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('DELETE','/consumers/{apiConsumerId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/consumers/{apiConsumerId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/consumers/{apiConsumerId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /consumers/{apiConsumerId}

Delete API consumer

Parameters

Name Type Description In
apiConsumerId (required) string The ID or encoded key of the API consumer to be deleted. path

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
204 No Content API consumer deleted. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found API consumer not found. ErrorResponse

patch (API Consumers)

Code samples

# You can also use wget
curl -X PATCH /consumers/{apiConsumerId} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

PATCH /consumers/{apiConsumerId} HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/consumers/{apiConsumerId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.patch '/consumers/{apiConsumerId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.patch('/consumers/{apiConsumerId}', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PATCH','/consumers/{apiConsumerId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/consumers/{apiConsumerId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PATCH");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/consumers/{apiConsumerId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PATCH /consumers/{apiConsumerId}

Partially update API consumer

Body parameter

[
  {
    "from": "string",
    "op": "ADD",
    "path": "string",
    "value": {}
  }
]

Parameters

Name Type Description In
apiConsumerId (required) string The ID or encoded key of the API consumer to be updated. path
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
body (required) PatchOperation Patch operations to be applied to a resource. body

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
204 No Content API consumer updated. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found API consumer not found. ErrorResponse

deleteApiKeyForConsumer (API Consumers)

Code samples

# You can also use wget
curl -X DELETE /consumers/{apiConsumerId}/apikeys/{apiKeyId} \
  -H 'Accept: application/vnd.mambu.v2+json'

DELETE /consumers/{apiConsumerId}/apikeys/{apiKeyId} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/consumers/{apiConsumerId}/apikeys/{apiKeyId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.delete '/consumers/{apiConsumerId}/apikeys/{apiKeyId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.delete('/consumers/{apiConsumerId}/apikeys/{apiKeyId}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('DELETE','/consumers/{apiConsumerId}/apikeys/{apiKeyId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/consumers/{apiConsumerId}/apikeys/{apiKeyId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/consumers/{apiConsumerId}/apikeys/{apiKeyId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /consumers/{apiConsumerId}/apikeys/{apiKeyId}

Delete API key

Parameters

Name Type Description In
apiConsumerId (required) string The ID or encoded key of the API consumer. path
apiKeyId (required) string The ID of the API key. path

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
204 No Content API key deleted. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found API consumer or key not found. ErrorResponse

createApiKeyForConsumer (API Consumers)

Code samples

# You can also use wget
curl -X POST /consumers/{apiConsumerId}/apikeys \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /consumers/{apiConsumerId}/apikeys HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/consumers/{apiConsumerId}/apikeys',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/consumers/{apiConsumerId}/apikeys',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/consumers/{apiConsumerId}/apikeys', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/consumers/{apiConsumerId}/apikeys', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/consumers/{apiConsumerId}/apikeys");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/consumers/{apiConsumerId}/apikeys", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /consumers/{apiConsumerId}/apikeys

Create API key

The Automatic Expiry of API Consumer Keys value in the Mambu UI does not affect the expiration time of an API key created by this endpoint. For more information, see Automatic API key expiration for rotated keys in our User Guide. If you do not specify an expiration time in your request then the API key does not expire, unless rotated or deleted.

Body parameter

{
  "expirationTime": 100000000
}

Parameters

Name Type Description In
apiConsumerId (required) string The ID or encoded key of the API consumer. path
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
body ApiKeyInput API key expiration time in seconds. body

Example responses

201 Response

{
  "apiKey": "string",
  "expirationTime": 100000000,
  "id": "string"
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
201 Created API key created. ApiKey
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found API consumer not found. ErrorResponse

getAll (API Consumers)

Code samples

# You can also use wget
curl -X GET /consumers \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /consumers HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/consumers',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/consumers',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/consumers', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/consumers', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/consumers");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/consumers", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /consumers

Get all API consumers

Parameters

Name Type Description In
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF

Example responses

200 Response

[
  {
    "access": {
      "administratorAccess": true,
      "apiAccess": true,
      "canManageAllBranches": true,
      "canManageEntitiesAssignedToOtherOfficers": true,
      "creditOfficerAccess": true,
      "managedBranches": [
        {
          "branchKey": "string"
        }
      ],
      "permissions": [
        "AUDIT_TRANSACTIONS"
      ]
    },
    "assignedBranchKey": "string",
    "creationDate": "2016-09-06T13:37:50+03:00",
    "encodedKey": "string",
    "id": "string",
    "lastModifiedDate": "2016-09-06T13:37:50+03:00",
    "name": "string",
    "role": {
      "encodedKey": "string",
      "id": "string"
    },
    "transactionLimits": {
      "property1": 0,
      "property2": 0
    }
  }
]

Responses

Status Meaning Description Schema
200 OK API consumers list returned. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [ApiConsumer] [Represents an API consumer.] none
Ā» access ApiConsumerAccess Represents the API consumer permissions and access rights. none
»» administratorAccess boolean TRUE if the API consumer has the administrator user type, FALSE otherwise. Administrators (admins) have all permissions and can perform any action in Mambu. none
»» apiAccess boolean TRUE if the API consumer can authenticate and interact with Mambu APIs, FALSE otherwise. The API consumer may still require additional permissions for specific API requests. read-only
»» canManageAllBranches boolean TRUE if the API consumer permissions apply to all branches, FALSE if they only apply to specific branches. none
»» canManageEntitiesAssignedToOtherOfficers boolean TRUE if the API consumer (that has the credit officer access) can access entities (for example, clients or accounts) assigned to other credit officers, FALSE otherwise. none
»» creditOfficerAccess boolean TRUE if the API consumer has the credit officer user type, FALSE otherwise. Credit officers have the option of having clients and groups assigned to them. none
»» managedBranches [UserManagedBranch] The list of branches that can be managed by the API consumer. If the API consumer has the canManageAllBranches property set to TRUE, this list does not apply. none
»»» branchKey string The encoded key of the branch, it is automatically generated. read-only
»» permissions [string] Permissions for the API consumer. The non-admin API consumers and users are authorized to do actions based a set of permissions in order to access Mambu features. Permissions may be relevant for the API and/or the Mambu UI. none
Ā» assignedBranchKey string The encoded key of the branch this API consumer is assigned to. none
Ā» creationDate string(date-time) The date when the API consumer was created in UTC. read-only
Ā» encodedKey string The encoded key of the entity, generated, globally unique read-only
Ā» id string The ID of the API consumer. read-only
Ā» lastModifiedDate string(date-time) The last time the API consumer was modified in UTC. read-only
Ā» name (required) string The API consumer name. none
Ā» role RoleIdentifier Represents the role identifier. none
»» encodedKey string The encoded key of the entity, generated automatically, globally unique. read-only
»» id string The ID of the role, which can be generated and customized, but must be unique. none
Ā» transactionLimits object The API consumer transaction limits. none
»» additionalProperties number none none

Response Headers

Status Header Type Format Description
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

create (API Consumers)

Code samples

# You can also use wget
curl -X POST /consumers \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /consumers HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/consumers',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/consumers',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/consumers', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/consumers', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/consumers");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/consumers", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /consumers

Create API consumer

Body parameter

{
  "access": {
    "administratorAccess": true,
    "canManageAllBranches": true,
    "canManageEntitiesAssignedToOtherOfficers": true,
    "creditOfficerAccess": true,
    "managedBranches": [
      {}
    ],
    "permissions": [
      "AUDIT_TRANSACTIONS"
    ]
  },
  "assignedBranchKey": "string",
  "name": "string",
  "role": {
    "id": "string"
  },
  "transactionLimits": {
    "property1": 0,
    "property2": 0
  }
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
body (required) ApiConsumer API consumer to be created. body

Example responses

201 Response

{
  "access": {
    "administratorAccess": true,
    "apiAccess": true,
    "canManageAllBranches": true,
    "canManageEntitiesAssignedToOtherOfficers": true,
    "creditOfficerAccess": true,
    "managedBranches": [
      {
        "branchKey": "string"
      }
    ],
    "permissions": [
      "AUDIT_TRANSACTIONS"
    ]
  },
  "assignedBranchKey": "string",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "encodedKey": "string",
  "id": "string",
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "name": "string",
  "role": {
    "encodedKey": "string",
    "id": "string"
  },
  "transactionLimits": {
    "property1": 0,
    "property2": 0
  }
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
201 Created API consumer created. ApiConsumer
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

getKeysByConsumerId (API Consumers)

Code samples

# You can also use wget
curl -X GET /consumers/{apiConsumerId}/keys \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /consumers/{apiConsumerId}/keys HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/consumers/{apiConsumerId}/keys',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/consumers/{apiConsumerId}/keys',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/consumers/{apiConsumerId}/keys', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/consumers/{apiConsumerId}/keys', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/consumers/{apiConsumerId}/keys");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/consumers/{apiConsumerId}/keys", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /consumers/{apiConsumerId}/keys

Get API keys

Parameters

Name Type Description In
apiConsumerId (required) string The ID or encoded key of the API consumer. path

Example responses

200 Response

[
  {
    "apiKey": "string",
    "expirationTime": 100000000,
    "id": "string"
  }
]

Responses

Status Meaning Description Schema
200 OK API keys returned. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found API consumer not found. ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [ApiKey] [Represents an API key of an API consumer.] none
Ā» apiKey string A six character cleartext prefix of the API key. The prefix is not guaranteed to be unique. You must base any identification process on the API key ID, not the prefix. none
Ā» expirationTime integer(int32) The time to live (TTL) for the API key in seconds. none
Ā» id string The API key ID. You must base any identification process on the the API key ID as it is guaranteed to be unique. none

createSecretKeyForConsumer (API Consumers)

Code samples

# You can also use wget
curl -X POST /consumers/{apiConsumerId}/secretkeys \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /consumers/{apiConsumerId}/secretkeys HTTP/1.1

Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/consumers/{apiConsumerId}/secretkeys',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/consumers/{apiConsumerId}/secretkeys',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/consumers/{apiConsumerId}/secretkeys', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/consumers/{apiConsumerId}/secretkeys', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/consumers/{apiConsumerId}/secretkeys");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/consumers/{apiConsumerId}/secretkeys", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /consumers/{apiConsumerId}/secretkeys

Create secret key

Secret keys are used to authenticate API key rotation requests. They cannot be used to authenticate any request other than a key rotation request. Secret keys expire immediately upon use, unless a grace period is configured for key rotation in the Mambu UI, in which case they remain valid for that length of time after being used. Secret keys otherwise never expire. For more information, see API key rotation in our User Guide.

Parameters

Name Type Description In
apiConsumerId (required) string The ID or encoded key of the API consumer. path
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header

Example responses

201 Response

{
  "secretKey": "string"
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
201 Created Secret key created. SecretKey
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found API consumer not found. ErrorResponse

Accounting Interest Accrual

Allows search of interest accrual breakdown entries by various criteria.

searchInterestAccrual (Accounting Interest Accrual)

Code samples

# You can also use wget
curl -X POST /accounting/interestaccrual:search \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json'

POST /accounting/interestaccrual:search HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/accounting/interestaccrual:search',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.post '/accounting/interestaccrual:search',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.post('/accounting/interestaccrual:search', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/accounting/interestaccrual:search', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/accounting/interestaccrual:search");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/accounting/interestaccrual:search", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /accounting/interestaccrual:search

Allows search of interest accrual breakdown entries by various criteria.

For more information on performing searches, please read the Searching for Records section above.

Body parameter

{
  "filterCriteria": [
    {
      "field": "entryId",
      "operator": "EQUALS",
      "secondValue": "string",
      "value": "string",
      "values": [
        "string"
      ]
    }
  ],
  "sortingCriteria": {
    "field": "entryId",
    "order": "ASC"
  }
}

Parameters

Name Type Description In
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query
detailsLevel string The level of details to return: FULL means the full details of the object will be returned (custom field values, address, contact info, or any other related objects) and BASIC will return only the first level elements of the object. query
body InterestAccrualSearchCriteria Represents the filtering criteria and a sorting criteria to search interest accrual breakdown. body

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

[
  {
    "accountId": "string",
    "accountKey": "string",
    "amount": 0,
    "bookingDate": "string",
    "branchKey": "string",
    "branchName": "string",
    "creationDate": "string",
    "entryId": 0,
    "entryType": "string",
    "foreignAmount": {
      "accountingRate": {
        "encodedKey": "string",
        "endDate": "2016-09-06T13:37:50+03:00",
        "fromCurrencyCode": "string",
        "rate": 0,
        "startDate": "2016-09-06T13:37:50+03:00",
        "toCurrencyCode": "string"
      },
      "amount": 0,
      "currency": {
        "code": "AED",
        "currencyCode": "string"
      }
    },
    "glAccountId": "string",
    "glAccountKey": "string",
    "glAccountName": "string",
    "glAccountType": "string",
    "parentEntryId": 0,
    "productId": "string",
    "productKey": "string",
    "productType": "string",
    "transactionId": "string"
  }
]

Responses

Status Meaning Description Schema
200 OK Interest accrual breakdown returned. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [InterestAccrualBreakdown] [Represents an interest accrual breakdown entry.] none
Ā» accountId string The loan or deposit account ID for which interest is accrued. none
Ā» accountKey string The encoded key of the loan or deposit account for which interest is accrued. none
Ā» amount number The interest accrued amount for the account in this entry. none
Ā» bookingDate string The booking date in the organization's timezone. none
Ā» branchKey string The encoded key of the account's branch. none
Ā» branchName string The name of the account's branch none
Ā» creationDate string The creation date and time of the entry in UTC. none
Ā» entryId integer(int64) The generated ID of the interest accrual per account entry. none
Ā» entryType string Debit or Credit. none
Ā» foreignAmount ForeignAmount Represents the details of general ledger journal entries posted in foreign currency. none
»» accountingRate AccountingRate Represents the conversion rate used in accounting to convert amounts from one currency to organisation currency none
»»» encodedKey string The encoded key of the accounting rate, auto generated, unique read-only
»»» endDate string(date-time) Rate validity end date (as Organization Time) none
»»» fromCurrencyCode string Organisation currency code none
»»» rate number Value of rate to be used for accounting conversions none
»»» startDate string(date-time) Rate validity start date (as Organization Time) none
»»» toCurrencyCode string Foreign currency code none
»» amount number The foreign currency amount of the accounting entry. none
»» currency Currency Represents a currency. To represent a fiat currency, the code value and the currencyCode value must be the ISO-4217 currency code of the fiat currency. To represent a non-fiat currency, the code value must be NON_FIAT and the currencyCode value must be the currency code of the non-fiat currency. none
»»» code string Fiat(ISO-4217) currency code or NON_FIAT for non fiat currencies. none
»»» currencyCode string Currency code for NON_FIAT currency. none
Ā» glAccountId string The ID of the general ledger account. none
Ā» glAccountKey string The encoded key of the general ledger account used for logging the interest accrual. none
Ā» glAccountName string The name of the general ledger account. none
Ā» glAccountType string The general ledger account type, which can be: ASSET, LIABILITY, EQUITY, INCOME, or EXPENSE. none
Ā» parentEntryId integer(int64) The ID of the general ledger journal entry that logged the interest accrual sum for all accounts of the same product. none
Ā» productId string The ID of the account's product. none
Ā» productKey string The encoded key of the account's product. none
Ā» productType string The product type. none
Ā» transactionId string The journal entry transaction ID. none

Enumerated Values

Property Value
code AED
code AFN
code ALL
code AMD
code ANG
code AOA
code ARS
code AUD
code AWG
code AZN
code BAM
code BBD
code BDT
code BGN
code BHD
code BIF
code BMD
code BND
code BOB
code BOV
code BRL
code BSD
code BTN
code BWP
code BYR
code BYN
code BZD
code CAD
code CDF
code CHE
code CHF
code CHW
code CLF
code CLP
code CNY
code COP
code COU
code CRC
code CUC
code CUP
code CVE
code CZK
code DJF
code DKK
code DOP
code DZD
code EGP
code ERN
code ETB
code EUR
code FJD
code FKP
code GBP
code GEL
code GHS
code GIP
code GMD
code GNF
code GTQ
code GYD
code HKD
code HNL
code HRK
code HTG
code HUF
code IDR
code ILS
code INR
code IQD
code IRR
code ISK
code JMD
code JOD
code JPY
code KES
code KGS
code KHR
code KMF
code KPW
code KRW
code KWD
code KYD
code KZT
code LAK
code LBP
code LKR
code LRD
code LSL
code LTL
code LVL
code LYD
code MAD
code MDL
code MGA
code MKD
code MMK
code MNT
code MOP
code MRO
code MRU
code MUR
code MVR
code MWK
code MXN
code MXV
code MYR
code MZN
code NAD
code NGN
code NIO
code NOK
code NPR
code NZD
code OMR
code PAB
code PEN
code PGK
code PHP
code PKR
code PLN
code PYG
code QAR
code RON
code RSD
code RUB
code RWF
code SAR
code SBD
code SCR
code SDG
code SEK
code SGD
code SHP
code SLL
code SOS
code SRD
code STD
code STN
code SVC
code SYP
code SZL
code THB
code TJS
code TMT
code TND
code TOP
code TRY
code TTD
code TWD
code TZS
code UAH
code UGX
code USD
code USN
code UYI
code UYU
code UYW
code UZS
code VED
code VEF
code VES
code VND
code VUV
code WST
code XAG
code XAU
code XAF
code XBA
code XBB
code XBC
code XBD
code XCD
code XDR
code XOF
code XPD
code XPF
code XPT
code XSU
code XTS
code XUA
code XXX
code YER
code ZAR
code ZIG
code ZMK
code ZWL
code ZMW
code SSP
code NON_FIAT

Accounting Rates

Create Accounting Rates.

getAll (Accounting Rates)

Code samples

# You can also use wget
curl -X GET /currencies/{currencyCode}/accountingRates \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /currencies/{currencyCode}/accountingRates HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/currencies/{currencyCode}/accountingRates',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/currencies/{currencyCode}/accountingRates',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/currencies/{currencyCode}/accountingRates', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/currencies/{currencyCode}/accountingRates', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/currencies/{currencyCode}/accountingRates");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/currencies/{currencyCode}/accountingRates", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /currencies/{currencyCode}/accountingRates

Get accounting rates

Parameters

Name Type Description In
currencyCode (required) string The currency code. path
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query
from string(date-time) The date and time of the Accounting Rates to search from query
to string(date-time) The date and time of the Accounting Rates to search to query

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF

Example responses

200 Response

[
  {
    "encodedKey": "string",
    "endDate": "2016-09-06T13:37:50+03:00",
    "fromCurrencyCode": "string",
    "rate": 0,
    "startDate": "2016-09-06T13:37:50+03:00",
    "toCurrencyCode": "string"
  }
]

Responses

Status Meaning Description Schema
200 OK Accounting rates list returned. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Currency not found. ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [AccountingRate] [Represents the conversion rate used in accounting to convert amounts from one currency to organisation currency] none
Ā» encodedKey string The encoded key of the accounting rate, auto generated, unique read-only
Ā» endDate string(date-time) Rate validity end date (as Organization Time) none
Ā» fromCurrencyCode string Organisation currency code none
Ā» rate number Value of rate to be used for accounting conversions none
Ā» startDate string(date-time) Rate validity start date (as Organization Time) none
Ā» toCurrencyCode string Foreign currency code none

Response Headers

Status Header Type Format Description
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

create (Accounting Rates)

Code samples

# You can also use wget
curl -X POST /currencies/{currencyCode}/accountingRates \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /currencies/{currencyCode}/accountingRates HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/currencies/{currencyCode}/accountingRates',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/currencies/{currencyCode}/accountingRates',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/currencies/{currencyCode}/accountingRates', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/currencies/{currencyCode}/accountingRates', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/currencies/{currencyCode}/accountingRates");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/currencies/{currencyCode}/accountingRates", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /currencies/{currencyCode}/accountingRates

Create accounting rates

Body parameter

{
  "rate": 0,
  "startDate": "2016-09-06T13:37:50+03:00"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
currencyCode (required) string The currency code. path
body (required) PostAccountingRateDTO Represents the information to create an accounting rate. body

Example responses

201 Response

{
  "encodedKey": "string",
  "endDate": "2016-09-06T13:37:50+03:00",
  "fromCurrencyCode": "string",
  "rate": 0,
  "startDate": "2016-09-06T13:37:50+03:00",
  "toCurrencyCode": "string"
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
201 Created The accounting rate has been created. AccountingRate
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Currency not found. ErrorResponse

Accounting Reports

Allows you to generate and retrieve accounting reports. More information on the types of reports available can be found in our accounting reports user guide article.

Once generated using the POST request, your reports will be accessible for 24 hours using the unique reportKey.

get (Accounting Reports)

Code samples

# You can also use wget
curl -X GET /accounting/reports/{reportKey} \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /accounting/reports/{reportKey} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/accounting/reports/{reportKey}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/accounting/reports/{reportKey}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/accounting/reports/{reportKey}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/accounting/reports/{reportKey}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/accounting/reports/{reportKey}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/accounting/reports/{reportKey}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /accounting/reports/{reportKey}

Get accounting reports

Parameters

Name Type Description In
reportKey (required) string The report's encoded key. path

Example responses

200 Response

{
  "items": [
    {
      "amounts": {
        "closingBalance": 0,
        "credits": 0,
        "debits": 0,
        "netChange": 0,
        "openingBalance": 0
      },
      "foreignAmounts": {
        "closingBalance": 0,
        "credits": 0,
        "debits": 0,
        "netChange": 0,
        "openingBalance": 0
      },
      "glAccount": {
        "activated": true,
        "allowManualJournalEntries": true,
        "balance": 0,
        "creationDate": "2016-09-06T13:37:50+03:00",
        "currency": {
          "code": "AED",
          "currencyCode": "string"
        },
        "description": "string",
        "encodedKey": "string",
        "glCode": "string",
        "lastModifiedDate": "2016-09-06T13:37:50+03:00",
        "migrationEventKey": "string",
        "name": "string",
        "stripTrailingZeros": true,
        "type": "ASSET",
        "usage": "DETAIL"
      }
    }
  ],
  "reportKey": "string",
  "status": "QUEUED"
}

Responses

Status Meaning Description Schema
200 OK The accounting report has been returned. AccountingReport
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Accounting report not found. ErrorResponse

create (Accounting Reports)

Code samples

# You can also use wget
curl -X POST /accounting/reports \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /accounting/reports HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/accounting/reports',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/accounting/reports',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/accounting/reports', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/accounting/reports', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/accounting/reports");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/accounting/reports", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /accounting/reports

Create accounting report

Body parameter

{
  "balanceTypes": [
    "OPENING_BALANCE"
  ],
  "branchId": "string",
  "currencyCode": "string",
  "endDate": "1987-04-26",
  "glTypes": [
    "ASSET"
  ],
  "startDate": "1987-04-26"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
body (required) AccountingReportGenerationInput Represents information for creating an accounting report. body

Example responses

202 Response

{
  "reportKey": "string",
  "status": "QUEUED"
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
202 Accepted Creation of the accounting report started. AccountingReportGenerationResponse
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Currency not found. ErrorResponse

Accounting Rules Configuration

Retrieve and update the configuration for accounting rules.

Accounting rules allows you to create general rules for your accounts such as setting automatic accounting closures that recur on a regular basis and defining rules for how to handle any transactions that affect GL balances in two different branches. For more information about this resource, see Accounting Rules Configuration in our User Guide.

Your user or API consumer must have the View Manage Configuration As Code (GET_MANAGE_CONFIGURATION_AS_CODE) and/or Update Manage Configuration As Code (PUT_MANAGE_CONFIGURATION_AS_CODE) permissions to make GET and/or PUT requests to these configuration as code (CasC) endpoints. For more information about CasC, seeĀ Configuration as Code Overview.

get (Accounting Rules Configuration)

Code samples

# You can also use wget
curl -X GET /configuration/accountingrules.yaml \
  -H 'Accept: application/vnd.mambu.v2+yaml'

GET /configuration/accountingrules.yaml HTTP/1.1

Accept: application/vnd.mambu.v2+yaml

var headers = {
  'Accept':'application/vnd.mambu.v2+yaml'

};

$.ajax({
  url: '/configuration/accountingrules.yaml',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+yaml'
}

result = RestClient.get '/configuration/accountingrules.yaml',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+yaml'
}

r = requests.get('/configuration/accountingrules.yaml', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+yaml',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/configuration/accountingrules.yaml', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/configuration/accountingrules.yaml");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+yaml"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/configuration/accountingrules.yaml", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /configuration/accountingrules.yaml

Retrieve current accounting rules configuration.

Example responses

An example of accounting rules

---
defaultGlCode: "defaultGlAccountCode"
automatedAccountingClosuresInterval: 7
customRules:
  - id: "ruleId1"
    leftBranchId: "branchId1"
    rightBranchId: "branchId2"
    glCode: "glCode1"
  - id: "ruleId2"
    leftBranchId: "branchId3"
    rightBranchId: "branchId1"
    glCode: "glCode2"

401 invalid credentials

{
    "errors": [
        {
            "errorCode": 2,
            "errorSource": "credentials",
            "errorReason": "INVALID_CREDENTIALS"
        }
    ]
}

403 forbidden

{
    "errors": [
        {
            "errorCode": 15,
            "errorSource": "not authorized",
            "errorReason": "INVALID_PERMISSIONS"
        }
    ]
}

Responses

Status Meaning Description Schema
200 OK Accounting rules configuration retrieved AccountingRulesConfiguration
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

update (Accounting Rules Configuration)

Code samples

# You can also use wget
curl -X PUT /configuration/accountingrules.yaml \
  -H 'Content-Type: application/yaml' \
  -H 'Accept: application/vnd.mambu.v2+yaml'

PUT /configuration/accountingrules.yaml HTTP/1.1

Content-Type: application/yaml
Accept: application/vnd.mambu.v2+yaml

var headers = {
  'Content-Type':'application/yaml',
  'Accept':'application/vnd.mambu.v2+yaml'

};

$.ajax({
  url: '/configuration/accountingrules.yaml',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/yaml',
  'Accept' => 'application/vnd.mambu.v2+yaml'
}

result = RestClient.put '/configuration/accountingrules.yaml',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/yaml',
  'Accept': 'application/vnd.mambu.v2+yaml'
}

r = requests.put('/configuration/accountingrules.yaml', params={

}, headers = headers)

print r.json()

 'application/yaml',
    'Accept' => 'application/vnd.mambu.v2+yaml',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PUT','/configuration/accountingrules.yaml', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/configuration/accountingrules.yaml");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/yaml"},
        "Accept": []string{"application/vnd.mambu.v2+yaml"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/configuration/accountingrules.yaml", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /configuration/accountingrules.yaml

Update the current accounting rules configuration

Body parameter

An example of accounting rules

---
defaultGlCode: "defaultGlAccountCode"
automatedAccountingClosuresInterval: 7
customRules:
  - id: "ruleId1"
    leftBranchId: "branchId1"
    rightBranchId: "branchId2"
    glCode: "glCode1"
  - id: "ruleId2"
    leftBranchId: "branchId3"
    rightBranchId: "branchId1"
    glCode: "glCode2"

Parameters

Name Type Description In
body AccountingRulesConfiguration Represents the accounting rules configuration. body

Example responses

200 - Success Response

---
warnings: []

400 Invalid Syntax

{
    "errors": [
        {
            "errorCode": 10000,
            "errorSource": "customRules: while scanning a simple key",
            "errorReason": "INVALID_YAML_SYNTAX"
        }
    ]
}

401 invalid credentials

{
    "errors": [
        {
            "errorCode": 2,
            "errorSource": "credentials",
            "errorReason": "INVALID_CREDENTIALS"
        }
    ]
}

403 forbidden

{
    "errors": [
        {
            "errorCode": 15,
            "errorSource": "not authorized",
            "errorReason": "INVALID_PERMISSIONS"
        }
    ]
}

404 not found

{
    "errors": [
        {
            "errorCode": 3,
            "errorSource": "server",
            "errorReason": "INVALID_API_OPERATION"
        }
    ]
}

Responses

Status Meaning Description Schema
200 OK Accounting rules configuration updated. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Accounting rules configuration not found. ErrorResponse

Response Schema

Authorization Holds Configuration

Retrieve and update the configuration for authorization holds.

An authorization hold is a standard practice with debit or a credit card transactions to hold a given balance as unavailable for the card holder until either the merchant settles the transaction, cancels the hold, or it expires. Using this endpoint you can configure the default authorization hold expiry for your organization as well as per merchant or merchant type using a Merchant Category Code (MCC). For more information about this resource, see Authorization Holds Configuration in our User Guide.

Your user or API consumer must have the View Manage Configuration As Code (GET_MANAGE_CONFIGURATION_AS_CODE) and/or Update Manage Configuration As Code (PUT_MANAGE_CONFIGURATION_AS_CODE) permissions to make GET and/or PUT requests to these configuration as code (CasC) endpoints. For more information about CasC, seeĀ Configuration as Code Overview.

get (Authorization Holds Configuration)

Code samples

# You can also use wget
curl -X GET /configuration/authorizationholds.yaml \
  -H 'Accept: application/vnd.mambu.v2+yaml'

GET /configuration/authorizationholds.yaml HTTP/1.1

Accept: application/vnd.mambu.v2+yaml

var headers = {
  'Accept':'application/vnd.mambu.v2+yaml'

};

$.ajax({
  url: '/configuration/authorizationholds.yaml',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+yaml'
}

result = RestClient.get '/configuration/authorizationholds.yaml',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+yaml'
}

r = requests.get('/configuration/authorizationholds.yaml', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+yaml',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/configuration/authorizationholds.yaml', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/configuration/authorizationholds.yaml");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+yaml"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/configuration/authorizationholds.yaml", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /configuration/authorizationholds.yaml

Get authorization holds configuration

Example responses

Authorization Hold Settings

---
defaultAuthorizationHold:
  daysToExpiration: 7
authorizationHolds:
- mcc: 123
  daysToExpiration: 14
  description: "bullseye brand - contractually agreed expiration"
- mcc: 456
  daysToExpiration: 1
  description: "widgets'r'us - short expiration"

401 invalid credentials

{
    "errors": [
        {
            "errorCode": 2,
            "errorSource": "credentials",
            "errorReason": "INVALID_CREDENTIALS"
        }
    ]
}

403 forbidden

{
    "errors": [
        {
            "errorCode": 15,
            "errorSource": "not authorized",
            "errorReason": "INVALID_PERMISSIONS"
        }
    ]
}

Responses

Status Meaning Description Schema
200 OK Authorization holds configuration has been returned. AuthorizationHoldsConfiguration
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

update (Authorization Holds Configuration)

Code samples

# You can also use wget
curl -X PUT /configuration/authorizationholds.yaml \
  -H 'Content-Type: application/yaml' \
  -H 'Accept: application/vnd.mambu.v2+yaml'

PUT /configuration/authorizationholds.yaml HTTP/1.1

Content-Type: application/yaml
Accept: application/vnd.mambu.v2+yaml

var headers = {
  'Content-Type':'application/yaml',
  'Accept':'application/vnd.mambu.v2+yaml'

};

$.ajax({
  url: '/configuration/authorizationholds.yaml',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/yaml',
  'Accept' => 'application/vnd.mambu.v2+yaml'
}

result = RestClient.put '/configuration/authorizationholds.yaml',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/yaml',
  'Accept': 'application/vnd.mambu.v2+yaml'
}

r = requests.put('/configuration/authorizationholds.yaml', params={

}, headers = headers)

print r.json()

 'application/yaml',
    'Accept' => 'application/vnd.mambu.v2+yaml',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PUT','/configuration/authorizationholds.yaml', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/configuration/authorizationholds.yaml");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/yaml"},
        "Accept": []string{"application/vnd.mambu.v2+yaml"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/configuration/authorizationholds.yaml", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /configuration/authorizationholds.yaml

Update authorization holds configuration

Body parameter

Authorization Hold Settings

---
defaultAuthorizationHold:
  daysToExpiration: 7
authorizationHolds:
- mcc: 123
  daysToExpiration: 14
  description: "bullseye brand - contractually agreed expiration"
- mcc: 456
  daysToExpiration: 1
  description: "widgets'r'us - short expiration"

Parameters

Name Type Description In
body AuthorizationHoldsConfiguration Represents the authorization holds body

Example responses

200 - Success Response

---
warnings: []

400 - Example failure response

{
    "errors": [
        {
            "errorCode": 9957,
            "errorSource": "Days to expire value must be a positive number",
            "errorReason": "INVALID_DAYS_TO_EXPIRE_FOR_AUTHORIZATION_HOLD"
        }
    ]
}

401 invalid credentials

{
    "errors": [
        {
            "errorCode": 2,
            "errorSource": "credentials",
            "errorReason": "INVALID_CREDENTIALS"
        }
    ]
}

403 forbidden

{
    "errors": [
        {
            "errorCode": 15,
            "errorSource": "not authorized",
            "errorReason": "INVALID_PERMISSIONS"
        }
    ]
}

404 not found

{
    "errors": [
        {
            "errorCode": 3,
            "errorSource": "server",
            "errorReason": "INVALID_API_OPERATION"
        }
    ]
}

Responses

Status Meaning Description Schema
200 OK Authorization holds configuration updated. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Authorization holds configuration was not found. ErrorResponse

Response Schema

Background Process

Allows you to check the status of manual and automatic EOD processes and, under certain conditions, to cancel them. The only supported background process types are CRON_JOBS for the EOD processes and MANUAL_CRON_JOBS_TRIGGER for manually triggering the EOD process. EOD processes may be cancelled if they are queued or if they have been running in the same state for longer than the average length of the last five runs of the same type. For more information, see Cancelling EOD processing in our User Guide.

Your user or API consumer must have Admin access rights or the Manage Eod Processing (MANAGE_EOD_PROCESSING) permission to use these endpoints.

update (Background Process)

Code samples

# You can also use wget
curl -X PUT /backgroundprocess/{encodedKey} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json'

PUT /backgroundprocess/{encodedKey} HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/backgroundprocess/{encodedKey}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.put '/backgroundprocess/{encodedKey}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.put('/backgroundprocess/{encodedKey}', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PUT','/backgroundprocess/{encodedKey}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/backgroundprocess/{encodedKey}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/backgroundprocess/{encodedKey}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /backgroundprocess/{encodedKey}

Allows you to cancel manual or automatic EOD processes using the encoded key.

Manual or automatic EOD processes may only be cancelled if their status is QUEUED or if the status is IN_PROGRESS and they have been running in the same state for longer than the average of the last five runs of the same type. The only supported string in the body of a request is "CANCEL". For more information, see Cancelling EOD processing in our User Guide.

Body parameter

"string"

Parameters

Name Type Description In
encodedKey (required) string The encoded key of the background process which should be changed. path
body (required) string Background process state to set. body

Example responses

200 Response

{
  "creationDate": "2016-09-06T13:37:50+03:00",
  "encodedKey": "string",
  "endDate": "2016-09-06T13:37:50+03:00",
  "startDate": "2016-09-06T13:37:50+03:00",
  "state": "CANCEL",
  "type": "CRON_JOBS"
}

Responses

Status Meaning Description Schema
200 OK Background process state has been changed. BackgroundProcess
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Background process not found. ErrorResponse
500 Internal Server Error Internal Error ErrorResponse

getLatestByType (Background Process)

Code samples

# You can also use wget
curl -X GET /backgroundprocess/latest \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /backgroundprocess/latest HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/backgroundprocess/latest',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/backgroundprocess/latest',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/backgroundprocess/latest', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/backgroundprocess/latest', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/backgroundprocess/latest");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/backgroundprocess/latest", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /backgroundprocess/latest

Allows you to retrieve the latest manual or automatic EOD process by specifying the type.

The only supported background process types are CRON_JOBS for automatic EOD processes and MANUAL_CRON_JOBS_TRIGGER for manual EOD processes.

Parameters

Name Type Description In
type string The type of background process according to which the latest process should be returned. query

Enumerated Values

Parameter Value
type CRON_JOBS
type MANUAL_CRON_JOBS_TRIGGER

Example responses

200 Response

{
  "creationDate": "2016-09-06T13:37:50+03:00",
  "encodedKey": "string",
  "endDate": "2016-09-06T13:37:50+03:00",
  "startDate": "2016-09-06T13:37:50+03:00",
  "state": "CANCEL",
  "type": "CRON_JOBS"
}

Responses

Status Meaning Description Schema
200 OK Latest background process returned. BackgroundProcess
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

Branches

Allows you to retrieve branches which are being used by an organization.

getById (Branches)

Code samples

# You can also use wget
curl -X GET /branches/{branchId} \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /branches/{branchId} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/branches/{branchId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/branches/{branchId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/branches/{branchId}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/branches/{branchId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/branches/{branchId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/branches/{branchId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /branches/{branchId}

Get branch

Parameters

Name Type Description In
branchId (required) string The ID or or encoded key of a branch. path
detailsLevel string The level of details to return: FULL means the full details of the object will be returned (custom field values, address, contact info, or any other related objects) and BASIC will return only the first level elements of the object. query

Enumerated Values

Parameter Value
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

{
  "addresses": [
    {
      "city": "string",
      "country": "string",
      "encodedKey": "string",
      "indexInList": 0,
      "latitude": 0,
      "line1": "string",
      "line2": "string",
      "longitude": 0,
      "parentKey": "string",
      "postcode": "string",
      "region": "string"
    }
  ],
  "branchHolidays": [
    {
      "creationDate": "2016-09-06T13:37:50+03:00",
      "date": "1987-04-26",
      "encodedKey": "string",
      "id": 0,
      "isAnnuallyRecurring": true,
      "name": "string"
    }
  ],
  "creationDate": "2016-09-06T13:37:50+03:00",
  "emailAddress": "string",
  "encodedKey": "string",
  "id": "string",
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "name": "string",
  "notes": "string",
  "phoneNumber": "string",
  "state": "ACTIVE"
}

Responses

Status Meaning Description Schema
200 OK Branch returned. Branch
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Branch not found. ErrorResponse

getAll (Branches)

Code samples

# You can also use wget
curl -X GET /branches \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /branches HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/branches',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/branches',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/branches', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/branches', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/branches");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/branches", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /branches

Get branches

Parameters

Name Type Description In
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query
detailsLevel string The level of details to return: FULL means the full details of the object will be returned (custom field values, address, contact info, or any other related objects) and BASIC will return only the first level elements of the object. query
sortBy string The criteria based on which the records will be sorted. Expected format is , for example, sortBy = field1:ASC,field2:DESC.
Only the following fields can be used: id,name, creationDate, lastModifiedDate
Default sorting is done by creationDate:DESC
query

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

[
  {
    "addresses": [
      {
        "city": "string",
        "country": "string",
        "encodedKey": "string",
        "indexInList": 0,
        "latitude": 0,
        "line1": "string",
        "line2": "string",
        "longitude": 0,
        "parentKey": "string",
        "postcode": "string",
        "region": "string"
      }
    ],
    "branchHolidays": [
      {
        "creationDate": "2016-09-06T13:37:50+03:00",
        "date": "1987-04-26",
        "encodedKey": "string",
        "id": 0,
        "isAnnuallyRecurring": true,
        "name": "string"
      }
    ],
    "creationDate": "2016-09-06T13:37:50+03:00",
    "emailAddress": "string",
    "encodedKey": "string",
    "id": "string",
    "lastModifiedDate": "2016-09-06T13:37:50+03:00",
    "name": "string",
    "notes": "string",
    "phoneNumber": "string",
    "state": "ACTIVE"
  }
]

Responses

Status Meaning Description Schema
200 OK Branches list returned. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [Branch] [Represents a branch.] none
Ā» addresses [Address] The list of branch addresses. none
»» city string The city for the address. none
»» country string The country. none
»» encodedKey string The address encoded key, which is unique and generated. read-only
»» indexInList integer(int32) The index of this address in the list of addresses. none
»» latitude number The GPS latitude of this address in signed degrees format (DDD.dddd) with 6 decimal positions, ranging from -90 to +90. none
»» line1 string The first line of the address. none
»» line2 string The second line of the address. none
»» longitude number The GPS longitude of this address in signed degrees format (DDD.dddd) with 6 decimal positions, ranging from -180 to +180. none
»» parentKey string The address parent key indicating the object owning this address. For example: client, centre, or branch. read-only
»» postcode string The post code. none
»» region string The region for the address. none
Ā» branchHolidays [Holiday] The list of branch holidays. none
»» creationDate string(date-time) The date when the holiday was created. read-only
»» date string(date) The date the holiday takes place. none
»» encodedKey string The encoded key of the entity, generated, globally unique read-only
»» id integer(int64) The ID of the holiday. none
»» isAnnuallyRecurring boolean TRUE if a holiday is annually recurring, FALSE otherwise. none
»» name string The name of the holiday. none
Ā» creationDate string(date-time) The creation date of the branch. none
Ā» emailAddress string The branch email address. none
Ā» encodedKey string The encoded key of the entity, generated, globally unique read-only
Ā» id (required) string The branch ID, which must be unique. none
Ā» lastModifiedDate string(date-time) The last date when the branch was modified. none
Ā» name (required) string The branch name. none
Ā» notes string The notes or description attached to this object. none
Ā» phoneNumber string The branch phone number. none
Ā» state string The branch state. none

Enumerated Values

Property Value
state ACTIVE
state INACTIVE

Response Headers

Status Header Type Format Description
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

create (Branches)

Code samples

# You can also use wget
curl -X POST /branches \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /branches HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/branches',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/branches',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/branches', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/branches', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/branches");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/branches", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /branches

Create branch

Body parameter

{
  "addresses": [
    {
      "city": "string",
      "country": "string",
      "indexInList": 0,
      "latitude": 0,
      "line1": "string",
      "line2": "string",
      "longitude": 0,
      "postcode": "string",
      "region": "string"
    }
  ],
  "branchHolidays": [
    {
      "date": "1987-04-26",
      "id": 0,
      "isAnnuallyRecurring": true,
      "name": "string"
    }
  ],
  "creationDate": "2016-09-06T13:37:50+03:00",
  "emailAddress": "string",
  "id": "string",
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "name": "string",
  "notes": "string",
  "phoneNumber": "string",
  "state": "ACTIVE"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
body (required) Branch Branch to be created. body

Example responses

201 Response

{
  "addresses": [
    {
      "city": "string",
      "country": "string",
      "encodedKey": "string",
      "indexInList": 0,
      "latitude": 0,
      "line1": "string",
      "line2": "string",
      "longitude": 0,
      "parentKey": "string",
      "postcode": "string",
      "region": "string"
    }
  ],
  "branchHolidays": [
    {
      "creationDate": "2016-09-06T13:37:50+03:00",
      "date": "1987-04-26",
      "encodedKey": "string",
      "id": 0,
      "isAnnuallyRecurring": true,
      "name": "string"
    }
  ],
  "creationDate": "2016-09-06T13:37:50+03:00",
  "emailAddress": "string",
  "encodedKey": "string",
  "id": "string",
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "name": "string",
  "notes": "string",
  "phoneNumber": "string",
  "state": "ACTIVE"
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
201 Created Branch has been created. Branch
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

Branches Configuration

Retrieve and update the configuration for branches.

A branch is the default label for an organization's subdivision. For more information about this resource, see Branches Configuration in our User Guide.

Your user or API consumer must have the View Manage Configuration As Code (GET_MANAGE_CONFIGURATION_AS_CODE) and/or Update Manage Configuration As Code (PUT_MANAGE_CONFIGURATION_AS_CODE) permissions to make GET and/or PUT requests to these configuration as code (CasC) endpoints. For more information about CasC, seeĀ Configuration as Code Overview.

get (Branches Configuration)

Code samples

# You can also use wget
curl -X GET /configuration/branches.yaml \
  -H 'Accept: application/vnd.mambu.v2+yaml'

GET /configuration/branches.yaml HTTP/1.1

Accept: application/vnd.mambu.v2+yaml

var headers = {
  'Accept':'application/vnd.mambu.v2+yaml'

};

$.ajax({
  url: '/configuration/branches.yaml',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+yaml'
}

result = RestClient.get '/configuration/branches.yaml',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+yaml'
}

r = requests.get('/configuration/branches.yaml', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+yaml',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/configuration/branches.yaml', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/configuration/branches.yaml");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+yaml"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/configuration/branches.yaml", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /configuration/branches.yaml

Get branches configuration

Example responses

a single branch

---
- id: "demoBranchId"
  name: "Maputo Downtown"
  state: "ACTIVE"
  phoneNumber: "0049302345678"
  emailAddress: "petula.clark@downtown.com"
  notes: "Is located in the surroundings of the local market with a <i>lot of potential</i>\
    \ to reach new clients."
  holidays:
  - id: 12
    name: "only maputo holiday day"
    dayOfMonth: 30
    monthOfYear: 7
    year: 2020
    isAnnuallyRecurring: true
  customFieldValueSets:
  - id: "_branches_grouped_cf_set"
    groupedCustomFieldValues:
    - index: 0
      customFieldValues:
      - customFieldId: "cf_group_field_1"
        value: "group field 1"
      - customFieldId: "cf_group_field_2"
        value: "2"
    - index: 1
      customFieldValues:
      - customFieldId: "cf_group_field_2"
        value: "500"
  - id: "_example_branch_custom_field_set"
    standardCustomFieldValues:
    - customFieldId: "cf_branch"
      value: "TRUE"

401 invalid credentials

{
    "errors": [
        {
            "errorCode": 2,
            "errorSource": "credentials",
            "errorReason": "INVALID_CREDENTIALS"
        }
    ]
}

403 forbidden

{
    "errors": [
        {
            "errorCode": 15,
            "errorSource": "not authorized",
            "errorReason": "INVALID_PERMISSIONS"
        }
    ]
}

Responses

Status Meaning Description Schema
200 OK Branches configuration retrieved. BranchesConfiguration
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

update (Branches Configuration)

Code samples

# You can also use wget
curl -X PUT /configuration/branches.yaml \
  -H 'Content-Type: application/yaml' \
  -H 'Accept: application/vnd.mambu.v2+yaml'

PUT /configuration/branches.yaml HTTP/1.1

Content-Type: application/yaml
Accept: application/vnd.mambu.v2+yaml

var headers = {
  'Content-Type':'application/yaml',
  'Accept':'application/vnd.mambu.v2+yaml'

};

$.ajax({
  url: '/configuration/branches.yaml',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/yaml',
  'Accept' => 'application/vnd.mambu.v2+yaml'
}

result = RestClient.put '/configuration/branches.yaml',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/yaml',
  'Accept': 'application/vnd.mambu.v2+yaml'
}

r = requests.put('/configuration/branches.yaml', params={

}, headers = headers)

print r.json()

 'application/yaml',
    'Accept' => 'application/vnd.mambu.v2+yaml',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PUT','/configuration/branches.yaml', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/configuration/branches.yaml");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/yaml"},
        "Accept": []string{"application/vnd.mambu.v2+yaml"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/configuration/branches.yaml", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /configuration/branches.yaml

Update branch configuration

Body parameter

example array of branches

---
branches:
- id: "2"
  name: "Matola City"
  state: "ACTIVE"
  phoneNumber: "+7534987676"
  emailAddress: "matola@BofAlg.es"
  notes: "Is currently under construction to add an extra room that can be used for\
    \ the meetings.<p></p>Have <b>six new computers</b> for their staff."
  address:
    line1: "1 Bank Street"
    line2: "Old Town"
    city: "Matola City"
    region: "Matola"
    postcode: "10775"
    country: "Bankistan"
  holidays:
  - id: 13
    name: "joe matola only day"
    dayOfMonth: 26
    monthOfYear: 8
    year: 2020
    isAnnuallyRecurring: true
- id: "demoBranchId"
  name: "Maputo Downtown"
  state: "ACTIVE"
  phoneNumber: "0049302345678"
  emailAddress: "petula.clark@downtown.com"
  notes: "Is located in the surroundings of the local market with a <i>lot of potential</i>\
    \ to reach new clients."
  holidays:
  - id: 12
    name: "only maputo holiday day"
    dayOfMonth: 30
    monthOfYear: 7
    year: 2020
    isAnnuallyRecurring: true
  customFieldValueSets:
  - id: "_branches_grouped_cf_set"
    groupedCustomFieldValues:
    - index: 0
      customFieldValues:
      - customFieldId: "cf_group_field_1"
        value: "group field 1"
      - customFieldId: "cf_group_field_2"
        value: "2"
    - index: 1
      customFieldValues:
      - customFieldId: "cf_group_field_2"
        value: "500"
  - id: "_example_branch_custom_field_set"
    standardCustomFieldValues:
    - customFieldId: "cf_branch"
      value: "TRUE"

Parameters

Name Type Description In
body BranchesConfiguration Model representation of the branches configuration body

Example responses

200 success response

---
warnings: []

400 error response

{
    "errors": [
        {
            "errorCode": 0,
            "errorSource": "human-readable description of the error",
            "errorReason": "SOURCE_OF_ERROR"
        }
    ]
}

401 invalid credentials

{
    "errors": [
        {
            "errorCode": 2,
            "errorSource": "credentials",
            "errorReason": "INVALID_CREDENTIALS"
        }
    ]
}

403 forbidden

{
    "errors": [
        {
            "errorCode": 15,
            "errorSource": "not authorized",
            "errorReason": "INVALID_PERMISSIONS"
        }
    ]
}

404 not found

{
    "errors": [
        {
            "errorCode": 3,
            "errorSource": "server",
            "errorReason": "INVALID_API_OPERATION"
        }
    ]
}

Responses

Status Meaning Description Schema
200 OK Branches configuration updated. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Branches configuration not found. ErrorResponse

Response Schema

Bulk Operations

Allows you to query the results of bulk operations or background asynchronous processes. The scope of this API is to get the status of the entire operation and return a list of successful operations and a list of operations resulting in error. Since bulk operations work as independent tasks, it may be the case that some of the operations are successful while others fail. One example where this API can be used is to get the status of bulk deposit transactions - for more information, see /deposits/deposit-transactions:bulk.

getBulkStatus (Bulk Operations)

Code samples

# You can also use wget
curl -X GET /bulks/{bulkProcessKey} \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /bulks/{bulkProcessKey} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/bulks/{bulkProcessKey}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/bulks/{bulkProcessKey}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/bulks/{bulkProcessKey}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/bulks/{bulkProcessKey}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/bulks/{bulkProcessKey}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/bulks/{bulkProcessKey}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /bulks/{bulkProcessKey}

Allow retrieval the status of a bulk process via key

Parameters

Name Type Description In
bulkProcessKey (required) string The identifier of the bulk process path
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF

Example responses

200 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "string",
      "errorSource": "string",
      "externalId": "string",
      "indexInRequest": 0
    }
  ],
  "processedItems": [
    {
      "externalId": "string",
      "id": "string",
      "indexInRequest": 0
    }
  ],
  "status": "QUEUED"
}

Responses

Status Meaning Description Schema
200 OK Bulk process status retrieved BulkProcessStatus
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Bulk process key invalid ErrorResponse

Response Headers

Status Header Type Format Description
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

Cards

Supports industry standard authorization hold flows for card payments and allows you to request, adjust, reverse, and settle holds against Current Account and Revolving Credit type products. For more information, see Cards Introduction in our User Guide.

increaseAuthorizationHold (Cards)

Code samples

# You can also use wget
curl -X POST /cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}:increase \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}:increase HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}:increase',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}:increase',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}:increase', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}:increase', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}:increase");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}:increase", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}:increase

Increase authorization hold amount

Body parameter

{
  "advice": true,
  "amount": 0,
  "currencyCode": "string",
  "externalReferenceId": "string"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
cardReferenceToken (required) string The token used to externally identify the card. path
authorizationHoldExternalReferenceId (required) string The ID used to reference the authorization hold. path
body (required) AuthorizationHoldAmountAdjustmentRequest Represents the information to increase the amount of an authorization hold. body

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
204 No Content The authorization hold was successfully increased. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The card or the authorization hold was not found. ErrorResponse
409 Conflict Operation cannot be performed due to another pending operation that locked shared resources. ErrorResponse

getCardTransaction (Cards)

Code samples

# You can also use wget
curl -X GET /cards/{cardReferenceToken}/financialtransactions/{cardTransactionExternalReferenceId} \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /cards/{cardReferenceToken}/financialtransactions/{cardTransactionExternalReferenceId} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/cards/{cardReferenceToken}/financialtransactions/{cardTransactionExternalReferenceId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/cards/{cardReferenceToken}/financialtransactions/{cardTransactionExternalReferenceId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/cards/{cardReferenceToken}/financialtransactions/{cardTransactionExternalReferenceId}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/cards/{cardReferenceToken}/financialtransactions/{cardTransactionExternalReferenceId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/cards/{cardReferenceToken}/financialtransactions/{cardTransactionExternalReferenceId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/cards/{cardReferenceToken}/financialtransactions/{cardTransactionExternalReferenceId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /cards/{cardReferenceToken}/financialtransactions/{cardTransactionExternalReferenceId}

Get card transaction

Parameters

Name Type Description In
cardReferenceToken (required) string The token used to externally identify the card. path
cardTransactionExternalReferenceId (required) string The external reference of a card transaction used to identify the card transaction. path
detailsLevel string The level of details to return: FULL means the full details of the object will be returned (custom field values, address, contact info, or any other related objects) and BASIC will return only the first level elements of the object. query

Enumerated Values

Parameter Value
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

{
  "accountBalances": {
    "totalBalance": 0
  },
  "adjustmentTransactionKey": "string",
  "affectedAmounts": {
    "feesAmount": 0,
    "fractionAmount": 0,
    "fundsAmount": 0,
    "interestAmount": 0,
    "overdraftAmount": 0,
    "overdraftFeesAmount": 0,
    "overdraftInterestAmount": 0,
    "technicalOverdraftAmount": 0,
    "technicalOverdraftInterestAmount": 0
  },
  "amount": 0,
  "blockId": "string",
  "bookingDate": "2016-09-06T13:37:50+03:00",
  "branchKey": "string",
  "cardTransaction": {
    "advice": true,
    "amount": 0,
    "cardAcceptor": {
      "city": "string",
      "country": "string",
      "mcc": 0,
      "name": "string",
      "state": "string",
      "street": "string",
      "zip": "string"
    },
    "cardToken": "string",
    "currencyCode": "string",
    "encodedKey": "string",
    "externalAuthorizationReferenceId": "string",
    "externalReferenceId": "string",
    "userTransactionTime": "string"
  },
  "cardTransactionReversals": [
    {
      "_Transaction_Details_Transaction": {
        "ACCOUNT_NAME_TRANSACTION_CHANNEL": "string",
        "ACCOUNT_NUMBER_TRANSACTION_CHANN": "string",
        "BANK_NUMBER_TRANSACTION_CHANNEL_": "string",
        "CHECK_NUMBER_TRANSACTION_CHANNEL": "string",
        "IDENTIFIER_TRANSACTION_CHANNEL_I": "string",
        "RECEPIT_NUMBER_TRANSACTION_CHANN": "string",
        "ROUTING_NUMBER_TRANSACTION_CHANN": "string"
      },
      "amount": 0,
      "currencyCode": "string",
      "encodedKey": "string",
      "externalReferenceId": "string",
      "id": 0,
      "transactionChannelId": "string"
    }
  ],
  "centreKey": "string",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "currencyCode": "string",
  "encodedKey": "string",
  "externalId": "string",
  "fees": [
    {
      "amount": 0,
      "name": "string",
      "predefinedFeeKey": "string",
      "taxAmount": 0,
      "trigger": "MANUAL"
    }
  ],
  "holdExternalReferenceId": "string",
  "id": "string",
  "interestAccruedAmounts": {
    "interestAccrued": 0,
    "negativeInterestAccrued": 0,
    "overdraftInterestAccrued": 0,
    "technicalOverdraftInterestAccrued": 0
  },
  "migrationEventKey": "string",
  "notes": "string",
  "originalTransactionKey": "string",
  "parentAccountKey": "string",
  "paymentDetails": {
    "creditor": {
      "name": "string"
    },
    "creditorAccount": {
      "currency": "string",
      "identification": {
        "iban": "string",
        "other": {
          "identification": "string",
          "scheme": "string"
        }
      }
    },
    "creditorAgent": {
      "financialInstitutionIdentification": {
        "bic": "string"
      }
    },
    "debtor": {
      "name": "string"
    },
    "debtorAccount": {
      "currency": "string",
      "identification": {
        "iban": "string",
        "other": {
          "identification": "string",
          "scheme": "string"
        }
      }
    },
    "debtorAgent": {
      "financialInstitutionIdentification": {
        "bic": "string"
      }
    },
    "paymentIdentification": {
      "endToEndIdentification": "string",
      "instructionIdentification": "string",
      "transactionIdentification": "string"
    },
    "paymentTypeInformation": {
      "serviceLevel": {
        "code": "string"
      }
    },
    "remittanceInformation": {
      "structured": {
        "creditorReferenceInformation": {
          "reference": "string",
          "referenceIssuer": "string",
          "referenceType": "string"
        }
      },
      "unstructured": "string"
    }
  },
  "paymentOrderId": "string",
  "taxes": {
    "taxRate": 0
  },
  "terms": {
    "interestSettings": {
      "indexInterestRate": 0,
      "interestRate": 0
    },
    "overdraftInterestSettings": {
      "indexInterestRate": 0,
      "interestRate": 0
    },
    "overdraftSettings": {
      "overdraftLimit": 0
    }
  },
  "tillKey": "string",
  "transactionDetails": {
    "transactionChannelId": "string",
    "transactionChannelKey": "string"
  },
  "transferDetails": {
    "linkedDepositTransactionKey": "string",
    "linkedLoanTransactionKey": "string"
  },
  "type": "IMPORT",
  "userKey": "string",
  "valueDate": "2016-09-06T13:37:50+03:00"
}

Responses

Status Meaning Description Schema
200 OK The card transaction has been returned. GetCardTransaction
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The card was not found. ErrorResponse

getAuthorizationHoldById (Cards)

Code samples

# You can also use wget
curl -X GET /cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId} \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}

Get card authorization hold

Parameters

Name Type Description In
cardReferenceToken (required) string The token used to externally identify the card. path
authorizationHoldExternalReferenceId (required) string The ID used to reference the authorization hold. path

Example responses

200 Response

{
  "accountKey": "string",
  "advice": true,
  "amount": 0,
  "balances": {
    "accountId": "string",
    "availableBalance": 0,
    "cardType": "DEBIT",
    "creditLimit": 0,
    "currencyCode": "string",
    "totalBalance": 0
  },
  "cardAcceptor": {
    "city": "string",
    "country": "string",
    "mcc": 0,
    "name": "string",
    "state": "string",
    "street": "string",
    "zip": "string"
  },
  "cardToken": "string",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "creditDebitIndicator": "DBIT",
  "currencyCode": "string",
  "customExpirationPeriod": 0,
  "encodedKey": "string",
  "exchangeRate": 0,
  "externalReferenceId": "string",
  "originalAmount": 0,
  "originalCurrency": "string",
  "partial": true,
  "referenceDateForExpiration": "2016-09-06T13:37:50+03:00",
  "source": "CARD",
  "status": "PENDING",
  "userTransactionTime": "string"
}

Responses

Status Meaning Description Schema
200 OK The authorization hold has been returned. GetAuthorizationHold
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The card was not found. ErrorResponse

reverseAuthorizationHold (Cards)

Code samples

# You can also use wget
curl -X DELETE /cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId} \
  -H 'Accept: application/vnd.mambu.v2+json'

DELETE /cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.delete '/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.delete('/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('DELETE','/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}

Reverse a card authorization hold.

Parameters

Name Type Description In
cardReferenceToken (required) string The token used to externally identify the card. path
authorizationHoldExternalReferenceId (required) string The ID used to reference the authorization hold. path

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
204 No Content The card authorization hold was successfully reversed. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The card or the authorization hold was not found. ErrorResponse
409 Conflict Operation cannot be performed due to another pending operation that locked shared resources. ErrorResponse

patchAuthorizationHold (Cards)

Code samples

# You can also use wget
curl -X PATCH /cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

PATCH /cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId} HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.patch '/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.patch('/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PATCH','/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PATCH");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PATCH /cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}

Partially update an authorization hold

Body parameter

[
  {
    "from": "string",
    "op": "ADD",
    "path": "string",
    "value": {}
  }
]

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
cardReferenceToken (required) string The token used to externally identify the card. path
authorizationHoldExternalReferenceId (required) string The ID used to reference the authorization hold. path
body (required) PatchOperation Patch operations to be applied to a resource. body

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
204 No Content The authorization hold has been updated. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The card was not found. ErrorResponse

getAccountBalances (Cards)

Code samples

# You can also use wget
curl -X GET /cards/{cardReferenceToken}/balanceInquiry \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /cards/{cardReferenceToken}/balanceInquiry HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/cards/{cardReferenceToken}/balanceInquiry',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/cards/{cardReferenceToken}/balanceInquiry',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/cards/{cardReferenceToken}/balanceInquiry', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/cards/{cardReferenceToken}/balanceInquiry', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/cards/{cardReferenceToken}/balanceInquiry");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/cards/{cardReferenceToken}/balanceInquiry", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /cards/{cardReferenceToken}/balanceInquiry

Get account balances using card tokens

Parameters

Name Type Description In
cardReferenceToken (required) string The token used to externally identify the card. path

Example responses

200 Response

{
  "accountId": "string",
  "availableBalance": 0,
  "cardType": "DEBIT",
  "creditLimit": 0,
  "currencyCode": "string",
  "totalBalance": 0
}

Responses

Status Meaning Description Schema
200 OK The card's account balances were returned. AccountBalances
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan account not found. ErrorResponse

reverseCardTransaction (Cards)

Code samples

# You can also use wget
curl -X POST /cards/{cardReferenceToken}/financialtransactions/{cardTransactionExternalReferenceId}:decrease \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /cards/{cardReferenceToken}/financialtransactions/{cardTransactionExternalReferenceId}:decrease HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/cards/{cardReferenceToken}/financialtransactions/{cardTransactionExternalReferenceId}:decrease',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/cards/{cardReferenceToken}/financialtransactions/{cardTransactionExternalReferenceId}:decrease',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/cards/{cardReferenceToken}/financialtransactions/{cardTransactionExternalReferenceId}:decrease', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/cards/{cardReferenceToken}/financialtransactions/{cardTransactionExternalReferenceId}:decrease', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/cards/{cardReferenceToken}/financialtransactions/{cardTransactionExternalReferenceId}:decrease");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/cards/{cardReferenceToken}/financialtransactions/{cardTransactionExternalReferenceId}:decrease", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /cards/{cardReferenceToken}/financialtransactions/{cardTransactionExternalReferenceId}:decrease

Reverse card transaction

Body parameter

{
  "_Transaction_Details_Transaction": {
    "ACCOUNT_NAME_TRANSACTION_CHANNEL": "string",
    "ACCOUNT_NUMBER_TRANSACTION_CHANN": "string",
    "BANK_NUMBER_TRANSACTION_CHANNEL_": "string",
    "CHECK_NUMBER_TRANSACTION_CHANNEL": "string",
    "IDENTIFIER_TRANSACTION_CHANNEL_I": "string",
    "RECEPIT_NUMBER_TRANSACTION_CHANN": "string",
    "ROUTING_NUMBER_TRANSACTION_CHANN": "string"
  },
  "amount": 0,
  "currencyCode": "string",
  "externalReferenceId": "string",
  "transactionChannelId": "string"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
cardReferenceToken (required) string The token used to externally identify the card. path
cardTransactionExternalReferenceId (required) string The external reference of a card transaction used to identify the card transaction. path
body (required) CardTransactionReversal The card transaction to be reversed. body

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
204 No Content The card transaction was reversed. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The card was not found. ErrorResponse
409 Conflict Operation cannot be performed due to another pending operation that locked shared resources. ErrorResponse

createCardTransaction (Cards)

Code samples

# You can also use wget
curl -X POST /cards/{cardReferenceToken}/financialtransactions \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /cards/{cardReferenceToken}/financialtransactions HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/cards/{cardReferenceToken}/financialtransactions',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/cards/{cardReferenceToken}/financialtransactions',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/cards/{cardReferenceToken}/financialtransactions', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/cards/{cardReferenceToken}/financialtransactions', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/cards/{cardReferenceToken}/financialtransactions");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/cards/{cardReferenceToken}/financialtransactions", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /cards/{cardReferenceToken}/financialtransactions

Create a financial transaction corresponding to a given card

Body parameter

{
  "_Transaction_Details_Transaction": {
    "ACCOUNT_NAME_TRANSACTION_CHANNEL": "string",
    "ACCOUNT_NUMBER_TRANSACTION_CHANN": "string",
    "BANK_NUMBER_TRANSACTION_CHANNEL_": "string",
    "CHECK_NUMBER_TRANSACTION_CHANNEL": "string",
    "IDENTIFIER_TRANSACTION_CHANNEL_I": "string",
    "RECEPIT_NUMBER_TRANSACTION_CHANN": "string",
    "ROUTING_NUMBER_TRANSACTION_CHANN": "string"
  },
  "advice": true,
  "amount": 0,
  "cardAcceptor": {
    "city": "string",
    "country": "string",
    "mcc": 0,
    "name": "string",
    "state": "string",
    "street": "string",
    "zip": "string"
  },
  "creditDebitIndicator": "DBIT",
  "currencyCode": "string",
  "externalAuthorizationReferenceId": "string",
  "externalReferenceId": "string",
  "firstRepaymentDate": "2016-09-06T13:37:50+03:00",
  "increaseAmountIfNeeded": true,
  "partial": true,
  "transactionChannelId": "string",
  "userTransactionTime": "string"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
cardReferenceToken (required) string The token used to externally identify the card. path
body (required) CardTransactionInput The financial transaction to be created. body

Example responses

201 Response

{
  "advice": true,
  "amount": 0,
  "balances": {
    "accountId": "string",
    "availableBalance": 0,
    "cardType": "DEBIT",
    "creditLimit": 0,
    "currencyCode": "string",
    "totalBalance": 0
  },
  "cardAcceptor": {
    "city": "string",
    "country": "string",
    "mcc": 0,
    "name": "string",
    "state": "string",
    "street": "string",
    "zip": "string"
  },
  "cardToken": "string",
  "creditDebitIndicator": "DBIT",
  "currencyCode": "string",
  "encodedKey": "string",
  "externalAuthorizationReferenceId": "string",
  "externalReferenceId": "string",
  "firstRepaymentDate": "2016-09-06T13:37:50+03:00",
  "increaseAmountIfNeeded": true,
  "linkedTransaction": {
    "linkedTransactionKey": "string",
    "linkedTransactionType": "LOAN"
  },
  "partial": true,
  "transactionChannelId": "string",
  "userTransactionTime": "string"
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
201 Created The financial transaction was successfully created. CardTransactionOutput
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The card was not found. ErrorResponse
409 Conflict Operation cannot be performed due to another pending operation that locked shared resources. ErrorResponse

decreaseAuthorizationHold (Cards)

Code samples

# You can also use wget
curl -X POST /cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}:decrease \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}:decrease HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}:decrease',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}:decrease',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}:decrease', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}:decrease', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}:decrease");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}:decrease", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /cards/{cardReferenceToken}/authorizationholds/{authorizationHoldExternalReferenceId}:decrease

Decreases the amount of an authorization hold. If the amount is greater or equal to the authorization hold amount, then the authorization hold is reversed.

Body parameter

{
  "advice": true,
  "amount": 0,
  "currencyCode": "string",
  "externalReferenceId": "string"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
cardReferenceToken (required) string The token used to externally identify the card. path
authorizationHoldExternalReferenceId (required) string The ID used to reference the authorization hold. path
body (required) AuthorizationHoldAmountAdjustmentRequest Represents the information to decrease the amount of an authorization hold. body

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
204 No Content The authorization hold was successfully decreased. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The card or the authorization hold was not found. ErrorResponse
409 Conflict Operation cannot be performed due to another pending operation that locked shared resources. ErrorResponse

createAuthorizationHold (Cards)

Code samples

# You can also use wget
curl -X POST /cards/{cardReferenceToken}/authorizationholds \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /cards/{cardReferenceToken}/authorizationholds HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/cards/{cardReferenceToken}/authorizationholds',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/cards/{cardReferenceToken}/authorizationholds',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/cards/{cardReferenceToken}/authorizationholds', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/cards/{cardReferenceToken}/authorizationholds', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/cards/{cardReferenceToken}/authorizationholds");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/cards/{cardReferenceToken}/authorizationholds", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /cards/{cardReferenceToken}/authorizationholds

Create an authorization hold corresponding to a given card.

Body parameter

{
  "advice": true,
  "amount": 0,
  "balances": {
    "accountId": "string",
    "availableBalance": 0,
    "cardType": "DEBIT",
    "creditLimit": 0,
    "currencyCode": "string",
    "totalBalance": 0
  },
  "cardAcceptor": {
    "city": "string",
    "country": "string",
    "mcc": 0,
    "name": "string",
    "state": "string",
    "street": "string",
    "zip": "string"
  },
  "creditDebitIndicator": "DBIT",
  "currencyCode": "string",
  "customExpirationPeriod": 0,
  "exchangeRate": 0,
  "externalReferenceId": "string",
  "originalAmount": 0,
  "originalCurrency": "string",
  "partial": true,
  "userTransactionTime": "string"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
cardReferenceToken (required) string The token used to externally identify the card. path
body (required) AuthorizationHold The authorization hold to be created. body

Example responses

201 Response

{
  "accountKey": "string",
  "advice": true,
  "amount": 0,
  "balances": {
    "accountId": "string",
    "availableBalance": 0,
    "cardType": "DEBIT",
    "creditLimit": 0,
    "currencyCode": "string",
    "totalBalance": 0
  },
  "cardAcceptor": {
    "city": "string",
    "country": "string",
    "mcc": 0,
    "name": "string",
    "state": "string",
    "street": "string",
    "zip": "string"
  },
  "cardToken": "string",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "creditDebitIndicator": "DBIT",
  "currencyCode": "string",
  "customExpirationPeriod": 0,
  "exchangeRate": 0,
  "externalReferenceId": "string",
  "originalAmount": 0,
  "originalCurrency": "string",
  "partial": true,
  "referenceDateForExpiration": "2016-09-06T13:37:50+03:00",
  "source": "CARD",
  "status": "PENDING",
  "userTransactionTime": "string"
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
201 Created The card authorization hold was successfully created. AuthorizationHold
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The card was not found. ErrorResponse
409 Conflict Operation cannot be performed due to another pending operation that locked shared resources. ErrorResponse

Centres

Allows retrieving centres which are being used by an organization. A branch in Mambu is the default label for an organization's subdivision. A centre is the default label for a subdivision of a branch. It can be considered a sub-branch. Each branch can have multiple centres assigned to it.

getById (Centres)

Code samples

# You can also use wget
curl -X GET /centres/{centreId} \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /centres/{centreId} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/centres/{centreId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/centres/{centreId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/centres/{centreId}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/centres/{centreId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/centres/{centreId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/centres/{centreId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /centres/{centreId}

Get centre

Parameters

Name Type Description In
centreId (required) string The ID or encoded key of the centre to be returned. path
detailsLevel string The level of details to return: FULL means the full details of the object will be returned (custom field values, address, contact info, or any other related objects) and BASIC will return only the first level elements of the object. query

Enumerated Values

Parameter Value
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

{
  "addresses": [
    {
      "city": "string",
      "country": "string",
      "encodedKey": "string",
      "indexInList": 0,
      "latitude": 0,
      "line1": "string",
      "line2": "string",
      "longitude": 0,
      "parentKey": "string",
      "postcode": "string",
      "region": "string"
    }
  ],
  "assignedBranchKey": "string",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "encodedKey": "string",
  "id": "string",
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "meetingDay": "string",
  "name": "string",
  "notes": "string",
  "state": "ACTIVE"
}

Responses

Status Meaning Description Schema
200 OK Centre returned. Centre
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Centre not found. ErrorResponse

getAll (Centres)

Code samples

# You can also use wget
curl -X GET /centres \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /centres HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/centres',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/centres',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/centres', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/centres', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/centres");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/centres", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /centres

Get centres

Parameters

Name Type Description In
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query
detailsLevel string The level of details to return: FULL means the full details of the object will be returned (custom field values, address, contact info, or any other related objects) and BASIC will return only the first level elements of the object. query
branchId string The branch ID the centre belongs to. query
sortBy string The criteria based on which the records will be sorted. Expected format is , for example, sortBy = field1:ASC,field2:DESC.
Only the following fields can be used: id,name, creationDate, lastModifiedDate
Default sorting is done by creationDate:DESC
query

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

[
  {
    "addresses": [
      {
        "city": "string",
        "country": "string",
        "encodedKey": "string",
        "indexInList": 0,
        "latitude": 0,
        "line1": "string",
        "line2": "string",
        "longitude": 0,
        "parentKey": "string",
        "postcode": "string",
        "region": "string"
      }
    ],
    "assignedBranchKey": "string",
    "creationDate": "2016-09-06T13:37:50+03:00",
    "encodedKey": "string",
    "id": "string",
    "lastModifiedDate": "2016-09-06T13:37:50+03:00",
    "meetingDay": "string",
    "name": "string",
    "notes": "string",
    "state": "ACTIVE"
  }
]

Responses

Status Meaning Description Schema
200 OK Centres list returned. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [Centre] [Represents a centre. A centre is a common meeting area that credit officers and the individual and group clients go to. Each centre is assigned to a branch (a branch can have multiple centres) and might have a specific meeting day and location.] none
Ā» addresses [Address] The addresses of this centre. none
»» city string The city for the address. none
»» country string The country. none
»» encodedKey string The address encoded key, which is unique and generated. read-only
»» indexInList integer(int32) The index of this address in the list of addresses. none
»» latitude number The GPS latitude of this address in signed degrees format (DDD.dddd) with 6 decimal positions, ranging from -90 to +90. none
»» line1 string The first line of the address. none
»» line2 string The second line of the address. none
»» longitude number The GPS longitude of this address in signed degrees format (DDD.dddd) with 6 decimal positions, ranging from -180 to +180. none
»» parentKey string The address parent key indicating the object owning this address. For example: client, centre, or branch. read-only
»» postcode string The post code. none
»» region string The region for the address. none
Ā» assignedBranchKey string The encoded key of the branch this centre is assigned to. none
Ā» creationDate string(date-time) The date the centre was created. none
Ā» encodedKey string The encoded key of the entity, generated, globally unique read-only
Ā» id string The ID of the centre, which must be unique, and can be generated and customized. none
Ā» lastModifiedDate string(date-time) The last time the centre was modified. none
Ā» meetingDay string The day of the week when repayments are collected. This influences the repayments schedule, upon update all repayments are updated to this day of the week. none
Ā» name string The name of the centre. none
Ā» notes string The notes or description attached to this object. none
Ā» state string The state of the centre. none

Enumerated Values

Property Value
state ACTIVE
state INACTIVE

Response Headers

Status Header Type Format Description
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

Centres Configuration

Retrieve and update the configuration for centres.

A branch in Mambu is the default label for an organization's subdivision. A centre is the default label for a subdivision of a branch. It can be considered a sub-branch. Each branch can have multiple centres assigned to it. For more information about this resource, see Centres Configuration in our User Guide.

Your user or API consumer must have the View Manage Configuration As Code (GET_MANAGE_CONFIGURATION_AS_CODE) and/or Update Manage Configuration As Code (PUT_MANAGE_CONFIGURATION_AS_CODE) permissions to make GET and/or PUT requests to these configuration as code (CasC) endpoints. For more information about CasC, seeĀ Configuration as Code Overview.

get (Centres Configuration)

Code samples

# You can also use wget
curl -X GET /configuration/centres.yaml \
  -H 'Accept: application/vnd.mambu.v2+yaml'

GET /configuration/centres.yaml HTTP/1.1

Accept: application/vnd.mambu.v2+yaml

var headers = {
  'Accept':'application/vnd.mambu.v2+yaml'

};

$.ajax({
  url: '/configuration/centres.yaml',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+yaml'
}

result = RestClient.get '/configuration/centres.yaml',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+yaml'
}

r = requests.get('/configuration/centres.yaml', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+yaml',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/configuration/centres.yaml', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/configuration/centres.yaml");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+yaml"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/configuration/centres.yaml", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /configuration/centres.yaml

Get centres configuration

Example responses

a single centre

---
centres:
- id: "DT1"
  name: "Down Town"
  state: "ACTIVE"
  notes: "some rich text notes about this centre"
  meetingDay: "FRIDAY"
  assignedBranchId: "demoBranchId"
  address:
    line1: "Chuffington House"
    line2: "123 Main High Road"
    city: "Big Town"
    region: "Big Conglomeration"
    postcode: "123 456"
    country: "Countrystan"
  customFieldValueSets:
  - id: "_centres_custom_field_set"
    standardCustomFieldValues:
    - customFieldId: "centre_cf_1"
      value: "custom field value for cf 1"
    - customFieldId: "cntr_cf_2"
      value: "FALSE"
    - customFieldId: "cntr_cf_usr_lnk"
      value: "jonnyt"
  - id: "_cntr_cf_grp"
    groupedCustomFieldValues:
    - index: 0
      customFieldValues:
      - customFieldId: "cntr_cf_Grp_1"
        value: "12"
      - customFieldId: "cntr_cf_grp_2"
        value: "414828471"
      - customFieldId: "cntr_cf_slct_2"
        value: "745255722"

401 invalid credentials

{
    "errors": [
        {
            "errorCode": 2,
            "errorSource": "credentials",
            "errorReason": "INVALID_CREDENTIALS"
        }
    ]
}

403 forbidden

{
    "errors": [
        {
            "errorCode": 15,
            "errorSource": "not authorized",
            "errorReason": "INVALID_PERMISSIONS"
        }
    ]
}

Responses

Status Meaning Description Schema
200 OK Centres configuration returned. CentresConfiguration
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

update (Centres Configuration)

Code samples

# You can also use wget
curl -X PUT /configuration/centres.yaml \
  -H 'Content-Type: application/yaml' \
  -H 'Accept: application/vnd.mambu.v2+yaml'

PUT /configuration/centres.yaml HTTP/1.1

Content-Type: application/yaml
Accept: application/vnd.mambu.v2+yaml

var headers = {
  'Content-Type':'application/yaml',
  'Accept':'application/vnd.mambu.v2+yaml'

};

$.ajax({
  url: '/configuration/centres.yaml',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/yaml',
  'Accept' => 'application/vnd.mambu.v2+yaml'
}

result = RestClient.put '/configuration/centres.yaml',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/yaml',
  'Accept': 'application/vnd.mambu.v2+yaml'
}

r = requests.put('/configuration/centres.yaml', params={

}, headers = headers)

print r.json()

 'application/yaml',
    'Accept' => 'application/vnd.mambu.v2+yaml',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PUT','/configuration/centres.yaml', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/configuration/centres.yaml");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/yaml"},
        "Accept": []string{"application/vnd.mambu.v2+yaml"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/configuration/centres.yaml", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /configuration/centres.yaml

Update centres configuration

Body parameter

an array of centres

---
centres:
- id: "DT1"
  name: "Down Town"
  state: "ACTIVE"
  notes: "some rich text notes about this centre"
  meetingDay: "FRIDAY"
  assignedBranchId: "demoBranchId"
  address:
    line1: "Chuffington House"
    line2: "123 Main High Road"
    city: "Big Town"
    region: "Big Conglomeration"
    postcode: "123 456"
    country: "Countrystan"
  customFieldValueSets:
  - id: "_centres_custom_field_set"
    standardCustomFieldValues:
    - customFieldId: "centre_cf_1"
      value: "custom field value for cf 1"
    - customFieldId: "cntr_cf_2"
      value: "FALSE"
    - customFieldId: "cntr_cf_usr_lnk"
      value: "jonnyt"
  - id: "_cntr_cf_grp"
    groupedCustomFieldValues:
    - index: 0
      customFieldValues:
      - customFieldId: "cntr_cf_Grp_1"
        value: "12"
      - customFieldId: "cntr_cf_grp_2"
        value: "414828471"
      - customFieldId: "cntr_cf_slct_2"
        value: "745255722"
- id: "MP1"
  name: "Market Place"
  state: "ACTIVE"
  notes: "All clients and officers gather in the market to discuss loans and savings\
    \ situation."
  assignedBranchId: "2"
  address:
    line1: "Hegyalja Ćŗt 95."
    city: "Debrecen"
    postcode: "4032"

Parameters

Name Type Description In
body CentresConfiguration Model representation of the centres configuration. body

Example responses

200 success response

---
warnings: []

200 response with warnings

---
warnings:
- "Centre [id = DT1] could not be deleted and was deactivated"

400 error response

{
    "errors": [
        {
            "errorCode": 0,
            "errorSource": "human-readable description of the error",
            "errorReason": "SOURCE_OF_ERROR"
        }
    ]
}

401 invalid credentials

{
    "errors": [
        {
            "errorCode": 2,
            "errorSource": "credentials",
            "errorReason": "INVALID_CREDENTIALS"
        }
    ]
}

403 forbidden

{
    "errors": [
        {
            "errorCode": 15,
            "errorSource": "not authorized",
            "errorReason": "INVALID_PERMISSIONS"
        }
    ]
}

404 not found

{
    "errors": [
        {
            "errorCode": 3,
            "errorSource": "server",
            "errorReason": "INVALID_API_OPERATION"
        }
    ]
}

Responses

Status Meaning Description Schema
200 OK Centres configuration updated. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Centres configuration not found. ErrorResponse

Response Schema

Client Documents

Allows you to retrieve or create client documents.

getDocumentsByClientId (Client Documents)

Code samples

# You can also use wget
curl -X GET /clients/{clientId}/documentsMetadata \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /clients/{clientId}/documentsMetadata HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/clients/{clientId}/documentsMetadata',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/clients/{clientId}/documentsMetadata',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/clients/{clientId}/documentsMetadata', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/clients/{clientId}/documentsMetadata', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/clients/{clientId}/documentsMetadata");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/clients/{clientId}/documentsMetadata", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /clients/{clientId}/documentsMetadata

Get all client documents

Parameters

Name Type Description In
clientId (required) string The ID or encoded key of the client to be returned. path
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF

Example responses

200 Response

[
  {
    "creationDate": "2016-09-06T13:37:50+03:00",
    "encodedKey": "string",
    "fileName": "string",
    "fileSize": 0,
    "id": 0,
    "lastModifiedDate": "2016-09-06T13:37:50+03:00",
    "location": "string",
    "name": "string",
    "notes": "string",
    "ownerKey": "string",
    "ownerType": "CLIENT",
    "type": "string"
  }
]

Responses

Status Meaning Description Schema
200 OK Successfully returned the list of all client documents metadata. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Client not found. ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [Document] [Holds information regarding the documents uploaded as attachments] none
Ā» creationDate string(date-time) The creation date of the document, stored as UTC read-only
Ā» encodedKey string The document encodedKey read-only
Ā» fileName string The original file name of the document none
Ā» fileSize integer(int64) The file size of the document none
Ā» id (required) integer(int64) The document id none
Ā» lastModifiedDate string(date-time) The last modified date of the document, stored as UTC read-only
Ā» location string Location where the document can be found, eg /myfiles/mypicture.jpeg none
Ā» name (required) string The name of the document none
Ā» notes string Detailed notes about the document none
Ā» ownerKey string Represents the holder of this document. If null, means nobody is the owner of this document read-only
Ā» ownerType string Determines the owner type of the document read-only
Ā» type (required) string The extension of the document none

Enumerated Values

Property Value
ownerType CLIENT
ownerType GROUP
ownerType LOAN_PRODUCT
ownerType SAVINGS_PRODUCT
ownerType CENTRE
ownerType BRANCH
ownerType USER
ownerType LOAN_ACCOUNT
ownerType DEPOSIT_ACCOUNT
ownerType ID_DOCUMENT
ownerType LINE_OF_CREDIT
ownerType GL_JOURNAL_ENTRY

Response Headers

Status Header Type Format Description
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

getClientDocumentById (Client Documents)

Code samples

# You can also use wget
curl -X GET /clients/documents/{documentId}/metadata \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /clients/documents/{documentId}/metadata HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/clients/documents/{documentId}/metadata',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/clients/documents/{documentId}/metadata',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/clients/documents/{documentId}/metadata', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/clients/documents/{documentId}/metadata', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/clients/documents/{documentId}/metadata");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/clients/documents/{documentId}/metadata", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /clients/documents/{documentId}/metadata

Get client document

Parameters

Name Type Description In
documentId (required) string The ID or encoded key of the client document to be returned. path

Example responses

200 Response

{
  "creationDate": "2016-09-06T13:37:50+03:00",
  "encodedKey": "string",
  "fileName": "string",
  "fileSize": 0,
  "id": 0,
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "location": "string",
  "name": "string",
  "notes": "string",
  "ownerKey": "string",
  "ownerType": "CLIENT",
  "type": "string"
}

Responses

Status Meaning Description Schema
200 OK Successfully returned the metadata of a client document. Document
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Client not found. ErrorResponse

createDocument (Client Documents)

Code samples

# You can also use wget
curl -X POST /clients/{clientId}/documents \
  -H 'Content-Type: multipart/form-data' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /clients/{clientId}/documents HTTP/1.1

Content-Type: multipart/form-data
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'multipart/form-data',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/clients/{clientId}/documents',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'multipart/form-data',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/clients/{clientId}/documents',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'multipart/form-data',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/clients/{clientId}/documents', params={

}, headers = headers)

print r.json()

 'multipart/form-data',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/clients/{clientId}/documents', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/clients/{clientId}/documents");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"multipart/form-data"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/clients/{clientId}/documents", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /clients/{clientId}/documents

Create client document

Body parameter

file: string
name: string
notes: string

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
clientId (required) string The ID or encoded key of the client to be returned. path
body (required) object none body
Ā» file (required) string(binary) The file to be attached for a client. body
Ā» name string The name (title) of the attached file. body
Ā» notes string The description of the attached file. body

Example responses

201 Response

{
  "creationDate": "2016-09-06T13:37:50+03:00",
  "encodedKey": "string",
  "fileName": "string",
  "fileSize": 0,
  "id": 0,
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "location": "string",
  "name": "string",
  "notes": "string",
  "ownerKey": "string",
  "ownerType": "CLIENT",
  "type": "string"
}

Responses

Status Meaning Description Schema
201 Created Document created. Document
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Client not found. ErrorResponse

getClientDocumentFileById (Client Documents)

Code samples

# You can also use wget
curl -X GET /clients/documents/{documentId} \
  -H 'Accept: application/vnd.mambu.v2+file'

GET /clients/documents/{documentId} HTTP/1.1

Accept: application/vnd.mambu.v2+file

var headers = {
  'Accept':'application/vnd.mambu.v2+file'

};

$.ajax({
  url: '/clients/documents/{documentId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+file'
}

result = RestClient.get '/clients/documents/{documentId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+file'
}

r = requests.get('/clients/documents/{documentId}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+file',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/clients/documents/{documentId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/clients/documents/{documentId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+file"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/clients/documents/{documentId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /clients/documents/{documentId}

Download client document

Parameters

Name Type Description In
documentId (required) string The ID or encoded key of the client document to be returned. path

Example responses

200 Response

Responses

Status Meaning Description Schema
200 OK Client document downloaded. string
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Client not found. ErrorResponse

Response Headers

Status Header Type Format Description
200 Content-Disposition string "The format is - attachment; filename="{fileName}.extension"";
200 Content-Length integer int32 The size of the file.

Client Roles Configuration

Retrieve and update the configuration for client roles and group roles.

A client is any person who comes to you and requires your financial products, whether that means they need a current account, a loan or any other type of product that you provide. A group can include multiple clients having some unifying relationship. You can specify particular client roles and group roles. For more information about this resource, see Client and Group Roles Configuration in our User Guide.

Your user or API consumer must have the View Manage Configuration As Code (GET_MANAGE_CONFIGURATION_AS_CODE) and/or Update Manage Configuration As Code (PUT_MANAGE_CONFIGURATION_AS_CODE) permissions to make GET and/or PUT requests to these configuration as code (CasC) endpoints. For more information about CasC, seeĀ Configuration as Code Overview.

get (Client Roles Configuration)

Code samples

# You can also use wget
curl -X GET /configuration/clientroles.yaml \
  -H 'Accept: application/vnd.mambu.v2+yaml'

GET /configuration/clientroles.yaml HTTP/1.1

Accept: application/vnd.mambu.v2+yaml

var headers = {
  'Accept':'application/vnd.mambu.v2+yaml'

};

$.ajax({
  url: '/configuration/clientroles.yaml',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+yaml'
}

result = RestClient.get '/configuration/clientroles.yaml',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+yaml'
}

r = requests.get('/configuration/clientroles.yaml', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+yaml',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/configuration/clientroles.yaml', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/configuration/clientroles.yaml");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+yaml"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/configuration/clientroles.yaml", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /configuration/clientroles.yaml

Get client roles configuration

Parameters

Name Type Description In
type array[string] The account holder type for which the client roles are returned. If the parameter is absent, all the clients roles are returned. query

Enumerated Values

Parameter Value
type CLIENT
type GROUP

Example responses

an array of client roles and group roles

---
rolesConfiguration:
  - type: "CLIENT"
    defaultRole:
      id: "default_role_id"
      name: "default_role_name"
      canOpenAccounts: true
      canGuarantee: true
      requireIdentificationDocuments: false
      useDefaultAddress: true
    roles:
      - id: "id_1"
        name: "Name_1"
        description: "Desc 1"
        idPattern: "@"
        canOpenAccounts: false
        canGuarantee: false
        requireIdentificationDocuments: false
        useDefaultAddress: false
  - type: "GROUP"
    defaultRole:
      id: "default_group_role_id"
      name: "default_group_role_name"
      canOpenAccounts: true
      canGuarantee: true
      useDefaultAddress: true
    roles:
      - id: "id_2"
        name: "Name_2"
        description: "Desc 2"
        idPattern: "##"
        canOpenAccounts: false
        canGuarantee: true
        useDefaultAddress: true
      - id: "id_3"
        name: "Name_3"
        description: "Desc 3"
        idPattern: "@#"
        canOpenAccounts: true
        canGuarantee: true
        useDefaultAddress: false

401 invalid credentials

{
    "errors": [
        {
            "errorCode": 2,
            "errorSource": "credentials",
            "errorReason": "INVALID_CREDENTIALS"
        }
    ]
}

403 forbidden

{
    "errors": [
        {
            "errorCode": 15,
            "errorSource": "not authorized",
            "errorReason": "INVALID_PERMISSIONS"
        }
    ]
}

404 not found

{
    "errors": [
        {
            "errorCode": 3,
            "errorSource": "server",
            "errorReason": "INVALID_API_OPERATION"
        }
    ]
}

Responses

Status Meaning Description Schema
200 OK Client roles configuration returned. ClientsRolesConfiguration
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Client roles configuration not found. ErrorResponse

update (Client Roles Configuration)

Code samples

# You can also use wget
curl -X PUT /configuration/clientroles.yaml \
  -H 'Content-Type: application/yaml' \
  -H 'Accept: application/vnd.mambu.v2+yaml'

PUT /configuration/clientroles.yaml HTTP/1.1

Content-Type: application/yaml
Accept: application/vnd.mambu.v2+yaml

var headers = {
  'Content-Type':'application/yaml',
  'Accept':'application/vnd.mambu.v2+yaml'

};

$.ajax({
  url: '/configuration/clientroles.yaml',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/yaml',
  'Accept' => 'application/vnd.mambu.v2+yaml'
}

result = RestClient.put '/configuration/clientroles.yaml',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/yaml',
  'Accept': 'application/vnd.mambu.v2+yaml'
}

r = requests.put('/configuration/clientroles.yaml', params={

}, headers = headers)

print r.json()

 'application/yaml',
    'Accept' => 'application/vnd.mambu.v2+yaml',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PUT','/configuration/clientroles.yaml', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/configuration/clientroles.yaml");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/yaml"},
        "Accept": []string{"application/vnd.mambu.v2+yaml"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/configuration/clientroles.yaml", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /configuration/clientroles.yaml

Update client roles configuration

Body parameter

an array of client roles and group roles

---
rolesConfiguration:
  - type: "CLIENT"
    defaultRole:
      id: "default_role_id"
      name: "default_role_name"
      canOpenAccounts: true
      canGuarantee: true
      requireIdentificationDocuments: false
      useDefaultAddress: true
    roles:
      - id: "id_1"
        name: "Name_1"
        description: "Desc 1"
        idPattern: "@"
        canOpenAccounts: false
        canGuarantee: false
        requireIdentificationDocuments: false
        useDefaultAddress: false
  - type: "GROUP"
    defaultRole:
      id: "default_group_role_id"
      name: "default_group_role_name"
      canOpenAccounts: true
      canGuarantee: true
      useDefaultAddress: true
    roles:
      - id: "id_2"
        name: "Name_2"
        description: "Desc 2"
        idPattern: "##"
        canOpenAccounts: false
        canGuarantee: true
        useDefaultAddress: true
      - id: "id_3"
        name: "Name_3"
        description: "Desc 3"
        idPattern: "@#"
        canOpenAccounts: true
        canGuarantee: true
        useDefaultAddress: false

Parameters

Name Type Description In
body ClientsRolesConfiguration Model representation of the clients roles configuration. body

Example responses

200 success response

---
warnings: []

400 error response

{
    "errors": [
        {
            "errorCode": 0,
            "errorSource": "human-readable description of the error",
            "errorReason": "SOURCE_OF_ERROR"
        }
    ]
}

401 invalid credentials

{
    "errors": [
        {
            "errorCode": 2,
            "errorSource": "credentials",
            "errorReason": "INVALID_CREDENTIALS"
        }
    ]
}

403 forbidden

{
    "errors": [
        {
            "errorCode": 15,
            "errorSource": "not authorized",
            "errorReason": "INVALID_PERMISSIONS"
        }
    ]
}

404 not found

{
    "errors": [
        {
            "errorCode": 3,
            "errorSource": "server",
            "errorReason": "INVALID_API_OPERATION"
        }
    ]
}

Responses

Status Meaning Description Schema
200 OK Client roles configuration updated. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Client roles configuration not found. ErrorResponse

Response Schema

Clients

Allows you to get, create, update, or delete clients. Clients may have associated information such as their address, identification documents, or additional custom field values.

getById (Clients)

Code samples

# You can also use wget
curl -X GET /clients/{clientId} \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /clients/{clientId} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/clients/{clientId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/clients/{clientId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/clients/{clientId}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/clients/{clientId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/clients/{clientId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/clients/{clientId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /clients/{clientId}

Get client

Parameters

Name Type Description In
clientId (required) string The ID or encoded key of the client to be returned. path
detailsLevel string The level of details to return: FULL means the full details of the object will be returned (custom field values, address, contact info, or any other related objects) and BASIC will return only the first level elements of the object. query

Enumerated Values

Parameter Value
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

{
  "activationDate": "2016-09-06T13:37:50+03:00",
  "addresses": [
    {
      "city": "string",
      "country": "string",
      "encodedKey": "string",
      "indexInList": 0,
      "latitude": 0,
      "line1": "string",
      "line2": "string",
      "longitude": 0,
      "parentKey": "string",
      "postcode": "string",
      "region": "string"
    }
  ],
  "approvedDate": "2016-09-06T13:37:50+03:00",
  "assignedBranchKey": "string",
  "assignedCentreKey": "string",
  "assignedUserKey": "string",
  "birthDate": "1987-04-26",
  "clientRoleKey": "string",
  "closedDate": "2016-09-06T13:37:50+03:00",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "emailAddress": "string",
  "encodedKey": "string",
  "firstName": "string",
  "gender": "MALE",
  "groupKeys": [
    "string"
  ],
  "groupLoanCycle": 0,
  "homePhone": "string",
  "id": "string",
  "idDocuments": [
    {
      "attachments": [
        {
          "creationDate": "2016-09-06T13:37:50+03:00",
          "encodedKey": "string",
          "fileName": "string",
          "fileSize": 0,
          "id": 0,
          "lastModifiedDate": "2016-09-06T13:37:50+03:00",
          "location": "string",
          "name": "string",
          "notes": "string",
          "ownerKey": "string",
          "ownerType": "CLIENT",
          "type": "string"
        }
      ],
      "clientKey": "string",
      "documentId": "string",
      "documentType": "string",
      "encodedKey": "string",
      "identificationDocumentTemplateKey": "string",
      "indexInList": 0,
      "issuingAuthority": "string",
      "validUntil": "1987-04-26"
    }
  ],
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "lastName": "string",
  "loanCycle": 0,
  "middleName": "string",
  "migrationEventKey": "string",
  "mobilePhone": "string",
  "mobilePhone2": "string",
  "notes": "string",
  "portalSettings": {
    "encodedKey": "string",
    "lastLoggedInDate": "2016-09-06T13:37:50+03:00",
    "portalState": "ENABLED"
  },
  "preferredLanguage": "ENGLISH",
  "profilePictureKey": "string",
  "profileSignatureKey": "string",
  "state": "PENDING_APPROVAL"
}

Responses

Status Meaning Description Schema
200 OK Client returned. Client
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Client not found. ErrorResponse

update (Clients)

Code samples

# You can also use wget
curl -X PUT /clients/{clientId} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json'

PUT /clients/{clientId} HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/clients/{clientId}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.put '/clients/{clientId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.put('/clients/{clientId}', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PUT','/clients/{clientId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/clients/{clientId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/clients/{clientId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /clients/{clientId}

Update client

Body parameter

{
  "addresses": [
    {
      "city": "string",
      "country": "string",
      "indexInList": 0,
      "latitude": 0,
      "line1": "string",
      "line2": "string",
      "longitude": 0,
      "postcode": "string",
      "region": "string"
    }
  ],
  "assignedBranchKey": "string",
  "assignedCentreKey": "string",
  "assignedUserKey": "string",
  "birthDate": "1987-04-26",
  "clientRoleKey": "string",
  "emailAddress": "string",
  "firstName": "string",
  "gender": "MALE",
  "groupKeys": [
    "string"
  ],
  "homePhone": "string",
  "id": "string",
  "idDocuments": [
    {
      "attachments": [
        {
          "fileName": "string",
          "fileSize": 0,
          "id": 0,
          "location": "string",
          "name": "string",
          "notes": "string",
          "type": "string"
        }
      ],
      "documentId": "string",
      "documentType": "string",
      "identificationDocumentTemplateKey": "string",
      "indexInList": 0,
      "issuingAuthority": "string",
      "validUntil": "1987-04-26"
    }
  ],
  "lastName": "string",
  "middleName": "string",
  "mobilePhone": "string",
  "mobilePhone2": "string",
  "notes": "string",
  "portalSettings": {
    "lastLoggedInDate": "2016-09-06T13:37:50+03:00",
    "portalState": "ENABLED"
  },
  "preferredLanguage": "ENGLISH",
  "state": "PENDING_APPROVAL"
}

Parameters

Name Type Description In
clientId (required) string The ID or encoded key of the client to be updated. path
keepAssociationForAccounts boolean The flag to allow associated accounts to maintain their branch, if client's changes. query
body (required) Client Client to be updated. body

Example responses

200 Response

{
  "activationDate": "2016-09-06T13:37:50+03:00",
  "addresses": [
    {
      "city": "string",
      "country": "string",
      "encodedKey": "string",
      "indexInList": 0,
      "latitude": 0,
      "line1": "string",
      "line2": "string",
      "longitude": 0,
      "parentKey": "string",
      "postcode": "string",
      "region": "string"
    }
  ],
  "approvedDate": "2016-09-06T13:37:50+03:00",
  "assignedBranchKey": "string",
  "assignedCentreKey": "string",
  "assignedUserKey": "string",
  "birthDate": "1987-04-26",
  "clientRoleKey": "string",
  "closedDate": "2016-09-06T13:37:50+03:00",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "emailAddress": "string",
  "encodedKey": "string",
  "firstName": "string",
  "gender": "MALE",
  "groupKeys": [
    "string"
  ],
  "groupLoanCycle": 0,
  "homePhone": "string",
  "id": "string",
  "idDocuments": [
    {
      "attachments": [
        {
          "creationDate": "2016-09-06T13:37:50+03:00",
          "encodedKey": "string",
          "fileName": "string",
          "fileSize": 0,
          "id": 0,
          "lastModifiedDate": "2016-09-06T13:37:50+03:00",
          "location": "string",
          "name": "string",
          "notes": "string",
          "ownerKey": "string",
          "ownerType": "CLIENT",
          "type": "string"
        }
      ],
      "clientKey": "string",
      "documentId": "string",
      "documentType": "string",
      "encodedKey": "string",
      "identificationDocumentTemplateKey": "string",
      "indexInList": 0,
      "issuingAuthority": "string",
      "validUntil": "1987-04-26"
    }
  ],
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "lastName": "string",
  "loanCycle": 0,
  "middleName": "string",
  "migrationEventKey": "string",
  "mobilePhone": "string",
  "mobilePhone2": "string",
  "notes": "string",
  "portalSettings": {
    "encodedKey": "string",
    "lastLoggedInDate": "2016-09-06T13:37:50+03:00",
    "portalState": "ENABLED"
  },
  "preferredLanguage": "ENGLISH",
  "profilePictureKey": "string",
  "profileSignatureKey": "string",
  "state": "PENDING_APPROVAL"
}

Responses

Status Meaning Description Schema
200 OK Client updated. Client
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Client not found. ErrorResponse

delete (Clients)

Code samples

# You can also use wget
curl -X DELETE /clients/{clientId} \
  -H 'Accept: application/vnd.mambu.v2+json'

DELETE /clients/{clientId} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/clients/{clientId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.delete '/clients/{clientId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.delete('/clients/{clientId}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('DELETE','/clients/{clientId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/clients/{clientId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/clients/{clientId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /clients/{clientId}

Delete client

Parameters

Name Type Description In
clientId (required) string The ID or encoded key of the client to be deleted. path

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
204 No Content Client deleted. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Client not found. ErrorResponse

patch (Clients)

Code samples

# You can also use wget
curl -X PATCH /clients/{clientId} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json'

PATCH /clients/{clientId} HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/clients/{clientId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.patch '/clients/{clientId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.patch('/clients/{clientId}', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PATCH','/clients/{clientId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/clients/{clientId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PATCH");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/clients/{clientId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PATCH /clients/{clientId}

Partially update client

Body parameter

[
  {
    "from": "string",
    "op": "ADD",
    "path": "string",
    "value": {}
  }
]

Parameters

Name Type Description In
clientId (required) string The ID or encoded key of the client to be updated. path
keepAssociationForAccounts boolean The flag to allow associated accounts to maintain their branch, if client's changes. query
body (required) PatchOperation Patch operations to be applied to a resource. body

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
204 No Content Client updated. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Client not found. ErrorResponse

getAll (Clients)

Code samples

# You can also use wget
curl -X GET /clients \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /clients HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/clients',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/clients',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/clients', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/clients', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/clients");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/clients", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /clients

Get clients

Parameters

Name Type Description In
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query
detailsLevel string The level of details to return: FULL means the full details of the object will be returned (custom field values, address, contact info, or any other related objects) and BASIC will return only the first level elements of the object. query
creditOfficerUsername string The username of the credit officer to whom the entities are assigned to query
branchId string The id/encodedKey of the branch to which the entities are assigned to query
centreId string The id/encodedKey of the centre to which the entities are assigned to query
firstName string The first name, personal name, given name, or forename of the client. query
lastName string The last name, surname, or family name of the client. query
idNumber string The ID number of the client's identification document. query
state string The state of the client to search for. query
birthDate string(date) The birth date of the client to search for. query
sortBy string The criteria based on which the records will be sorted. Expected format is , for example, sortBy = field1:ASC,field2:DESC.
Only the following fields can be used: firstName, lastName, creationDate, lastModifiedDate
Default sorting is done by creationDate:ASC
query

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF
detailsLevel BASIC
detailsLevel FULL
state PENDING_APPROVAL
state INACTIVE
state ACTIVE
state EXITED
state BLACKLISTED
state REJECTED

Example responses

200 Response

[
  {
    "activationDate": "2016-09-06T13:37:50+03:00",
    "addresses": [
      {
        "city": "string",
        "country": "string",
        "encodedKey": "string",
        "indexInList": 0,
        "latitude": 0,
        "line1": "string",
        "line2": "string",
        "longitude": 0,
        "parentKey": "string",
        "postcode": "string",
        "region": "string"
      }
    ],
    "approvedDate": "2016-09-06T13:37:50+03:00",
    "assignedBranchKey": "string",
    "assignedCentreKey": "string",
    "assignedUserKey": "string",
    "birthDate": "1987-04-26",
    "clientRoleKey": "string",
    "closedDate": "2016-09-06T13:37:50+03:00",
    "creationDate": "2016-09-06T13:37:50+03:00",
    "emailAddress": "string",
    "encodedKey": "string",
    "firstName": "string",
    "gender": "MALE",
    "groupKeys": [
      "string"
    ],
    "groupLoanCycle": 0,
    "homePhone": "string",
    "id": "string",
    "idDocuments": [
      {
        "attachments": [
          {
            "creationDate": "2016-09-06T13:37:50+03:00",
            "encodedKey": "string",
            "fileName": "string",
            "fileSize": 0,
            "id": 0,
            "lastModifiedDate": "2016-09-06T13:37:50+03:00",
            "location": "string",
            "name": "string",
            "notes": "string",
            "ownerKey": "string",
            "ownerType": "CLIENT",
            "type": "string"
          }
        ],
        "clientKey": "string",
        "documentId": "string",
        "documentType": "string",
        "encodedKey": "string",
        "identificationDocumentTemplateKey": "string",
        "indexInList": 0,
        "issuingAuthority": "string",
        "validUntil": "1987-04-26"
      }
    ],
    "lastModifiedDate": "2016-09-06T13:37:50+03:00",
    "lastName": "string",
    "loanCycle": 0,
    "middleName": "string",
    "migrationEventKey": "string",
    "mobilePhone": "string",
    "mobilePhone2": "string",
    "notes": "string",
    "portalSettings": {
      "encodedKey": "string",
      "lastLoggedInDate": "2016-09-06T13:37:50+03:00",
      "portalState": "ENABLED"
    },
    "preferredLanguage": "ENGLISH",
    "profilePictureKey": "string",
    "profileSignatureKey": "string",
    "state": "PENDING_APPROVAL"
  }
]

Responses

Status Meaning Description Schema
200 OK Clients list returned. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [Client] [Represents a client.] none
Ā» activationDate string(date-time) The date when a client was set as active for the first time. read-only
Ā» addresses [Address] The addresses associated with this client. none
»» city string The city for the address. none
»» country string The country. none
»» encodedKey string The address encoded key, which is unique and generated. read-only
»» indexInList integer(int32) The index of this address in the list of addresses. none
»» latitude number The GPS latitude of this address in signed degrees format (DDD.dddd) with 6 decimal positions, ranging from -90 to +90. none
»» line1 string The first line of the address. none
»» line2 string The second line of the address. none
»» longitude number The GPS longitude of this address in signed degrees format (DDD.dddd) with 6 decimal positions, ranging from -180 to +180. none
»» parentKey string The address parent key indicating the object owning this address. For example: client, centre, or branch. read-only
»» postcode string The post code. none
»» region string The region for the address. none
Ā» approvedDate string(date-time) The date when a client was approved. read-only
Ā» assignedBranchKey string The encoded key of the branch a client is assigned to. none
Ā» assignedCentreKey string The encoded key of the centre a client is assigned to. none
Ā» assignedUserKey string The encoded key of the user a client is assigned to. none
Ā» birthDate string(date) The client's date of birth. none
Ā» clientRoleKey string A role which describes the intended use of a client in the system. none
Ā» closedDate string(date-time) The date when the client state was changed to closed. read-only
Ā» creationDate string(date-time) The date a client was created. read-only
Ā» emailAddress string The client's email address. none
Ā» encodedKey string The encoded key of the client, which is unique and generated. read-only
Ā» firstName (required) string The first name, personal name, given name, or forename of the client. none
Ā» gender string The client's gender, the options are male or female. none
Ā» groupKeys [string] The groups to which this client belongs. none
Ā» groupLoanCycle integer(int32) Number of paid and closed (with 'obligations met') accounts for a client's group; when the closing operation is reverted, this is reduced. read-only
Ā» homePhone string The client's home phone number. none
Ā» id string The ID of the client, which can be generated and customized - but must be unique. none
Ā» idDocuments [IdentificationDocument] The identification documents for this client. none
»» attachments [Document] A list containing information about the attached files for this document none
»»» creationDate string(date-time) The creation date of the document, stored as UTC read-only
»»» encodedKey string The document encodedKey read-only
»»» fileName string The original file name of the document none
»»» fileSize integer(int64) The file size of the document none
»»» id (required) integer(int64) The document id none
»»» lastModifiedDate string(date-time) The last modified date of the document, stored as UTC read-only
»»» location string Location where the document can be found, eg /myfiles/mypicture.jpeg none
»»» name (required) string The name of the document none
»»» notes string Detailed notes about the document none
»»» ownerKey string Represents the holder of this document. If null, means nobody is the owner of this document read-only
»»» ownerType string Determines the owner type of the document read-only
»»» type (required) string The extension of the document none
»» clientKey string The encoded key of the client that owns this document read-only
»» documentId (required) string The id of the document none
»» documentType (required) string The type of the document, Passport, Id card Drivers license, etc. none
»» encodedKey string The encoded key of the document, generated, unique read-only
»» identificationDocumentTemplateKey string Encoded key of the template used for this document none
»» indexInList integer(int32) This document's index in the list of documents none
»» issuingAuthority string Authority that issued the document, eg. Police none
»» validUntil string(date) Date when the validity of the document ends none
Ā» lastModifiedDate string(date-time) The last date a client was modified. read-only
Ā» lastName (required) string The last name, surname, or family name of the client. none
Ā» loanCycle integer(int32) Number of paid and closed (with 'obligations met') accounts for a client; when the closing operation is reverted, this is reduced. read-only
Ā» middleName string The middle name of the client. none
Ā» migrationEventKey string The migration event encoded key associated with a client. read-only
Ā» mobilePhone string The client's mobile phone number. none
Ā» mobilePhone2 string The client's second mobile phone number. none
Ā» notes string The additional notes about a client. none
Ā» portalSettings PortalSettings Represents portal settings for an individual client. none
»» encodedKey string The encoded key of the entity, generated, globally unique read-only
»» lastLoggedInDate string(date-time) The last date the client logged in to the portal. none
»» portalState string The state of the client's portal preferences. none
Ā» preferredLanguage string The client's preferred language. This will determine the language for the reports, schedules, and account statements you generate for the client. none
Ā» profilePictureKey string The encoded key of a client's profile picture. read-only
Ā» profileSignatureKey string The encoded key of the client's profile signature. read-only
Ā» state string The state of a client. It shows where the client is in the client life cycle. none

Enumerated Values

Property Value
gender MALE
gender FEMALE
ownerType CLIENT
ownerType GROUP
ownerType LOAN_PRODUCT
ownerType SAVINGS_PRODUCT
ownerType CENTRE
ownerType BRANCH
ownerType USER
ownerType LOAN_ACCOUNT
ownerType DEPOSIT_ACCOUNT
ownerType ID_DOCUMENT
ownerType LINE_OF_CREDIT
ownerType GL_JOURNAL_ENTRY
portalState ENABLED
portalState DISABLED
preferredLanguage ENGLISH
preferredLanguage PORTUGESE
preferredLanguage SPANISH
preferredLanguage RUSSIAN
preferredLanguage FRENCH
preferredLanguage GEORGIAN
preferredLanguage CHINESE
preferredLanguage INDONESIAN
preferredLanguage ROMANIAN
preferredLanguage BURMESE
preferredLanguage GERMAN
preferredLanguage PORTUGUESE_BRAZIL
preferredLanguage VIETNAMESE
preferredLanguage ITALIAN
preferredLanguage THAI
preferredLanguage NORWEGIAN
preferredLanguage PHRASE
state PENDING_APPROVAL
state INACTIVE
state ACTIVE
state EXITED
state BLACKLISTED
state REJECTED

Response Headers

Status Header Type Format Description
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

create (Clients)

Code samples

# You can also use wget
curl -X POST /clients \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /clients HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/clients',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/clients',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/clients', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/clients', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/clients");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/clients", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /clients

Create client

Body parameter

{
  "addresses": [
    {
      "city": "string",
      "country": "string",
      "indexInList": 0,
      "latitude": 0,
      "line1": "string",
      "line2": "string",
      "longitude": 0,
      "postcode": "string",
      "region": "string"
    }
  ],
  "assignedBranchKey": "string",
  "assignedCentreKey": "string",
  "assignedUserKey": "string",
  "birthDate": "1987-04-26",
  "clientRoleKey": "string",
  "emailAddress": "string",
  "firstName": "string",
  "gender": "MALE",
  "groupKeys": [
    "string"
  ],
  "homePhone": "string",
  "id": "string",
  "idDocuments": [
    {
      "attachments": [
        {
          "fileName": "string",
          "fileSize": 0,
          "id": 0,
          "location": "string",
          "name": "string",
          "notes": "string",
          "type": "string"
        }
      ],
      "documentId": "string",
      "documentType": "string",
      "identificationDocumentTemplateKey": "string",
      "indexInList": 0,
      "issuingAuthority": "string",
      "validUntil": "1987-04-26"
    }
  ],
  "lastName": "string",
  "middleName": "string",
  "mobilePhone": "string",
  "mobilePhone2": "string",
  "notes": "string",
  "portalSettings": {
    "lastLoggedInDate": "2016-09-06T13:37:50+03:00",
    "portalState": "ENABLED"
  },
  "preferredLanguage": "ENGLISH",
  "state": "PENDING_APPROVAL"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
body (required) Client Client to be created. body

Example responses

201 Response

{
  "activationDate": "2016-09-06T13:37:50+03:00",
  "addresses": [
    {
      "city": "string",
      "country": "string",
      "encodedKey": "string",
      "indexInList": 0,
      "latitude": 0,
      "line1": "string",
      "line2": "string",
      "longitude": 0,
      "parentKey": "string",
      "postcode": "string",
      "region": "string"
    }
  ],
  "approvedDate": "2016-09-06T13:37:50+03:00",
  "assignedBranchKey": "string",
  "assignedCentreKey": "string",
  "assignedUserKey": "string",
  "birthDate": "1987-04-26",
  "clientRoleKey": "string",
  "closedDate": "2016-09-06T13:37:50+03:00",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "emailAddress": "string",
  "encodedKey": "string",
  "firstName": "string",
  "gender": "MALE",
  "groupKeys": [
    "string"
  ],
  "groupLoanCycle": 0,
  "homePhone": "string",
  "id": "string",
  "idDocuments": [
    {
      "attachments": [
        {
          "creationDate": "2016-09-06T13:37:50+03:00",
          "encodedKey": "string",
          "fileName": "string",
          "fileSize": 0,
          "id": 0,
          "lastModifiedDate": "2016-09-06T13:37:50+03:00",
          "location": "string",
          "name": "string",
          "notes": "string",
          "ownerKey": "string",
          "ownerType": "CLIENT",
          "type": "string"
        }
      ],
      "clientKey": "string",
      "documentId": "string",
      "documentType": "string",
      "encodedKey": "string",
      "identificationDocumentTemplateKey": "string",
      "indexInList": 0,
      "issuingAuthority": "string",
      "validUntil": "1987-04-26"
    }
  ],
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "lastName": "string",
  "loanCycle": 0,
  "middleName": "string",
  "migrationEventKey": "string",
  "mobilePhone": "string",
  "mobilePhone2": "string",
  "notes": "string",
  "portalSettings": {
    "encodedKey": "string",
    "lastLoggedInDate": "2016-09-06T13:37:50+03:00",
    "portalState": "ENABLED"
  },
  "preferredLanguage": "ENGLISH",
  "profilePictureKey": "string",
  "profileSignatureKey": "string",
  "state": "PENDING_APPROVAL"
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
201 Created Client created. Client
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

Code samples

# You can also use wget
curl -X POST /clients:search \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json'

POST /clients:search HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/clients:search',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.post '/clients:search',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.post('/clients:search', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/clients:search', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/clients:search");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/clients:search", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /clients:search

Search clients

For more information on performing searches, please read the Searching for Records section above.

Body parameter

{
  "filterCriteria": [
    {
      "field": "encodedKey",
      "operator": "EQUALS",
      "secondValue": "string",
      "value": "string",
      "values": [
        "string"
      ]
    }
  ],
  "sortingCriteria": {
    "field": "encodedKey",
    "order": "ASC"
  }
}

Parameters

Name Type Description In
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query
detailsLevel string The level of details to return: FULL means the full details of the object will be returned (custom field values, address, contact info, or any other related objects) and BASIC will return only the first level elements of the object. query
body (required) ClientSearchCriteria The criteria to search clients. body

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

[
  {
    "activationDate": "2016-09-06T13:37:50+03:00",
    "addresses": [
      {
        "city": "string",
        "country": "string",
        "encodedKey": "string",
        "indexInList": 0,
        "latitude": 0,
        "line1": "string",
        "line2": "string",
        "longitude": 0,
        "parentKey": "string",
        "postcode": "string",
        "region": "string"
      }
    ],
    "approvedDate": "2016-09-06T13:37:50+03:00",
    "assignedBranchKey": "string",
    "assignedCentreKey": "string",
    "assignedUserKey": "string",
    "birthDate": "1987-04-26",
    "clientRoleKey": "string",
    "closedDate": "2016-09-06T13:37:50+03:00",
    "creationDate": "2016-09-06T13:37:50+03:00",
    "emailAddress": "string",
    "encodedKey": "string",
    "firstName": "string",
    "gender": "MALE",
    "groupKeys": [
      "string"
    ],
    "groupLoanCycle": 0,
    "homePhone": "string",
    "id": "string",
    "idDocuments": [
      {
        "attachments": [
          {
            "creationDate": "2016-09-06T13:37:50+03:00",
            "encodedKey": "string",
            "fileName": "string",
            "fileSize": 0,
            "id": 0,
            "lastModifiedDate": "2016-09-06T13:37:50+03:00",
            "location": "string",
            "name": "string",
            "notes": "string",
            "ownerKey": "string",
            "ownerType": "CLIENT",
            "type": "string"
          }
        ],
        "clientKey": "string",
        "documentId": "string",
        "documentType": "string",
        "encodedKey": "string",
        "identificationDocumentTemplateKey": "string",
        "indexInList": 0,
        "issuingAuthority": "string",
        "validUntil": "1987-04-26"
      }
    ],
    "lastModifiedDate": "2016-09-06T13:37:50+03:00",
    "lastName": "string",
    "loanCycle": 0,
    "middleName": "string",
    "migrationEventKey": "string",
    "mobilePhone": "string",
    "mobilePhone2": "string",
    "notes": "string",
    "portalSettings": {
      "encodedKey": "string",
      "lastLoggedInDate": "2016-09-06T13:37:50+03:00",
      "portalState": "ENABLED"
    },
    "preferredLanguage": "ENGLISH",
    "profilePictureKey": "string",
    "profileSignatureKey": "string",
    "state": "PENDING_APPROVAL"
  }
]

Responses

Status Meaning Description Schema
200 OK Result of client search. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [Client] [Represents a client.] none
Ā» activationDate string(date-time) The date when a client was set as active for the first time. read-only
Ā» addresses [Address] The addresses associated with this client. none
»» city string The city for the address. none
»» country string The country. none
»» encodedKey string The address encoded key, which is unique and generated. read-only
»» indexInList integer(int32) The index of this address in the list of addresses. none
»» latitude number The GPS latitude of this address in signed degrees format (DDD.dddd) with 6 decimal positions, ranging from -90 to +90. none
»» line1 string The first line of the address. none
»» line2 string The second line of the address. none
»» longitude number The GPS longitude of this address in signed degrees format (DDD.dddd) with 6 decimal positions, ranging from -180 to +180. none
»» parentKey string The address parent key indicating the object owning this address. For example: client, centre, or branch. read-only
»» postcode string The post code. none
»» region string The region for the address. none
Ā» approvedDate string(date-time) The date when a client was approved. read-only
Ā» assignedBranchKey string The encoded key of the branch a client is assigned to. none
Ā» assignedCentreKey string The encoded key of the centre a client is assigned to. none
Ā» assignedUserKey string The encoded key of the user a client is assigned to. none
Ā» birthDate string(date) The client's date of birth. none
Ā» clientRoleKey string A role which describes the intended use of a client in the system. none
Ā» closedDate string(date-time) The date when the client state was changed to closed. read-only
Ā» creationDate string(date-time) The date a client was created. read-only
Ā» emailAddress string The client's email address. none
Ā» encodedKey string The encoded key of the client, which is unique and generated. read-only
Ā» firstName (required) string The first name, personal name, given name, or forename of the client. none
Ā» gender string The client's gender, the options are male or female. none
Ā» groupKeys [string] The groups to which this client belongs. none
Ā» groupLoanCycle integer(int32) Number of paid and closed (with 'obligations met') accounts for a client's group; when the closing operation is reverted, this is reduced. read-only
Ā» homePhone string The client's home phone number. none
Ā» id string The ID of the client, which can be generated and customized - but must be unique. none
Ā» idDocuments [IdentificationDocument] The identification documents for this client. none
»» attachments [Document] A list containing information about the attached files for this document none
»»» creationDate string(date-time) The creation date of the document, stored as UTC read-only
»»» encodedKey string The document encodedKey read-only
»»» fileName string The original file name of the document none
»»» fileSize integer(int64) The file size of the document none
»»» id (required) integer(int64) The document id none
»»» lastModifiedDate string(date-time) The last modified date of the document, stored as UTC read-only
»»» location string Location where the document can be found, eg /myfiles/mypicture.jpeg none
»»» name (required) string The name of the document none
»»» notes string Detailed notes about the document none
»»» ownerKey string Represents the holder of this document. If null, means nobody is the owner of this document read-only
»»» ownerType string Determines the owner type of the document read-only
»»» type (required) string The extension of the document none
»» clientKey string The encoded key of the client that owns this document read-only
»» documentId (required) string The id of the document none
»» documentType (required) string The type of the document, Passport, Id card Drivers license, etc. none
»» encodedKey string The encoded key of the document, generated, unique read-only
»» identificationDocumentTemplateKey string Encoded key of the template used for this document none
»» indexInList integer(int32) This document's index in the list of documents none
»» issuingAuthority string Authority that issued the document, eg. Police none
»» validUntil string(date) Date when the validity of the document ends none
Ā» lastModifiedDate string(date-time) The last date a client was modified. read-only
Ā» lastName (required) string The last name, surname, or family name of the client. none
Ā» loanCycle integer(int32) Number of paid and closed (with 'obligations met') accounts for a client; when the closing operation is reverted, this is reduced. read-only
Ā» middleName string The middle name of the client. none
Ā» migrationEventKey string The migration event encoded key associated with a client. read-only
Ā» mobilePhone string The client's mobile phone number. none
Ā» mobilePhone2 string The client's second mobile phone number. none
Ā» notes string The additional notes about a client. none
Ā» portalSettings PortalSettings Represents portal settings for an individual client. none
»» encodedKey string The encoded key of the entity, generated, globally unique read-only
»» lastLoggedInDate string(date-time) The last date the client logged in to the portal. none
»» portalState string The state of the client's portal preferences. none
Ā» preferredLanguage string The client's preferred language. This will determine the language for the reports, schedules, and account statements you generate for the client. none
Ā» profilePictureKey string The encoded key of a client's profile picture. read-only
Ā» profileSignatureKey string The encoded key of the client's profile signature. read-only
Ā» state string The state of a client. It shows where the client is in the client life cycle. none

Enumerated Values

Property Value
gender MALE
gender FEMALE
ownerType CLIENT
ownerType GROUP
ownerType LOAN_PRODUCT
ownerType SAVINGS_PRODUCT
ownerType CENTRE
ownerType BRANCH
ownerType USER
ownerType LOAN_ACCOUNT
ownerType DEPOSIT_ACCOUNT
ownerType ID_DOCUMENT
ownerType LINE_OF_CREDIT
ownerType GL_JOURNAL_ENTRY
portalState ENABLED
portalState DISABLED
preferredLanguage ENGLISH
preferredLanguage PORTUGESE
preferredLanguage SPANISH
preferredLanguage RUSSIAN
preferredLanguage FRENCH
preferredLanguage GEORGIAN
preferredLanguage CHINESE
preferredLanguage INDONESIAN
preferredLanguage ROMANIAN
preferredLanguage BURMESE
preferredLanguage GERMAN
preferredLanguage PORTUGUESE_BRAZIL
preferredLanguage VIETNAMESE
preferredLanguage ITALIAN
preferredLanguage THAI
preferredLanguage NORWEGIAN
preferredLanguage PHRASE
state PENDING_APPROVAL
state INACTIVE
state ACTIVE
state EXITED
state BLACKLISTED
state REJECTED

Response Headers

Status Header Type Format Description
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

getRoleByClientId (Clients)

Code samples

# You can also use wget
curl -X GET /clients/{clientId}/role \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /clients/{clientId}/role HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/clients/{clientId}/role',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/clients/{clientId}/role',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/clients/{clientId}/role', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/clients/{clientId}/role', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/clients/{clientId}/role");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/clients/{clientId}/role", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /clients/{clientId}/role

Get client role for client

Parameters

Name Type Description In
clientId (required) string The ID or encoded key of the client to be returned. path

Example responses

200 Response

{
  "canGuarantee": true,
  "canOpenAccounts": true,
  "clientType": "CLIENT",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "description": "string",
  "encodedKey": "string",
  "id": "string",
  "idPattern": "string",
  "name": "string",
  "requireID": true,
  "useDefaultAddress": true
}

Responses

Status Meaning Description Schema
200 OK Client role returned. ClientRole
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Client not found. ErrorResponse

getCreditArrangementsByClientIdOrKey (Clients)

Code samples

# You can also use wget
curl -X GET /clients/{clientId}/creditarrangements \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /clients/{clientId}/creditarrangements HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/clients/{clientId}/creditarrangements',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/clients/{clientId}/creditarrangements',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/clients/{clientId}/creditarrangements', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/clients/{clientId}/creditarrangements', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/clients/{clientId}/creditarrangements");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/clients/{clientId}/creditarrangements", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /clients/{clientId}/creditarrangements

Credit arrangements list returned.

Parameters

Name Type Description In
clientId (required) string The ID or encoded key of the client to be returned. path
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query
detailsLevel string The level of details to return: FULL means the full details of the object will be returned (custom field values, address, contact info, or any other related objects) and BASIC will return only the first level elements of the object. query

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

[
  {
    "amount": 0,
    "approvedDate": "2016-09-06T13:37:50+03:00",
    "availableCreditAmount": 0,
    "closedDate": "2016-09-06T13:37:50+03:00",
    "consumedCreditAmount": 0,
    "creationDate": "2016-09-06T13:37:50+03:00",
    "currency": {
      "code": "AED",
      "currencyCode": "string"
    },
    "encodedKey": "string",
    "expireDate": "2016-09-06T13:37:50+03:00",
    "exposureLimitType": "APPROVED_AMOUNT",
    "holderKey": "string",
    "holderType": "CLIENT",
    "id": "string",
    "lastModifiedDate": "2016-09-06T13:37:50+03:00",
    "notes": "string",
    "startDate": "2016-09-06T13:37:50+03:00",
    "state": "PENDING_APPROVAL",
    "subState": "PENDING_APPROVAL"
  }
]

Responses

Status Meaning Description Schema
200 OK Credit arrangements list returned. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Client not found. ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [CreditArrangement] [Represents a credit arrangement.] none
Ā» amount (required) number The maximum credit amount the client can be exposed to. none
Ā» approvedDate string(date-time) The date when the credit arrangement was approved. read-only
Ā» availableCreditAmount number The available amount of the credit arrangement. read-only
Ā» closedDate string(date-time) The date when the credit arrangement was closed. read-only
Ā» consumedCreditAmount number The consumed amount of the credit arrangement, which is calculated as the difference between the amount and available amount. read-only
Ā» creationDate string(date-time) The date when the credit arrangement was created. read-only
Ā» currency Currency Represents a currency. To represent a fiat currency, the code value and the currencyCode value must be the ISO-4217 currency code of the fiat currency. To represent a non-fiat currency, the code value must be NON_FIAT and the currencyCode value must be the currency code of the non-fiat currency. none
»» code string Fiat(ISO-4217) currency code or NON_FIAT for non fiat currencies. none
»» currencyCode string Currency code for NON_FIAT currency. none
Ā» encodedKey string The encoded key of the credit arrangement, it is auto generated, and unique. read-only
Ā» expireDate (required) string(date-time) The date when the credit arrangement expires. none
Ā» exposureLimitType string The type of exposure limit calculation method used for the credit arrangement. none
Ā» holderKey (required) string The encoded key of the credit arrangement holder (individual client or group). none
Ā» holderType (required) string The type of the credit arrangement holder (individual client or group). none
Ā» id string The ID of credit arrangement, can be generated and customized, and must be unique. none
Ā» lastModifiedDate string(date-time) The last date when the credit arrangement was modified. read-only
Ā» notes string The notes or description of the credit arrangement. none
Ā» startDate (required) string(date-time) The start date from which the credit arrangement became active. none
Ā» state string The state of the credit arrangement. read-only
Ā» subState string The substate of credit arrangement. read-only

Enumerated Values

Property Value
code AED
code AFN
code ALL
code AMD
code ANG
code AOA
code ARS
code AUD
code AWG
code AZN
code BAM
code BBD
code BDT
code BGN
code BHD
code BIF
code BMD
code BND
code BOB
code BOV
code BRL
code BSD
code BTN
code BWP
code BYR
code BYN
code BZD
code CAD
code CDF
code CHE
code CHF
code CHW
code CLF
code CLP
code CNY
code COP
code COU
code CRC
code CUC
code CUP
code CVE
code CZK
code DJF
code DKK
code DOP
code DZD
code EGP
code ERN
code ETB
code EUR
code FJD
code FKP
code GBP
code GEL
code GHS
code GIP
code GMD
code GNF
code GTQ
code GYD
code HKD
code HNL
code HRK
code HTG
code HUF
code IDR
code ILS
code INR
code IQD
code IRR
code ISK
code JMD
code JOD
code JPY
code KES
code KGS
code KHR
code KMF
code KPW
code KRW
code KWD
code KYD
code KZT
code LAK
code LBP
code LKR
code LRD
code LSL
code LTL
code LVL
code LYD
code MAD
code MDL
code MGA
code MKD
code MMK
code MNT
code MOP
code MRO
code MRU
code MUR
code MVR
code MWK
code MXN
code MXV
code MYR
code MZN
code NAD
code NGN
code NIO
code NOK
code NPR
code NZD
code OMR
code PAB
code PEN
code PGK
code PHP
code PKR
code PLN
code PYG
code QAR
code RON
code RSD
code RUB
code RWF
code SAR
code SBD
code SCR
code SDG
code SEK
code SGD
code SHP
code SLL
code SOS
code SRD
code STD
code STN
code SVC
code SYP
code SZL
code THB
code TJS
code TMT
code TND
code TOP
code TRY
code TTD
code TWD
code TZS
code UAH
code UGX
code USD
code USN
code UYI
code UYU
code UYW
code UZS
code VED
code VEF
code VES
code VND
code VUV
code WST
code XAG
code XAU
code XAF
code XBA
code XBB
code XBC
code XBD
code XCD
code XDR
code XOF
code XPD
code XPF
code XPT
code XSU
code XTS
code XUA
code XXX
code YER
code ZAR
code ZIG
code ZMK
code ZWL
code ZMW
code SSP
code NON_FIAT
exposureLimitType APPROVED_AMOUNT
exposureLimitType OUTSTANDING_AMOUNT
holderType CLIENT
holderType GROUP
state PENDING_APPROVAL
state APPROVED
state ACTIVE
state CLOSED
state WITHDRAWN
state REJECTED
subState PENDING_APPROVAL
subState APPROVED
subState ACTIVE
subState CLOSED
subState WITHDRAWN
subState REJECTED

Response Headers

Status Header Type Format Description
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

Comments

Allows you to retrieve or create comments. Comments have information such as the parent key, user key, creation date, last modified date and text.

getComments (Comments)

Code samples

# You can also use wget
curl -X GET /comments?ownerType=CLIENT&ownerKey=string \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /comments?ownerType=CLIENT&ownerKey=string HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/comments',
  method: 'get',
  data: '?ownerType=CLIENT&ownerKey=string',
  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/comments',
  params: {
  'ownerType' => 'string',
'ownerKey' => 'string'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/comments', params={
  'ownerType': 'CLIENT',  'ownerKey': 'string'
}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/comments', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/comments?ownerType=CLIENT&ownerKey=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/comments", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /comments

Get comments for an entity

Parameters

Name Type Description In
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query
ownerType (required) string The type of the entity that owns the comment: CLIENT, GROUP, LOAN_ACCOUNT, DEPOSIT_ACCOUNT, BRANCH, CENTRE, USER, LOAN_PRODUCT, or SAVINGS_PRODUCT. query
ownerKey (required) string The ID or key of the entity that owns the comment. query

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF
ownerType CLIENT
ownerType GROUP
ownerType LOAN_PRODUCT
ownerType SAVINGS_PRODUCT
ownerType CENTRE
ownerType BRANCH
ownerType USER
ownerType LOAN_ACCOUNT
ownerType DEPOSIT_ACCOUNT
ownerType ID_DOCUMENT
ownerType LINE_OF_CREDIT
ownerType GL_JOURNAL_ENTRY

Example responses

200 Response

[
  {
    "creationDate": "2016-09-06T13:37:50+03:00",
    "encodedKey": "string",
    "lastModifiedDate": "2016-09-06T13:37:50+03:00",
    "ownerKey": "string",
    "ownerType": "CLIENT",
    "text": "string",
    "userKey": "string"
  }
]

Responses

Status Meaning Description Schema
200 OK Comments have been returned. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The entity that owns the comment was not found. ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [Comment] [Represents information about the comment data transfer object.] none
Ā» creationDate string(date-time) The creation date of the comment. read-only
Ā» encodedKey string The comments's encoded key, which is auto-generated and unique. read-only
Ā» lastModifiedDate string(date-time) The last date when this comment was modified. read-only
Ā» ownerKey string The encoded key of the entity that owns this comment. none
Ā» ownerType string The type of the entity that owns this comment. none
Ā» text string The message in the comment. none
Ā» userKey string The user's key. read-only

Enumerated Values

Property Value
ownerType CLIENT
ownerType GROUP
ownerType LOAN_PRODUCT
ownerType SAVINGS_PRODUCT
ownerType CENTRE
ownerType BRANCH
ownerType USER
ownerType LOAN_ACCOUNT
ownerType DEPOSIT_ACCOUNT
ownerType ID_DOCUMENT
ownerType LINE_OF_CREDIT
ownerType GL_JOURNAL_ENTRY

Response Headers

Status Header Type Format Description
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

createComment (Comments)

Code samples

# You can also use wget
curl -X POST /comments \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /comments HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/comments',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/comments',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/comments', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/comments', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/comments");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/comments", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /comments

Create a new comment for an entity.

Body parameter

{
  "ownerKey": "string",
  "ownerType": "CLIENT",
  "text": "string"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
body (required) Comment The comment to be created, which contains the message, the key, and entity type: CLIENT, GROUP, LOAN_ACCOUNT, DEPOSIT_ACCOUNT, BRANCH, CENTRE, USER, LOAN_PRODUCT, or SAVINGS_PRODUCT. body

Example responses

201 Response

{
  "creationDate": "2016-09-06T13:37:50+03:00",
  "encodedKey": "string",
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "ownerKey": "string",
  "ownerType": "CLIENT",
  "text": "string",
  "userKey": "string"
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
201 Created The comment has been created. Comment
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

Communications

Allows retrieval of communication messages, sending messages and resending the ones that failed.

searchSorted (Communications)

Code samples

# You can also use wget
curl -X POST /communications/messages:searchSorted \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json'

POST /communications/messages:searchSorted HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/communications/messages:searchSorted',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.post '/communications/messages:searchSorted',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.post('/communications/messages:searchSorted', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/communications/messages:searchSorted', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/communications/messages:searchSorted");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/communications/messages:searchSorted", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /communications/messages:searchSorted

Searching sorted communication messages

Body parameter

{
  "filterCriteria": [
    {
      "field": "encodedKey",
      "operator": "EQUALS",
      "secondValue": "string",
      "value": "string",
      "values": [
        "string"
      ]
    }
  ],
  "sortingCriteria": {
    "field": "encodedKey",
    "order": "ASC"
  }
}

Parameters

Name Type Description In
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query
detailsLevel string The level of details to return: FULL means the full details of the object will be returned (custom field values, address, contact info, or any other related objects) and BASIC will return only the first level elements of the object. query
body (required) CommunicationMessagesSearchSortCriteria Represents search criteria for communication messages. body

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

[
  {
    "body": "string",
    "clientKey": "string",
    "creationDate": "2016-09-06T13:37:50+03:00",
    "depositAccountKey": "string",
    "destination": "string",
    "encodedKey": "string",
    "event": "MANUAL",
    "failureCause": "string",
    "failureReason": "MESSAGING_EXCEPTION",
    "groupKey": "string",
    "loanAccountKey": "string",
    "numRetries": 0,
    "referenceId": "string",
    "repaymentKey": "string",
    "sendDate": "2016-09-06T13:37:50+03:00",
    "senderKey": "string",
    "state": "SENT",
    "subject": "string",
    "templateKey": "string",
    "type": "EMAIL",
    "userKey": "string"
  }
]

Responses

Status Meaning Description Schema
200 OK Result of communication message search. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [CommunicationMessage] [Represents a communication message.] none
Ā» body string The contents of the message. none
Ā» clientKey string The client the message was sent to. none
Ā» creationDate string(date-time) The date the communication message was created in UTC. none
Ā» depositAccountKey string The deposit account that triggered this message. none
Ā» destination string The destination (phone number or email address) this message was sent to. none
Ā» encodedKey string The encoded key of the communication message, which is generated automatically, and must be unique. none
Ā» event string The event that triggered this message. none
Ā» failureCause string The failure code if the message failed to send. none
Ā» failureReason string The reason for the communication message failure. none
Ā» groupKey string The group the message was sent to. none
Ā» loanAccountKey string The loan account that triggered this message. none
Ā» numRetries integer(int32) The number of retries to send the message. none
Ā» referenceId string The reference ID of the communication message, generated by the SMS dispatcher. none
Ā» repaymentKey string The repayment that triggered this message. none
Ā» sendDate string(date-time) The date the communication message was sent in UTC. none
Ā» senderKey string The encoded key of the sender. If specified, it should be the encoded key of the current user. none
Ā» state string The state of the message. none
Ā» subject string The subject of the message. none
Ā» templateKey string The communication message template key. none
Ā» type string The type of communication message. none
Ā» userKey string The user the message was sent to. none

Enumerated Values

Property Value
event MANUAL
event DO_NOTHING
event CLIENT_CREATED
event CLIENT_APPROVED
event GROUP_ACTIVITY
event GROUP_CREATED
event LOAN_CREATED
event INTEREST_RATE_CHANGED
event CLIENT_REJECTED
event CLIENT_ACTIVITY
event LOAN_REPAYMENT
event LOAN_REPAYMENT_REVERSAL
event FEE_APPLIED
event FEE_ADJUSTED
event FEE_CHARGED
event PENALTY_APPLIED
event PENALTY_ADJUSTMENT
event FEES_DUE_REDUCED
event FEE_REDUCTION_ADJUSTMENT
event LOAN_APPROVAL
event LOAN_ACCOUNT_CLOSURE
event LOAN_ACCOUNT_WRITE_OFF
event LOAN_ACCOUNT_REJECTION
event LOAN_ACCOUNT_RESCHEDULED
event LOAN_ACCOUNT_REFINANCED
event REPAYMENT_REMINDER
event ACCOUNT_IN_ARREARS
event LOAN_DISBURSEMENT
event LOAN_DISBURSEMENT_REVERSAL
event LOAN_ACCOUNT_ACTIVITY
event LOAN_ANTICIPATED_DISBURSEMENT
event SAVINGS_CREATED
event SAVINGS_DEPOSIT
event SAVINGS_DEPOSIT_REVERSAL
event REAPPLIED_SAVINGS_DEPOSIT
event SAVINGS_APPROVAL
event SAVINGS_ACCOUNT_ACTIVATED
event SAVINGS_ACCOUNT_CLOSURE
event SAVINGS_ACCOUNT_REJECTION
event SAVINGS_WITHDRAWAL
event SAVINGS_WITHDRAWAL_REVERSAL
event REAPPLIED_SAVINGS_WITHDRAWAL
event SAVINGS_ACCOUNT_ACTIVITY
event DEPOSIT_INTEREST_APPLIED
event DEPOSIT_INTEREST_APPLIED_ADJUSTMENT
event ACCOUNT_AUTHORISATION_HOLD_CREATED
event ACCOUNT_AUTHORISATION_HOLD_REVERSED
event ACCOUNT_AUTHORISATION_HOLD_SETTLED
event CARDS_AUTHORISATION_HOLD_CREATED
event CARDS_AUTHORISATION_HOLD_SETTLED
event CARDS_AUTHORISATION_HOLD_AMOUNT_DECREASED
event CARDS_AUTHORISATION_HOLD_AMOUNT_INCREASED
event CARDS_AUTHORISATION_HOLD_EXPIRED
event CARDS_AUTHORISATION_HOLD_REVERSED
event PORTAL_ACTIVATED
event PORTAL_PASSWORD_RESET
event END_OF_DAY_PROCESSING_COMPLETED
event DATA_ACCESS_STATE_CHANGED
event CREDIT_ARRANGEMENT_CREATED
event CREDIT_ARRANGEMENT_CLOSED
event CREDIT_ARRANGEMENT_APPROVED
event CREDIT_ARRANGEMENT_REJECTED
event CREDIT_ARRANGEMENT_WITHDRAWN
event CREDIT_ARRANGEMENT_DELETED
event CREDIT_ARRANGEMENT_ACCOUNT_ADDED
event CREDIT_ARRANGEMENT_ACCOUNT_REMOVED
event CREDIT_ARRANGEMENT_EDITED
event PAYMENT_ORDER_ACTIVITY
event COLLECTION_ORDER_ACTIVITY
event JOURNAL_ENTRY_ADDED
event JOURNAL_ENTRY_ADJUSTED
event SAVINGS_TRANSACTION_EDITED
event CARD_WITHDRAWAL_REVERSAL
event CARD_DEPOSIT_REVERSAL
failureReason MESSAGING_EXCEPTION
failureReason INVALID_SMTP_CREDENTIALS
failureReason UNSUPPORTED_ENCODING_EXCEPTION
failureReason EMAIL_SERVICE_NOT_ENABLED
failureReason SMS_TOO_LONG
failureReason SMS_SERVICE_NOT_ENABLED
failureReason SMS_NOT_SENT
failureReason SMS_SERVICE_ERROR
failureReason SMS_CONNECTION_EXCEPTION
failureReason WEBHOOK_NOTIFICATIONS_DISABLED
failureReason INVALID_HTTP_RESPONSE
failureReason HTTP_ERROR_WHILE_SENDING
failureReason INVALID_JSON_BODY_SYNTAX
failureReason MISSING_TEMPLATE_KEY
failureReason MAX_MESSAGE_SIZE_LIMIT_EXCEEDED
failureReason UNDEFINED_DESTINATION
failureReason INVALID_HTTP_PROTOCOL
failureReason BLACKLISTED_URL
failureReason INVALID_SMS_GATEWAY_CREDENTIALS
failureReason MISSING_SMS_RECIPIENT
failureReason SMS_GATEWAY_ERROR
failureReason MISSING_EMAIL_RECIPIENT_ADDRESS
failureReason OTHER
state SENT
state QUEUED
state QUEUED_FOR_STREAM
state WAITING
state SENDING_ASYNC
state FAILED
type EMAIL
type SMS
type WEB_HOOK
type EVENT_STREAM
type TASK

Response Headers

Status Header Type Format Description
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

getByEncodedKey (Communications)

Code samples

# You can also use wget
curl -X GET /communications/messages/{encodedKey} \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /communications/messages/{encodedKey} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/communications/messages/{encodedKey}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/communications/messages/{encodedKey}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/communications/messages/{encodedKey}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/communications/messages/{encodedKey}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/communications/messages/{encodedKey}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/communications/messages/{encodedKey}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /communications/messages/{encodedKey}

Get communication message

Parameters

Name Type Description In
encodedKey (required) string The encoded key of the message to be returned. path
detailsLevel string The level of details to return: FULL means the full details of the object will be returned (custom field values, address, contact info, or any other related objects) and BASIC will return only the first level elements of the object. query

Enumerated Values

Parameter Value
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

{
  "body": "string",
  "clientKey": "string",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "depositAccountKey": "string",
  "destination": "string",
  "encodedKey": "string",
  "event": "MANUAL",
  "failureCause": "string",
  "failureReason": "MESSAGING_EXCEPTION",
  "groupKey": "string",
  "loanAccountKey": "string",
  "numRetries": 0,
  "referenceId": "string",
  "repaymentKey": "string",
  "sendDate": "2016-09-06T13:37:50+03:00",
  "senderKey": "string",
  "state": "SENT",
  "subject": "string",
  "templateKey": "string",
  "type": "EMAIL",
  "userKey": "string"
}

Responses

Status Meaning Description Schema
200 OK Communication message returned. CommunicationMessage
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Communication message not found. ErrorResponse

send (Communications)

Code samples

# You can also use wget
curl -X POST /communications/messages \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /communications/messages HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/communications/messages',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/communications/messages',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/communications/messages', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/communications/messages', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/communications/messages");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/communications/messages", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /communications/messages

Send communication message

Body parameter

{
  "body": "string",
  "clientKey": "string",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "depositAccountKey": "string",
  "destination": "string",
  "encodedKey": "string",
  "event": "MANUAL",
  "failureCause": "string",
  "failureReason": "MESSAGING_EXCEPTION",
  "groupKey": "string",
  "loanAccountKey": "string",
  "numRetries": 0,
  "referenceId": "string",
  "repaymentKey": "string",
  "sendDate": "2016-09-06T13:37:50+03:00",
  "senderKey": "string",
  "state": "SENT",
  "subject": "string",
  "templateKey": "string",
  "type": "EMAIL",
  "userKey": "string"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
body (required) CommunicationMessage Communication message to be created. body

Example responses

201 Response

{
  "body": "string",
  "clientKey": "string",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "depositAccountKey": "string",
  "destination": "string",
  "encodedKey": "string",
  "event": "MANUAL",
  "failureCause": "string",
  "failureReason": "MESSAGING_EXCEPTION",
  "groupKey": "string",
  "loanAccountKey": "string",
  "numRetries": 0,
  "referenceId": "string",
  "repaymentKey": "string",
  "sendDate": "2016-09-06T13:37:50+03:00",
  "senderKey": "string",
  "state": "SENT",
  "subject": "string",
  "templateKey": "string",
  "type": "EMAIL",
  "userKey": "string"
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
201 Created Communication message sent. CommunicationMessage
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

enqueueByDate (Communications)

Code samples

# You can also use wget
curl -X POST /communications/messages:resendAsyncByDate \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /communications/messages:resendAsyncByDate HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/communications/messages:resendAsyncByDate',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/communications/messages:resendAsyncByDate',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/communications/messages:resendAsyncByDate', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/communications/messages:resendAsyncByDate', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/communications/messages:resendAsyncByDate");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/communications/messages:resendAsyncByDate", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /communications/messages:resendAsyncByDate

Resend failed communication message(s) asynchronously by date

Body parameter

{
  "endDate": "2016-09-06T13:37:50+03:00",
  "startDate": "2016-09-06T13:37:50+03:00",
  "templateTypes": [
    "EMAIL"
  ]
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
body (required) CommunicationMessageEnqueueAction Resend failed communication message(s) asynchronously by date body

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
200 OK Communication message was resent asynchronously. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Communication message not found. ErrorResponse

Code samples

# You can also use wget
curl -X POST /communications/messages:search \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json'

POST /communications/messages:search HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/communications/messages:search',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.post '/communications/messages:search',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.post('/communications/messages:search', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/communications/messages:search', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/communications/messages:search");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/communications/messages:search", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /communications/messages:search

Searching communication messages

For more information on performing searches, please read the Searching for Records section above.

Body parameter

[
  {
    "field": "encodedKey",
    "operator": "EQUALS",
    "secondValue": "string",
    "value": "string",
    "values": [
      "string"
    ]
  }
]

Parameters

Name Type Description In
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query
detailsLevel string The level of details to return: FULL means the full details of the object will be returned (custom field values, address, contact info, or any other related objects) and BASIC will return only the first level elements of the object. query
body (required) CommunicationMessageFilterCriteria Represents search criteria for communication messages. body

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

[
  {
    "body": "string",
    "clientKey": "string",
    "creationDate": "2016-09-06T13:37:50+03:00",
    "depositAccountKey": "string",
    "destination": "string",
    "encodedKey": "string",
    "event": "MANUAL",
    "failureCause": "string",
    "failureReason": "MESSAGING_EXCEPTION",
    "groupKey": "string",
    "loanAccountKey": "string",
    "numRetries": 0,
    "referenceId": "string",
    "repaymentKey": "string",
    "sendDate": "2016-09-06T13:37:50+03:00",
    "senderKey": "string",
    "state": "SENT",
    "subject": "string",
    "templateKey": "string",
    "type": "EMAIL",
    "userKey": "string"
  }
]

Responses

Status Meaning Description Schema
200 OK Result of communication message search. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [CommunicationMessage] [Represents a communication message.] none
Ā» body string The contents of the message. none
Ā» clientKey string The client the message was sent to. none
Ā» creationDate string(date-time) The date the communication message was created in UTC. none
Ā» depositAccountKey string The deposit account that triggered this message. none
Ā» destination string The destination (phone number or email address) this message was sent to. none
Ā» encodedKey string The encoded key of the communication message, which is generated automatically, and must be unique. none
Ā» event string The event that triggered this message. none
Ā» failureCause string The failure code if the message failed to send. none
Ā» failureReason string The reason for the communication message failure. none
Ā» groupKey string The group the message was sent to. none
Ā» loanAccountKey string The loan account that triggered this message. none
Ā» numRetries integer(int32) The number of retries to send the message. none
Ā» referenceId string The reference ID of the communication message, generated by the SMS dispatcher. none
Ā» repaymentKey string The repayment that triggered this message. none
Ā» sendDate string(date-time) The date the communication message was sent in UTC. none
Ā» senderKey string The encoded key of the sender. If specified, it should be the encoded key of the current user. none
Ā» state string The state of the message. none
Ā» subject string The subject of the message. none
Ā» templateKey string The communication message template key. none
Ā» type string The type of communication message. none
Ā» userKey string The user the message was sent to. none

Enumerated Values

Property Value
event MANUAL
event DO_NOTHING
event CLIENT_CREATED
event CLIENT_APPROVED
event GROUP_ACTIVITY
event GROUP_CREATED
event LOAN_CREATED
event INTEREST_RATE_CHANGED
event CLIENT_REJECTED
event CLIENT_ACTIVITY
event LOAN_REPAYMENT
event LOAN_REPAYMENT_REVERSAL
event FEE_APPLIED
event FEE_ADJUSTED
event FEE_CHARGED
event PENALTY_APPLIED
event PENALTY_ADJUSTMENT
event FEES_DUE_REDUCED
event FEE_REDUCTION_ADJUSTMENT
event LOAN_APPROVAL
event LOAN_ACCOUNT_CLOSURE
event LOAN_ACCOUNT_WRITE_OFF
event LOAN_ACCOUNT_REJECTION
event LOAN_ACCOUNT_RESCHEDULED
event LOAN_ACCOUNT_REFINANCED
event REPAYMENT_REMINDER
event ACCOUNT_IN_ARREARS
event LOAN_DISBURSEMENT
event LOAN_DISBURSEMENT_REVERSAL
event LOAN_ACCOUNT_ACTIVITY
event LOAN_ANTICIPATED_DISBURSEMENT
event SAVINGS_CREATED
event SAVINGS_DEPOSIT
event SAVINGS_DEPOSIT_REVERSAL
event REAPPLIED_SAVINGS_DEPOSIT
event SAVINGS_APPROVAL
event SAVINGS_ACCOUNT_ACTIVATED
event SAVINGS_ACCOUNT_CLOSURE
event SAVINGS_ACCOUNT_REJECTION
event SAVINGS_WITHDRAWAL
event SAVINGS_WITHDRAWAL_REVERSAL
event REAPPLIED_SAVINGS_WITHDRAWAL
event SAVINGS_ACCOUNT_ACTIVITY
event DEPOSIT_INTEREST_APPLIED
event DEPOSIT_INTEREST_APPLIED_ADJUSTMENT
event ACCOUNT_AUTHORISATION_HOLD_CREATED
event ACCOUNT_AUTHORISATION_HOLD_REVERSED
event ACCOUNT_AUTHORISATION_HOLD_SETTLED
event CARDS_AUTHORISATION_HOLD_CREATED
event CARDS_AUTHORISATION_HOLD_SETTLED
event CARDS_AUTHORISATION_HOLD_AMOUNT_DECREASED
event CARDS_AUTHORISATION_HOLD_AMOUNT_INCREASED
event CARDS_AUTHORISATION_HOLD_EXPIRED
event CARDS_AUTHORISATION_HOLD_REVERSED
event PORTAL_ACTIVATED
event PORTAL_PASSWORD_RESET
event END_OF_DAY_PROCESSING_COMPLETED
event DATA_ACCESS_STATE_CHANGED
event CREDIT_ARRANGEMENT_CREATED
event CREDIT_ARRANGEMENT_CLOSED
event CREDIT_ARRANGEMENT_APPROVED
event CREDIT_ARRANGEMENT_REJECTED
event CREDIT_ARRANGEMENT_WITHDRAWN
event CREDIT_ARRANGEMENT_DELETED
event CREDIT_ARRANGEMENT_ACCOUNT_ADDED
event CREDIT_ARRANGEMENT_ACCOUNT_REMOVED
event CREDIT_ARRANGEMENT_EDITED
event PAYMENT_ORDER_ACTIVITY
event COLLECTION_ORDER_ACTIVITY
event JOURNAL_ENTRY_ADDED
event JOURNAL_ENTRY_ADJUSTED
event SAVINGS_TRANSACTION_EDITED
event CARD_WITHDRAWAL_REVERSAL
event CARD_DEPOSIT_REVERSAL
failureReason MESSAGING_EXCEPTION
failureReason INVALID_SMTP_CREDENTIALS
failureReason UNSUPPORTED_ENCODING_EXCEPTION
failureReason EMAIL_SERVICE_NOT_ENABLED
failureReason SMS_TOO_LONG
failureReason SMS_SERVICE_NOT_ENABLED
failureReason SMS_NOT_SENT
failureReason SMS_SERVICE_ERROR
failureReason SMS_CONNECTION_EXCEPTION
failureReason WEBHOOK_NOTIFICATIONS_DISABLED
failureReason INVALID_HTTP_RESPONSE
failureReason HTTP_ERROR_WHILE_SENDING
failureReason INVALID_JSON_BODY_SYNTAX
failureReason MISSING_TEMPLATE_KEY
failureReason MAX_MESSAGE_SIZE_LIMIT_EXCEEDED
failureReason UNDEFINED_DESTINATION
failureReason INVALID_HTTP_PROTOCOL
failureReason BLACKLISTED_URL
failureReason INVALID_SMS_GATEWAY_CREDENTIALS
failureReason MISSING_SMS_RECIPIENT
failureReason SMS_GATEWAY_ERROR
failureReason MISSING_EMAIL_RECIPIENT_ADDRESS
failureReason OTHER
state SENT
state QUEUED
state QUEUED_FOR_STREAM
state WAITING
state SENDING_ASYNC
state FAILED
type EMAIL
type SMS
type WEB_HOOK
type EVENT_STREAM
type TASK

Response Headers

Status Header Type Format Description
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

resend (Communications)

Code samples

# You can also use wget
curl -X POST /communications/messages:resend \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /communications/messages:resend HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/communications/messages:resend',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/communications/messages:resend',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/communications/messages:resend', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/communications/messages:resend', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/communications/messages:resend");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/communications/messages:resend", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /communications/messages:resend

Resend failed communication message(s)

Body parameter

{
  "messages": [
    "string"
  ]
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
body (required) CommunicationMessageAction Represents a list of failed communication messages to resend. body

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
202 Accepted The operation was accepted. You can check the status of each notification by using the search endpoint or by making a GET request. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Communication message not found. ErrorResponse

enqueueByKeys (Communications)

Code samples

# You can also use wget
curl -X POST /communications/messages:resendAsyncByKeys \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /communications/messages:resendAsyncByKeys HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/communications/messages:resendAsyncByKeys',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/communications/messages:resendAsyncByKeys',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/communications/messages:resendAsyncByKeys', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/communications/messages:resendAsyncByKeys', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/communications/messages:resendAsyncByKeys");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/communications/messages:resendAsyncByKeys", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /communications/messages:resendAsyncByKeys

Resend failed communication message(s) asynchronously using keys

Body parameter

{
  "messages": [
    "string"
  ]
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
body (required) CommunicationMessageAction Resend failed communication message(s) asynchronously using keys body

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
200 OK Communication message was resent asynchronously. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Communication message not found. ErrorResponse

Credit Arrangements

Allows you to retrieve, create, update and delete credit arrangements.

removeAccount (Credit Arrangements)

Code samples

# You can also use wget
curl -X POST /creditarrangements/{creditArrangementId}:removeAccount \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /creditarrangements/{creditArrangementId}:removeAccount HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/creditarrangements/{creditArrangementId}:removeAccount',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/creditarrangements/{creditArrangementId}:removeAccount',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/creditarrangements/{creditArrangementId}:removeAccount', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/creditarrangements/{creditArrangementId}:removeAccount', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/creditarrangements/{creditArrangementId}:removeAccount");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/creditarrangements/{creditArrangementId}:removeAccount", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /creditarrangements/{creditArrangementId}:removeAccount

Remove account from credit arrangement

Body parameter

{
  "accountId": "string",
  "accountType": "LOAN"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
creditArrangementId (required) string The ID or encoded key of the credit arrangement for an account to be removed. path
body (required) RemoveCreditArrangementAccountInput The account ID and type to be removed from the credit arrangement. body

Example responses

200 Response

{
  "depositAccounts": [
    {
      "accountHolderKey": "string",
      "accountHolderType": "CLIENT",
      "accountState": "PENDING_APPROVAL",
      "accountType": "CURRENT_ACCOUNT",
      "accruedAmounts": {
        "interestAccrued": 0,
        "negativeInterestAccrued": 0,
        "overdraftInterestAccrued": 0,
        "technicalOverdraftInterestAccrued": 0
      },
      "activationDate": "2016-09-06T13:37:50+03:00",
      "approvedDate": "2016-09-06T13:37:50+03:00",
      "assignedBranchKey": "string",
      "assignedCentreKey": "string",
      "assignedUserKey": "string",
      "balances": {
        "availableBalance": 0,
        "blockedBalance": 0,
        "feesDue": 0,
        "forwardAvailableBalance": 0,
        "holdBalance": 0,
        "lockedBalance": 0,
        "overdraftAmount": 0,
        "overdraftInterestDue": 0,
        "technicalOverdraftAmount": 0,
        "technicalOverdraftInterestDue": 0,
        "totalBalance": 0
      },
      "closedDate": "2016-09-06T13:37:50+03:00",
      "creationDate": "2016-09-06T13:37:50+03:00",
      "creditArrangementKey": "string",
      "currencyCode": "string",
      "encodedKey": "string",
      "id": "string",
      "interestSettings": {
        "interestPaymentSettings": {
          "interestPaymentDates": [
            {
              "day": 0,
              "month": 0
            }
          ],
          "interestPaymentPoint": "FIRST_DAY_OF_MONTH"
        },
        "interestRateSettings": {
          "encodedKey": "string",
          "interestChargeFrequency": "ANNUALIZED",
          "interestChargeFrequencyCount": 0,
          "interestRate": 0,
          "interestRateReviewCount": 0,
          "interestRateReviewUnit": "DAYS",
          "interestRateSource": "FIXED_INTEREST_RATE",
          "interestRateTerms": "FIXED",
          "interestRateTiers": [
            {
              "encodedKey": "string",
              "endingBalance": 0,
              "endingDay": 0,
              "interestRate": 0
            }
          ],
          "interestSpread": 0
        }
      },
      "internalControls": {
        "maxDepositBalance": 0,
        "maxWithdrawalAmount": 0,
        "recommendedDepositAmount": 0,
        "targetAmount": 0
      },
      "lastAccountAppraisalDate": "2016-09-06T13:37:50+03:00",
      "lastInterestCalculationDate": "2016-09-06T13:37:50+03:00",
      "lastInterestReviewDate": "2016-09-06T13:37:50+03:00",
      "lastInterestStoredDate": "2016-09-06T13:37:50+03:00",
      "lastModifiedDate": "2016-09-06T13:37:50+03:00",
      "lastOverdraftInterestReviewDate": "2016-09-06T13:37:50+03:00",
      "lastSetToArrearsDate": "2016-09-06T13:37:50+03:00",
      "linkedSettlementAccountKeys": [
        "string"
      ],
      "lockedDate": "2016-09-06T13:37:50+03:00",
      "maturityDate": "2016-09-06T13:37:50+03:00",
      "migrationEventKey": "string",
      "name": "string",
      "notes": "string",
      "overdraftInterestSettings": {
        "interestRateSettings": {
          "encodedKey": "string",
          "interestChargeFrequency": "ANNUALIZED",
          "interestChargeFrequencyCount": 0,
          "interestRate": 0,
          "interestRateReviewCount": 0,
          "interestRateReviewUnit": "DAYS",
          "interestRateSource": "FIXED_INTEREST_RATE",
          "interestRateTerms": "FIXED",
          "interestRateTiers": [
            {
              "encodedKey": "string",
              "endingBalance": 0,
              "endingDay": 0,
              "interestRate": 0
            }
          ],
          "interestSpread": 0
        }
      },
      "overdraftSettings": {
        "allowOverdraft": true,
        "overdraftExpiryDate": "2016-09-06T13:37:50+03:00",
        "overdraftLimit": 0
      },
      "ownershipHistory": [
        {
          "previousOwnerKey": "string",
          "transferDate": "2016-09-06T13:37:50+03:00"
        }
      ],
      "productTypeKey": "string",
      "withholdingTaxSourceKey": "string"
    }
  ],
  "loanAccounts": [
    {
      "accountArrearsSettings": {
        "dateCalculationMethod": "ACCOUNT_FIRST_WENT_TO_ARREARS",
        "encodedKey": "string",
        "monthlyToleranceDay": 0,
        "nonWorkingDaysMethod": "INCLUDED",
        "toleranceCalculationMethod": "ARREARS_TOLERANCE_PERIOD",
        "toleranceFloorAmount": 0,
        "tolerancePercentageOfOutstandingPrincipal": 0,
        "tolerancePeriod": 0
      },
      "accountHolderKey": "string",
      "accountHolderType": "CLIENT",
      "accountState": "PARTIAL_APPLICATION",
      "accountSubState": "PARTIALLY_DISBURSED",
      "accruedInterest": 0,
      "accruedPenalty": 0,
      "activationTransactionKey": "string",
      "adjustTotalDueForInstallmentsWithDifferentInterval": true,
      "allowOffset": true,
      "approvedDate": "2016-09-06T13:37:50+03:00",
      "arrearsTolerancePeriod": 0,
      "assets": [
        {
          "amount": 0,
          "assetName": "string",
          "depositAccountKey": "string",
          "encodedKey": "string",
          "guarantorKey": "string",
          "guarantorType": "CLIENT",
          "originalAmount": 0,
          "originalCurrency": {
            "code": "AED",
            "currencyCode": "string"
          }
        }
      ],
      "assignedBranchKey": "string",
      "assignedCentreKey": "string",
      "assignedUserKey": "string",
      "balances": {
        "feesBalance": 0,
        "feesDue": 0,
        "feesPaid": 0,
        "holdBalance": 0,
        "interestBalance": 0,
        "interestDue": 0,
        "interestFromArrearsBalance": 0,
        "interestFromArrearsDue": 0,
        "interestFromArrearsPaid": 0,
        "interestPaid": 0,
        "penaltyBalance": 0,
        "penaltyDue": 0,
        "penaltyPaid": 0,
        "principalBalance": 0,
        "principalDue": 0,
        "principalPaid": 0,
        "redrawBalance": 0
      },
      "closedDate": "2016-09-06T13:37:50+03:00",
      "creationDate": "2016-09-06T13:37:50+03:00",
      "creditArrangementKey": "string",
      "currency": {
        "code": "AED",
        "currencyCode": "string"
      },
      "daysInArrears": 0,
      "daysLate": 0,
      "disbursementDetails": {
        "disbursementDate": "2016-09-06T13:37:50+03:00",
        "encodedKey": "string",
        "expectedDisbursementDate": "2016-09-06T13:37:50+03:00",
        "fees": [
          {
            "amount": 0,
            "encodedKey": "string",
            "percentage": 0,
            "predefinedFeeEncodedKey": "string"
          }
        ],
        "firstRepaymentDate": "2016-09-06T13:37:50+03:00",
        "transactionDetails": {
          "encodedKey": "string",
          "internalTransfer": true,
          "targetDepositAccountKey": "string",
          "transactionChannelId": "string",
          "transactionChannelKey": "string"
        }
      },
      "encodedKey": "string",
      "feesSettings": {
        "accruedFee": 0,
        "accruedFeeFromArrears": 0,
        "feeRate": 0
      },
      "fundingSources": [
        {
          "amount": 0,
          "assetName": "string",
          "depositAccountKey": "string",
          "encodedKey": "string",
          "guarantorKey": "string",
          "guarantorType": "CLIENT",
          "id": "string",
          "interestCommission": 0,
          "sharePercentage": 0
        }
      ],
      "futurePaymentsAcceptance": "NO_FUTURE_PAYMENTS",
      "guarantors": [
        {
          "amount": 0,
          "assetName": "string",
          "depositAccountKey": "string",
          "encodedKey": "string",
          "guarantorKey": "string",
          "guarantorType": "CLIENT"
        }
      ],
      "id": "string",
      "interestAccruedInBillingCycle": 0,
      "interestCommission": 0,
      "interestFromArrearsAccrued": 0,
      "interestSettings": {
        "accountInterestRateSettings": [
          {
            "encodedKey": "string",
            "indexSourceKey": "string",
            "interestRate": 0,
            "interestRateCeilingValue": 0,
            "interestRateFloorValue": 0,
            "interestRateReviewCount": 0,
            "interestRateReviewUnit": "DAYS",
            "interestRateSource": "FIXED_INTEREST_RATE",
            "interestSpread": 0,
            "validFrom": "2016-09-06T13:37:50+03:00"
          }
        ],
        "accrueInterestAfterMaturity": true,
        "accrueLateInterest": true,
        "effectiveInterestRate": 0,
        "interestApplicationDays": {
          "daysInMonth": [
            0
          ],
          "shortMonthHandlingMethod": "LAST_DAY_IN_MONTH"
        },
        "interestApplicationMethod": "AFTER_DISBURSEMENT",
        "interestBalanceCalculationMethod": "ONLY_PRINCIPAL",
        "interestCalculationMethod": "FLAT",
        "interestChargeFrequency": "ANNUALIZED",
        "interestRate": 0,
        "interestRateReviewCount": 0,
        "interestRateReviewUnit": "DAYS",
        "interestRateSource": "FIXED_INTEREST_RATE",
        "interestSpread": 0,
        "interestType": "SIMPLE_INTEREST",
        "pmtAdjustmentThreshold": {
          "method": "WORKING_DAYS",
          "numberOfDays": 0
        }
      },
      "lastAccountAppraisalDate": "2016-09-06T13:37:50+03:00",
      "lastInterestAppliedDate": "2016-09-06T13:37:50+03:00",
      "lastInterestReviewDate": "2016-09-06T13:37:50+03:00",
      "lastLockedDate": "2016-09-06T13:37:50+03:00",
      "lastModifiedDate": "2016-09-06T13:37:50+03:00",
      "lastSetToArrearsDate": "2016-09-06T13:37:50+03:00",
      "lastTaxRateReviewDate": "2016-09-06T13:37:50+03:00",
      "latePaymentsRecalculationMethod": "OVERDUE_INSTALLMENTS_INCREASE",
      "loanAmount": 0,
      "loanName": "string",
      "lockedAccountTotalDueType": "BALANCE_AMOUNT",
      "lockedOperations": [
        "APPLY_INTEREST"
      ],
      "migrationEventKey": "string",
      "modifyInterestForFirstInstallment": true,
      "notes": "string",
      "originalAccountKey": "string",
      "paymentHolidaysAccruedInterest": 0,
      "paymentMethod": "HORIZONTAL",
      "penaltySettings": {
        "loanPenaltyCalculationMethod": "NONE",
        "penaltyRate": 0
      },
      "plannedInstallmentFees": [
        {
          "amount": 0,
          "applyOnDate": "2016-09-06T13:37:50+03:00",
          "encodedKey": "string",
          "installmentKey": "string",
          "installmentNumber": 0,
          "predefinedFeeKey": "string"
        }
      ],
      "prepaymentSettings": {
        "applyInterestOnPrepaymentMethod": "AUTOMATIC",
        "elementsRecalculationMethod": "PRINCIPAL_EXPECTED_FIXED",
        "ercFreeAllowanceAmount": 0,
        "ercFreeAllowancePercentage": 0,
        "prepaymentRecalculationMethod": "NO_RECALCULATION",
        "principalPaidInstallmentStatus": "PARTIALLY_PAID"
      },
      "principalPaymentSettings": {
        "amount": 0,
        "encodedKey": "string",
        "includeFeesInFloorAmount": true,
        "includeInterestInFloorAmount": true,
        "percentage": 0,
        "principalCeilingValue": 0,
        "principalFloorValue": 0,
        "principalPaymentMethod": "FLAT",
        "totalDueAmountFloor": 0,
        "totalDuePayment": "FLAT"
      },
      "productTypeKey": "string",
      "redrawSettings": {
        "restrictNextDueWithdrawal": true
      },
      "rescheduledAccountKey": "string",
      "scheduleSettings": {
        "amortizationPeriod": 0,
        "billingCycle": {
          "days": [
            0
          ]
        },
        "defaultFirstRepaymentDueDateOffset": 0,
        "fixedDaysOfMonth": [
          0
        ],
        "gracePeriod": 0,
        "gracePeriodType": "NONE",
        "hasCustomSchedule": true,
        "paymentPlan": [
          {
            "amount": 0,
            "encodedKey": "string",
            "toInstallment": 0
          }
        ],
        "periodicPayment": 0,
        "previewSchedule": {
          "numberOfPreviewedInstalments": 0
        },
        "principalRepaymentInterval": 0,
        "repaymentInstallments": 0,
        "repaymentPeriodCount": 0,
        "repaymentPeriodUnit": "DAYS",
        "repaymentScheduleMethod": "NONE",
        "scheduleDueDatesMethod": "INTERVAL",
        "shortMonthHandlingMethod": "LAST_DAY_IN_MONTH"
      },
      "settlementAccountKey": "string",
      "taxRate": 0,
      "terminationDate": "2016-09-06T13:37:50+03:00",
      "tranches": [
        {
          "amount": 0,
          "disbursementDetails": {
            "disbursementTransactionKey": "string",
            "expectedDisbursementDate": "2016-09-06T13:37:50+03:00"
          },
          "encodedKey": "string",
          "fees": [
            {
              "amount": 0,
              "encodedKey": "string",
              "percentage": 0,
              "predefinedFeeEncodedKey": "string"
            }
          ],
          "trancheNumber": 0
        }
      ]
    }
  ]
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
200 OK Account removed from the credit arrangement. CreditArrangementAccounts
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Credit arrangement or account not found. ErrorResponse

getAll (Credit Arrangements)

Code samples

# You can also use wget
curl -X GET /creditarrangements \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /creditarrangements HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/creditarrangements',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/creditarrangements',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/creditarrangements', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/creditarrangements', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/creditarrangements");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/creditarrangements", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /creditarrangements

Get credit arrangements

Parameters

Name Type Description In
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query
detailsLevel string The level of details to return: FULL means the full details of the object will be returned (custom field values, address, contact info, or any other related objects) and BASIC will return only the first level elements of the object. query
sortBy string The criteria based on which the records will be sorted. Expected format is , for example, sortBy = field1:ASC,field2:DESC.
Only the following fields can be used: creationDate,startDate,expireDate,amount
Default sorting is done by startDate:DESC
query

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

[
  {
    "amount": 0,
    "approvedDate": "2016-09-06T13:37:50+03:00",
    "availableCreditAmount": 0,
    "closedDate": "2016-09-06T13:37:50+03:00",
    "consumedCreditAmount": 0,
    "creationDate": "2016-09-06T13:37:50+03:00",
    "currency": {
      "code": "AED",
      "currencyCode": "string"
    },
    "encodedKey": "string",
    "expireDate": "2016-09-06T13:37:50+03:00",
    "exposureLimitType": "APPROVED_AMOUNT",
    "holderKey": "string",
    "holderType": "CLIENT",
    "id": "string",
    "lastModifiedDate": "2016-09-06T13:37:50+03:00",
    "notes": "string",
    "startDate": "2016-09-06T13:37:50+03:00",
    "state": "PENDING_APPROVAL",
    "subState": "PENDING_APPROVAL"
  }
]

Responses

Status Meaning Description Schema
200 OK Credit arrangements list returned. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [CreditArrangement] [Represents a credit arrangement.] none
Ā» amount (required) number The maximum credit amount the client can be exposed to. none
Ā» approvedDate string(date-time) The date when the credit arrangement was approved. read-only
Ā» availableCreditAmount number The available amount of the credit arrangement. read-only
Ā» closedDate string(date-time) The date when the credit arrangement was closed. read-only
Ā» consumedCreditAmount number The consumed amount of the credit arrangement, which is calculated as the difference between the amount and available amount. read-only
Ā» creationDate string(date-time) The date when the credit arrangement was created. read-only
Ā» currency Currency Represents a currency. To represent a fiat currency, the code value and the currencyCode value must be the ISO-4217 currency code of the fiat currency. To represent a non-fiat currency, the code value must be NON_FIAT and the currencyCode value must be the currency code of the non-fiat currency. none
»» code string Fiat(ISO-4217) currency code or NON_FIAT for non fiat currencies. none
»» currencyCode string Currency code for NON_FIAT currency. none
Ā» encodedKey string The encoded key of the credit arrangement, it is auto generated, and unique. read-only
Ā» expireDate (required) string(date-time) The date when the credit arrangement expires. none
Ā» exposureLimitType string The type of exposure limit calculation method used for the credit arrangement. none
Ā» holderKey (required) string The encoded key of the credit arrangement holder (individual client or group). none
Ā» holderType (required) string The type of the credit arrangement holder (individual client or group). none
Ā» id string The ID of credit arrangement, can be generated and customized, and must be unique. none
Ā» lastModifiedDate string(date-time) The last date when the credit arrangement was modified. read-only
Ā» notes string The notes or description of the credit arrangement. none
Ā» startDate (required) string(date-time) The start date from which the credit arrangement became active. none
Ā» state string The state of the credit arrangement. read-only
Ā» subState string The substate of credit arrangement. read-only

Enumerated Values

Property Value
code AED
code AFN
code ALL
code AMD
code ANG
code AOA
code ARS
code AUD
code AWG
code AZN
code BAM
code BBD
code BDT
code BGN
code BHD
code BIF
code BMD
code BND
code BOB
code BOV
code BRL
code BSD
code BTN
code BWP
code BYR
code BYN
code BZD
code CAD
code CDF
code CHE
code CHF
code CHW
code CLF
code CLP
code CNY
code COP
code COU
code CRC
code CUC
code CUP
code CVE
code CZK
code DJF
code DKK
code DOP
code DZD
code EGP
code ERN
code ETB
code EUR
code FJD
code FKP
code GBP
code GEL
code GHS
code GIP
code GMD
code GNF
code GTQ
code GYD
code HKD
code HNL
code HRK
code HTG
code HUF
code IDR
code ILS
code INR
code IQD
code IRR
code ISK
code JMD
code JOD
code JPY
code KES
code KGS
code KHR
code KMF
code KPW
code KRW
code KWD
code KYD
code KZT
code LAK
code LBP
code LKR
code LRD
code LSL
code LTL
code LVL
code LYD
code MAD
code MDL
code MGA
code MKD
code MMK
code MNT
code MOP
code MRO
code MRU
code MUR
code MVR
code MWK
code MXN
code MXV
code MYR
code MZN
code NAD
code NGN
code NIO
code NOK
code NPR
code NZD
code OMR
code PAB
code PEN
code PGK
code PHP
code PKR
code PLN
code PYG
code QAR
code RON
code RSD
code RUB
code RWF
code SAR
code SBD
code SCR
code SDG
code SEK
code SGD
code SHP
code SLL
code SOS
code SRD
code STD
code STN
code SVC
code SYP
code SZL
code THB
code TJS
code TMT
code TND
code TOP
code TRY
code TTD
code TWD
code TZS
code UAH
code UGX
code USD
code USN
code UYI
code UYU
code UYW
code UZS
code VED
code VEF
code VES
code VND
code VUV
code WST
code XAG
code XAU
code XAF
code XBA
code XBB
code XBC
code XBD
code XCD
code XDR
code XOF
code XPD
code XPF
code XPT
code XSU
code XTS
code XUA
code XXX
code YER
code ZAR
code ZIG
code ZMK
code ZWL
code ZMW
code SSP
code NON_FIAT
exposureLimitType APPROVED_AMOUNT
exposureLimitType OUTSTANDING_AMOUNT
holderType CLIENT
holderType GROUP
state PENDING_APPROVAL
state APPROVED
state ACTIVE
state CLOSED
state WITHDRAWN
state REJECTED
subState PENDING_APPROVAL
subState APPROVED
subState ACTIVE
subState CLOSED
subState WITHDRAWN
subState REJECTED

Response Headers

Status Header Type Format Description
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

create (Credit Arrangements)

Code samples

# You can also use wget
curl -X POST /creditarrangements \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /creditarrangements HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/creditarrangements',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/creditarrangements',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/creditarrangements', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/creditarrangements', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/creditarrangements");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/creditarrangements", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /creditarrangements

Create credit arrangement

Body parameter

{
  "amount": 0,
  "currency": {
    "code": "AED",
    "currencyCode": "string"
  },
  "expireDate": "2016-09-06T13:37:50+03:00",
  "exposureLimitType": "APPROVED_AMOUNT",
  "holderKey": "string",
  "holderType": "CLIENT",
  "id": "string",
  "notes": "string",
  "startDate": "2016-09-06T13:37:50+03:00"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
body (required) CreditArrangement Credit arrangement to be created. body

Example responses

201 Response

{
  "amount": 0,
  "approvedDate": "2016-09-06T13:37:50+03:00",
  "availableCreditAmount": 0,
  "closedDate": "2016-09-06T13:37:50+03:00",
  "consumedCreditAmount": 0,
  "creationDate": "2016-09-06T13:37:50+03:00",
  "currency": {
    "code": "AED",
    "currencyCode": "string"
  },
  "encodedKey": "string",
  "expireDate": "2016-09-06T13:37:50+03:00",
  "exposureLimitType": "APPROVED_AMOUNT",
  "holderKey": "string",
  "holderType": "CLIENT",
  "id": "string",
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "notes": "string",
  "startDate": "2016-09-06T13:37:50+03:00",
  "state": "PENDING_APPROVAL",
  "subState": "PENDING_APPROVAL"
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
201 Created Credit arrangement created. CreditArrangement
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

changeState (Credit Arrangements)

Code samples

# You can also use wget
curl -X POST /creditarrangements/{creditArrangementId}:changeState \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /creditarrangements/{creditArrangementId}:changeState HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/creditarrangements/{creditArrangementId}:changeState',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/creditarrangements/{creditArrangementId}:changeState',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/creditarrangements/{creditArrangementId}:changeState', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/creditarrangements/{creditArrangementId}:changeState', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/creditarrangements/{creditArrangementId}:changeState");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/creditarrangements/{creditArrangementId}:changeState", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /creditarrangements/{creditArrangementId}:changeState

Change credit arrangement state

Body parameter

{
  "action": "APPROVE",
  "notes": "string"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
creditArrangementId (required) string The ID or encoded key of the credit arrangement to be updated. path
body (required) CreditArrangementAction The state change to perform on the credit arrangement. body

Example responses

200 Response

{
  "amount": 0,
  "approvedDate": "2016-09-06T13:37:50+03:00",
  "availableCreditAmount": 0,
  "closedDate": "2016-09-06T13:37:50+03:00",
  "consumedCreditAmount": 0,
  "creationDate": "2016-09-06T13:37:50+03:00",
  "currency": {
    "code": "AED",
    "currencyCode": "string"
  },
  "encodedKey": "string",
  "expireDate": "2016-09-06T13:37:50+03:00",
  "exposureLimitType": "APPROVED_AMOUNT",
  "holderKey": "string",
  "holderType": "CLIENT",
  "id": "string",
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "notes": "string",
  "startDate": "2016-09-06T13:37:50+03:00",
  "state": "PENDING_APPROVAL",
  "subState": "PENDING_APPROVAL"
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
200 OK Credit arrangement state change posted. CreditArrangement
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Credit arrangement not found. ErrorResponse

Code samples

# You can also use wget
curl -X POST /creditarrangements:search \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json'

POST /creditarrangements:search HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/creditarrangements:search',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.post '/creditarrangements:search',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.post('/creditarrangements:search', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/creditarrangements:search', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/creditarrangements:search");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/creditarrangements:search", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /creditarrangements:search

Search credit arrangements

For more information on performing searches, please read the Searching for Records section above.

Body parameter

{
  "filterCriteria": [
    {
      "field": "id",
      "operator": "EQUALS",
      "secondValue": "string",
      "value": "string",
      "values": [
        "string"
      ]
    }
  ],
  "sortingCriteria": {
    "field": "creationDate",
    "order": "ASC"
  }
}

Parameters

Name Type Description In
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query
detailsLevel string The level of details to return: FULL means the full details of the object will be returned (custom field values, address, contact info, or any other related objects) and BASIC will return only the first level elements of the object. query
body (required) CreditArrangementSearchCriteria The criteria to search the credit arrangements. body

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

[
  {
    "amount": 0,
    "approvedDate": "2016-09-06T13:37:50+03:00",
    "availableCreditAmount": 0,
    "closedDate": "2016-09-06T13:37:50+03:00",
    "consumedCreditAmount": 0,
    "creationDate": "2016-09-06T13:37:50+03:00",
    "currency": {
      "code": "AED",
      "currencyCode": "string"
    },
    "encodedKey": "string",
    "expireDate": "2016-09-06T13:37:50+03:00",
    "exposureLimitType": "APPROVED_AMOUNT",
    "holderKey": "string",
    "holderType": "CLIENT",
    "id": "string",
    "lastModifiedDate": "2016-09-06T13:37:50+03:00",
    "notes": "string",
    "startDate": "2016-09-06T13:37:50+03:00",
    "state": "PENDING_APPROVAL",
    "subState": "PENDING_APPROVAL"
  }
]

Responses

Status Meaning Description Schema
200 OK Result of credit arrangements search. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [CreditArrangement] [Represents a credit arrangement.] none
Ā» amount (required) number The maximum credit amount the client can be exposed to. none
Ā» approvedDate string(date-time) The date when the credit arrangement was approved. read-only
Ā» availableCreditAmount number The available amount of the credit arrangement. read-only
Ā» closedDate string(date-time) The date when the credit arrangement was closed. read-only
Ā» consumedCreditAmount number The consumed amount of the credit arrangement, which is calculated as the difference between the amount and available amount. read-only
Ā» creationDate string(date-time) The date when the credit arrangement was created. read-only
Ā» currency Currency Represents a currency. To represent a fiat currency, the code value and the currencyCode value must be the ISO-4217 currency code of the fiat currency. To represent a non-fiat currency, the code value must be NON_FIAT and the currencyCode value must be the currency code of the non-fiat currency. none
»» code string Fiat(ISO-4217) currency code or NON_FIAT for non fiat currencies. none
»» currencyCode string Currency code for NON_FIAT currency. none
Ā» encodedKey string The encoded key of the credit arrangement, it is auto generated, and unique. read-only
Ā» expireDate (required) string(date-time) The date when the credit arrangement expires. none
Ā» exposureLimitType string The type of exposure limit calculation method used for the credit arrangement. none
Ā» holderKey (required) string The encoded key of the credit arrangement holder (individual client or group). none
Ā» holderType (required) string The type of the credit arrangement holder (individual client or group). none
Ā» id string The ID of credit arrangement, can be generated and customized, and must be unique. none
Ā» lastModifiedDate string(date-time) The last date when the credit arrangement was modified. read-only
Ā» notes string The notes or description of the credit arrangement. none
Ā» startDate (required) string(date-time) The start date from which the credit arrangement became active. none
Ā» state string The state of the credit arrangement. read-only
Ā» subState string The substate of credit arrangement. read-only

Enumerated Values

Property Value
code AED
code AFN
code ALL
code AMD
code ANG
code AOA
code ARS
code AUD
code AWG
code AZN
code BAM
code BBD
code BDT
code BGN
code BHD
code BIF
code BMD
code BND
code BOB
code BOV
code BRL
code BSD
code BTN
code BWP
code BYR
code BYN
code BZD
code CAD
code CDF
code CHE
code CHF
code CHW
code CLF
code CLP
code CNY
code COP
code COU
code CRC
code CUC
code CUP
code CVE
code CZK
code DJF
code DKK
code DOP
code DZD
code EGP
code ERN
code ETB
code EUR
code FJD
code FKP
code GBP
code GEL
code GHS
code GIP
code GMD
code GNF
code GTQ
code GYD
code HKD
code HNL
code HRK
code HTG
code HUF
code IDR
code ILS
code INR
code IQD
code IRR
code ISK
code JMD
code JOD
code JPY
code KES
code KGS
code KHR
code KMF
code KPW
code KRW
code KWD
code KYD
code KZT
code LAK
code LBP
code LKR
code LRD
code LSL
code LTL
code LVL
code LYD
code MAD
code MDL
code MGA
code MKD
code MMK
code MNT
code MOP
code MRO
code MRU
code MUR
code MVR
code MWK
code MXN
code MXV
code MYR
code MZN
code NAD
code NGN
code NIO
code NOK
code NPR
code NZD
code OMR
code PAB
code PEN
code PGK
code PHP
code PKR
code PLN
code PYG
code QAR
code RON
code RSD
code RUB
code RWF
code SAR
code SBD
code SCR
code SDG
code SEK
code SGD
code SHP
code SLL
code SOS
code SRD
code STD
code STN
code SVC
code SYP
code SZL
code THB
code TJS
code TMT
code TND
code TOP
code TRY
code TTD
code TWD
code TZS
code UAH
code UGX
code USD
code USN
code UYI
code UYU
code UYW
code UZS
code VED
code VEF
code VES
code VND
code VUV
code WST
code XAG
code XAU
code XAF
code XBA
code XBB
code XBC
code XBD
code XCD
code XDR
code XOF
code XPD
code XPF
code XPT
code XSU
code XTS
code XUA
code XXX
code YER
code ZAR
code ZIG
code ZMK
code ZWL
code ZMW
code SSP
code NON_FIAT
exposureLimitType APPROVED_AMOUNT
exposureLimitType OUTSTANDING_AMOUNT
holderType CLIENT
holderType GROUP
state PENDING_APPROVAL
state APPROVED
state ACTIVE
state CLOSED
state WITHDRAWN
state REJECTED
subState PENDING_APPROVAL
subState APPROVED
subState ACTIVE
subState CLOSED
subState WITHDRAWN
subState REJECTED

Response Headers

Status Header Type Format Description
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

addAccount (Credit Arrangements)

Code samples

# You can also use wget
curl -X POST /creditarrangements/{creditArrangementId}:addAccount \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /creditarrangements/{creditArrangementId}:addAccount HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/creditarrangements/{creditArrangementId}:addAccount',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/creditarrangements/{creditArrangementId}:addAccount',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/creditarrangements/{creditArrangementId}:addAccount', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/creditarrangements/{creditArrangementId}:addAccount', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/creditarrangements/{creditArrangementId}:addAccount");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/creditarrangements/{creditArrangementId}:addAccount", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /creditarrangements/{creditArrangementId}:addAccount

Add account to credit arrangement

Body parameter

{
  "accountId": "string",
  "accountType": "LOAN"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
creditArrangementId (required) string The ID or encoded key of the credit arrangement for an account to be added. path
body (required) AddCreditArrangementAccountInput The account ID and type to be added to the credit arrangement. body

Example responses

200 Response

{
  "depositAccounts": [
    {
      "accountHolderKey": "string",
      "accountHolderType": "CLIENT",
      "accountState": "PENDING_APPROVAL",
      "accountType": "CURRENT_ACCOUNT",
      "accruedAmounts": {
        "interestAccrued": 0,
        "negativeInterestAccrued": 0,
        "overdraftInterestAccrued": 0,
        "technicalOverdraftInterestAccrued": 0
      },
      "activationDate": "2016-09-06T13:37:50+03:00",
      "approvedDate": "2016-09-06T13:37:50+03:00",
      "assignedBranchKey": "string",
      "assignedCentreKey": "string",
      "assignedUserKey": "string",
      "balances": {
        "availableBalance": 0,
        "blockedBalance": 0,
        "feesDue": 0,
        "forwardAvailableBalance": 0,
        "holdBalance": 0,
        "lockedBalance": 0,
        "overdraftAmount": 0,
        "overdraftInterestDue": 0,
        "technicalOverdraftAmount": 0,
        "technicalOverdraftInterestDue": 0,
        "totalBalance": 0
      },
      "closedDate": "2016-09-06T13:37:50+03:00",
      "creationDate": "2016-09-06T13:37:50+03:00",
      "creditArrangementKey": "string",
      "currencyCode": "string",
      "encodedKey": "string",
      "id": "string",
      "interestSettings": {
        "interestPaymentSettings": {
          "interestPaymentDates": [
            {
              "day": 0,
              "month": 0
            }
          ],
          "interestPaymentPoint": "FIRST_DAY_OF_MONTH"
        },
        "interestRateSettings": {
          "encodedKey": "string",
          "interestChargeFrequency": "ANNUALIZED",
          "interestChargeFrequencyCount": 0,
          "interestRate": 0,
          "interestRateReviewCount": 0,
          "interestRateReviewUnit": "DAYS",
          "interestRateSource": "FIXED_INTEREST_RATE",
          "interestRateTerms": "FIXED",
          "interestRateTiers": [
            {
              "encodedKey": "string",
              "endingBalance": 0,
              "endingDay": 0,
              "interestRate": 0
            }
          ],
          "interestSpread": 0
        }
      },
      "internalControls": {
        "maxDepositBalance": 0,
        "maxWithdrawalAmount": 0,
        "recommendedDepositAmount": 0,
        "targetAmount": 0
      },
      "lastAccountAppraisalDate": "2016-09-06T13:37:50+03:00",
      "lastInterestCalculationDate": "2016-09-06T13:37:50+03:00",
      "lastInterestReviewDate": "2016-09-06T13:37:50+03:00",
      "lastInterestStoredDate": "2016-09-06T13:37:50+03:00",
      "lastModifiedDate": "2016-09-06T13:37:50+03:00",
      "lastOverdraftInterestReviewDate": "2016-09-06T13:37:50+03:00",
      "lastSetToArrearsDate": "2016-09-06T13:37:50+03:00",
      "linkedSettlementAccountKeys": [
        "string"
      ],
      "lockedDate": "2016-09-06T13:37:50+03:00",
      "maturityDate": "2016-09-06T13:37:50+03:00",
      "migrationEventKey": "string",
      "name": "string",
      "notes": "string",
      "overdraftInterestSettings": {
        "interestRateSettings": {
          "encodedKey": "string",
          "interestChargeFrequency": "ANNUALIZED",
          "interestChargeFrequencyCount": 0,
          "interestRate": 0,
          "interestRateReviewCount": 0,
          "interestRateReviewUnit": "DAYS",
          "interestRateSource": "FIXED_INTEREST_RATE",
          "interestRateTerms": "FIXED",
          "interestRateTiers": [
            {
              "encodedKey": "string",
              "endingBalance": 0,
              "endingDay": 0,
              "interestRate": 0
            }
          ],
          "interestSpread": 0
        }
      },
      "overdraftSettings": {
        "allowOverdraft": true,
        "overdraftExpiryDate": "2016-09-06T13:37:50+03:00",
        "overdraftLimit": 0
      },
      "ownershipHistory": [
        {
          "previousOwnerKey": "string",
          "transferDate": "2016-09-06T13:37:50+03:00"
        }
      ],
      "productTypeKey": "string",
      "withholdingTaxSourceKey": "string"
    }
  ],
  "loanAccounts": [
    {
      "accountArrearsSettings": {
        "dateCalculationMethod": "ACCOUNT_FIRST_WENT_TO_ARREARS",
        "encodedKey": "string",
        "monthlyToleranceDay": 0,
        "nonWorkingDaysMethod": "INCLUDED",
        "toleranceCalculationMethod": "ARREARS_TOLERANCE_PERIOD",
        "toleranceFloorAmount": 0,
        "tolerancePercentageOfOutstandingPrincipal": 0,
        "tolerancePeriod": 0
      },
      "accountHolderKey": "string",
      "accountHolderType": "CLIENT",
      "accountState": "PARTIAL_APPLICATION",
      "accountSubState": "PARTIALLY_DISBURSED",
      "accruedInterest": 0,
      "accruedPenalty": 0,
      "activationTransactionKey": "string",
      "adjustTotalDueForInstallmentsWithDifferentInterval": true,
      "allowOffset": true,
      "approvedDate": "2016-09-06T13:37:50+03:00",
      "arrearsTolerancePeriod": 0,
      "assets": [
        {
          "amount": 0,
          "assetName": "string",
          "depositAccountKey": "string",
          "encodedKey": "string",
          "guarantorKey": "string",
          "guarantorType": "CLIENT",
          "originalAmount": 0,
          "originalCurrency": {
            "code": "AED",
            "currencyCode": "string"
          }
        }
      ],
      "assignedBranchKey": "string",
      "assignedCentreKey": "string",
      "assignedUserKey": "string",
      "balances": {
        "feesBalance": 0,
        "feesDue": 0,
        "feesPaid": 0,
        "holdBalance": 0,
        "interestBalance": 0,
        "interestDue": 0,
        "interestFromArrearsBalance": 0,
        "interestFromArrearsDue": 0,
        "interestFromArrearsPaid": 0,
        "interestPaid": 0,
        "penaltyBalance": 0,
        "penaltyDue": 0,
        "penaltyPaid": 0,
        "principalBalance": 0,
        "principalDue": 0,
        "principalPaid": 0,
        "redrawBalance": 0
      },
      "closedDate": "2016-09-06T13:37:50+03:00",
      "creationDate": "2016-09-06T13:37:50+03:00",
      "creditArrangementKey": "string",
      "currency": {
        "code": "AED",
        "currencyCode": "string"
      },
      "daysInArrears": 0,
      "daysLate": 0,
      "disbursementDetails": {
        "disbursementDate": "2016-09-06T13:37:50+03:00",
        "encodedKey": "string",
        "expectedDisbursementDate": "2016-09-06T13:37:50+03:00",
        "fees": [
          {
            "amount": 0,
            "encodedKey": "string",
            "percentage": 0,
            "predefinedFeeEncodedKey": "string"
          }
        ],
        "firstRepaymentDate": "2016-09-06T13:37:50+03:00",
        "transactionDetails": {
          "encodedKey": "string",
          "internalTransfer": true,
          "targetDepositAccountKey": "string",
          "transactionChannelId": "string",
          "transactionChannelKey": "string"
        }
      },
      "encodedKey": "string",
      "feesSettings": {
        "accruedFee": 0,
        "accruedFeeFromArrears": 0,
        "feeRate": 0
      },
      "fundingSources": [
        {
          "amount": 0,
          "assetName": "string",
          "depositAccountKey": "string",
          "encodedKey": "string",
          "guarantorKey": "string",
          "guarantorType": "CLIENT",
          "id": "string",
          "interestCommission": 0,
          "sharePercentage": 0
        }
      ],
      "futurePaymentsAcceptance": "NO_FUTURE_PAYMENTS",
      "guarantors": [
        {
          "amount": 0,
          "assetName": "string",
          "depositAccountKey": "string",
          "encodedKey": "string",
          "guarantorKey": "string",
          "guarantorType": "CLIENT"
        }
      ],
      "id": "string",
      "interestAccruedInBillingCycle": 0,
      "interestCommission": 0,
      "interestFromArrearsAccrued": 0,
      "interestSettings": {
        "accountInterestRateSettings": [
          {
            "encodedKey": "string",
            "indexSourceKey": "string",
            "interestRate": 0,
            "interestRateCeilingValue": 0,
            "interestRateFloorValue": 0,
            "interestRateReviewCount": 0,
            "interestRateReviewUnit": "DAYS",
            "interestRateSource": "FIXED_INTEREST_RATE",
            "interestSpread": 0,
            "validFrom": "2016-09-06T13:37:50+03:00"
          }
        ],
        "accrueInterestAfterMaturity": true,
        "accrueLateInterest": true,
        "effectiveInterestRate": 0,
        "interestApplicationDays": {
          "daysInMonth": [
            0
          ],
          "shortMonthHandlingMethod": "LAST_DAY_IN_MONTH"
        },
        "interestApplicationMethod": "AFTER_DISBURSEMENT",
        "interestBalanceCalculationMethod": "ONLY_PRINCIPAL",
        "interestCalculationMethod": "FLAT",
        "interestChargeFrequency": "ANNUALIZED",
        "interestRate": 0,
        "interestRateReviewCount": 0,
        "interestRateReviewUnit": "DAYS",
        "interestRateSource": "FIXED_INTEREST_RATE",
        "interestSpread": 0,
        "interestType": "SIMPLE_INTEREST",
        "pmtAdjustmentThreshold": {
          "method": "WORKING_DAYS",
          "numberOfDays": 0
        }
      },
      "lastAccountAppraisalDate": "2016-09-06T13:37:50+03:00",
      "lastInterestAppliedDate": "2016-09-06T13:37:50+03:00",
      "lastInterestReviewDate": "2016-09-06T13:37:50+03:00",
      "lastLockedDate": "2016-09-06T13:37:50+03:00",
      "lastModifiedDate": "2016-09-06T13:37:50+03:00",
      "lastSetToArrearsDate": "2016-09-06T13:37:50+03:00",
      "lastTaxRateReviewDate": "2016-09-06T13:37:50+03:00",
      "latePaymentsRecalculationMethod": "OVERDUE_INSTALLMENTS_INCREASE",
      "loanAmount": 0,
      "loanName": "string",
      "lockedAccountTotalDueType": "BALANCE_AMOUNT",
      "lockedOperations": [
        "APPLY_INTEREST"
      ],
      "migrationEventKey": "string",
      "modifyInterestForFirstInstallment": true,
      "notes": "string",
      "originalAccountKey": "string",
      "paymentHolidaysAccruedInterest": 0,
      "paymentMethod": "HORIZONTAL",
      "penaltySettings": {
        "loanPenaltyCalculationMethod": "NONE",
        "penaltyRate": 0
      },
      "plannedInstallmentFees": [
        {
          "amount": 0,
          "applyOnDate": "2016-09-06T13:37:50+03:00",
          "encodedKey": "string",
          "installmentKey": "string",
          "installmentNumber": 0,
          "predefinedFeeKey": "string"
        }
      ],
      "prepaymentSettings": {
        "applyInterestOnPrepaymentMethod": "AUTOMATIC",
        "elementsRecalculationMethod": "PRINCIPAL_EXPECTED_FIXED",
        "ercFreeAllowanceAmount": 0,
        "ercFreeAllowancePercentage": 0,
        "prepaymentRecalculationMethod": "NO_RECALCULATION",
        "principalPaidInstallmentStatus": "PARTIALLY_PAID"
      },
      "principalPaymentSettings": {
        "amount": 0,
        "encodedKey": "string",
        "includeFeesInFloorAmount": true,
        "includeInterestInFloorAmount": true,
        "percentage": 0,
        "principalCeilingValue": 0,
        "principalFloorValue": 0,
        "principalPaymentMethod": "FLAT",
        "totalDueAmountFloor": 0,
        "totalDuePayment": "FLAT"
      },
      "productTypeKey": "string",
      "redrawSettings": {
        "restrictNextDueWithdrawal": true
      },
      "rescheduledAccountKey": "string",
      "scheduleSettings": {
        "amortizationPeriod": 0,
        "billingCycle": {
          "days": [
            0
          ]
        },
        "defaultFirstRepaymentDueDateOffset": 0,
        "fixedDaysOfMonth": [
          0
        ],
        "gracePeriod": 0,
        "gracePeriodType": "NONE",
        "hasCustomSchedule": true,
        "paymentPlan": [
          {
            "amount": 0,
            "encodedKey": "string",
            "toInstallment": 0
          }
        ],
        "periodicPayment": 0,
        "previewSchedule": {
          "numberOfPreviewedInstalments": 0
        },
        "principalRepaymentInterval": 0,
        "repaymentInstallments": 0,
        "repaymentPeriodCount": 0,
        "repaymentPeriodUnit": "DAYS",
        "repaymentScheduleMethod": "NONE",
        "scheduleDueDatesMethod": "INTERVAL",
        "shortMonthHandlingMethod": "LAST_DAY_IN_MONTH"
      },
      "settlementAccountKey": "string",
      "taxRate": 0,
      "terminationDate": "2016-09-06T13:37:50+03:00",
      "tranches": [
        {
          "amount": 0,
          "disbursementDetails": {
            "disbursementTransactionKey": "string",
            "expectedDisbursementDate": "2016-09-06T13:37:50+03:00"
          },
          "encodedKey": "string",
          "fees": [
            {
              "amount": 0,
              "encodedKey": "string",
              "percentage": 0,
              "predefinedFeeEncodedKey": "string"
            }
          ],
          "trancheNumber": 0
        }
      ]
    }
  ]
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
200 OK Account assigned to the credit arrangement. CreditArrangementAccounts
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Credit arrangement or account not found. ErrorResponse

getById (Credit Arrangements)

Code samples

# You can also use wget
curl -X GET /creditarrangements/{creditArrangementId} \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /creditarrangements/{creditArrangementId} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/creditarrangements/{creditArrangementId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/creditarrangements/{creditArrangementId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/creditarrangements/{creditArrangementId}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/creditarrangements/{creditArrangementId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/creditarrangements/{creditArrangementId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/creditarrangements/{creditArrangementId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /creditarrangements/{creditArrangementId}

Get credit arrangement

Parameters

Name Type Description In
creditArrangementId (required) string The ID or encoded key of the credit arrangement to be returned. path
detailsLevel string The level of details to return: FULL means the full details of the object will be returned (custom field values, address, contact info, or any other related objects) and BASIC will return only the first level elements of the object. query

Enumerated Values

Parameter Value
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

{
  "amount": 0,
  "approvedDate": "2016-09-06T13:37:50+03:00",
  "availableCreditAmount": 0,
  "closedDate": "2016-09-06T13:37:50+03:00",
  "consumedCreditAmount": 0,
  "creationDate": "2016-09-06T13:37:50+03:00",
  "currency": {
    "code": "AED",
    "currencyCode": "string"
  },
  "encodedKey": "string",
  "expireDate": "2016-09-06T13:37:50+03:00",
  "exposureLimitType": "APPROVED_AMOUNT",
  "holderKey": "string",
  "holderType": "CLIENT",
  "id": "string",
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "notes": "string",
  "startDate": "2016-09-06T13:37:50+03:00",
  "state": "PENDING_APPROVAL",
  "subState": "PENDING_APPROVAL"
}

Responses

Status Meaning Description Schema
200 OK Credit arrangement returned. CreditArrangement
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Credit arrangement not found. ErrorResponse

update (Credit Arrangements)

Code samples

# You can also use wget
curl -X PUT /creditarrangements/{creditArrangementId} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json'

PUT /creditarrangements/{creditArrangementId} HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/creditarrangements/{creditArrangementId}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.put '/creditarrangements/{creditArrangementId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.put('/creditarrangements/{creditArrangementId}', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PUT','/creditarrangements/{creditArrangementId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/creditarrangements/{creditArrangementId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/creditarrangements/{creditArrangementId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /creditarrangements/{creditArrangementId}

Update credit arrangement

Body parameter

{
  "amount": 0,
  "currency": {
    "code": "AED",
    "currencyCode": "string"
  },
  "expireDate": "2016-09-06T13:37:50+03:00",
  "exposureLimitType": "APPROVED_AMOUNT",
  "holderKey": "string",
  "holderType": "CLIENT",
  "id": "string",
  "notes": "string",
  "startDate": "2016-09-06T13:37:50+03:00"
}

Parameters

Name Type Description In
creditArrangementId (required) string The ID or encoded key of the credit arrangement to be updated. path
body (required) CreditArrangement Credit arrangement to be updated. body

Example responses

200 Response

{
  "amount": 0,
  "approvedDate": "2016-09-06T13:37:50+03:00",
  "availableCreditAmount": 0,
  "closedDate": "2016-09-06T13:37:50+03:00",
  "consumedCreditAmount": 0,
  "creationDate": "2016-09-06T13:37:50+03:00",
  "currency": {
    "code": "AED",
    "currencyCode": "string"
  },
  "encodedKey": "string",
  "expireDate": "2016-09-06T13:37:50+03:00",
  "exposureLimitType": "APPROVED_AMOUNT",
  "holderKey": "string",
  "holderType": "CLIENT",
  "id": "string",
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "notes": "string",
  "startDate": "2016-09-06T13:37:50+03:00",
  "state": "PENDING_APPROVAL",
  "subState": "PENDING_APPROVAL"
}

Responses

Status Meaning Description Schema
200 OK Credit arrangement updated. CreditArrangement
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Credit arrangement not found. ErrorResponse

delete (Credit Arrangements)

Code samples

# You can also use wget
curl -X DELETE /creditarrangements/{creditArrangementId} \
  -H 'Accept: application/vnd.mambu.v2+json'

DELETE /creditarrangements/{creditArrangementId} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/creditarrangements/{creditArrangementId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.delete '/creditarrangements/{creditArrangementId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.delete('/creditarrangements/{creditArrangementId}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('DELETE','/creditarrangements/{creditArrangementId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/creditarrangements/{creditArrangementId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/creditarrangements/{creditArrangementId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /creditarrangements/{creditArrangementId}

Delete credit arrangement

Parameters

Name Type Description In
creditArrangementId (required) string The ID or encoded key of the credit arrangement to be deleted. path

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
204 No Content Credit arrangement deleted. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Credit arrangement not found. ErrorResponse

patch (Credit Arrangements)

Code samples

# You can also use wget
curl -X PATCH /creditarrangements/{creditArrangementId} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json'

PATCH /creditarrangements/{creditArrangementId} HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/creditarrangements/{creditArrangementId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.patch '/creditarrangements/{creditArrangementId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.patch('/creditarrangements/{creditArrangementId}', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PATCH','/creditarrangements/{creditArrangementId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/creditarrangements/{creditArrangementId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PATCH");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/creditarrangements/{creditArrangementId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PATCH /creditarrangements/{creditArrangementId}

Partially update credit arrangement

Body parameter

[
  {
    "from": "string",
    "op": "ADD",
    "path": "string",
    "value": {}
  }
]

Parameters

Name Type Description In
creditArrangementId (required) string The ID or encoded key of the credit arrangement to be updated. path
body (required) PatchOperation Patch operations to be applied to a resource. body

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
204 No Content Credit arrangement updated. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Credit arrangement not found. ErrorResponse

getSchedule (Credit Arrangements)

Code samples

# You can also use wget
curl -X GET /creditarrangements/{creditArrangementId}/schedule \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /creditarrangements/{creditArrangementId}/schedule HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/creditarrangements/{creditArrangementId}/schedule',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/creditarrangements/{creditArrangementId}/schedule',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/creditarrangements/{creditArrangementId}/schedule', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/creditarrangements/{creditArrangementId}/schedule', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/creditarrangements/{creditArrangementId}/schedule");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/creditarrangements/{creditArrangementId}/schedule", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /creditarrangements/{creditArrangementId}/schedule

Get credit arrangement schedule

Parameters

Name Type Description In
creditArrangementId (required) string The ID or encoded key of the credit arrangement to be returned. path
detailsLevel string The level of details to return: FULL means the full details of the object will be returned (custom field values, address, contact info, or any other related objects) and BASIC will return only the first level elements of the object. query

Enumerated Values

Parameter Value
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

{
  "installments": [
    {
      "carryForwardInterestSplit": {
        "amount": 0,
        "tax": 0
      },
      "customSettingDetails": [
        {
          "loanTransactionKey": "string",
          "source": "string",
          "type": "string"
        }
      ],
      "dueDate": "2016-09-06T13:37:50+03:00",
      "encodedKey": "string",
      "expectedClosingBalance": 0,
      "fee": {
        "amount": {
          "due": 0,
          "expected": 0,
          "expectedUnapplied": 0,
          "paid": 0
        },
        "tax": {
          "due": 0,
          "expected": 0,
          "paid": 0
        }
      },
      "feeDetails": [
        {
          "amount": {
            "due": 0,
            "expected": 0,
            "paid": 0,
            "reduced": 0
          },
          "encodedKey": "string",
          "id": "string",
          "name": "string",
          "tax": {
            "due": 0,
            "expected": 0,
            "paid": 0,
            "reduced": 0
          }
        }
      ],
      "fundersInterestDue": 0,
      "interest": {
        "amount": {
          "due": 0,
          "expected": 0,
          "paid": 0
        },
        "tax": {
          "due": 0,
          "expected": 0,
          "paid": 0
        }
      },
      "interestAccrued": 0,
      "isPaymentHoliday": true,
      "lastPaidDate": "2016-09-06T13:37:50+03:00",
      "lastPenaltyAppliedDate": "2016-09-06T13:37:50+03:00",
      "nonScheduledPrincipalBalanceOverpayment": 0,
      "notes": "string",
      "number": "string",
      "organizationCommissionDue": 0,
      "parentAccountKey": "string",
      "penalty": {
        "amount": {
          "due": 0,
          "expected": 0,
          "paid": 0
        },
        "tax": {
          "due": 0,
          "expected": 0,
          "paid": 0
        }
      },
      "principal": {
        "amount": {
          "due": 0,
          "expected": 0,
          "paid": 0
        }
      },
      "repaidDate": "2016-09-06T13:37:50+03:00",
      "state": "PENDING"
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK Credit arrangement schedule returned. CreditArrangementSchedule
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Credit arrangement not found. ErrorResponse

getAllAccounts (Credit Arrangements)

Code samples

# You can also use wget
curl -X GET /creditarrangements/{creditArrangementId}/accounts \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /creditarrangements/{creditArrangementId}/accounts HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/creditarrangements/{creditArrangementId}/accounts',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/creditarrangements/{creditArrangementId}/accounts',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/creditarrangements/{creditArrangementId}/accounts', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/creditarrangements/{creditArrangementId}/accounts', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/creditarrangements/{creditArrangementId}/accounts");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/creditarrangements/{creditArrangementId}/accounts", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /creditarrangements/{creditArrangementId}/accounts

Get all loan and deposit accounts linked to credit arrangement

Parameters

Name Type Description In
creditArrangementId (required) string The ID or encoded key of the credit arrangement to be returned. path

Example responses

200 Response

{
  "depositAccounts": [
    {
      "accountHolderKey": "string",
      "accountHolderType": "CLIENT",
      "accountState": "PENDING_APPROVAL",
      "accountType": "CURRENT_ACCOUNT",
      "accruedAmounts": {
        "interestAccrued": 0,
        "negativeInterestAccrued": 0,
        "overdraftInterestAccrued": 0,
        "technicalOverdraftInterestAccrued": 0
      },
      "activationDate": "2016-09-06T13:37:50+03:00",
      "approvedDate": "2016-09-06T13:37:50+03:00",
      "assignedBranchKey": "string",
      "assignedCentreKey": "string",
      "assignedUserKey": "string",
      "balances": {
        "availableBalance": 0,
        "blockedBalance": 0,
        "feesDue": 0,
        "forwardAvailableBalance": 0,
        "holdBalance": 0,
        "lockedBalance": 0,
        "overdraftAmount": 0,
        "overdraftInterestDue": 0,
        "technicalOverdraftAmount": 0,
        "technicalOverdraftInterestDue": 0,
        "totalBalance": 0
      },
      "closedDate": "2016-09-06T13:37:50+03:00",
      "creationDate": "2016-09-06T13:37:50+03:00",
      "creditArrangementKey": "string",
      "currencyCode": "string",
      "encodedKey": "string",
      "id": "string",
      "interestSettings": {
        "interestPaymentSettings": {
          "interestPaymentDates": [
            {
              "day": 0,
              "month": 0
            }
          ],
          "interestPaymentPoint": "FIRST_DAY_OF_MONTH"
        },
        "interestRateSettings": {
          "encodedKey": "string",
          "interestChargeFrequency": "ANNUALIZED",
          "interestChargeFrequencyCount": 0,
          "interestRate": 0,
          "interestRateReviewCount": 0,
          "interestRateReviewUnit": "DAYS",
          "interestRateSource": "FIXED_INTEREST_RATE",
          "interestRateTerms": "FIXED",
          "interestRateTiers": [
            {
              "encodedKey": "string",
              "endingBalance": 0,
              "endingDay": 0,
              "interestRate": 0
            }
          ],
          "interestSpread": 0
        }
      },
      "internalControls": {
        "maxDepositBalance": 0,
        "maxWithdrawalAmount": 0,
        "recommendedDepositAmount": 0,
        "targetAmount": 0
      },
      "lastAccountAppraisalDate": "2016-09-06T13:37:50+03:00",
      "lastInterestCalculationDate": "2016-09-06T13:37:50+03:00",
      "lastInterestReviewDate": "2016-09-06T13:37:50+03:00",
      "lastInterestStoredDate": "2016-09-06T13:37:50+03:00",
      "lastModifiedDate": "2016-09-06T13:37:50+03:00",
      "lastOverdraftInterestReviewDate": "2016-09-06T13:37:50+03:00",
      "lastSetToArrearsDate": "2016-09-06T13:37:50+03:00",
      "linkedSettlementAccountKeys": [
        "string"
      ],
      "lockedDate": "2016-09-06T13:37:50+03:00",
      "maturityDate": "2016-09-06T13:37:50+03:00",
      "migrationEventKey": "string",
      "name": "string",
      "notes": "string",
      "overdraftInterestSettings": {
        "interestRateSettings": {
          "encodedKey": "string",
          "interestChargeFrequency": "ANNUALIZED",
          "interestChargeFrequencyCount": 0,
          "interestRate": 0,
          "interestRateReviewCount": 0,
          "interestRateReviewUnit": "DAYS",
          "interestRateSource": "FIXED_INTEREST_RATE",
          "interestRateTerms": "FIXED",
          "interestRateTiers": [
            {
              "encodedKey": "string",
              "endingBalance": 0,
              "endingDay": 0,
              "interestRate": 0
            }
          ],
          "interestSpread": 0
        }
      },
      "overdraftSettings": {
        "allowOverdraft": true,
        "overdraftExpiryDate": "2016-09-06T13:37:50+03:00",
        "overdraftLimit": 0
      },
      "ownershipHistory": [
        {
          "previousOwnerKey": "string",
          "transferDate": "2016-09-06T13:37:50+03:00"
        }
      ],
      "productTypeKey": "string",
      "withholdingTaxSourceKey": "string"
    }
  ],
  "loanAccounts": [
    {
      "accountArrearsSettings": {
        "dateCalculationMethod": "ACCOUNT_FIRST_WENT_TO_ARREARS",
        "encodedKey": "string",
        "monthlyToleranceDay": 0,
        "nonWorkingDaysMethod": "INCLUDED",
        "toleranceCalculationMethod": "ARREARS_TOLERANCE_PERIOD",
        "toleranceFloorAmount": 0,
        "tolerancePercentageOfOutstandingPrincipal": 0,
        "tolerancePeriod": 0
      },
      "accountHolderKey": "string",
      "accountHolderType": "CLIENT",
      "accountState": "PARTIAL_APPLICATION",
      "accountSubState": "PARTIALLY_DISBURSED",
      "accruedInterest": 0,
      "accruedPenalty": 0,
      "activationTransactionKey": "string",
      "adjustTotalDueForInstallmentsWithDifferentInterval": true,
      "allowOffset": true,
      "approvedDate": "2016-09-06T13:37:50+03:00",
      "arrearsTolerancePeriod": 0,
      "assets": [
        {
          "amount": 0,
          "assetName": "string",
          "depositAccountKey": "string",
          "encodedKey": "string",
          "guarantorKey": "string",
          "guarantorType": "CLIENT",
          "originalAmount": 0,
          "originalCurrency": {
            "code": "AED",
            "currencyCode": "string"
          }
        }
      ],
      "assignedBranchKey": "string",
      "assignedCentreKey": "string",
      "assignedUserKey": "string",
      "balances": {
        "feesBalance": 0,
        "feesDue": 0,
        "feesPaid": 0,
        "holdBalance": 0,
        "interestBalance": 0,
        "interestDue": 0,
        "interestFromArrearsBalance": 0,
        "interestFromArrearsDue": 0,
        "interestFromArrearsPaid": 0,
        "interestPaid": 0,
        "penaltyBalance": 0,
        "penaltyDue": 0,
        "penaltyPaid": 0,
        "principalBalance": 0,
        "principalDue": 0,
        "principalPaid": 0,
        "redrawBalance": 0
      },
      "closedDate": "2016-09-06T13:37:50+03:00",
      "creationDate": "2016-09-06T13:37:50+03:00",
      "creditArrangementKey": "string",
      "currency": {
        "code": "AED",
        "currencyCode": "string"
      },
      "daysInArrears": 0,
      "daysLate": 0,
      "disbursementDetails": {
        "disbursementDate": "2016-09-06T13:37:50+03:00",
        "encodedKey": "string",
        "expectedDisbursementDate": "2016-09-06T13:37:50+03:00",
        "fees": [
          {
            "amount": 0,
            "encodedKey": "string",
            "percentage": 0,
            "predefinedFeeEncodedKey": "string"
          }
        ],
        "firstRepaymentDate": "2016-09-06T13:37:50+03:00",
        "transactionDetails": {
          "encodedKey": "string",
          "internalTransfer": true,
          "targetDepositAccountKey": "string",
          "transactionChannelId": "string",
          "transactionChannelKey": "string"
        }
      },
      "encodedKey": "string",
      "feesSettings": {
        "accruedFee": 0,
        "accruedFeeFromArrears": 0,
        "feeRate": 0
      },
      "fundingSources": [
        {
          "amount": 0,
          "assetName": "string",
          "depositAccountKey": "string",
          "encodedKey": "string",
          "guarantorKey": "string",
          "guarantorType": "CLIENT",
          "id": "string",
          "interestCommission": 0,
          "sharePercentage": 0
        }
      ],
      "futurePaymentsAcceptance": "NO_FUTURE_PAYMENTS",
      "guarantors": [
        {
          "amount": 0,
          "assetName": "string",
          "depositAccountKey": "string",
          "encodedKey": "string",
          "guarantorKey": "string",
          "guarantorType": "CLIENT"
        }
      ],
      "id": "string",
      "interestAccruedInBillingCycle": 0,
      "interestCommission": 0,
      "interestFromArrearsAccrued": 0,
      "interestSettings": {
        "accountInterestRateSettings": [
          {
            "encodedKey": "string",
            "indexSourceKey": "string",
            "interestRate": 0,
            "interestRateCeilingValue": 0,
            "interestRateFloorValue": 0,
            "interestRateReviewCount": 0,
            "interestRateReviewUnit": "DAYS",
            "interestRateSource": "FIXED_INTEREST_RATE",
            "interestSpread": 0,
            "validFrom": "2016-09-06T13:37:50+03:00"
          }
        ],
        "accrueInterestAfterMaturity": true,
        "accrueLateInterest": true,
        "effectiveInterestRate": 0,
        "interestApplicationDays": {
          "daysInMonth": [
            0
          ],
          "shortMonthHandlingMethod": "LAST_DAY_IN_MONTH"
        },
        "interestApplicationMethod": "AFTER_DISBURSEMENT",
        "interestBalanceCalculationMethod": "ONLY_PRINCIPAL",
        "interestCalculationMethod": "FLAT",
        "interestChargeFrequency": "ANNUALIZED",
        "interestRate": 0,
        "interestRateReviewCount": 0,
        "interestRateReviewUnit": "DAYS",
        "interestRateSource": "FIXED_INTEREST_RATE",
        "interestSpread": 0,
        "interestType": "SIMPLE_INTEREST",
        "pmtAdjustmentThreshold": {
          "method": "WORKING_DAYS",
          "numberOfDays": 0
        }
      },
      "lastAccountAppraisalDate": "2016-09-06T13:37:50+03:00",
      "lastInterestAppliedDate": "2016-09-06T13:37:50+03:00",
      "lastInterestReviewDate": "2016-09-06T13:37:50+03:00",
      "lastLockedDate": "2016-09-06T13:37:50+03:00",
      "lastModifiedDate": "2016-09-06T13:37:50+03:00",
      "lastSetToArrearsDate": "2016-09-06T13:37:50+03:00",
      "lastTaxRateReviewDate": "2016-09-06T13:37:50+03:00",
      "latePaymentsRecalculationMethod": "OVERDUE_INSTALLMENTS_INCREASE",
      "loanAmount": 0,
      "loanName": "string",
      "lockedAccountTotalDueType": "BALANCE_AMOUNT",
      "lockedOperations": [
        "APPLY_INTEREST"
      ],
      "migrationEventKey": "string",
      "modifyInterestForFirstInstallment": true,
      "notes": "string",
      "originalAccountKey": "string",
      "paymentHolidaysAccruedInterest": 0,
      "paymentMethod": "HORIZONTAL",
      "penaltySettings": {
        "loanPenaltyCalculationMethod": "NONE",
        "penaltyRate": 0
      },
      "plannedInstallmentFees": [
        {
          "amount": 0,
          "applyOnDate": "2016-09-06T13:37:50+03:00",
          "encodedKey": "string",
          "installmentKey": "string",
          "installmentNumber": 0,
          "predefinedFeeKey": "string"
        }
      ],
      "prepaymentSettings": {
        "applyInterestOnPrepaymentMethod": "AUTOMATIC",
        "elementsRecalculationMethod": "PRINCIPAL_EXPECTED_FIXED",
        "ercFreeAllowanceAmount": 0,
        "ercFreeAllowancePercentage": 0,
        "prepaymentRecalculationMethod": "NO_RECALCULATION",
        "principalPaidInstallmentStatus": "PARTIALLY_PAID"
      },
      "principalPaymentSettings": {
        "amount": 0,
        "encodedKey": "string",
        "includeFeesInFloorAmount": true,
        "includeInterestInFloorAmount": true,
        "percentage": 0,
        "principalCeilingValue": 0,
        "principalFloorValue": 0,
        "principalPaymentMethod": "FLAT",
        "totalDueAmountFloor": 0,
        "totalDuePayment": "FLAT"
      },
      "productTypeKey": "string",
      "redrawSettings": {
        "restrictNextDueWithdrawal": true
      },
      "rescheduledAccountKey": "string",
      "scheduleSettings": {
        "amortizationPeriod": 0,
        "billingCycle": {
          "days": [
            0
          ]
        },
        "defaultFirstRepaymentDueDateOffset": 0,
        "fixedDaysOfMonth": [
          0
        ],
        "gracePeriod": 0,
        "gracePeriodType": "NONE",
        "hasCustomSchedule": true,
        "paymentPlan": [
          {
            "amount": 0,
            "encodedKey": "string",
            "toInstallment": 0
          }
        ],
        "periodicPayment": 0,
        "previewSchedule": {
          "numberOfPreviewedInstalments": 0
        },
        "principalRepaymentInterval": 0,
        "repaymentInstallments": 0,
        "repaymentPeriodCount": 0,
        "repaymentPeriodUnit": "DAYS",
        "repaymentScheduleMethod": "NONE",
        "scheduleDueDatesMethod": "INTERVAL",
        "shortMonthHandlingMethod": "LAST_DAY_IN_MONTH"
      },
      "settlementAccountKey": "string",
      "taxRate": 0,
      "terminationDate": "2016-09-06T13:37:50+03:00",
      "tranches": [
        {
          "amount": 0,
          "disbursementDetails": {
            "disbursementTransactionKey": "string",
            "expectedDisbursementDate": "2016-09-06T13:37:50+03:00"
          },
          "encodedKey": "string",
          "fees": [
            {
              "amount": 0,
              "encodedKey": "string",
              "percentage": 0,
              "predefinedFeeEncodedKey": "string"
            }
          ],
          "trancheNumber": 0
        }
      ]
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK Credit arrangement accounts returned. CreditArrangementAccounts
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Credit arrangement not found. ErrorResponse

Crons

Allows you to trigger end of day (EOD) processing on the most recent snapshot of your system's data.

A daily snapshot is taken at midnight in your organization's time zone.

runHourlyAndEndOfDayCrons (Crons)

Code samples

# You can also use wget
curl -X POST /crons/eod:run \
  -H 'Accept: application/vnd.mambu.v2+json'

POST /crons/eod:run HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/crons/eod:run',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.post '/crons/eod:run',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.post('/crons/eod:run', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/crons/eod:run', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/crons/eod:run");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/crons/eod:run", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /crons/eod:run

Trigger hourly and end of day Processing

Example responses

202 Response

{
  "state": "QUEUED"
}

Responses

Status Meaning Description Schema
202 Accepted Hourly and end of day processing triggered TriggerHourlyAndEndOfDayProcessingResponse
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
500 Internal Server Error Internal Error ErrorResponse

Currencies

Allows you to retrieve, create, update, or delete currencies. For more information, see Currencies in our User Guide.

You may define three types of currencies in Mambu, fiat currencies, cryptocurrencies, and non-traditional currencies. Fiat currencies are available to all customers. The cryptocurrencies and non-traditional currencies features are two separate features you may request access to by contacting your Customer Success Manager to discuss your requirements. For more information, see Mambu Release Cycle - Feature Release Status.

getAll (Currencies)

Code samples

# You can also use wget
curl -X GET /currencies \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /currencies HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/currencies',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/currencies',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/currencies', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/currencies', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/currencies");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/currencies", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /currencies

Get all currencies

Parameters

Name Type Description In
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query
detailsLevel string The level of details to return: FULL means the full details of the object will be returned (custom field values, address, contact info, or any other related objects) and BASIC will return only the first level elements of the object. query
type string The type of the currency. query

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF
detailsLevel BASIC
detailsLevel FULL
type FIAT_CURRENCY
type CRYPTOCURRENCY
type NON_TRADITIONAL_CURRENCY

Example responses

200 Response

[
  {
    "baseCurrency": true,
    "code": "string",
    "creationDate": "2016-09-06T13:37:50+03:00",
    "currencyHolidays": [
      {
        "creationDate": "2016-09-06T13:37:50+03:00",
        "date": "1987-04-26",
        "encodedKey": "string",
        "id": 0,
        "isAnnuallyRecurring": true,
        "name": "string"
      }
    ],
    "currencySymbolPosition": "BEFORE_NUMBER",
    "digitsAfterDecimal": 0,
    "lastModifiedDate": "2016-09-06T13:37:50+03:00",
    "name": "string",
    "numericCode": "string",
    "symbol": "string",
    "type": "FIAT_CURRENCY"
  }
]

Responses

Status Meaning Description Schema
200 OK Currencies returned. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [CurrencyDetails] [Represents a currency.] none
Ā» baseCurrency (required) boolean TRUE if the currency is the base currency, FALSE otherwise. It cannot be changed and it's a read-only field not required for update operations. read-only
Ā» code (required) string The currency code, which cannot be changed once the currency is created. none
Ā» creationDate string(date-time) The date this currency was created. It cannot be changed and it's a read-only field not required for update operations. read-only
Ā» currencyHolidays [Holiday] The list of holidays for this currency. none
»» creationDate string(date-time) The date when the holiday was created. read-only
»» date string(date) The date the holiday takes place. none
»» encodedKey string The encoded key of the entity, generated, globally unique read-only
»» id integer(int64) The ID of the holiday. none
»» isAnnuallyRecurring boolean TRUE if a holiday is annually recurring, FALSE otherwise. none
»» name string The name of the holiday. none
Ā» currencySymbolPosition (required) string The currency symbol position. none
Ā» digitsAfterDecimal integer(int32) The number of digits that are supported for a given currency. none
Ā» lastModifiedDate string(date-time) The last date this currency was modified. It's updated automatically and it's a read-only field not required for update operations. read-only
Ā» name (required) string The name of the currency. none
Ā» numericCode string The currency numeric code. none
Ā» symbol (required) string The currency symbol. none
Ā» type (required) string The type of the currency. none

Enumerated Values

Property Value
currencySymbolPosition BEFORE_NUMBER
currencySymbolPosition AFTER_NUMBER
type FIAT_CURRENCY
type CRYPTOCURRENCY
type NON_TRADITIONAL_CURRENCY

Response Headers

Status Header Type Format Description
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

create (Currencies)

Code samples

# You can also use wget
curl -X POST /currencies \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /currencies HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/currencies',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/currencies',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/currencies', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/currencies', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/currencies");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/currencies", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /currencies

Create currency

Body parameter

{
  "code": "string",
  "currencyHolidays": [
    {
      "date": "1987-04-26",
      "id": 0,
      "isAnnuallyRecurring": true,
      "name": "string"
    }
  ],
  "currencySymbolPosition": "BEFORE_NUMBER",
  "digitsAfterDecimal": 0,
  "name": "string",
  "numericCode": "string",
  "symbol": "string",
  "type": "FIAT_CURRENCY"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
body (required) CurrencyDetails Currency to be created. body

Example responses

201 Response

{
  "baseCurrency": true,
  "code": "string",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "currencyHolidays": [
    {
      "creationDate": "2016-09-06T13:37:50+03:00",
      "date": "1987-04-26",
      "encodedKey": "string",
      "id": 0,
      "isAnnuallyRecurring": true,
      "name": "string"
    }
  ],
  "currencySymbolPosition": "BEFORE_NUMBER",
  "digitsAfterDecimal": 0,
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "name": "string",
  "numericCode": "string",
  "symbol": "string",
  "type": "FIAT_CURRENCY"
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
201 Created Currency was created. CurrencyDetails
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

get (Currencies)

Code samples

# You can also use wget
curl -X GET /currencies/{currencyCode} \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /currencies/{currencyCode} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/currencies/{currencyCode}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/currencies/{currencyCode}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/currencies/{currencyCode}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/currencies/{currencyCode}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/currencies/{currencyCode}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/currencies/{currencyCode}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /currencies/{currencyCode}

Get currency by code

Parameters

Name Type Description In
currencyCode (required) string The currency code. path
detailsLevel string The level of details to return: FULL means the full details of the object will be returned (custom field values, address, contact info, or any other related objects) and BASIC will return only the first level elements of the object. query

Enumerated Values

Parameter Value
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

{
  "baseCurrency": true,
  "code": "string",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "currencyHolidays": [
    {
      "creationDate": "2016-09-06T13:37:50+03:00",
      "date": "1987-04-26",
      "encodedKey": "string",
      "id": 0,
      "isAnnuallyRecurring": true,
      "name": "string"
    }
  ],
  "currencySymbolPosition": "BEFORE_NUMBER",
  "digitsAfterDecimal": 0,
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "name": "string",
  "numericCode": "string",
  "symbol": "string",
  "type": "FIAT_CURRENCY"
}

Responses

Status Meaning Description Schema
200 OK Currency returned. CurrencyDetails
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Currency not found. ErrorResponse

update (Currencies)

Code samples

# You can also use wget
curl -X PUT /currencies/{currencyCode} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json'

PUT /currencies/{currencyCode} HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/currencies/{currencyCode}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.put '/currencies/{currencyCode}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.put('/currencies/{currencyCode}', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PUT','/currencies/{currencyCode}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/currencies/{currencyCode}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/currencies/{currencyCode}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /currencies/{currencyCode}

Update currency by code

Body parameter

{
  "code": "string",
  "currencyHolidays": [
    {
      "date": "1987-04-26",
      "id": 0,
      "isAnnuallyRecurring": true,
      "name": "string"
    }
  ],
  "currencySymbolPosition": "BEFORE_NUMBER",
  "digitsAfterDecimal": 0,
  "name": "string",
  "numericCode": "string",
  "symbol": "string",
  "type": "FIAT_CURRENCY"
}

Parameters

Name Type Description In
currencyCode (required) string The currency code. path
body (required) CurrencyDetails Currency details to be updated. body

Example responses

200 Response

{
  "baseCurrency": true,
  "code": "string",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "currencyHolidays": [
    {
      "creationDate": "2016-09-06T13:37:50+03:00",
      "date": "1987-04-26",
      "encodedKey": "string",
      "id": 0,
      "isAnnuallyRecurring": true,
      "name": "string"
    }
  ],
  "currencySymbolPosition": "BEFORE_NUMBER",
  "digitsAfterDecimal": 0,
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "name": "string",
  "numericCode": "string",
  "symbol": "string",
  "type": "FIAT_CURRENCY"
}

Responses

Status Meaning Description Schema
200 OK Updated currency. CurrencyDetails
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Currency not found. ErrorResponse

delete (Currencies)

Code samples

# You can also use wget
curl -X DELETE /currencies/{currencyCode} \
  -H 'Accept: application/vnd.mambu.v2+json'

DELETE /currencies/{currencyCode} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/currencies/{currencyCode}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.delete '/currencies/{currencyCode}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.delete('/currencies/{currencyCode}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('DELETE','/currencies/{currencyCode}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/currencies/{currencyCode}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/currencies/{currencyCode}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /currencies/{currencyCode}

Delete currency by code

Parameters

Name Type Description In
currencyCode (required) string The currency code. path

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
204 No Content Currency deleted. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Currency not found. ErrorResponse

Currencies Configuration

Retrieve and update the configuration for currencies.

Currencies are set to express monetary values in Mambu. For more information about this resource, see Currencies Configuration in our User Guide.

Your user or API consumer must have the View Manage Configuration As Code (GET_MANAGE_CONFIGURATION_AS_CODE) and/or Update Manage Configuration As Code (PUT_MANAGE_CONFIGURATION_AS_CODE) permissions to make GET and/or PUT requests to these configuration as code (CasC) endpoints. For more information about CasC, seeĀ Configuration as Code Overview.

get (Currencies Configuration)

Code samples

# You can also use wget
curl -X GET /configuration/currencies.yaml \
  -H 'Accept: application/vnd.mambu.v2+yaml'

GET /configuration/currencies.yaml HTTP/1.1

Accept: application/vnd.mambu.v2+yaml

var headers = {
  'Accept':'application/vnd.mambu.v2+yaml'

};

$.ajax({
  url: '/configuration/currencies.yaml',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+yaml'
}

result = RestClient.get '/configuration/currencies.yaml',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+yaml'
}

r = requests.get('/configuration/currencies.yaml', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+yaml',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/configuration/currencies.yaml', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/configuration/currencies.yaml");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+yaml"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/configuration/currencies.yaml", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /configuration/currencies.yaml

Get currencies configuration

Parameters

Name Type Description In
startDate string(date) The start date to consider when getting the configuration. query

Example responses

An example of a currencies configuration

---
baseCurrency:
  code: "EUR"
  name: "Euro"
  symbol: "€"
  symbolPosition: "BEFORE_NUMBER"
foreignCurrencies:
- currency:
    code: "USD"
    name: "United States dollar"
    symbol: "$"
    symbolPosition: "BEFORE_NUMBER"
  exchangeRates:
  - startDate: "2021-04-14T12:36:58+02:00"
    buyRate: 1.1964
    sellRate: 1.1969

401 invalid credentials

{
    "errors": [
        {
            "errorCode": 2,
            "errorSource": "credentials",
            "errorReason": "INVALID_CREDENTIALS"
        }
    ]
}

403 forbidden

{
    "errors": [
        {
            "errorCode": 15,
            "errorSource": "not authorized",
            "errorReason": "INVALID_PERMISSIONS"
        }
    ]
}

404 not found

{
    "errors": [
        {
            "errorCode": 3,
            "errorSource": "server",
            "errorReason": "INVALID_API_OPERATION"
        }
    ]
}

Responses

Status Meaning Description Schema
200 OK Currencies configuration returned. CurrenciesConfiguration
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Currencies configuration not found. ErrorResponse

update (Currencies Configuration)

Code samples

# You can also use wget
curl -X PUT /configuration/currencies.yaml \
  -H 'Content-Type: application/yaml' \
  -H 'Accept: application/vnd.mambu.v2+yaml'

PUT /configuration/currencies.yaml HTTP/1.1

Content-Type: application/yaml
Accept: application/vnd.mambu.v2+yaml

var headers = {
  'Content-Type':'application/yaml',
  'Accept':'application/vnd.mambu.v2+yaml'

};

$.ajax({
  url: '/configuration/currencies.yaml',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/yaml',
  'Accept' => 'application/vnd.mambu.v2+yaml'
}

result = RestClient.put '/configuration/currencies.yaml',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/yaml',
  'Accept': 'application/vnd.mambu.v2+yaml'
}

r = requests.put('/configuration/currencies.yaml', params={

}, headers = headers)

print r.json()

 'application/yaml',
    'Accept' => 'application/vnd.mambu.v2+yaml',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PUT','/configuration/currencies.yaml', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/configuration/currencies.yaml");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/yaml"},
        "Accept": []string{"application/vnd.mambu.v2+yaml"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/configuration/currencies.yaml", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /configuration/currencies.yaml

Update currencies configuration

Body parameter

An example of a currencies configuration

---
baseCurrency:
  code: "EUR"
  name: "Euro"
  symbol: "€"
  symbolPosition: "BEFORE_NUMBER"
foreignCurrencies:
- currency:
    code: "USD"
    name: "United States dollar"
    symbol: "$"
    symbolPosition: "BEFORE_NUMBER"
  exchangeRates:
  - startDate: "2021-04-14T12:36:58+02:00"
    buyRate: 1.1964
    sellRate: 1.1969

Parameters

Name Type Description In
body CurrenciesConfiguration Represents the currencies configuration. body

Example responses

200 - Success Response

---
warnings: []

400 error response

{
    "errors": [
        {
            "errorCode": 0,
            "errorSource": "human-readable description of the error",
            "errorReason": "SOURCE_OF_ERROR"
        }
    ]
}

401 invalid credentials

{
    "errors": [
        {
            "errorCode": 2,
            "errorSource": "credentials",
            "errorReason": "INVALID_CREDENTIALS"
        }
    ]
}

403 forbidden

{
    "errors": [
        {
            "errorCode": 15,
            "errorSource": "not authorized",
            "errorReason": "INVALID_PERMISSIONS"
        }
    ]
}

404 not found

{
    "errors": [
        {
            "errorCode": 3,
            "errorSource": "server",
            "errorReason": "INVALID_API_OPERATION"
        }
    ]
}

Responses

Status Meaning Description Schema
200 OK Currencies configuration updated. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Currencies configuration not found. ErrorResponse

Response Schema

Custom Field Sets

Allows you to get custom field sets and their associated custom field definitions.

getAllBySetId (Custom Field Sets)

Code samples

# You can also use wget
curl -X GET /customfieldsets/{customFieldSetId}/customfields \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /customfieldsets/{customFieldSetId}/customfields HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/customfieldsets/{customFieldSetId}/customfields',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/customfieldsets/{customFieldSetId}/customfields',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/customfieldsets/{customFieldSetId}/customfields', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/customfieldsets/{customFieldSetId}/customfields', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/customfieldsets/{customFieldSetId}/customfields");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/customfieldsets/{customFieldSetId}/customfields", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /customfieldsets/{customFieldSetId}/customfields

Get custom field definitions by custom field set

Parameters

Name Type Description In
customFieldSetId (required) string The encoded key or ID of the custom field set used to get all the custom field definitions of that set. path
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query
detailsLevel string The level of details to return: FULL means the full details of the object will be returned (custom field values, address, contact info, or any other related objects) and BASIC will return only the first level elements of the object. query

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

[
  {
    "availableFor": "CLIENT",
    "creationDate": "2016-09-06T13:37:50+03:00",
    "dependentFieldKey": "string",
    "displaySettings": {
      "builtInId": "FIRST_NAME",
      "description": "string",
      "displayName": "string",
      "fieldSize": "SHORT",
      "position": 0
    },
    "editRights": {
      "allUsers": true,
      "roles": [
        "string"
      ]
    },
    "encodedKey": "string",
    "id": "string",
    "lastModifiedDate": "2016-09-06T13:37:50+03:00",
    "selectionOptions": [
      {
        "availableOptions": [
          {
            "score": 0,
            "selectionKey": "string",
            "value": "string"
          }
        ],
        "forSelectionKey": "string",
        "forValue": "string"
      }
    ],
    "state": "ACTIVE",
    "type": "FREE_TEXT",
    "usage": [
      {
        "default": true,
        "objectKey": "string",
        "required": true
      }
    ],
    "valueValidationSettings": {
      "unique": true,
      "validationPattern": "string"
    },
    "viewRights": {
      "allUsers": true,
      "roles": [
        "string"
      ]
    }
  }
]

Responses

Status Meaning Description Schema
200 OK Custom field list returned. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Custom field set not found. ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [CustomFieldMeta] [Represents a custom field definition.] none
Ā» availableFor string The entity type the custom field definition is associated with. none
Ā» creationDate string(date-time) The date the custom field definition was created. none
Ā» dependentFieldKey string Can be defined only for selection custom field definitions. Indicates the parent custom field definition on which the dependency is based upon. none
Ā» displaySettings CustomFieldDisplaySettings Represents the display settings of a custom field definition. none
»» builtInId string The original ID of the built-in custom field definition. none
»» description string The user-provided description of the custom field definition. none
»» displayName string The user-provided name of the custom field definition. none
»» fieldSize string The custom field value display size in the UI. none
»» position integer(int32) The custom field definition position in the custom field set. none
Ā» editRights CustomFieldEditRights Represents the edit rights for custom field values for a particular custom field definition. none
»» allUsers boolean TRUE if custom field values of a custom field definition can be edited by all users, FALSE if custom field values of a custom field definition can only be edited by users with the specified roles. none
»» roles [string] The list of IDs of the roles that have edit rights for the custom field values of a custom field definition if it is not accessible by all users. none
Ā» encodedKey string The encoded key of the entity, generated, globally unique read-only
Ā» id string The user-defined ID, which is globally unique. none
Ā» lastModifiedDate string(date-time) The date the latest update was performed for this custom field definition. none
Ā» selectionOptions [CustomFieldSelectionOption] Can be defined only for selection custom field definitions. Indicates that the field has predefined selections and only those can be used to populate it. none
»» availableOptions [CustomFieldAvailableOption] The list of options that that are available for the dependent selection custom field value based on the selected parent custom field value. none
»»» score number The score of the option. none
»»» selectionKey string The system-generated ID of the option. none
»»» value string The name of the option. none
»» forSelectionKey string The key for the parent selection custom field value. none
»» forValue string The parent selection custom field value. none
Ā» state string Indicates whether the custom field definition is active or inactive. none
Ā» type string The type of custom field definition. none
Ā» usage [CustomFieldUsage] Represents the usage settings of a custom field definition. none
»» default boolean TRUE if the field is displayed by default on create or edit pages for this record type, FALSE otherwise. none
»» objectKey string The key of the record type. none
»» required boolean TRUE if the field is required for this record type, FALSE otherwise. none
Ā» valueValidationSettings CustomFieldValueValidationSettings Represents the settings for field input validation. none
»» unique boolean TRUE if this field does not allow duplicate values, FALSE otherwise. none
»» validationPattern string The expected format for the input. none
Ā» viewRights CustomFieldViewRights Represents the view rights for custom field values for a particular custom field definition. none
»» allUsers boolean TRUE if custom field values of a custom field definition can be viewed by all users, FALSE if custom field values of a custom field definition can only be viewed by users with the specified roles. none
»» roles [string] Lists the IDs of the roles that have view rights for the custom field values of a custom field definition if it is not accessible by all users. none

Enumerated Values

Property Value
availableFor CLIENT
availableFor GROUP
availableFor CREDIT_ARRANGEMENT
availableFor LOAN_ACCOUNT
availableFor GUARANTOR
availableFor ASSET
availableFor DEPOSIT_ACCOUNT
availableFor DEPOSIT_PRODUCT
availableFor TRANSACTION_CHANNEL
availableFor TRANSACTION_TYPE
availableFor BRANCH
availableFor CENTRE
availableFor USER
builtInId FIRST_NAME
builtInId MIDDLE_NAME
builtInId LAST_NAME
builtInId BIRTHDATE
builtInId GENDER
builtInId MOBILE_PHONE
builtInId MOBILE_PHONE_2
builtInId HOME_PHONE
builtInId EMAIL_ADDRESS
fieldSize SHORT
fieldSize LONG
state ACTIVE
state INACTIVE
type FREE_TEXT
type SELECTION
type NUMBER
type CHECKBOX
type DATE
type DATE_TIME
type CLIENT_LINK
type GROUP_LINK
type USER_LINK

Response Headers

Status Header Type Format Description
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

getAll (Custom Field Sets)

Code samples

# You can also use wget
curl -X GET /customfieldsets \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /customfieldsets HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/customfieldsets',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/customfieldsets',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/customfieldsets', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/customfieldsets', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/customfieldsets");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/customfieldsets", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /customfieldsets

Get custom field sets

Parameters

Name Type Description In
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query
detailsLevel string The level of details to return: FULL means the full details of the object will be returned (custom field values, address, contact info, or any other related objects) and BASIC will return only the first level elements of the object. query
availableFor array[string] The entity that the custom field set is associated with query
displaySettings.builtIn boolean Indicates if it is a built in custom field set or not query

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF
detailsLevel BASIC
detailsLevel FULL
availableFor CLIENT
availableFor GROUP
availableFor CREDIT_ARRANGEMENT
availableFor LOAN_ACCOUNT
availableFor GUARANTOR
availableFor ASSET
availableFor DEPOSIT_ACCOUNT
availableFor DEPOSIT_PRODUCT
availableFor TRANSACTION_CHANNEL
availableFor TRANSACTION_TYPE
availableFor BRANCH
availableFor CENTRE
availableFor USER

Example responses

200 Response

[
  {
    "availableFor": "CLIENT",
    "creationDate": "2016-09-06T13:37:50+03:00",
    "customFields": [
      {
        "encodedKey": "string",
        "id": "string"
      }
    ],
    "description": "string",
    "displaySettings": {
      "builtIn": true,
      "displayName": "string",
      "position": 0
    },
    "encodedKey": "string",
    "fieldSetType": "STANDARD",
    "id": "string"
  }
]

Responses

Status Meaning Description Schema
200 OK Custom field sets returned. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [CustomFieldSetMeta] [Model representation of a Custom Field Set] none
Ā» availableFor string Indicates the entity that the custom field set is associated with (eg. clients or any entity that allows CF definition) none
Ā» creationDate string(date-time) Date at which the custom field set was created read-only
Ā» customFields [CustomFieldIdentity] This section lists all the custom fields associated with this set none
»» encodedKey string The encoded key of the entity, generated, globally unique read-only
»» id string User-provided ID of the custom field none
Ā» description string Free text field to store eventual notes with regard to custom field group purpose/details none
Ā» displaySettings CustomFieldSetDisplaySettings Wrapper holds the display properties of a Custom Field Set none
»» builtIn boolean This is used only for builtIn custom field sets and can have two possible values:
True - when this is a "mambu" field set,
False - when this is a tenant-defined field set
none
»» displayName string User-provided name of the custom field set none
»» position integer(int32) Represents the order of the custom field set (starts from 0) none
Ā» encodedKey string The encoded key of the entity, generated, globally unique read-only
Ā» fieldSetType string The usage decides how the custom field set will be used in the UI and how the custom field values will be stored. For STANDARD set type the custom field set can be used only once (i.e Personal Information). For GROUPED set type the custom field set can be used multiple times (i.e Addresses). For further details please see here none
Ā» id string User-defined ID, gobally unique none

Enumerated Values

Property Value
availableFor CLIENT
availableFor GROUP
availableFor CREDIT_ARRANGEMENT
availableFor LOAN_ACCOUNT
availableFor GUARANTOR
availableFor ASSET
availableFor DEPOSIT_ACCOUNT
availableFor DEPOSIT_PRODUCT
availableFor TRANSACTION_CHANNEL
availableFor TRANSACTION_TYPE
availableFor BRANCH
availableFor CENTRE
availableFor USER
fieldSetType STANDARD
fieldSetType GROUPED

Response Headers

Status Header Type Format Description
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

Custom Fields

Allows you to get custom field definitions.

getById (Custom Fields)

Code samples

# You can also use wget
curl -X GET /customfields/{customfieldId} \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /customfields/{customfieldId} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/customfields/{customfieldId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/customfields/{customfieldId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/customfields/{customfieldId}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/customfields/{customfieldId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/customfields/{customfieldId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/customfields/{customfieldId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /customfields/{customfieldId}

Get custom field definition

Parameters

Name Type Description In
customfieldId (required) string The ID or encoded key of the custom field definition to be returned. path
detailsLevel string The level of details to return: FULL means the full details of the object will be returned (custom field values, address, contact info, or any other related objects) and BASIC will return only the first level elements of the object. query

Enumerated Values

Parameter Value
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

{
  "availableFor": "CLIENT",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "dependentFieldKey": "string",
  "displaySettings": {
    "builtInId": "FIRST_NAME",
    "description": "string",
    "displayName": "string",
    "fieldSize": "SHORT",
    "position": 0
  },
  "editRights": {
    "allUsers": true,
    "roles": [
      "string"
    ]
  },
  "encodedKey": "string",
  "id": "string",
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "selectionOptions": [
    {
      "availableOptions": [
        {
          "score": 0,
          "selectionKey": "string",
          "value": "string"
        }
      ],
      "forSelectionKey": "string",
      "forValue": "string"
    }
  ],
  "state": "ACTIVE",
  "type": "FREE_TEXT",
  "usage": [
    {
      "default": true,
      "objectKey": "string",
      "required": true
    }
  ],
  "valueValidationSettings": {
    "unique": true,
    "validationPattern": "string"
  },
  "viewRights": {
    "allUsers": true,
    "roles": [
      "string"
    ]
  }
}

Responses

Status Meaning Description Schema
200 OK Custom field definition returned. CustomFieldMeta
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Custom field definition not found. ErrorResponse

Custom Fields Configuration

Get and update the custom field definitions configuration.

Custom field definitions are additional fields you can create in order to capture any additional information required for your business processes. Every custom field definition must be a part of a custom field set. For more information about this resource, see Custom Fields Configuration in our User Guide.

Your user or API consumer must have the View Manage Configuration As Code (GET_MANAGE_CONFIGURATION_AS_CODE) and/or Update Manage Configuration As Code (PUT_MANAGE_CONFIGURATION_AS_CODE) permissions to make GET and/or PUT requests to these configuration as code (CasC) endpoints. For more information about CasC, seeĀ Configuration as Code Overview.

getTemplate (Custom Fields Configuration)

Code samples

# You can also use wget
curl -X GET /configuration/customfields/template.yaml \
  -H 'Accept: application/vnd.mambu.v2+yaml'

GET /configuration/customfields/template.yaml HTTP/1.1

Accept: application/vnd.mambu.v2+yaml

var headers = {
  'Accept':'application/vnd.mambu.v2+yaml'

};

$.ajax({
  url: '/configuration/customfields/template.yaml',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+yaml'
}

result = RestClient.get '/configuration/customfields/template.yaml',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+yaml'
}

r = requests.get('/configuration/customfields/template.yaml', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+yaml',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/configuration/customfields/template.yaml', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/configuration/customfields/template.yaml");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+yaml"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/configuration/customfields/template.yaml", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /configuration/customfields/template.yaml

Get custom field definitions configuration template

Example responses

a custom field definitions configuration as code template

---
customFieldSets:
- id: null
  name: null
  description: null
  type: null
  availableFor: null
  customFields:
  - id: null
    type: null
    state: null
    validationRules:
      validationPattern: null
      unique: false
    displaySettings:
      displayName: null
      description: null
      fieldSize: null
    usage:
    - id: null
      required: null
      default: null
    viewRights:
      roles: null
      allUsers: null
    editRights:
      roles: null
      allUsers: null
    dependentFieldId: null
    selectionOptions:
    - forSelectionId: null
      availableOptions:
      - selectionId: null
        value: null
        score: null
    required: null
    default: null

401 invalid credentials

{
    "errors": [
        {
            "errorCode": 2,
            "errorSource": "credentials",
            "errorReason": "INVALID_CREDENTIALS"
        }
    ]
}

403 forbidden

{
    "errors": [
        {
            "errorCode": 15,
            "errorSource": "not authorized",
            "errorReason": "INVALID_PERMISSIONS"
        }
    ]
}

Responses

Status Meaning Description Schema
200 OK Custom field definitions configuration template returned. CustomFieldsConfiguration
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

get (Custom Fields Configuration)

Code samples

# You can also use wget
curl -X GET /configuration/customfields.yaml \
  -H 'Accept: application/vnd.mambu.v2+yaml'

GET /configuration/customfields.yaml HTTP/1.1

Accept: application/vnd.mambu.v2+yaml

var headers = {
  'Accept':'application/vnd.mambu.v2+yaml'

};

$.ajax({
  url: '/configuration/customfields.yaml',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+yaml'
}

result = RestClient.get '/configuration/customfields.yaml',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+yaml'
}

r = requests.get('/configuration/customfields.yaml', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+yaml',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/configuration/customfields.yaml', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/configuration/customfields.yaml");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+yaml"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/configuration/customfields.yaml", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /configuration/customfields.yaml

Get custom field definitions configuration

Parameters

Name Type Description In
availableFor array[string] The entity type of the custom field sets to be returned. If it is used multiple times, it will return all the custom field sets of all the specified entity types. If the parameter is absent, all the custom field sets will be returned. query

Enumerated Values

Parameter Value
availableFor CLIENT
availableFor GROUP
availableFor CREDIT_ARRANGEMENT
availableFor LOAN_ACCOUNT
availableFor GUARANTOR
availableFor ASSET
availableFor DEPOSIT_ACCOUNT
availableFor DEPOSIT_PRODUCT
availableFor TRANSACTION_CHANNEL
availableFor TRANSACTION_TYPE
availableFor BRANCH
availableFor CENTRE
availableFor USER

Example responses

a single set of custom field definitions

---
customFieldSets:
- id: "_Example_Custom_Fields_Clients"
  name: "Example Custom Fields"
  type: "SINGLE"
  availableFor: "CLIENT"
  customFields:
  - id: "Example_Free_Text_Field_Clients"
    type: "FREE_TEXT"
    state: "ACTIVE"
    validationRules:
      unique: false
    displaySettings:
      displayName: "Free Text"
      fieldSize: "SHORT"
    viewRights:
      roles: []
      allUsers: true
    editRights:
      roles: []
      allUsers: true
    required: false
    default: false
  - id: "Example_Number_Field_Clients"
    type: "NUMBER"
    state: "ACTIVE"
    displaySettings:
      displayName: "Number Field"
      fieldSize: "SHORT"
    viewRights:
      roles: []
      allUsers: true
    editRights:
      roles: []
      allUsers: true
    required: false
    default: false
  - id: "Example_Checkbox_Field_Clients"
    type: "CHECKBOX"
    state: "ACTIVE"
    displaySettings:
      displayName: "Checkbox"
      fieldSize: "SHORT"
    viewRights:
      roles: []
      allUsers: true
    editRights:
      roles: []
      allUsers: true
    required: false
    default: false
  - id: "Example_Select_Field_Clients"
    type: "SELECTION"
    state: "ACTIVE"
    displaySettings:
      displayName: "Select"
      fieldSize: "SHORT"
    viewRights:
      roles: []
      allUsers: true
    editRights:
      roles: []
      allUsers: true
    selectionOptions:
    - availableOptions:
      - selectionId: "659916830"
        value: "Option 1"
        score: 0
      - selectionId: "769251644"
        value: "Option 2"
        score: 1
      - selectionId: "955281307"
        value: "Option 3"
        score: 10
    required: false
    default: false

401 invalid credentials

{
    "errors": [
        {
            "errorCode": 2,
            "errorSource": "credentials",
            "errorReason": "INVALID_CREDENTIALS"
        }
    ]
}

403 forbidden

{
    "errors": [
        {
            "errorCode": 15,
            "errorSource": "not authorized",
            "errorReason": "INVALID_PERMISSIONS"
        }
    ]
}

Responses

Status Meaning Description Schema
200 OK Custom field definitions configuration returned. CustomFieldsConfiguration
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

update (Custom Fields Configuration)

Code samples

# You can also use wget
curl -X PUT /configuration/customfields.yaml \
  -H 'Content-Type: application/yaml' \
  -H 'Accept: application/vnd.mambu.v2+yaml' \
  -H 'X-Mambu-Async: true' \
  -H 'X-Mambu-Callback: string'

PUT /configuration/customfields.yaml HTTP/1.1

Content-Type: application/yaml
Accept: application/vnd.mambu.v2+yaml
X-Mambu-Async: true
X-Mambu-Callback: string

var headers = {
  'Content-Type':'application/yaml',
  'Accept':'application/vnd.mambu.v2+yaml',
  'X-Mambu-Async':'true',
  'X-Mambu-Callback':'string'

};

$.ajax({
  url: '/configuration/customfields.yaml',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/yaml',
  'Accept' => 'application/vnd.mambu.v2+yaml',
  'X-Mambu-Async' => 'true',
  'X-Mambu-Callback' => 'string'
}

result = RestClient.put '/configuration/customfields.yaml',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/yaml',
  'Accept': 'application/vnd.mambu.v2+yaml',
  'X-Mambu-Async': 'true',
  'X-Mambu-Callback': 'string'
}

r = requests.put('/configuration/customfields.yaml', params={

}, headers = headers)

print r.json()

 'application/yaml',
    'Accept' => 'application/vnd.mambu.v2+yaml',
    'X-Mambu-Async' => 'true',
    'X-Mambu-Callback' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PUT','/configuration/customfields.yaml', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/configuration/customfields.yaml");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/yaml"},
        "Accept": []string{"application/vnd.mambu.v2+yaml"},
        "X-Mambu-Async": []string{"true"},
        "X-Mambu-Callback": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/configuration/customfields.yaml", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /configuration/customfields.yaml

Update custom field definitions configuration

Body parameter

an array of custom field definitions and custom field sets for various entities

---
customFieldSets:
- id: "_Example_Custom_Fields_Clients"
  name: "Example Custom Fields"
  type: "SINGLE"
  availableFor: "CLIENT"
  customFields:
  - id: "Example_Free_Text_Field_Clients"
    type: "FREE_TEXT"
    state: "ACTIVE"
    validationRules:
      unique: false
    displaySettings:
      displayName: "Free Text"
      fieldSize: "SHORT"
    viewRights:
      roles: []
      allUsers: true
    editRights:
      roles: []
      allUsers: true
    required: false
    default: false
  - id: "Example_Number_Field_Clients"
    type: "NUMBER"
    state: "ACTIVE"
    displaySettings:
      displayName: "Number Field"
      fieldSize: "SHORT"
    viewRights:
      roles: []
      allUsers: true
    editRights:
      roles: []
      allUsers: true
    required: false
    default: false
  - id: "Example_Checkbox_Field_Clients"
    type: "CHECKBOX"
    state: "ACTIVE"
    displaySettings:
      displayName: "Checkbox"
      fieldSize: "SHORT"
    viewRights:
      roles: []
      allUsers: true
    editRights:
      roles: []
      allUsers: true
    required: false
    default: false
  - id: "Example_Select_Field_Clients"
    type: "SELECTION"
    state: "ACTIVE"
    displaySettings:
      displayName: "Select"
      fieldSize: "SHORT"
    viewRights:
      roles: []
      allUsers: true
    editRights:
      roles: []
      allUsers: true
    selectionOptions:
    - availableOptions:
      - selectionId: "659916830"
        value: "Option 1"
        score: 0
      - selectionId: "769251644"
        value: "Option 2"
        score: 1
      - selectionId: "955281307"
        value: "Option 3"
        score: 10
    required: false
    default: false
- id: "_Example_Custom_Fields_Groups"
  name: "Example Custom Fields"
  type: "SINGLE"
  availableFor: "GROUP"
  customFields:
  - id: "Example_Free_Text_Field_Groups"
    type: "FREE_TEXT"
    state: "ACTIVE"
    validationRules:
      unique: false
    displaySettings:
      displayName: "Free Text"
      fieldSize: "SHORT"
    viewRights:
      roles: []
      allUsers: true
    editRights:
      roles: []
      allUsers: true
    required: false
    default: false
  - id: "Example_Number_Field_Groups"
    type: "NUMBER"
    state: "ACTIVE"
    displaySettings:
      displayName: "Number Field"
      fieldSize: "SHORT"
    viewRights:
      roles: []
      allUsers: true
    editRights:
      roles: []
      allUsers: true
    required: false
    default: false
  - id: "Example_Checkbox_Field_Groups"
    type: "CHECKBOX"
    state: "ACTIVE"
    displaySettings:
      displayName: "Checkbox"
      fieldSize: "SHORT"
    viewRights:
      roles: []
      allUsers: true
    editRights:
      roles: []
      allUsers: true
    required: false
    default: false
  - id: "Example_Select_Field_Groups"
    type: "SELECTION"
    state: "ACTIVE"
    displaySettings:
      displayName: "Select"
      fieldSize: "SHORT"
    viewRights:
      roles: []
      allUsers: true
    editRights:
      roles: []
      allUsers: true
    selectionOptions:
    - availableOptions:
      - selectionId: "659916830"
        value: "Option 1"
        score: 0
      - selectionId: "769251644"
        value: "Option 2"
        score: 1
      - selectionId: "955281307"
        value: "Option 3"
        score: 10
    required: false
    default: false
- id: "_Example_Custom_Fields_Loans"
  name: "Example Custom Fields"
  type: "SINGLE"
  availableFor: "LOAN_ACCOUNT"
  customFields:
  - id: "Example_Free_Text_Field_Loans"
    type: "FREE_TEXT"
    state: "ACTIVE"
    validationRules:
      unique: false
    displaySettings:
      displayName: "Free Text"
      fieldSize: "SHORT"
    viewRights:
      roles: []
      allUsers: true
    editRights:
      roles: []
      allUsers: true
    required: false
    default: false
  - id: "Example_Number_Field_Loans"
    type: "NUMBER"
    state: "ACTIVE"
    displaySettings:
      displayName: "Number Field"
      fieldSize: "SHORT"
    viewRights:
      roles: []
      allUsers: true
    editRights:
      roles: []
      allUsers: true
    required: false
    default: false
  - id: "Example_Checkbox_Field_Loans"
    type: "CHECKBOX"
    state: "ACTIVE"
    displaySettings:
      displayName: "Checkbox"
      fieldSize: "SHORT"
    viewRights:
      roles: []
      allUsers: true
    editRights:
      roles: []
      allUsers: true
    required: false
    default: false
  - id: "Example_Select_Field_Loans"
    type: "SELECTION"
    state: "ACTIVE"
    displaySettings:
      displayName: "Select"
      fieldSize: "SHORT"
    viewRights:
      roles: []
      allUsers: true
    editRights:
      roles: []
      allUsers: true
    selectionOptions:
    - availableOptions:
      - selectionId: "659916830"
        value: "Option 1"
        score: 0
      - selectionId: "769251644"
        value: "Option 2"
        score: 1
      - selectionId: "955281307"
        value: "Option 3"
        score: 10
    required: false
    default: false
- id: "_Deposit_Details_Deposit_Account"
  name: "Deposit Details"
  type: "SINGLE"
  availableFor: "DEPOSIT_ACCOUNT"
  customFields:
  - id: "Interest_Deposit_Accounts"
    type: "FREE_TEXT"
    state: "INACTIVE"
    validationRules:
      unique: false
    displaySettings:
      displayName: "Interest"
      fieldSize: "SHORT"
    viewRights:
      roles: []
      allUsers: true
    editRights:
      roles: []
      allUsers: true
    required: false
    default: false
  - id: "Deposit_frequency_Deposit_Accoun"
    type: "SELECTION"
    state: "INACTIVE"
    displaySettings:
      displayName: "Deposit frequency"
      fieldSize: "SHORT"
    viewRights:
      roles: []
      allUsers: true
    editRights:
      roles: []
      allUsers: true
    selectionOptions:
    - availableOptions:
      - selectionId: "998720508"
        value: "Daily"
        score: 4
      - selectionId: "924920961"
        value: "Monthly"
        score: 6
      - selectionId: "107971669"
        value: "Yearly"
        score: 8
    required: false
    default: false
  - id: "Is_more_than_salary_Deposit_Acco"
    type: "CHECKBOX"
    state: "INACTIVE"
    displaySettings:
      displayName: "Is more than salary"
      fieldSize: "SHORT"
    viewRights:
      roles: []
      allUsers: true
    editRights:
      roles: []
      allUsers: true
    required: false
    default: false
- id: "_Province_Branches"
  name: "Province"
  type: "SINGLE"
  availableFor: "BRANCH"
  customFields:
  - id: "Province_Branches"
    type: "SELECTION"
    state: "INACTIVE"
    displaySettings:
      displayName: "Province"
      fieldSize: "SHORT"
    viewRights:
      roles: []
      allUsers: true
    editRights:
      roles: []
      allUsers: true
    selectionOptions:
    - availableOptions:
      - selectionId: "211618648"
        value: "Catamarca"
        score: 0
      - selectionId: "550838126"
        value: "Chaco"
        score: 1
      - selectionId: "073393950"
        value: "Jujuy"
        score: 10
    required: false
    default: false
- id: "_centres_custom_field_set"
  name: "custom field set"
  description: "custom fields for centre"
  type: "SINGLE"
  availableFor: "CENTRE"
  customFields:
  - id: "centre_cf_1"
    type: "FREE_TEXT"
    state: "INACTIVE"
    validationRules:
      validationPattern: "@#$"
      unique: true
    displaySettings:
      displayName: "cf 1"
      description: "a text custom field for a centre"
      fieldSize: "LONG"
    viewRights:
      roles: []
      allUsers: true
    editRights:
      roles: []
      allUsers: false
    required: false
    default: false

Parameters

Name Type Description In
X-Mambu-Async boolean Determines if the API call runs asynchronously. If set to true, updates configuration asynchronously and optionally sends a callback to a provided URL once completed. header
X-Mambu-Callback string Callback URL for an asynchronous API call. Receives notification once the configuration is updated. header
body CustomFieldsConfiguration Model representation of the custom field configuration. The request body must be in YAML format. Please refer to the example provided at the update endpoint of the Custom Fields Configuration resource. body

Example responses

200 success response

---
warnings: []

400 error response

{
    "errors": [
        {
            "errorCode": 0,
            "errorSource": "human-readable description of the error",
            "errorReason": "SOURCE_OF_ERROR"
        }
    ]
}

401 invalid credentials

{
    "errors": [
        {
            "errorCode": 2,
            "errorSource": "credentials",
            "errorReason": "INVALID_CREDENTIALS"
        }
    ]
}

403 forbidden

{
    "errors": [
        {
            "errorCode": 15,
            "errorSource": "not authorized",
            "errorReason": "INVALID_PERMISSIONS"
        }
    ]
}

404 not found

{
    "errors": [
        {
            "errorCode": 3,
            "errorSource": "server",
            "errorReason": "INVALID_API_OPERATION"
        }
    ]
}

Responses

Status Meaning Description Schema
200 OK Custom field definitions configuration updated. None
202 Accepted The request has been accepted for processing. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Custom field definitions configuration not found. ErrorResponse

Response Schema

Database Backup

Allows you to trigger database backups and download them once they are ready.

triggerBackup (Database Backup)

Code samples

# You can also use wget
curl -X POST /database/backup \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /database/backup HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/database/backup',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/database/backup',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/database/backup', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/database/backup', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/database/backup");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/database/backup", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /database/backup

Trigger database backup

Body parameter

{
  "callback": "string",
  "createBackupFromDate": "2016-09-06T13:37:50+03:00",
  "tables": [
    "string"
  ]
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
body TriggerDatabaseBackupRequest The request for triggering a database backup. body

Example responses

202 Response

{
  "state": "QUEUED"
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
202 Accepted Database backup triggered. TriggerDatabaseBackupResponse
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

downloadBackup (Database Backup)

Code samples

# You can also use wget
curl -X GET /database/backup/{databaseBackupVersion} \
  -H 'Accept: application/vnd.mambu.v2+zip'

GET /database/backup/{databaseBackupVersion} HTTP/1.1

Accept: application/vnd.mambu.v2+zip

var headers = {
  'Accept':'application/vnd.mambu.v2+zip'

};

$.ajax({
  url: '/database/backup/{databaseBackupVersion}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+zip'
}

result = RestClient.get '/database/backup/{databaseBackupVersion}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+zip'
}

r = requests.get('/database/backup/{databaseBackupVersion}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+zip',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/database/backup/{databaseBackupVersion}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/database/backup/{databaseBackupVersion}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+zip"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/database/backup/{databaseBackupVersion}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /database/backup/{databaseBackupVersion}

Download database backup

Parameters

Name Type Description In
databaseBackupVersion (required) string The version of the database backup. path

Enumerated Values

Parameter Value
databaseBackupVersion LATEST

Example responses

200 Response

Responses

Status Meaning Description Schema
200 OK Database backup downloaded. string
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

Response Headers

Status Header Type Format Description
200 Content-Disposition string The format is - attachment; filename="{static_backup_file_name}.zip"
200 Content-Length integer int32 The length of the request body.
200 Last-Modified string date-time The start date from the last completed backup process.

Deposit Account Interest Availability

Allows to create, get, update or delete Interest Availabilities.

makeBulkInterestAccountSettingsAvailabilities (Deposit Account Interest Availability)

Code samples

# You can also use wget
curl -X POST /deposits/interest-availabilities:bulk \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /deposits/interest-availabilities:bulk HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/deposits/interest-availabilities:bulk',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/deposits/interest-availabilities:bulk',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/deposits/interest-availabilities:bulk', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/deposits/interest-availabilities:bulk', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/interest-availabilities:bulk");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/deposits/interest-availabilities:bulk", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /deposits/interest-availabilities:bulk

Create an interest availability for a bulk of deposit accounts.

To query the status and results of the bulk operation, use /bulks/{bulkProcessKey}.

Body parameter

{
  "accountFilter": {
    "ids": [
      "string"
    ],
    "productId": "string"
  },
  "interestAvailability": {
    "interestRateSettings": {
      "interestRate": 0,
      "interestRateTiers": [
        {
          "endingBalance": 0,
          "endingDay": 0,
          "interestRate": 0
        }
      ],
      "interestSpread": 0
    },
    "startDate": "1987-04-26",
    "type": "INTEREST"
  }
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
body (required) BulkInterestAccountSettingsAvailabilityInput The information for creating bulk Interest Availabilities. body

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
202 Accepted The bulk Interest Availabilities have been created. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

Response Headers

Status Header Type Format Description
202 Location string Bulk process key

getInterestAvailabilitiesList (Deposit Account Interest Availability)

Code samples

# You can also use wget
curl -X GET /deposits/{depositAccountId}/interest-availabilities \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /deposits/{depositAccountId}/interest-availabilities HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/deposits/{depositAccountId}/interest-availabilities',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/deposits/{depositAccountId}/interest-availabilities',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/deposits/{depositAccountId}/interest-availabilities', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/deposits/{depositAccountId}/interest-availabilities', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/{depositAccountId}/interest-availabilities");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/deposits/{depositAccountId}/interest-availabilities", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /deposits/{depositAccountId}/interest-availabilities

Get the interest availability list for a deposit account.

Parameters

Name Type Description In
depositAccountId (required) string The ID or encoded key of the deposit account. path
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query
type string The type of Interest Availabilities. query
from string(date) The start date to get Interest Availabilities. query
to string(date) The end date to to get Interest Availabilities. query

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF
type INTEREST
type OVERDRAFT
type TECHNICAL_OVERDRAFT

Example responses

200 Response

[
  {
    "encodedKey": "string",
    "interestRateSettings": {
      "encodedKey": "string",
      "interestChargeFrequency": "ANNUALIZED",
      "interestChargeFrequencyCount": 0,
      "interestRate": 0,
      "interestRateReviewCount": 0,
      "interestRateReviewUnit": "DAYS",
      "interestRateSource": "FIXED_INTEREST_RATE",
      "interestRateTerms": "FIXED",
      "interestRateTiers": [
        {
          "encodedKey": "string",
          "endingBalance": 0,
          "endingDay": 0,
          "interestRate": 0
        }
      ],
      "interestSpread": 0
    },
    "startDate": "1987-04-26",
    "type": "INTEREST"
  }
]

Responses

Status Meaning Description Schema
200 OK List of Interest Availabilities has been returned. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Deposit Account or Interest Availability does not exist. ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [InterestAccountSettingsAvailabilityResponse] [Interest Availability of a Deposit Account] none
Ā» encodedKey string The encoded key of the Interest Availability, auto generated, unique. read-only
Ā» interestRateSettings DepositAccountInterestRateSettings Represents information about the interest rate settings for deposit accounts. none
»» encodedKey string The encoded key for the set of interest settings, which is auto-generated and unique. read-only
»» interestChargeFrequency string The interest charge frequency, which shows how often interest is charged on loan or deposit accounts. none
»» interestChargeFrequencyCount integer(int32) The number of times to apply interest in a time period. none
»» interestRate number The interest rate for the deposit account. none
»» interestRateReviewCount integer(int32) The number of times to review the interest rate in a time period. none
»» interestRateReviewUnit string The time unit to use to determine the frequency of interest rate reviews. none
»» interestRateSource string The interest calculation method used. read-only
»» interestRateTerms string The terms for how interest rate is determined when accruing for an account. none
»» interestRateTiers [DepositAccountInterestRateTier] The list of interest rate tiers, which hold the values to define how interest is calculated. none
»»» encodedKey string The encoded key of the interest rate tier, auto generated, unique read-only
»»» endingBalance number The top-limit value for the account balance in order to determine if this tier is used or not none
»»» endingDay integer(int32) The end date for the account period. Used to determine if this interest rate tier is used or not. none
»»» interestRate (required) number The rate used for computing the interest for an account which has the balance less than the ending balance none
»» interestSpread number The index interest rate that is used to calculate the interest rate that is applied to accounts. none
Ā» startDate string(date) Start date of the Interest Availability. none
Ā» type string Type of the interest. none

Enumerated Values

Property Value
interestChargeFrequency ANNUALIZED
interestChargeFrequency EVERY_MONTH
interestChargeFrequency EVERY_FOUR_WEEKS
interestChargeFrequency EVERY_WEEK
interestChargeFrequency EVERY_DAY
interestChargeFrequency EVERY_X_DAYS
interestRateReviewUnit DAYS
interestRateReviewUnit WEEKS
interestRateReviewUnit MONTHS
interestRateSource FIXED_INTEREST_RATE
interestRateSource INDEX_INTEREST_RATE
interestRateTerms FIXED
interestRateTerms TIERED
interestRateTerms TIERED_PERIOD
interestRateTerms TIERED_BAND
type INTEREST
type OVERDRAFT
type TECHNICAL_OVERDRAFT

Response Headers

Status Header Type Format Description
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

createInterestAvailability (Deposit Account Interest Availability)

Code samples

# You can also use wget
curl -X POST /deposits/{depositAccountId}/interest-availabilities \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /deposits/{depositAccountId}/interest-availabilities HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/deposits/{depositAccountId}/interest-availabilities',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/deposits/{depositAccountId}/interest-availabilities',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/deposits/{depositAccountId}/interest-availabilities', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/deposits/{depositAccountId}/interest-availabilities', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/{depositAccountId}/interest-availabilities");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/deposits/{depositAccountId}/interest-availabilities", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /deposits/{depositAccountId}/interest-availabilities

Create an interest availability record for a deposit account.

Body parameter

{
  "interestRateSettings": {
    "interestRate": 0,
    "interestRateTiers": [
      {
        "endingBalance": 0,
        "endingDay": 0,
        "interestRate": 0
      }
    ],
    "interestSpread": 0
  },
  "startDate": "1987-04-26",
  "type": "INTEREST"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
depositAccountId (required) string The ID or encoded key of the deposit account. path
body (required) InterestAccountSettingsAvailability The Interest Availability to be created. body

Example responses

201 Response

{
  "encodedKey": "string",
  "interestRateSettings": {
    "encodedKey": "string",
    "interestChargeFrequency": "ANNUALIZED",
    "interestChargeFrequencyCount": 0,
    "interestRate": 0,
    "interestRateReviewCount": 0,
    "interestRateReviewUnit": "DAYS",
    "interestRateSource": "FIXED_INTEREST_RATE",
    "interestRateTerms": "FIXED",
    "interestRateTiers": [
      {
        "encodedKey": "string",
        "endingBalance": 0,
        "endingDay": 0,
        "interestRate": 0
      }
    ],
    "interestSpread": 0
  },
  "startDate": "1987-04-26",
  "type": "INTEREST"
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
201 Created Interest Availability has been created. InterestAccountSettingsAvailabilityResponse
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
409 Conflict Operation cannot be performed due to another pending operation that locked shared resources. ErrorResponse

getInterestAvailabilityById (Deposit Account Interest Availability)

Code samples

# You can also use wget
curl -X GET /deposits/{depositAccountId}/interest-availabilities/{interestAvailabilityKey} \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /deposits/{depositAccountId}/interest-availabilities/{interestAvailabilityKey} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/deposits/{depositAccountId}/interest-availabilities/{interestAvailabilityKey}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/deposits/{depositAccountId}/interest-availabilities/{interestAvailabilityKey}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/deposits/{depositAccountId}/interest-availabilities/{interestAvailabilityKey}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/deposits/{depositAccountId}/interest-availabilities/{interestAvailabilityKey}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/{depositAccountId}/interest-availabilities/{interestAvailabilityKey}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/deposits/{depositAccountId}/interest-availabilities/{interestAvailabilityKey}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /deposits/{depositAccountId}/interest-availabilities/{interestAvailabilityKey}

Get an interest availability for a deposit account.

Parameters

Name Type Description In
depositAccountId (required) string The ID or encoded key of the deposit account. path
interestAvailabilityKey (required) string The encoded key of the Interest Availability. path

Example responses

200 Response

{
  "encodedKey": "string",
  "interestRateSettings": {
    "encodedKey": "string",
    "interestChargeFrequency": "ANNUALIZED",
    "interestChargeFrequencyCount": 0,
    "interestRate": 0,
    "interestRateReviewCount": 0,
    "interestRateReviewUnit": "DAYS",
    "interestRateSource": "FIXED_INTEREST_RATE",
    "interestRateTerms": "FIXED",
    "interestRateTiers": [
      {
        "encodedKey": "string",
        "endingBalance": 0,
        "endingDay": 0,
        "interestRate": 0
      }
    ],
    "interestSpread": 0
  },
  "startDate": "1987-04-26",
  "type": "INTEREST"
}

Responses

Status Meaning Description Schema
200 OK Interest Availability has been returned. InterestAccountSettingsAvailabilityResponse
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Deposit Account or Interest Availability does not exist. ErrorResponse

updateInterestAvailability (Deposit Account Interest Availability)

Code samples

# You can also use wget
curl -X PUT /deposits/{depositAccountId}/interest-availabilities/{interestAvailabilityKey} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json'

PUT /deposits/{depositAccountId}/interest-availabilities/{interestAvailabilityKey} HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/deposits/{depositAccountId}/interest-availabilities/{interestAvailabilityKey}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.put '/deposits/{depositAccountId}/interest-availabilities/{interestAvailabilityKey}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.put('/deposits/{depositAccountId}/interest-availabilities/{interestAvailabilityKey}', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PUT','/deposits/{depositAccountId}/interest-availabilities/{interestAvailabilityKey}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/{depositAccountId}/interest-availabilities/{interestAvailabilityKey}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/deposits/{depositAccountId}/interest-availabilities/{interestAvailabilityKey}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /deposits/{depositAccountId}/interest-availabilities/{interestAvailabilityKey}

Update an interest availability for a deposit account.

Body parameter

{
  "interestRateSettings": {
    "interestRate": 0,
    "interestRateTiers": [
      {
        "endingBalance": 0,
        "endingDay": 0,
        "interestRate": 0
      }
    ],
    "interestSpread": 0
  }
}

Parameters

Name Type Description In
depositAccountId (required) string The ID or encoded key of the deposit account. path
interestAvailabilityKey (required) string The encoded key of the Interest Availability. path
body (required) InterestAccountSettingsAvailabilityForUpdate The Interest Availability to be created. body

Example responses

200 Response

{
  "encodedKey": "string",
  "interestRateSettings": {
    "encodedKey": "string",
    "interestChargeFrequency": "ANNUALIZED",
    "interestChargeFrequencyCount": 0,
    "interestRate": 0,
    "interestRateReviewCount": 0,
    "interestRateReviewUnit": "DAYS",
    "interestRateSource": "FIXED_INTEREST_RATE",
    "interestRateTerms": "FIXED",
    "interestRateTiers": [
      {
        "encodedKey": "string",
        "endingBalance": 0,
        "endingDay": 0,
        "interestRate": 0
      }
    ],
    "interestSpread": 0
  },
  "startDate": "1987-04-26",
  "type": "INTEREST"
}

Responses

Status Meaning Description Schema
200 OK The Interest Availability has been updated. InterestAccountSettingsAvailabilityResponse
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Deposit Account or Interest Availability does not exist. ErrorResponse
409 Conflict Operation cannot be performed due to another pending operation that locked shared resources. ErrorResponse

deleteInterestAvailability (Deposit Account Interest Availability)

Code samples

# You can also use wget
curl -X DELETE /deposits/{depositAccountId}/interest-availabilities/{interestAvailabilityKey} \
  -H 'Accept: application/vnd.mambu.v2+json'

DELETE /deposits/{depositAccountId}/interest-availabilities/{interestAvailabilityKey} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/deposits/{depositAccountId}/interest-availabilities/{interestAvailabilityKey}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.delete '/deposits/{depositAccountId}/interest-availabilities/{interestAvailabilityKey}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.delete('/deposits/{depositAccountId}/interest-availabilities/{interestAvailabilityKey}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('DELETE','/deposits/{depositAccountId}/interest-availabilities/{interestAvailabilityKey}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/{depositAccountId}/interest-availabilities/{interestAvailabilityKey}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/deposits/{depositAccountId}/interest-availabilities/{interestAvailabilityKey}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /deposits/{depositAccountId}/interest-availabilities/{interestAvailabilityKey}

Delete an interest availability for a deposit account.

Parameters

Name Type Description In
depositAccountId (required) string The ID or encoded key of the deposit account. path
interestAvailabilityKey (required) string The encoded key of the Interest Availability. path

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
204 No Content The Interest Availability has been deleted. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Deposit Account or Interest Availability does not exist. ErrorResponse
409 Conflict Operation cannot be performed due to another pending operation that locked shared resources. ErrorResponse

Deposit Accounts

Allows you to retrieve, create, update or delete deposit accounts.

This entity supports custom field definitions which may have been configured for your Mambu tenant using our UI or our custom fields configuration API. You can make a GET request to the /customfieldsets?availableFor=deposit_account endpoint to check for custom field definitions available for this entity.

For more general information on working with custom field definitions and their values, see Using Custom Fields. For more information on how to filter using custom field definitions and their values, see Searching by Custom Fields.

getWithholdingTaxHistory (Deposit Accounts)

Code samples

# You can also use wget
curl -X GET /deposits/{depositAccountId}/withholdingtaxes \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /deposits/{depositAccountId}/withholdingtaxes HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/deposits/{depositAccountId}/withholdingtaxes',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/deposits/{depositAccountId}/withholdingtaxes',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/deposits/{depositAccountId}/withholdingtaxes', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/deposits/{depositAccountId}/withholdingtaxes', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/{depositAccountId}/withholdingtaxes");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/deposits/{depositAccountId}/withholdingtaxes", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /deposits/{depositAccountId}/withholdingtaxes

Get deposit account withholding tax history

Parameters

Name Type Description In
depositAccountId (required) string The ID or encoded key of the deposit account. path
from string(date) The start date to get withholding tax history. query
to string(date) The end date to to get withholding tax history. query

Example responses

200 Response

[
  {
    "creationDate": "2016-09-06T13:37:50+03:00",
    "fromDate": "2016-09-06T13:37:50+03:00",
    "lastModifiedDate": "2016-09-06T13:37:50+03:00",
    "rateSourceEncodedKey": "string",
    "rateSourceId": "string",
    "rateSourceName": "string",
    "savingsAccountEncodedKey": "string",
    "toDate": "2016-09-06T13:37:50+03:00"
  }
]

Responses

Status Meaning Description Schema
200 OK The list of withholding tax history for the given period. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The deposit account was not found. ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [AccountTax] [The account tax corresponding for deposit account] none
Ā» creationDate string(date-time) The date when the rate availability was created. none
Ā» fromDate string(date-time) The date when the tax source starts to be used by the account. none
Ā» lastModifiedDate string(date-time) The last date when the rate availability was modified. none
Ā» rateSourceEncodedKey string none none
Ā» rateSourceId string The id of the source none
Ā» rateSourceName string The name of the source none
Ā» savingsAccountEncodedKey string none none
Ā» toDate string(date-time) The ending date of the tax source used by the account none

getAllCards (Deposit Accounts)

Code samples

# You can also use wget
curl -X GET /deposits/{depositAccountId}/cards \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /deposits/{depositAccountId}/cards HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/deposits/{depositAccountId}/cards',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/deposits/{depositAccountId}/cards',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/deposits/{depositAccountId}/cards', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/deposits/{depositAccountId}/cards', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/{depositAccountId}/cards");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/deposits/{depositAccountId}/cards", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /deposits/{depositAccountId}/cards

Get cards associated with an account

Parameters

Name Type Description In
depositAccountId (required) string The ID or encoded key of the deposit account. path

Example responses

200 Response

[
  {
    "referenceToken": "string"
  }
]

Responses

Status Meaning Description Schema
200 OK The list of cards attached to the account was returned. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The deposit account was not found. ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [Card] [Returns a card that can be associated to a deposit or loan account. Cards consist only of card reference tokens and the card details are not stored in Mambu.] none
Ā» referenceToken (required) string The card's reference token. none

createCard (Deposit Accounts)

Code samples

# You can also use wget
curl -X POST /deposits/{depositAccountId}/cards \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /deposits/{depositAccountId}/cards HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/deposits/{depositAccountId}/cards',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/deposits/{depositAccountId}/cards',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/deposits/{depositAccountId}/cards', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/deposits/{depositAccountId}/cards', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/{depositAccountId}/cards");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/deposits/{depositAccountId}/cards", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /deposits/{depositAccountId}/cards

Represents the information needed to create and associate a new card to an account.

Body parameter

{
  "referenceToken": "string"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
depositAccountId (required) string The ID or encoded key of the deposit account. path
body (required) Card The card to be created. body

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
201 Created The card was created. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The deposit account was not found. ErrorResponse
409 Conflict Operation cannot be performed due to another pending operation that locked shared resources. ErrorResponse

getAllAuthorizationHolds (Deposit Accounts)

Code samples

# You can also use wget
curl -X GET /deposits/{depositAccountId}/authorizationholds \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /deposits/{depositAccountId}/authorizationholds HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/deposits/{depositAccountId}/authorizationholds',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/deposits/{depositAccountId}/authorizationholds',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/deposits/{depositAccountId}/authorizationholds', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/deposits/{depositAccountId}/authorizationholds', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/{depositAccountId}/authorizationholds");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/deposits/{depositAccountId}/authorizationholds", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /deposits/{depositAccountId}/authorizationholds

Get authorization holds related to a deposit account, ordered from newest to oldest by creation date

Parameters

Name Type Description In
depositAccountId (required) string The ID or encoded key of the deposit account. path
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query
status string The status of the authorization holds to filter on query

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF
status PENDING
status REVERSED
status SETTLED
status EXPIRED

Example responses

200 Response

[
  {
    "accountKey": "string",
    "advice": true,
    "amount": 0,
    "balances": {
      "accountId": "string",
      "availableBalance": 0,
      "cardType": "DEBIT",
      "creditLimit": 0,
      "currencyCode": "string",
      "totalBalance": 0
    },
    "cardAcceptor": {
      "city": "string",
      "country": "string",
      "mcc": 0,
      "name": "string",
      "state": "string",
      "street": "string",
      "zip": "string"
    },
    "cardToken": "string",
    "creationDate": "2016-09-06T13:37:50+03:00",
    "creditDebitIndicator": "DBIT",
    "currencyCode": "string",
    "customExpirationPeriod": 0,
    "encodedKey": "string",
    "exchangeRate": 0,
    "externalReferenceId": "string",
    "originalAmount": 0,
    "originalCurrency": "string",
    "partial": true,
    "referenceDateForExpiration": "2016-09-06T13:37:50+03:00",
    "source": "CARD",
    "status": "PENDING",
    "userTransactionTime": "string"
  }
]

Responses

Status Meaning Description Schema
200 OK The list of authorization holds has been returned. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The deposit account was not found. ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [GetAuthorizationHold] [Details for retrieving a authorization hold. Deprecated due to encodedKey field.] none
Ā» accountKey string The key of the account linked with the authorization hold. read-only
Ā» advice (required) boolean Whether the given request should be accepted without balance validations. none
Ā» amount (required) number The amount of money to be held as a result of the authorization hold request. none
Ā» balances AccountBalances Account balances presented to inquirer such as card processor none
»» accountId string The unique account identifier none
»» availableBalance number The available balance of a deposit or credit account none
»» cardType string The card type either DEBIT or CREDIT none
»» creditLimit number The overdraft limit of a deposit account or the loan amount in case of a credit account none
»» currencyCode string Currency code used for the account none
»» totalBalance number The current balance of a deposit account or principal balance of a revolving credit none
Ā» cardAcceptor CardAcceptor The details of the card acceptor (merchant) in a transaction hold. none
»» city string The city in which the card acceptor has the business. none
»» country string The country in which the card acceptor has the business. none
»» mcc integer(int32) The Merchant Category Code of the card acceptor. none
»» name string The name of the card acceptor. none
»» state string The state in which the card acceptor has the business. none
»» street string The street in which the card acceptor has the business. none
»» zip string The ZIP code of the location in which the card acceptor has the business. none
Ā» cardToken string The reference token of the card. read-only
Ā» creationDate string(date-time) The organization time when the authorization hold was created read-only
Ā» creditDebitIndicator string Indicates whether the authorization hold amount is credited or debited.If not provided, the default values is DBIT. none
Ā» currencyCode string The ISO currency code in which the hold was created. The amounts are stored in the base currency, but the user could have enter it in a foreign currency. none
Ā» customExpirationPeriod integer(int32) The custom expiration period for the hold which overwrites mcc and default expiration periods none
Ā» encodedKey string The internal ID of the authorization hold, auto generated, unique. read-only
Ā» exchangeRate number The exchange rate for the original currency. none
Ā» externalReferenceId (required) string The external reference ID to be used to reference the account hold in subsequent requests. none
Ā» originalAmount number The original amount of money to be held as a result of the authorization hold request. none
Ā» originalCurrency string The original currency in which the hold was created. none
Ā» partial boolean Indicates whether the authorization is partial or not none
Ā» referenceDateForExpiration string(date-time) The date to consider as start date when calculating the number of days passed until expiration read-only
Ā» source string Indicates the source of the authorization hold, the default values is CARD. read-only
Ā» status string The authorization hold status. read-only
Ā» userTransactionTime string The formatted time at which the user made this authorization hold. none

Enumerated Values

Property Value
cardType DEBIT
cardType CREDIT
creditDebitIndicator DBIT
creditDebitIndicator CRDT
source CARD
source ACCOUNT
status PENDING
status REVERSED
status SETTLED
status EXPIRED

Response Headers

Status Header Type Format Description
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

createAuthorizationHold (Deposit Accounts)

Code samples

# You can also use wget
curl -X POST /deposits/{depositAccountId}/authorizationholds \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /deposits/{depositAccountId}/authorizationholds HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/deposits/{depositAccountId}/authorizationholds',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/deposits/{depositAccountId}/authorizationholds',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/deposits/{depositAccountId}/authorizationholds', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/deposits/{depositAccountId}/authorizationholds', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/{depositAccountId}/authorizationholds");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/deposits/{depositAccountId}/authorizationholds", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /deposits/{depositAccountId}/authorizationholds

Create an authorization hold corresponding to a given account

Body parameter

{
  "advice": true,
  "amount": 0,
  "cardAcceptor": {
    "city": "string",
    "country": "string",
    "mcc": 0,
    "name": "string",
    "state": "string",
    "street": "string",
    "zip": "string"
  },
  "creditDebitIndicator": "DBIT",
  "currencyCode": "string",
  "exchangeRate": 0,
  "externalReferenceId": "string",
  "originalAmount": 0,
  "originalCurrency": "string",
  "userTransactionTime": "string"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
depositAccountId (required) string The ID or encoded key of the deposit account. path
body (required) AccountAuthorizationHold The authorization hold to be created. body

Example responses

201 Response

{
  "accountKey": "string",
  "advice": true,
  "amount": 0,
  "cardAcceptor": {
    "city": "string",
    "country": "string",
    "mcc": 0,
    "name": "string",
    "state": "string",
    "street": "string",
    "zip": "string"
  },
  "cardToken": "string",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "creditDebitIndicator": "DBIT",
  "currencyCode": "string",
  "exchangeRate": 0,
  "externalReferenceId": "string",
  "originalAmount": 0,
  "originalCurrency": "string",
  "source": "CARD",
  "status": "PENDING",
  "userTransactionTime": "string"
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
201 Created The account authorization hold was successfully created. AccountAuthorizationHold
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The deposit account was not found. ErrorResponse
409 Conflict Operation cannot be performed due to another pending operation that locked shared resources. ErrorResponse

getFundedLoans (Deposit Accounts)

Code samples

# You can also use wget
curl -X GET /deposits/{depositAccountId}/funding \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /deposits/{depositAccountId}/funding HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/deposits/{depositAccountId}/funding',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/deposits/{depositAccountId}/funding',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/deposits/{depositAccountId}/funding', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/deposits/{depositAccountId}/funding', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/{depositAccountId}/funding");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/deposits/{depositAccountId}/funding", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /deposits/{depositAccountId}/funding

Get all loan accounts funded by the deposit account with the given ID or encoded key

Parameters

Name Type Description In
depositAccountId (required) string The ID or encoded key of the deposit account. path

Example responses

200 Response

[
  {
    "accountArrearsSettings": {
      "dateCalculationMethod": "ACCOUNT_FIRST_WENT_TO_ARREARS",
      "encodedKey": "string",
      "monthlyToleranceDay": 0,
      "nonWorkingDaysMethod": "INCLUDED",
      "toleranceCalculationMethod": "ARREARS_TOLERANCE_PERIOD",
      "toleranceFloorAmount": 0,
      "tolerancePercentageOfOutstandingPrincipal": 0,
      "tolerancePeriod": 0
    },
    "accountHolderKey": "string",
    "accountHolderType": "CLIENT",
    "accountState": "PARTIAL_APPLICATION",
    "accountSubState": "PARTIALLY_DISBURSED",
    "accruedInterest": 0,
    "accruedPenalty": 0,
    "activationTransactionKey": "string",
    "adjustTotalDueForInstallmentsWithDifferentInterval": true,
    "allowOffset": true,
    "approvedDate": "2016-09-06T13:37:50+03:00",
    "arrearsTolerancePeriod": 0,
    "assets": [
      {
        "amount": 0,
        "assetName": "string",
        "depositAccountKey": "string",
        "encodedKey": "string",
        "guarantorKey": "string",
        "guarantorType": "CLIENT",
        "originalAmount": 0,
        "originalCurrency": {
          "code": "AED",
          "currencyCode": "string"
        }
      }
    ],
    "assignedBranchKey": "string",
    "assignedCentreKey": "string",
    "assignedUserKey": "string",
    "balances": {
      "feesBalance": 0,
      "feesDue": 0,
      "feesPaid": 0,
      "holdBalance": 0,
      "interestBalance": 0,
      "interestDue": 0,
      "interestFromArrearsBalance": 0,
      "interestFromArrearsDue": 0,
      "interestFromArrearsPaid": 0,
      "interestPaid": 0,
      "penaltyBalance": 0,
      "penaltyDue": 0,
      "penaltyPaid": 0,
      "principalBalance": 0,
      "principalDue": 0,
      "principalPaid": 0,
      "redrawBalance": 0
    },
    "closedDate": "2016-09-06T13:37:50+03:00",
    "creationDate": "2016-09-06T13:37:50+03:00",
    "creditArrangementKey": "string",
    "currency": {
      "code": "AED",
      "currencyCode": "string"
    },
    "daysInArrears": 0,
    "daysLate": 0,
    "disbursementDetails": {
      "disbursementDate": "2016-09-06T13:37:50+03:00",
      "encodedKey": "string",
      "expectedDisbursementDate": "2016-09-06T13:37:50+03:00",
      "fees": [
        {
          "amount": 0,
          "encodedKey": "string",
          "percentage": 0,
          "predefinedFeeEncodedKey": "string"
        }
      ],
      "firstRepaymentDate": "2016-09-06T13:37:50+03:00",
      "transactionDetails": {
        "encodedKey": "string",
        "internalTransfer": true,
        "targetDepositAccountKey": "string",
        "transactionChannelId": "string",
        "transactionChannelKey": "string"
      }
    },
    "encodedKey": "string",
    "feesSettings": {
      "accruedFee": 0,
      "accruedFeeFromArrears": 0,
      "feeRate": 0
    },
    "fundingSources": [
      {
        "amount": 0,
        "assetName": "string",
        "depositAccountKey": "string",
        "encodedKey": "string",
        "guarantorKey": "string",
        "guarantorType": "CLIENT",
        "id": "string",
        "interestCommission": 0,
        "sharePercentage": 0
      }
    ],
    "futurePaymentsAcceptance": "NO_FUTURE_PAYMENTS",
    "guarantors": [
      {
        "amount": 0,
        "assetName": "string",
        "depositAccountKey": "string",
        "encodedKey": "string",
        "guarantorKey": "string",
        "guarantorType": "CLIENT"
      }
    ],
    "id": "string",
    "interestAccruedInBillingCycle": 0,
    "interestCommission": 0,
    "interestFromArrearsAccrued": 0,
    "interestSettings": {
      "accountInterestRateSettings": [
        {
          "encodedKey": "string",
          "indexSourceKey": "string",
          "interestRate": 0,
          "interestRateCeilingValue": 0,
          "interestRateFloorValue": 0,
          "interestRateReviewCount": 0,
          "interestRateReviewUnit": "DAYS",
          "interestRateSource": "FIXED_INTEREST_RATE",
          "interestSpread": 0,
          "validFrom": "2016-09-06T13:37:50+03:00"
        }
      ],
      "accrueInterestAfterMaturity": true,
      "accrueLateInterest": true,
      "effectiveInterestRate": 0,
      "interestApplicationDays": {
        "daysInMonth": [
          0
        ],
        "shortMonthHandlingMethod": "LAST_DAY_IN_MONTH"
      },
      "interestApplicationMethod": "AFTER_DISBURSEMENT",
      "interestBalanceCalculationMethod": "ONLY_PRINCIPAL",
      "interestCalculationMethod": "FLAT",
      "interestChargeFrequency": "ANNUALIZED",
      "interestRate": 0,
      "interestRateReviewCount": 0,
      "interestRateReviewUnit": "DAYS",
      "interestRateSource": "FIXED_INTEREST_RATE",
      "interestSpread": 0,
      "interestType": "SIMPLE_INTEREST",
      "pmtAdjustmentThreshold": {
        "method": "WORKING_DAYS",
        "numberOfDays": 0
      }
    },
    "lastAccountAppraisalDate": "2016-09-06T13:37:50+03:00",
    "lastInterestAppliedDate": "2016-09-06T13:37:50+03:00",
    "lastInterestReviewDate": "2016-09-06T13:37:50+03:00",
    "lastLockedDate": "2016-09-06T13:37:50+03:00",
    "lastModifiedDate": "2016-09-06T13:37:50+03:00",
    "lastSetToArrearsDate": "2016-09-06T13:37:50+03:00",
    "lastTaxRateReviewDate": "2016-09-06T13:37:50+03:00",
    "latePaymentsRecalculationMethod": "OVERDUE_INSTALLMENTS_INCREASE",
    "loanAmount": 0,
    "loanName": "string",
    "lockedAccountTotalDueType": "BALANCE_AMOUNT",
    "lockedOperations": [
      "APPLY_INTEREST"
    ],
    "migrationEventKey": "string",
    "modifyInterestForFirstInstallment": true,
    "notes": "string",
    "originalAccountKey": "string",
    "paymentHolidaysAccruedInterest": 0,
    "paymentMethod": "HORIZONTAL",
    "penaltySettings": {
      "loanPenaltyCalculationMethod": "NONE",
      "penaltyRate": 0
    },
    "plannedInstallmentFees": [
      {
        "amount": 0,
        "applyOnDate": "2016-09-06T13:37:50+03:00",
        "encodedKey": "string",
        "installmentKey": "string",
        "installmentNumber": 0,
        "predefinedFeeKey": "string"
      }
    ],
    "prepaymentSettings": {
      "applyInterestOnPrepaymentMethod": "AUTOMATIC",
      "elementsRecalculationMethod": "PRINCIPAL_EXPECTED_FIXED",
      "ercFreeAllowanceAmount": 0,
      "ercFreeAllowancePercentage": 0,
      "prepaymentRecalculationMethod": "NO_RECALCULATION",
      "principalPaidInstallmentStatus": "PARTIALLY_PAID"
    },
    "principalPaymentSettings": {
      "amount": 0,
      "encodedKey": "string",
      "includeFeesInFloorAmount": true,
      "includeInterestInFloorAmount": true,
      "percentage": 0,
      "principalCeilingValue": 0,
      "principalFloorValue": 0,
      "principalPaymentMethod": "FLAT",
      "totalDueAmountFloor": 0,
      "totalDuePayment": "FLAT"
    },
    "productTypeKey": "string",
    "redrawSettings": {
      "restrictNextDueWithdrawal": true
    },
    "rescheduledAccountKey": "string",
    "scheduleSettings": {
      "amortizationPeriod": 0,
      "billingCycle": {
        "days": [
          0
        ]
      },
      "defaultFirstRepaymentDueDateOffset": 0,
      "fixedDaysOfMonth": [
        0
      ],
      "gracePeriod": 0,
      "gracePeriodType": "NONE",
      "hasCustomSchedule": true,
      "paymentPlan": [
        {
          "amount": 0,
          "encodedKey": "string",
          "toInstallment": 0
        }
      ],
      "periodicPayment": 0,
      "previewSchedule": {
        "numberOfPreviewedInstalments": 0
      },
      "principalRepaymentInterval": 0,
      "repaymentInstallments": 0,
      "repaymentPeriodCount": 0,
      "repaymentPeriodUnit": "DAYS",
      "repaymentScheduleMethod": "NONE",
      "scheduleDueDatesMethod": "INTERVAL",
      "shortMonthHandlingMethod": "LAST_DAY_IN_MONTH"
    },
    "settlementAccountKey": "string",
    "taxRate": 0,
    "terminationDate": "2016-09-06T13:37:50+03:00",
    "tranches": [
      {
        "amount": 0,
        "disbursementDetails": {
          "disbursementTransactionKey": "string",
          "expectedDisbursementDate": "2016-09-06T13:37:50+03:00"
        },
        "encodedKey": "string",
        "fees": [
          {
            "amount": 0,
            "encodedKey": "string",
            "percentage": 0,
            "predefinedFeeEncodedKey": "string"
          }
        ],
        "trancheNumber": 0
      }
    ]
  }
]

Responses

Status Meaning Description Schema
200 OK The list of funded loan accounts has been returned. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The deposit account was not found. ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [LoanAccount] [Represents a loan account. A loan account defines the amount that your organization lends to a client. The terms and conditions of a loan account are defined by a loan product. In a loan account, Mambu stores all the information related to disbursements, repayments, interest rates, and withdrawals.] none
Ā» accountArrearsSettings AccountArrearsSettings The account arrears settings, holds the required information for the arrears settings of an account. none
»» dateCalculationMethod string The arrears date calculation method. none
»» encodedKey string The encoded key of the arrears base settings, auto generated, unique. read-only
»» monthlyToleranceDay integer(int32) Defines monthly arrears tolerance day value. none
»» nonWorkingDaysMethod string Shows whether the non working days are taken in consideration or not when applying penaltees/late fees or when setting an account into arrears none
»» toleranceCalculationMethod string Defines the tolerance calculation method none
»» toleranceFloorAmount number The tolerance floor amount. none
»» tolerancePercentageOfOutstandingPrincipal number Defines the arrears tolerance amount. none
»» tolerancePeriod integer(int32) Defines the arrears tolerance period value. none
Ā» accountHolderKey (required) string The encoded key of the account holder. none
Ā» accountHolderType (required) string The type of the account holder. none
Ā» accountState string The state of the loan account. none
Ā» accountSubState string A second state for the loan account. Beside the account state, a second substate is sometimes necessary to provide more information about the exact lifecycle state of a loan account.For example, even if the account state of a loan account is ACTIVE, it can also have a substate of LOCKED. none
Ā» accruedInterest number The amount of interest that has been accrued in the loan account. none
Ā» accruedPenalty number The accrued penalty, represents the amount of penalty that has been accrued in the loan account. none
Ā» activationTransactionKey string The encoded key of the transaction that activated the loan account. none
Ā» adjustTotalDueForInstallmentsWithDifferentInterval boolean Adjust the total due for repayment when the repayment period is different than the repayment frequency read-only
Ā» allowOffset boolean DEPRECATED - Will always be false. none
Ā» approvedDate string(date-time) The date the loan account was approved. none
Ā» arrearsTolerancePeriod integer(int32) The arrears tolerance (period or day of month) depending on the product settings. none
Ā» assets [Asset] The list of assets associated with the current loan account. none
»» amount (required) number The amount used by the client for the guaranty none
»» assetName (required) string The name of a value the client guarantees with (populated when the guaranty type is ASSET) none
»» depositAccountKey string The key of the deposit account used by the guarantor (populated when the guaranty type is GUARANTOR). It can be null. none
»» encodedKey string The encoded key of the security, auto generated, unique. read-only
»» guarantorKey string The key of the client/group used as the guarantor. none
»» guarantorType string The type of the guarantor (client/group) none
»» originalAmount number The original amount used by the client for a collateral asset none
»» originalCurrency Currency Represents a currency. To represent a fiat currency, the code value and the currencyCode value must be the ISO-4217 currency code of the fiat currency. To represent a non-fiat currency, the code value must be NON_FIAT and the currencyCode value must be the currency code of the non-fiat currency. none
»»» code string Fiat(ISO-4217) currency code or NON_FIAT for non fiat currencies. none
»»» currencyCode string Currency code for NON_FIAT currency. none
Ā» assignedBranchKey string The key of the branch this loan account is assigned to. The branch is set to unassigned if no branch field is set. none
Ā» assignedCentreKey string The key of the centre this account is assigned to. none
Ā» assignedUserKey string The key of the user this loan account is assigned to. none
Ā» balances Balances The loan account balance details. none
»» feesBalance number The fees balance. Represents the total fees expected to be paid on this account at a given moment. read-only
»» feesDue number The fees due. Representing the total fees due for the account. read-only
»» feesPaid number The fees paid. Represents the total fees paid for the account. read-only
»» holdBalance number The sum of all the authorization hold amounts on this account. read-only
»» interestBalance number Represents the total interest owed by the client (total interest applied for account minus interest paid). read-only
»» interestDue number The interest due. Indicates how much interest it's due for the account at this moment. read-only
»» interestFromArrearsBalance number The interest from arrears balance. Indicates interest from arrears owned by the client, from now on. (total interest from arrears accrued for account - interest from arrears paid). read-only
»» interestFromArrearsDue number The interest from arrears due. Indicates how much interest from arrears it's due for the account at this moment. read-only
»» interestFromArrearsPaid number The interest from arrears paid, indicates total interest from arrears paid into the account. read-only
»» interestPaid number The interest paid, indicates total interest paid into the account. read-only
»» penaltyBalance number The penalty balance. Represents the total penalty expected to be paid on this account at a given moment. read-only
»» penaltyDue number The penalty due. Represents the total penalty amount due for the account. read-only
»» penaltyPaid number The Penalty paid. Represents the total penalty amount paid for the account. read-only
»» principalBalance number The total principal owned by the client, from now on (principal disbursed - principal paid). read-only
»» principalDue number The principal due, indicates how much principal it's due at this moment. read-only
»» principalPaid number The principal paid, holds the value of the total paid into the account. read-only
»» redrawBalance number The total redraw amount owned by the client, from now on. none
Ā» closedDate string(date-time) The date the loan was closed. none
Ā» creationDate string(date-time) The date the loan account was created. none
Ā» creditArrangementKey string The key to the line of credit where this account is registered to. none
Ā» currency Currency Represents a currency. To represent a fiat currency, the code value and the currencyCode value must be the ISO-4217 currency code of the fiat currency. To represent a non-fiat currency, the code value must be NON_FIAT and the currencyCode value must be the currency code of the non-fiat currency. none
Ā» daysInArrears integer(int32) The number of days the loan account is in arrears. read-only
Ā» daysLate integer(int32) The number of days a repayment for the loan account is late. read-only
Ā» disbursementDetails DisbursementDetails The the disbursement details it holds the information related to the disbursement details as disbursement date, first repayment date, disbursement fees. none
»» disbursementDate string(date-time) The activation date, the date when the disbursement actually took place. none
»» encodedKey string The encoded key of the disbursement details, auto generated, unique read-only
»» expectedDisbursementDate string(date-time) The date of the expected disbursement.Stored as Organization Time. none
»» fees [CustomPredefinedFee] List of fees that should be applied at the disbursement time. none
»»» amount number The amount of the custom fee. none
»»» encodedKey string The encoded key of the custom predefined fee, auto generated, unique. read-only
»»» percentage number The percentage of the custom fee. none
»»» predefinedFeeEncodedKey string The encoded key of the predefined fee none
»» firstRepaymentDate string(date-time) The date of the expected first repayment. Stored as Organization Time. none
»» transactionDetails LoanTransactionDetails Represents the loan transaction details. none
»»» encodedKey string The encoded key of the entity, generated, globally unique read-only
»»» internalTransfer boolean Whether the transaction was transferred between loans or deposit accounts none
»»» targetDepositAccountKey string In case of a transaction to a deposit account this represent the deposit account key to which the transaction was made. none
»»» transactionChannelId string The ID of the transaction channel associated with the transaction details. none
»»» transactionChannelKey string The encoded key of the transaction channel associated with the transaction details. none
Ā» encodedKey string The encoded key of the loan account, it is auto generated, and must be unique. read-only
Ā» feesSettings FeesAccountSettings The fee settings, holds all the properties regarding fees for the loan account. none
»» accruedFee number The accrued fee. Represents the accrued fee for the loan account. The fee on loans is accrued on a daily basis, which allows charging the clients only for the days they actually used the loan amount. read-only
»» accruedFeeFromArrears number The accrued fee from arrears. Represents the accrued fee from arrears for the loan account. The fee on loans is accrued on a daily basis, which allows charging the clients only for the days they actually used the loan amount. read-only
»» feeRate number The fee rate. Represents the fee rate for the loan account. The fee on loans is accrued on a daily basis, which allows charging the clients only for the days they actually used the loan amount. none
Ā» fundingSources [InvestorFund] The list of funds associated with the loan account. none
»» amount (required) number The amount used by the client for the guaranty none
»» assetName string The name of a value the client guarantees with (populated when the guaranty type is ASSET) none
»» depositAccountKey string The key of the deposit account used by the guarantor (populated when the guaranty type is GUARANTOR). It can be null. none
»» encodedKey string The encoded key of the entity, generated, globally unique read-only
»» guarantorKey (required) string The key of the client/group used as the guarantor. none
»» guarantorType (required) string The type of the guarantor (client/group) none
»» id string Investor fund unique identifier. All versions of an investor fund will have same id. none
»» interestCommission number The constraint minimum value none
»» sharePercentage number Percentage of loan shares this investor owns none
Ā» futurePaymentsAcceptance string Shows whether the repayment transactions with entry date set in the future are allowed or not for this loan account. none
Ā» guarantors [Guarantor] The list of guarantees associated with the loan account. none
»» amount (required) number The amount used by the client for the guaranty none
»» assetName string The name of a value the client guarantees with (populated when the guaranty type is ASSET) none
»» depositAccountKey string The key of the deposit account used by the guarantor (populated when the guaranty type is GUARANTOR). It can be null. none
»» encodedKey string The encoded key of the security, auto generated, unique. read-only
»» guarantorKey (required) string The key of the client/group used as the guarantor. none
»» guarantorType (required) string The type of the guarantor (client/group) none
Ā» id string The ID of the loan account, it can be generated and customized, and must be unique. none
Ā» interestAccruedInBillingCycle number The interest that is accrued in the current billing cycle. read-only
Ā» interestCommission number The value of the interest booked by the organization from the accounts funded by investors. Null if the funds are not enabled. none
Ā» interestFromArrearsAccrued number The amount of interest from arrears that has been accrued in the loan account. read-only
Ā» interestSettings (required) InterestSettings The interest settings, holds all the properties regarding interests for the loan account. none
»» accountInterestRateSettings [AccountInterestRateSettings] Adjustable interest rates settings for loan account none
»»» encodedKey string The encoded key of the interest rate settings, auto generated, unique read-only
»»» indexSourceKey string Index rate source key. none
»»» interestRate number Interest rate value. none
»»» interestRateCeilingValue number Maximum value allowed for index based interest rate. Valid only for index interest rate. none
»»» interestRateFloorValue number Minimum value allowed for index based interest rate. Valid only for index interest rate. none
»»» interestRateReviewCount integer(int32) Interest rate review frequency unit count. Valid only for index interest rate. none
»»» interestRateReviewUnit string Interest rate review frequency measurement unit. Valid only for index interest rate. none
»»» interestRateSource (required) string Interest calculation method: fixed or indexed(interest spread + active organization index interest rate) none
»»» interestSpread number Interest spread value. none
»»» validFrom (required) string(date-time) Date since an interest rate is valid none
»» accrueInterestAfterMaturity boolean The accrue interest after maturity. If the product support this option, specify if the interest should be accrued after the account maturity date. none
»» accrueLateInterest boolean Indicates whether late interest is accrued for this loan account read-only
»» effectiveInterestRate number The effective interest rate. Represents the interest rate for the loan accounts with semi-annually compounding product. none
»» interestApplicationDays DaysInMonth Enumeration for days of month and method of handling shorter months. none
»»» daysInMonth [integer] Specifies the day(s) of the month when the interest application dates should be. Only available if the Interest Application Method is InterestApplicationMethodDTO#FIXED_DAYS_OF_MONTH. Currently only 1 value can be specified. none
»»» shortMonthHandlingMethod string Determines how to handle the short months, if they select a fixed day of month > 28. Will be null if no such date is selected. Only available if the Interest Application Method is InterestApplicationMethodDTO#FIXED_DAYS_OF_MONTH. none
»» interestApplicationMethod string The interest application method. Represents the interest application method that determines whether the interest gets applied on the account's disbursement or on each repayment. none
»» interestBalanceCalculationMethod string The interest balance calculation method. Represents the option which determines the way the balance for the account's interest is computed. none
»» interestCalculationMethod string The interest calculation method. Holds the type of interest calculation method. none
»» interestChargeFrequency string The interest change frequency. Holds the possible values for how often is interest charged on loan or deposit accounts none
»» interestRate number The interest rate. Represents the interest rate for the loan account. The interest on loans is accrued on a daily basis, which allows charging the clients only for the days they actually used the loan amount. none
»» interestRateReviewCount integer(int32) Interest rate update frequency unit count. none
»» interestRateReviewUnit string The interest rate review unit. Defines the interest rate update frequency measurement unit. none
»» interestRateSource string The interest rate source. Represents the interest calculation method: fixed or (interest spread + active organization index interest rate) none
»» interestSpread number Interest to be added to active organization index interest rate in order to find out actual interest rate none
»» interestType string The possible values for how we compute and apply the interest none
»» pmtAdjustmentThreshold PMTAdjustmentThreshold Represents PMT Adjustment threshold settings for loan accounts and loan products. none
»»» method string The method used to calculate the PMT Adjustment threshold. Supported value is CALENDAR_DAYS none
»»» numberOfDays integer(int32) The number of days that trigger a PMT Adjustment. none
Ā» lastAccountAppraisalDate string(date-time) The date the loan account has last been evaluated for interest, principal, fees, and penalties calculations expressed in the organization time format and time zone. none
Ā» lastInterestAppliedDate string(date-time) The date of the last time the loan account had interest applied (stored to interest balance), expressed in the organization time format and time zone. none
Ā» lastInterestReviewDate string(date-time) The date the interest was reviewed last time, stored in the organization time format and time zone. none
Ā» lastLockedDate string(date-time) The date when the loan account was set for the last time in the LOCKED state expressed in the organization time format and time zone. If null, the account is not locked anymore. none
Ā» lastModifiedDate string(date-time) The last date the loan was updated. none
Ā» lastSetToArrearsDate string(date-time) The date when the loan account was set to last standing or null; if never set, it is expressed in your organization time format and time zone. none
Ā» lastTaxRateReviewDate string(date-time) The date the tax rate on the loan account was last checked, expressed in the organization time format and time zone. none
Ā» latePaymentsRecalculationMethod string The overdue payments recalculation method inherited from the loan product on which this loan account is based. none
Ā» loanAmount (required) number The loan amount. none
Ā» loanName string The name of the loan account. none
Ā» lockedAccountTotalDueType string The locked account total due type. none
Ā» lockedOperations [string] A list with operations which are locked when the account is in the AccountState.LOCKED substate. none
Ā» migrationEventKey string The migration event encoded key associated with this loan account. If this account was imported, track which 'migration event' they came from. none
Ā» modifyInterestForFirstInstallment boolean Adjust the interest for the first repayment when the first repayment period is different than the repayment frequency read-only
Ā» notes string The notes about this loan account. none
Ā» originalAccountKey string The key of the original rescheduled or refinanced loan account. none
Ā» paymentHolidaysAccruedInterest number The amount of interest that has been accrued during payment holidays in the loan account. none
Ā» paymentMethod string The interest payment method that determines whether the payments are made horizontally (on the repayments) or vertically (on the loan account). none
Ā» penaltySettings PenaltySettings The penalty settings, holds all the fields regarding penalties none
»» loanPenaltyCalculationMethod string The last penalty calculation method, represents on what amount are the penalties calculated. none
»» penaltyRate number The penalty rate, represents the rate (in percent) which is charged as a penalty. none
Ā» plannedInstallmentFees [PlannedInstallmentFee] The list with manual fees planned on the installments of the loan account. none
»» amount number The amount of the planned fee. none
»» applyOnDate string(date-time) The date when a planned fee should be applied, overriding due date of the installment. It should match the interval of the installment. If it belongs to the first installment, it should be between disbursement date and installment due date. Returned only if its value has been previously set. none
»» encodedKey string The encoded key of the planned installment fee, auto generated, unique. read-only
»» installmentKey string The encoded key of the installment on which the predefined fee is planned. none
»» installmentNumber integer(int32) The number of the installment for which the predefined fee is planned. It is used only in the case when fees are created at the same time as the loan account or during preview schedule, before account creation. In all other cases, this field will be nil and installmentKey will be used to identify an installment. none
»» predefinedFeeKey (required) string The encoded key of the predefined fee which is planned. none
Ā» prepaymentSettings PrepaymentSettings The prepayment settings, holds all prepayment properties. none
»» applyInterestOnPrepaymentMethod string Apply interest on prepayment method copied from loan product on which this account is based. none
»» elementsRecalculationMethod string The elements recalculation method, indicates how the declining balance with equal installments repayments are recalculated. none
»» ercFreeAllowanceAmount number none none
»» ercFreeAllowancePercentage number Early repayment charge fee free allowance in percentage per year none
»» prepaymentRecalculationMethod string Prepayment recalculation method copied from the loan product on which this account is based. none
»» principalPaidInstallmentStatus string Installment status for the case when principal is paid off (copied from loan product). none
Ā» principalPaymentSettings PrincipalPaymentAccountSettings The principal payment account settings, holds the required information for the principal payment process of an account. none
»» amount number Fixed amount for being used for the repayments principal due. none
»» encodedKey string The encoded key of the principal payment base settings, auto generated, unique. read-only
»» includeFeesInFloorAmount boolean Boolean flag, if true, the fees will be included along with the principal in the repayment floor amount, for a revolving credit account none
»» includeInterestInFloorAmount boolean Boolean flag, if true, the interest will be included along with the principal in the repayment floor amount, for a revolving credit account none
»» percentage number Percentage of principal amount used for the repayments principal due. none
»» principalCeilingValue number The maximum principal due amount a repayment made with this settings can have none
»» principalFloorValue number The minimum principal due amount a repayment made with this settings can have none
»» principalPaymentMethod string The method of principal payment for revolving credit. none
»» totalDueAmountFloor number The minimum total due amount a repayment made with this settings can have none
»» totalDuePayment string The method of total due payment for revolving credit none
Ā» productTypeKey (required) string The key for the type of loan product that this loan account is based on. none
Ā» redrawSettings LoanAccountRedrawSettings Represents the redraw settings for a loan account. none
»» restrictNextDueWithdrawal (required) boolean TRUE if withdrawing amounts that reduce the next due instalment repayment is restricted, FALSE otherwise. none
Ā» rescheduledAccountKey string The key pointing to where this loan account was rescheduled or refinanced to. This value is only not null if rescheduled. none
Ā» scheduleSettings (required) ScheduleSettings The schedule settings, holds all schedule properties. none
»» amortizationPeriod integer(int32) The PMT is calculated as the loan would have [amortizationPeriod] installments. none
»» billingCycle BillingCycleDays Defines the billing cycles settings for a loan account none
»»» days [integer] The billing cycle start days in case it is enabled none
»» defaultFirstRepaymentDueDateOffset integer(int32) The default first repayment due date offset, indicates how many days the first repayment due date should be extended(all other due dates from the schedule are relative to first repayment due date - they will also be affected by the offset) none
»» fixedDaysOfMonth [integer] Specifies the days of the month when the repayment due dates should be. Only available if the Repayment Methodology is FIXED_DAYS_OF_MONTH. none
»» gracePeriod (required) integer(int32) The grace period. Represents the grace period for loan repayment - in number of installments. none
»» gracePeriodType string The grace period type. Representing the type of grace period which is possible for a loan account. none
»» hasCustomSchedule boolean Flag used when the repayments schedule for the current account was determined by the user, by editing the due dates or the principal due none
»» paymentPlan [PeriodicPayment] A list of periodic payments for the current loan account. none
»»» amount (required) number The PMT value used in periodic payment none
»»» encodedKey string The encoded key of the periodic payment, auto generated, unique. read-only
»»» toInstallment (required) integer(int32) The installment's position up to which the PMT will be used none
»» periodicPayment number The periodic payment amount for the accounts which have balloon payments or Reduce Number of Installments and Optimized Payments none
»» previewSchedule RevolvingAccountSettings The number of previewed instalments for an account none
»»» numberOfPreviewedInstalments integer(int32) The number of previewed instalments none
»» principalRepaymentInterval integer(int32) The principal repayment interval. Indicates the interval of repayments that the principal has to be paid. none
»» repaymentInstallments integer(int32) The repayment installments. Represents how many installments are required to pay back the loan. none
»» repaymentPeriodCount integer(int32) The repayment period count. Represents how often the loan is to be repaid: stored based on the type repayment option. none
»» repaymentPeriodUnit string The repayment period unit. Represents the frequency of loan repayment. none
»» repaymentScheduleMethod string The repayment schedule method. Represents the method that determines whether the schedule will be fixed all over the loan account's life cycle or will be dynamically recomputed when required. none
»» scheduleDueDatesMethod string The schedule due dates method. Represents the methodology used by this account to compute the due dates of the repayments. none
»» shortMonthHandlingMethod string The short handling method. Determines how to handle the short months, if they select a fixed day of month > 28. Will be null if no such date is selected and also for the Interval methodology. Only available if the Repayment Methodology is FIXED_DAYS_OF_MONTH. none
Ā» settlementAccountKey string The encoded key of the settlement account. none
Ā» taxRate number The tax rate. none
Ā» terminationDate string(date-time) The date this loan account was terminated. none
Ā» tranches [LoanTranche] The list of disbursement tranches available for the loan account. none
»» amount (required) number The amount this tranche has available for disburse none
»» disbursementDetails TrancheDisbursementDetails The disbursement details regarding a loan tranche. none
»»» disbursementTransactionKey string The key of the disbursement transaction logged when this tranche was disbursed. This field will be null until the tranche disbursement none
»»» expectedDisbursementDate string(date-time) The date when this tranche is supposed to be disbursed (as Organization Time) none
»» encodedKey string The encoded key of the transaction details , auto generated, unique. read-only
»» fees [CustomPredefinedFee] Fees that are associated with this tranche none
»» trancheNumber integer(int32) Index indicating the tranche number none

Enumerated Values

Property Value
dateCalculationMethod ACCOUNT_FIRST_WENT_TO_ARREARS
dateCalculationMethod LAST_LATE_REPAYMENT
dateCalculationMethod ACCOUNT_FIRST_BREACHED_MATERIALITY_THRESHOLD
nonWorkingDaysMethod INCLUDED
nonWorkingDaysMethod EXCLUDED
toleranceCalculationMethod ARREARS_TOLERANCE_PERIOD
toleranceCalculationMethod MONTHLY_ARREARS_TOLERANCE_DAY
accountHolderType CLIENT
accountHolderType GROUP
accountState PARTIAL_APPLICATION
accountState PENDING_APPROVAL
accountState APPROVED
accountState ACTIVE
accountState ACTIVE_IN_ARREARS
accountState CLOSED
accountState CLOSED_WRITTEN_OFF
accountState CLOSED_REJECTED
accountSubState PARTIALLY_DISBURSED
accountSubState LOCKED
accountSubState LOCKED_CAPPING
accountSubState REFINANCED
accountSubState RESCHEDULED
accountSubState WITHDRAWN
accountSubState REPAID
accountSubState REJECTED
accountSubState WRITTEN_OFF
accountSubState TERMINATED
guarantorType CLIENT
guarantorType GROUP
code AED
code AFN
code ALL
code AMD
code ANG
code AOA
code ARS
code AUD
code AWG
code AZN
code BAM
code BBD
code BDT
code BGN
code BHD
code BIF
code BMD
code BND
code BOB
code BOV
code BRL
code BSD
code BTN
code BWP
code BYR
code BYN
code BZD
code CAD
code CDF
code CHE
code CHF
code CHW
code CLF
code CLP
code CNY
code COP
code COU
code CRC
code CUC
code CUP
code CVE
code CZK
code DJF
code DKK
code DOP
code DZD
code EGP
code ERN
code ETB
code EUR
code FJD
code FKP
code GBP
code GEL
code GHS
code GIP
code GMD
code GNF
code GTQ
code GYD
code HKD
code HNL
code HRK
code HTG
code HUF
code IDR
code ILS
code INR
code IQD
code IRR
code ISK
code JMD
code JOD
code JPY
code KES
code KGS
code KHR
code KMF
code KPW
code KRW
code KWD
code KYD
code KZT
code LAK
code LBP
code LKR
code LRD
code LSL
code LTL
code LVL
code LYD
code MAD
code MDL
code MGA
code MKD
code MMK
code MNT
code MOP
code MRO
code MRU
code MUR
code MVR
code MWK
code MXN
code MXV
code MYR
code MZN
code NAD
code NGN
code NIO
code NOK
code NPR
code NZD
code OMR
code PAB
code PEN
code PGK
code PHP
code PKR
code PLN
code PYG
code QAR
code RON
code RSD
code RUB
code RWF
code SAR
code SBD
code SCR
code SDG
code SEK
code SGD
code SHP
code SLL
code SOS
code SRD
code STD
code STN
code SVC
code SYP
code SZL
code THB
code TJS
code TMT
code TND
code TOP
code TRY
code TTD
code TWD
code TZS
code UAH
code UGX
code USD
code USN
code UYI
code UYU
code UYW
code UZS
code VED
code VEF
code VES
code VND
code VUV
code WST
code XAG
code XAU
code XAF
code XBA
code XBB
code XBC
code XBD
code XCD
code XDR
code XOF
code XPD
code XPF
code XPT
code XSU
code XTS
code XUA
code XXX
code YER
code ZAR
code ZIG
code ZMK
code ZWL
code ZMW
code SSP
code NON_FIAT
guarantorType CLIENT
guarantorType GROUP
futurePaymentsAcceptance NO_FUTURE_PAYMENTS
futurePaymentsAcceptance ACCEPT_FUTURE_PAYMENTS
futurePaymentsAcceptance ACCEPT_OVERPAYMENTS
guarantorType CLIENT
guarantorType GROUP
interestRateReviewUnit DAYS
interestRateReviewUnit WEEKS
interestRateReviewUnit MONTHS
interestRateSource FIXED_INTEREST_RATE
interestRateSource INDEX_INTEREST_RATE
shortMonthHandlingMethod LAST_DAY_IN_MONTH
shortMonthHandlingMethod FIRST_DAY_OF_NEXT_MONTH
interestApplicationMethod AFTER_DISBURSEMENT
interestApplicationMethod REPAYMENT_DUE_DATE
interestApplicationMethod FIXED_DAYS_OF_MONTH
interestBalanceCalculationMethod ONLY_PRINCIPAL
interestBalanceCalculationMethod PRINCIPAL_AND_INTEREST
interestCalculationMethod FLAT
interestCalculationMethod DECLINING_BALANCE
interestCalculationMethod DECLINING_BALANCE_DISCOUNTED
interestCalculationMethod EQUAL_INSTALLMENTS
interestChargeFrequency ANNUALIZED
interestChargeFrequency EVERY_MONTH
interestChargeFrequency EVERY_FOUR_WEEKS
interestChargeFrequency EVERY_WEEK
interestChargeFrequency EVERY_DAY
interestChargeFrequency EVERY_X_DAYS
interestRateReviewUnit DAYS
interestRateReviewUnit WEEKS
interestRateReviewUnit MONTHS
interestRateSource FIXED_INTEREST_RATE
interestRateSource INDEX_INTEREST_RATE
interestType SIMPLE_INTEREST
interestType CAPITALIZED_INTEREST
interestType COMPOUNDING_INTEREST
method WORKING_DAYS
method CALENDAR_DAYS
latePaymentsRecalculationMethod OVERDUE_INSTALLMENTS_INCREASE
latePaymentsRecalculationMethod LAST_INSTALLMENT_INCREASE
latePaymentsRecalculationMethod NO_RECALCULATION
lockedAccountTotalDueType BALANCE_AMOUNT
lockedAccountTotalDueType DUE_AMOUNT_ON_LATE_INSTALLMENTS
paymentMethod HORIZONTAL
paymentMethod VERTICAL
loanPenaltyCalculationMethod NONE
loanPenaltyCalculationMethod OVERDUE_BALANCE
loanPenaltyCalculationMethod OVERDUE_BALANCE_AND_INTEREST
loanPenaltyCalculationMethod OVERDUE_BALANCE_INTEREST_AND_FEE
loanPenaltyCalculationMethod OUTSTANDING_PRINCIPAL
applyInterestOnPrepaymentMethod AUTOMATIC
applyInterestOnPrepaymentMethod MANUAL
elementsRecalculationMethod PRINCIPAL_EXPECTED_FIXED
elementsRecalculationMethod TOTAL_EXPECTED_FIXED
prepaymentRecalculationMethod NO_RECALCULATION
prepaymentRecalculationMethod RESCHEDULE_REMAINING_REPAYMENTS
prepaymentRecalculationMethod RECALCULATE_SCHEDULE_KEEP_SAME_NUMBER_OF_TERMS
prepaymentRecalculationMethod RECALCULATE_SCHEDULE_KEEP_SAME_PRINCIPAL_AMOUNT
prepaymentRecalculationMethod RECALCULATE_SCHEDULE_KEEP_SAME_TOTAL_REPAYMENT_AMOUNT
prepaymentRecalculationMethod REDUCE_AMOUNT_PER_INSTALLMENT
prepaymentRecalculationMethod REDUCE_NUMBER_OF_INSTALLMENTS
prepaymentRecalculationMethod REDUCE_NUMBER_OF_INSTALLMENTS_NEW
principalPaidInstallmentStatus PARTIALLY_PAID
principalPaidInstallmentStatus PAID
principalPaidInstallmentStatus ORIGINAL_TOTAL_EXPECTED_PAID
principalPaymentMethod FLAT
principalPaymentMethod OUTSTANDING_PRINCIPAL_PERCENTAGE
principalPaymentMethod PRINCIPAL_PERCENTAGE_LAST_DISB
principalPaymentMethod TOTAL_BALANCE_PERCENTAGE
principalPaymentMethod TOTAL_BALANCE_FLAT
principalPaymentMethod TOTAL_PRINCIPAL_PERCENTAGE
totalDuePayment FLAT
totalDuePayment OUTSTANDING_PRINCIPAL_PERCENTAGE
totalDuePayment PRINCIPAL_PERCENTAGE_LAST_DISB
totalDuePayment TOTAL_BALANCE_PERCENTAGE
totalDuePayment TOTAL_BALANCE_FLAT
totalDuePayment TOTAL_PRINCIPAL_PERCENTAGE
gracePeriodType NONE
gracePeriodType PAY_INTEREST_ONLY
gracePeriodType INTEREST_FORGIVENESS
repaymentPeriodUnit DAYS
repaymentPeriodUnit WEEKS
repaymentPeriodUnit MONTHS
repaymentPeriodUnit YEARS
repaymentScheduleMethod NONE
repaymentScheduleMethod FIXED
repaymentScheduleMethod DYNAMIC
scheduleDueDatesMethod INTERVAL
scheduleDueDatesMethod FIXED_DAYS_OF_MONTH
shortMonthHandlingMethod LAST_DAY_IN_MONTH
shortMonthHandlingMethod FIRST_DAY_OF_NEXT_MONTH

getAll (Deposit Accounts)

Code samples

# You can also use wget
curl -X GET /deposits \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /deposits HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/deposits',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/deposits',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/deposits', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/deposits', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/deposits", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /deposits

Get deposit accounts

Parameters

Name Type Description In
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query
detailsLevel string The level of details to return: FULL means the full details of the object will be returned (custom field values, address, contact info, or any other related objects) and BASIC will return only the first level elements of the object. query
creditOfficerUsername string The username of the credit officer assigned to the deposit accounts. query
branchId string The ID or encoded key of the branch assigned to the deposit accounts. query
centreId string The ID or encoded key of the centre assigned to the deposit accounts. query
accountState string The state to use to filter deposit accounts by. query
accountHolderType string The account holder type. query
accountHolderId string The ID of the account holder. query

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF
detailsLevel BASIC
detailsLevel FULL
accountState PENDING_APPROVAL
accountState APPROVED
accountState ACTIVE
accountState ACTIVE_IN_ARREARS
accountState MATURED
accountState LOCKED
accountState DORMANT
accountState CLOSED
accountState CLOSED_WRITTEN_OFF
accountState WITHDRAWN
accountState CLOSED_REJECTED
accountHolderType CLIENT
accountHolderType GROUP

Example responses

200 Response

[
  {
    "accountHolderKey": "string",
    "accountHolderType": "CLIENT",
    "accountState": "PENDING_APPROVAL",
    "accountType": "CURRENT_ACCOUNT",
    "accruedAmounts": {
      "interestAccrued": 0,
      "negativeInterestAccrued": 0,
      "overdraftInterestAccrued": 0,
      "technicalOverdraftInterestAccrued": 0
    },
    "activationDate": "2016-09-06T13:37:50+03:00",
    "approvedDate": "2016-09-06T13:37:50+03:00",
    "assignedBranchKey": "string",
    "assignedCentreKey": "string",
    "assignedUserKey": "string",
    "balances": {
      "availableBalance": 0,
      "blockedBalance": 0,
      "feesDue": 0,
      "forwardAvailableBalance": 0,
      "holdBalance": 0,
      "lockedBalance": 0,
      "overdraftAmount": 0,
      "overdraftInterestDue": 0,
      "technicalOverdraftAmount": 0,
      "technicalOverdraftInterestDue": 0,
      "totalBalance": 0
    },
    "closedDate": "2016-09-06T13:37:50+03:00",
    "creationDate": "2016-09-06T13:37:50+03:00",
    "creditArrangementKey": "string",
    "currencyCode": "string",
    "encodedKey": "string",
    "id": "string",
    "interestSettings": {
      "interestPaymentSettings": {
        "interestPaymentDates": [
          {
            "day": 0,
            "month": 0
          }
        ],
        "interestPaymentPoint": "FIRST_DAY_OF_MONTH"
      },
      "interestRateSettings": {
        "encodedKey": "string",
        "interestChargeFrequency": "ANNUALIZED",
        "interestChargeFrequencyCount": 0,
        "interestRate": 0,
        "interestRateReviewCount": 0,
        "interestRateReviewUnit": "DAYS",
        "interestRateSource": "FIXED_INTEREST_RATE",
        "interestRateTerms": "FIXED",
        "interestRateTiers": [
          {
            "encodedKey": "string",
            "endingBalance": 0,
            "endingDay": 0,
            "interestRate": 0
          }
        ],
        "interestSpread": 0
      }
    },
    "internalControls": {
      "maxDepositBalance": 0,
      "maxWithdrawalAmount": 0,
      "recommendedDepositAmount": 0,
      "targetAmount": 0
    },
    "lastAccountAppraisalDate": "2016-09-06T13:37:50+03:00",
    "lastInterestCalculationDate": "2016-09-06T13:37:50+03:00",
    "lastInterestReviewDate": "2016-09-06T13:37:50+03:00",
    "lastInterestStoredDate": "2016-09-06T13:37:50+03:00",
    "lastModifiedDate": "2016-09-06T13:37:50+03:00",
    "lastOverdraftInterestReviewDate": "2016-09-06T13:37:50+03:00",
    "lastSetToArrearsDate": "2016-09-06T13:37:50+03:00",
    "linkedSettlementAccountKeys": [
      "string"
    ],
    "lockedDate": "2016-09-06T13:37:50+03:00",
    "maturityDate": "2016-09-06T13:37:50+03:00",
    "migrationEventKey": "string",
    "name": "string",
    "notes": "string",
    "overdraftInterestSettings": {
      "interestRateSettings": {
        "encodedKey": "string",
        "interestChargeFrequency": "ANNUALIZED",
        "interestChargeFrequencyCount": 0,
        "interestRate": 0,
        "interestRateReviewCount": 0,
        "interestRateReviewUnit": "DAYS",
        "interestRateSource": "FIXED_INTEREST_RATE",
        "interestRateTerms": "FIXED",
        "interestRateTiers": [
          {
            "encodedKey": "string",
            "endingBalance": 0,
            "endingDay": 0,
            "interestRate": 0
          }
        ],
        "interestSpread": 0
      }
    },
    "overdraftSettings": {
      "allowOverdraft": true,
      "overdraftExpiryDate": "2016-09-06T13:37:50+03:00",
      "overdraftLimit": 0
    },
    "ownershipHistory": [
      {
        "previousOwnerKey": "string",
        "transferDate": "2016-09-06T13:37:50+03:00"
      }
    ],
    "productTypeKey": "string",
    "withholdingTaxSourceKey": "string"
  }
]

Responses

Status Meaning Description Schema
200 OK Deposit accounts list returned. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The deposit account was not found. ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [DepositAccount] [Represents information about a deposit account.] none
Ā» accountHolderKey (required) string The encoded key of the account holder, which is an individual client or group. none
Ā» accountHolderType (required) string The account holder type. none
Ā» accountState string The state of the deposit account. read-only
Ā» accountType string The deposit account type and the product that it belongs to. none
Ā» accruedAmounts DepositAccountAccruedAmounts Represents information about the accrued amounts of deposit accounts. none
»» interestAccrued number The amount of positive interest that has been accrued in the account. read-only
»» negativeInterestAccrued number The amount of negative interest that has been accrued in the account. read-only
»» overdraftInterestAccrued number The amount of overdraft interest that has been accrued in the account. read-only
»» technicalOverdraftInterestAccrued number The amount of technical overdraft interest that has been accrued in the account. read-only
Ā» activationDate string(date-time) The date when the deposit account was activated, in the organization's timezone and time format. read-only
Ā» approvedDate string(date-time) The date when the deposit account was approved, in the organization's timezone and time format. read-only
Ā» assignedBranchKey string The key of the branch that this deposit account is assigned to. none
Ā» assignedCentreKey string The key of the centre that this account is assigned to. none
Ā» assignedUserKey string The key of the user that this deposit is assigned to. none
Ā» balances DepositAccountBalances Represents information about the balances of a deposit account. none
»» availableBalance number The current available balance for deposit transactions. read-only
»» blockedBalance number The sum of all the blocked amounts on an account. read-only
»» feesDue number The amount of fees due to be paid on this account. read-only
»» forwardAvailableBalance number The sum of all the authorization hold amounts that have CRDT as the creditDebitIndicator for an account. read-only
»» holdBalance number The sum of all the authorization hold amounts that have DBIT as the creditDebitIndicator for an account. read-only
»» lockedBalance number The locked amount that is not available for withdrawal in the account. For more information, see Deposit Account Overview Details. read-only
»» overdraftAmount number The overdraft amount that has been taken out in the account. For more information, see Overdraft Products. read-only
»» overdraftInterestDue number The amount of interest due to be paid on an account as a result of an authorized overdraft. read-only
»» technicalOverdraftAmount number The technical overdraft amount that has been taken out in the account. For more information, see Technical Overdraft. read-only
»» technicalOverdraftInterestDue number The amount of interest due to be paid on an account as a result of a technical overdraft. read-only
»» totalBalance number The current balance of the account. read-only
Ā» closedDate string(date-time) The date when the deposit account was closed, in UTC. read-only
Ā» creationDate string(date-time) The date this deposit account was created, in UTC. read-only
Ā» creditArrangementKey string The key to the credit arrangement where this account is registered. none
Ā» currencyCode string The currency code. none
Ā» encodedKey string The encoded key of the deposit account, which is auto-generated and unique. read-only
Ā» id string The ID of the deposit account, which can be generated and customized - but must be unique. none
Ā» interestSettings DepositAccountInterestSettings Represents information about the deposit account's interest settings. none
»» interestPaymentSettings DepositAccountInterestPaymentSettings Represents information about the interest payment settings. none
»»» interestPaymentDates [MonthAndDay] The list of all dates when the interest is paid into the deposit account. none
»»»» day integer(int32) The day in the month none
»»»» month integer(int32) The month of the year none
»»» interestPaymentPoint string The interest payment point, which specifies when the interest should be paid to the account. none
»» interestRateSettings DepositAccountInterestRateSettings Represents information about the interest rate settings for deposit accounts. none
»»» encodedKey string The encoded key for the set of interest settings, which is auto-generated and unique. read-only
»»» interestChargeFrequency string The interest charge frequency, which shows how often interest is charged on loan or deposit accounts. none
»»» interestChargeFrequencyCount integer(int32) The number of times to apply interest in a time period. none
»»» interestRate number The interest rate for the deposit account. none
»»» interestRateReviewCount integer(int32) The number of times to review the interest rate in a time period. none
»»» interestRateReviewUnit string The time unit to use to determine the frequency of interest rate reviews. none
»»» interestRateSource string The interest calculation method used. read-only
»»» interestRateTerms string The terms for how interest rate is determined when accruing for an account. none
»»» interestRateTiers [DepositAccountInterestRateTier] The list of interest rate tiers, which hold the values to define how interest is calculated. none
»»»» encodedKey string The encoded key of the interest rate tier, auto generated, unique read-only
»»»» endingBalance number The top-limit value for the account balance in order to determine if this tier is used or not none
»»»» endingDay integer(int32) The end date for the account period. Used to determine if this interest rate tier is used or not. none
»»»» interestRate (required) number The rate used for computing the interest for an account which has the balance less than the ending balance none
»»» interestSpread number The index interest rate that is used to calculate the interest rate that is applied to accounts. none
Ā» internalControls DepositAccountInternalControls Represents information about internal controls. none
»» maxDepositBalance number The maximum deposit balance of the account. none
»» maxWithdrawalAmount number The maximum amount allowed for a withdrawal. none
»» recommendedDepositAmount number The recommended amount for a deposit. none
»» targetAmount number The target amount for a deposit made towards a savings goal. none
Ā» lastAccountAppraisalDate string(date-time) The date when the account was last evaluated for interest calculations and maturity, in the organization's timezone and time format. read-only
Ā» lastInterestCalculationDate string(date-time) The date when interest was last calculated for the account, in the organization's timezone and time format. read-only
Ā» lastInterestReviewDate string(date-time) The date when regular interest was last reviewed, in the organization's timezone and time format. read-only
Ā» lastInterestStoredDate string(date-time) The date when interest was last applied on the account, in the organization's timezone and time format. read-only
Ā» lastModifiedDate string(date-time) The last update date for the deposit account, in UTC. read-only
Ā» lastOverdraftInterestReviewDate string(date-time) The date when the overdraft interest was last reviewed, in the organization's timezone and time format. read-only
Ā» lastSetToArrearsDate string(date-time) The date when the deposit account was set to In Arrears, or null if the account is not In Arrears. The date is in the organization's timezone and time format. read-only
Ā» linkedSettlementAccountKeys [string] Lists all loan account keys on which the deposit account is used as the settlement account. read-only
Ā» lockedDate string(date-time) The date when the deposit account was locked, in the organization's timezone and time format. read-only
Ā» maturityDate string(date-time) The date when the account matures, for fixed or compulsory savings plans, in the organization's timezone and time format. read-only
Ā» migrationEventKey string The migration event encoded key associated with this deposit account. If this account was imported, you can track which migration event it came from. read-only
Ā» name (required) string The deposit account name. none
Ā» notes string The notes or description attached to this object. none
Ā» overdraftInterestSettings DepositAccountOverdraftInterestSettings Represents information about a deposit account's overdraft interest settings. none
»» interestRateSettings DepositAccountOverdraftInterestRateSettings Represents information about overdraft interest rate settings for deposit accounts. none
»»» encodedKey string The encoded key for the set of interest settings, which is auto-generated and unique. read-only
»»» interestChargeFrequency string The interest charge frequency, which shows how often interest is charged on loan or deposit accounts. none
»»» interestChargeFrequencyCount integer(int32) The number of times to apply interest in a time period. none
»»» interestRate number The interest rate for the deposit account. none
»»» interestRateReviewCount integer(int32) The number of times to review the interest rate in a time period. none
»»» interestRateReviewUnit string The time unit to use to determine the frequency of interest rate reviews. none
»»» interestRateSource string The interest calculation method used. read-only
»»» interestRateTerms string The terms for how interest rate is determined when accruing for an account. none
»»» interestRateTiers [DepositAccountInterestRateTier] The list of interest rate tiers, which hold the values to define how interest is calculated. none
»»» interestSpread number The index interest rate that is used to calculate the interest rate that is applied to accounts. none
Ā» overdraftSettings DepositAccountOverdraftSettings Represents information about a deposit account's overdraft settings. none
»» allowOverdraft boolean TRUE if this account supports overdraft, FALSE otherwise. none
»» overdraftExpiryDate string(date-time) The expiration date of an overdraft. none
»» overdraftLimit number The limit amount that may be taken out as overdraft, where null means 0. none
Ā» ownershipHistory [DepositAccountOwnershipHistory] The history of deposit account ownership read-only
»» previousOwnerKey string They key of the previous account holder read-only
»» transferDate string(date-time) The transfer date of the account ownership read-only
Ā» productTypeKey (required) string The key to the product type that this account is based on. none
Ā» withholdingTaxSourceKey string The tax source where the account withholding taxes will be updated. none

Enumerated Values

Property Value
accountHolderType CLIENT
accountHolderType GROUP
accountState PENDING_APPROVAL
accountState APPROVED
accountState ACTIVE
accountState ACTIVE_IN_ARREARS
accountState MATURED
accountState LOCKED
accountState DORMANT
accountState CLOSED
accountState CLOSED_WRITTEN_OFF
accountState WITHDRAWN
accountState CLOSED_REJECTED
accountType CURRENT_ACCOUNT
accountType REGULAR_SAVINGS
accountType FIXED_DEPOSIT
accountType SAVINGS_PLAN
accountType INVESTOR_ACCOUNT
interestPaymentPoint FIRST_DAY_OF_MONTH
interestPaymentPoint EVERY_WEEK
interestPaymentPoint EVERY_OTHER_WEEK
interestPaymentPoint EVERY_MONTH
interestPaymentPoint EVERY_3_MONTHS
interestPaymentPoint ON_FIXED_DATES
interestPaymentPoint DAILY
interestPaymentPoint ANNUALLY
interestPaymentPoint BI_ANNUALLY
interestPaymentPoint ON_ACCOUNT_MATURITY
interestChargeFrequency ANNUALIZED
interestChargeFrequency EVERY_MONTH
interestChargeFrequency EVERY_FOUR_WEEKS
interestChargeFrequency EVERY_WEEK
interestChargeFrequency EVERY_DAY
interestChargeFrequency EVERY_X_DAYS
interestRateReviewUnit DAYS
interestRateReviewUnit WEEKS
interestRateReviewUnit MONTHS
interestRateSource FIXED_INTEREST_RATE
interestRateSource INDEX_INTEREST_RATE
interestRateTerms FIXED
interestRateTerms TIERED
interestRateTerms TIERED_PERIOD
interestRateTerms TIERED_BAND
interestChargeFrequency ANNUALIZED
interestChargeFrequency EVERY_MONTH
interestChargeFrequency EVERY_FOUR_WEEKS
interestChargeFrequency EVERY_WEEK
interestChargeFrequency EVERY_DAY
interestChargeFrequency EVERY_X_DAYS
interestRateReviewUnit DAYS
interestRateReviewUnit WEEKS
interestRateReviewUnit MONTHS
interestRateSource FIXED_INTEREST_RATE
interestRateSource INDEX_INTEREST_RATE
interestRateTerms FIXED
interestRateTerms TIERED
interestRateTerms TIERED_PERIOD
interestRateTerms TIERED_BAND

Response Headers

Status Header Type Format Description
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

create (Deposit Accounts)

Code samples

# You can also use wget
curl -X POST /deposits \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /deposits HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/deposits',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/deposits',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/deposits', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/deposits', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/deposits", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /deposits

Create deposit account

Body parameter

{
  "accountHolderKey": "string",
  "accountHolderType": "CLIENT",
  "accountType": "CURRENT_ACCOUNT",
  "accruedAmounts": {},
  "assignedBranchKey": "string",
  "assignedCentreKey": "string",
  "assignedUserKey": "string",
  "balances": {},
  "creditArrangementKey": "string",
  "currencyCode": "string",
  "id": "string",
  "interestSettings": {
    "interestPaymentSettings": {
      "interestPaymentDates": [
        {
          "day": 0,
          "month": 0
        }
      ],
      "interestPaymentPoint": "FIRST_DAY_OF_MONTH"
    },
    "interestRateSettings": {
      "interestChargeFrequency": "ANNUALIZED",
      "interestChargeFrequencyCount": 0,
      "interestRate": 0,
      "interestRateReviewCount": 0,
      "interestRateReviewUnit": "DAYS",
      "interestRateTerms": "FIXED",
      "interestRateTiers": [
        {
          "endingBalance": 0,
          "endingDay": 0,
          "interestRate": 0
        }
      ],
      "interestSpread": 0
    }
  },
  "internalControls": {
    "maxDepositBalance": 0,
    "maxWithdrawalAmount": 0,
    "recommendedDepositAmount": 0,
    "targetAmount": 0
  },
  "name": "string",
  "notes": "string",
  "overdraftInterestSettings": {
    "interestRateSettings": {
      "interestChargeFrequency": "ANNUALIZED",
      "interestChargeFrequencyCount": 0,
      "interestRate": 0,
      "interestRateReviewCount": 0,
      "interestRateReviewUnit": "DAYS",
      "interestRateTerms": "FIXED",
      "interestRateTiers": [
        {
          "endingBalance": 0,
          "endingDay": 0,
          "interestRate": 0
        }
      ],
      "interestSpread": 0
    }
  },
  "overdraftSettings": {
    "allowOverdraft": true,
    "overdraftExpiryDate": "2016-09-06T13:37:50+03:00",
    "overdraftLimit": 0
  },
  "productTypeKey": "string",
  "withholdingTaxSourceKey": "string"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
body (required) DepositAccount Represents the information to create a deposit account. body

Example responses

201 Response

{
  "accountHolderKey": "string",
  "accountHolderType": "CLIENT",
  "accountState": "PENDING_APPROVAL",
  "accountType": "CURRENT_ACCOUNT",
  "accruedAmounts": {
    "interestAccrued": 0,
    "negativeInterestAccrued": 0,
    "overdraftInterestAccrued": 0,
    "technicalOverdraftInterestAccrued": 0
  },
  "activationDate": "2016-09-06T13:37:50+03:00",
  "approvedDate": "2016-09-06T13:37:50+03:00",
  "assignedBranchKey": "string",
  "assignedCentreKey": "string",
  "assignedUserKey": "string",
  "balances": {
    "availableBalance": 0,
    "blockedBalance": 0,
    "feesDue": 0,
    "forwardAvailableBalance": 0,
    "holdBalance": 0,
    "lockedBalance": 0,
    "overdraftAmount": 0,
    "overdraftInterestDue": 0,
    "technicalOverdraftAmount": 0,
    "technicalOverdraftInterestDue": 0,
    "totalBalance": 0
  },
  "closedDate": "2016-09-06T13:37:50+03:00",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "creditArrangementKey": "string",
  "currencyCode": "string",
  "encodedKey": "string",
  "id": "string",
  "interestSettings": {
    "interestPaymentSettings": {
      "interestPaymentDates": [
        {
          "day": 0,
          "month": 0
        }
      ],
      "interestPaymentPoint": "FIRST_DAY_OF_MONTH"
    },
    "interestRateSettings": {
      "encodedKey": "string",
      "interestChargeFrequency": "ANNUALIZED",
      "interestChargeFrequencyCount": 0,
      "interestRate": 0,
      "interestRateReviewCount": 0,
      "interestRateReviewUnit": "DAYS",
      "interestRateSource": "FIXED_INTEREST_RATE",
      "interestRateTerms": "FIXED",
      "interestRateTiers": [
        {
          "encodedKey": "string",
          "endingBalance": 0,
          "endingDay": 0,
          "interestRate": 0
        }
      ],
      "interestSpread": 0
    }
  },
  "internalControls": {
    "maxDepositBalance": 0,
    "maxWithdrawalAmount": 0,
    "recommendedDepositAmount": 0,
    "targetAmount": 0
  },
  "lastAccountAppraisalDate": "2016-09-06T13:37:50+03:00",
  "lastInterestCalculationDate": "2016-09-06T13:37:50+03:00",
  "lastInterestReviewDate": "2016-09-06T13:37:50+03:00",
  "lastInterestStoredDate": "2016-09-06T13:37:50+03:00",
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "lastOverdraftInterestReviewDate": "2016-09-06T13:37:50+03:00",
  "lastSetToArrearsDate": "2016-09-06T13:37:50+03:00",
  "linkedSettlementAccountKeys": [
    "string"
  ],
  "lockedDate": "2016-09-06T13:37:50+03:00",
  "maturityDate": "2016-09-06T13:37:50+03:00",
  "migrationEventKey": "string",
  "name": "string",
  "notes": "string",
  "overdraftInterestSettings": {
    "interestRateSettings": {
      "encodedKey": "string",
      "interestChargeFrequency": "ANNUALIZED",
      "interestChargeFrequencyCount": 0,
      "interestRate": 0,
      "interestRateReviewCount": 0,
      "interestRateReviewUnit": "DAYS",
      "interestRateSource": "FIXED_INTEREST_RATE",
      "interestRateTerms": "FIXED",
      "interestRateTiers": [
        {
          "encodedKey": "string",
          "endingBalance": 0,
          "endingDay": 0,
          "interestRate": 0
        }
      ],
      "interestSpread": 0
    }
  },
  "overdraftSettings": {
    "allowOverdraft": true,
    "overdraftExpiryDate": "2016-09-06T13:37:50+03:00",
    "overdraftLimit": 0
  },
  "ownershipHistory": [
    {
      "previousOwnerKey": "string",
      "transferDate": "2016-09-06T13:37:50+03:00"
    }
  ],
  "productTypeKey": "string",
  "withholdingTaxSourceKey": "string"
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
201 Created The deposit account has been created. DepositAccount
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
409 Conflict Operation cannot be performed due to another pending operation that locked shared resources. ErrorResponse

getPdfDocument (Deposit Accounts)

Code samples

# You can also use wget
curl -X GET /deposits/{depositAccountId}/templates/{templateId}/pdf \
  -H 'Accept: application/vnd.mambu.v2+file'

GET /deposits/{depositAccountId}/templates/{templateId}/pdf HTTP/1.1

Accept: application/vnd.mambu.v2+file

var headers = {
  'Accept':'application/vnd.mambu.v2+file'

};

$.ajax({
  url: '/deposits/{depositAccountId}/templates/{templateId}/pdf',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+file'
}

result = RestClient.get '/deposits/{depositAccountId}/templates/{templateId}/pdf',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+file'
}

r = requests.get('/deposits/{depositAccountId}/templates/{templateId}/pdf', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+file',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/deposits/{depositAccountId}/templates/{templateId}/pdf', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/{depositAccountId}/templates/{templateId}/pdf");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+file"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/deposits/{depositAccountId}/templates/{templateId}/pdf", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /deposits/{depositAccountId}/templates/{templateId}/pdf

Download deposit account document PDF

Parameters

Name Type Description In
depositAccountId (required) string The ID or encoded key of the deposit account. path
templateId (required) string The ID of the deposit product template. path
startDate string(date) The first date to consider when the document contains a list of transactions. Required when the document contains a transaction history. query
endDate string(date) The last date to consider when the document contains a list of transactions. Required when the document contains a transaction history. query

Example responses

200 Response

Responses

Status Meaning Description Schema
200 OK The deposit account PDF document was returned. string
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The deposit account or document template was not found. ErrorResponse

Response Headers

Status Header Type Format Description
200 Content-Disposition string "The format is - attachment; filename="{fileName}.extension"";

applyInterest (Deposit Accounts)

Code samples

# You can also use wget
curl -X POST /deposits/{depositAccountId}:applyInterest \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /deposits/{depositAccountId}:applyInterest HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/deposits/{depositAccountId}:applyInterest',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/deposits/{depositAccountId}:applyInterest',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/deposits/{depositAccountId}:applyInterest', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/deposits/{depositAccountId}:applyInterest', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/{depositAccountId}:applyInterest");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/deposits/{depositAccountId}:applyInterest", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /deposits/{depositAccountId}:applyInterest

Represents information to apply accrued interest.

Body parameter

{
  "interestApplicationDate": "2016-09-06T13:37:50+03:00",
  "isInterestFromArrears": true,
  "isPaymentHolidaysInterest": true,
  "notes": "string",
  "paymentHolidaysInterestAmount": 0
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
depositAccountId (required) string The ID or encoded key of the deposit to apply interest to. path
body (required) ApplyInterestInput Represents information to apply accrued interest. body

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
204 No Content Interest has been applied. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The deposit account was not found. ErrorResponse
409 Conflict Operation cannot be performed due to another pending operation that locked shared resources. ErrorResponse
429 Too Many Requests Too Many Requests ErrorResponse

changeState (Deposit Accounts)

Code samples

# You can also use wget
curl -X POST /deposits/{depositAccountId}:changeState \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /deposits/{depositAccountId}:changeState HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/deposits/{depositAccountId}:changeState',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/deposits/{depositAccountId}:changeState',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/deposits/{depositAccountId}:changeState', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/deposits/{depositAccountId}:changeState', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/{depositAccountId}:changeState");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/deposits/{depositAccountId}:changeState", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /deposits/{depositAccountId}:changeState

Represents the information to post an action, such as approving a deposit account.

Body parameter

{
  "action": "APPROVE",
  "notes": "string"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
depositAccountId (required) string The ID or encoded key of the deposit account. path
body (required) DepositAccountAction Represents the action details for a deposit account. body

Example responses

200 Response

{
  "accountHolderKey": "string",
  "accountHolderType": "CLIENT",
  "accountState": "PENDING_APPROVAL",
  "accountType": "CURRENT_ACCOUNT",
  "accruedAmounts": {
    "interestAccrued": 0,
    "negativeInterestAccrued": 0,
    "overdraftInterestAccrued": 0,
    "technicalOverdraftInterestAccrued": 0
  },
  "activationDate": "2016-09-06T13:37:50+03:00",
  "approvedDate": "2016-09-06T13:37:50+03:00",
  "assignedBranchKey": "string",
  "assignedCentreKey": "string",
  "assignedUserKey": "string",
  "balances": {
    "availableBalance": 0,
    "blockedBalance": 0,
    "feesDue": 0,
    "forwardAvailableBalance": 0,
    "holdBalance": 0,
    "lockedBalance": 0,
    "overdraftAmount": 0,
    "overdraftInterestDue": 0,
    "technicalOverdraftAmount": 0,
    "technicalOverdraftInterestDue": 0,
    "totalBalance": 0
  },
  "closedDate": "2016-09-06T13:37:50+03:00",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "creditArrangementKey": "string",
  "currencyCode": "string",
  "encodedKey": "string",
  "id": "string",
  "interestSettings": {
    "interestPaymentSettings": {
      "interestPaymentDates": [
        {
          "day": 0,
          "month": 0
        }
      ],
      "interestPaymentPoint": "FIRST_DAY_OF_MONTH"
    },
    "interestRateSettings": {
      "encodedKey": "string",
      "interestChargeFrequency": "ANNUALIZED",
      "interestChargeFrequencyCount": 0,
      "interestRate": 0,
      "interestRateReviewCount": 0,
      "interestRateReviewUnit": "DAYS",
      "interestRateSource": "FIXED_INTEREST_RATE",
      "interestRateTerms": "FIXED",
      "interestRateTiers": [
        {
          "encodedKey": "string",
          "endingBalance": 0,
          "endingDay": 0,
          "interestRate": 0
        }
      ],
      "interestSpread": 0
    }
  },
  "internalControls": {
    "maxDepositBalance": 0,
    "maxWithdrawalAmount": 0,
    "recommendedDepositAmount": 0,
    "targetAmount": 0
  },
  "lastAccountAppraisalDate": "2016-09-06T13:37:50+03:00",
  "lastInterestCalculationDate": "2016-09-06T13:37:50+03:00",
  "lastInterestReviewDate": "2016-09-06T13:37:50+03:00",
  "lastInterestStoredDate": "2016-09-06T13:37:50+03:00",
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "lastOverdraftInterestReviewDate": "2016-09-06T13:37:50+03:00",
  "lastSetToArrearsDate": "2016-09-06T13:37:50+03:00",
  "linkedSettlementAccountKeys": [
    "string"
  ],
  "lockedDate": "2016-09-06T13:37:50+03:00",
  "maturityDate": "2016-09-06T13:37:50+03:00",
  "migrationEventKey": "string",
  "name": "string",
  "notes": "string",
  "overdraftInterestSettings": {
    "interestRateSettings": {
      "encodedKey": "string",
      "interestChargeFrequency": "ANNUALIZED",
      "interestChargeFrequencyCount": 0,
      "interestRate": 0,
      "interestRateReviewCount": 0,
      "interestRateReviewUnit": "DAYS",
      "interestRateSource": "FIXED_INTEREST_RATE",
      "interestRateTerms": "FIXED",
      "interestRateTiers": [
        {
          "encodedKey": "string",
          "endingBalance": 0,
          "endingDay": 0,
          "interestRate": 0
        }
      ],
      "interestSpread": 0
    }
  },
  "overdraftSettings": {
    "allowOverdraft": true,
    "overdraftExpiryDate": "2016-09-06T13:37:50+03:00",
    "overdraftLimit": 0
  },
  "ownershipHistory": [
    {
      "previousOwnerKey": "string",
      "transferDate": "2016-09-06T13:37:50+03:00"
    }
  ],
  "productTypeKey": "string",
  "withholdingTaxSourceKey": "string"
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
200 OK The deposit account action has been posted. DepositAccount
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The deposit account was not found. ErrorResponse
409 Conflict Operation cannot be performed due to another pending operation that locked shared resources. ErrorResponse

getById (Deposit Accounts)

Code samples

# You can also use wget
curl -X GET /deposits/{depositAccountId} \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /deposits/{depositAccountId} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/deposits/{depositAccountId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/deposits/{depositAccountId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/deposits/{depositAccountId}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/deposits/{depositAccountId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/{depositAccountId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/deposits/{depositAccountId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /deposits/{depositAccountId}

Get deposit account

Parameters

Name Type Description In
depositAccountId (required) string The ID or encoded key of the deposit account. path
detailsLevel string The level of details to return: FULL means the full details of the object will be returned (custom field values, address, contact info, or any other related objects) and BASIC will return only the first level elements of the object. query

Enumerated Values

Parameter Value
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

{
  "accountHolderKey": "string",
  "accountHolderType": "CLIENT",
  "accountState": "PENDING_APPROVAL",
  "accountType": "CURRENT_ACCOUNT",
  "accruedAmounts": {
    "interestAccrued": 0,
    "negativeInterestAccrued": 0,
    "overdraftInterestAccrued": 0,
    "technicalOverdraftInterestAccrued": 0
  },
  "activationDate": "2016-09-06T13:37:50+03:00",
  "approvedDate": "2016-09-06T13:37:50+03:00",
  "assignedBranchKey": "string",
  "assignedCentreKey": "string",
  "assignedUserKey": "string",
  "balances": {
    "availableBalance": 0,
    "blockedBalance": 0,
    "feesDue": 0,
    "forwardAvailableBalance": 0,
    "holdBalance": 0,
    "lockedBalance": 0,
    "overdraftAmount": 0,
    "overdraftInterestDue": 0,
    "technicalOverdraftAmount": 0,
    "technicalOverdraftInterestDue": 0,
    "totalBalance": 0
  },
  "closedDate": "2016-09-06T13:37:50+03:00",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "creditArrangementKey": "string",
  "currencyCode": "string",
  "encodedKey": "string",
  "id": "string",
  "interestSettings": {
    "interestPaymentSettings": {
      "interestPaymentDates": [
        {
          "day": 0,
          "month": 0
        }
      ],
      "interestPaymentPoint": "FIRST_DAY_OF_MONTH"
    },
    "interestRateSettings": {
      "encodedKey": "string",
      "interestChargeFrequency": "ANNUALIZED",
      "interestChargeFrequencyCount": 0,
      "interestRate": 0,
      "interestRateReviewCount": 0,
      "interestRateReviewUnit": "DAYS",
      "interestRateSource": "FIXED_INTEREST_RATE",
      "interestRateTerms": "FIXED",
      "interestRateTiers": [
        {
          "encodedKey": "string",
          "endingBalance": 0,
          "endingDay": 0,
          "interestRate": 0
        }
      ],
      "interestSpread": 0
    }
  },
  "internalControls": {
    "maxDepositBalance": 0,
    "maxWithdrawalAmount": 0,
    "recommendedDepositAmount": 0,
    "targetAmount": 0
  },
  "lastAccountAppraisalDate": "2016-09-06T13:37:50+03:00",
  "lastInterestCalculationDate": "2016-09-06T13:37:50+03:00",
  "lastInterestReviewDate": "2016-09-06T13:37:50+03:00",
  "lastInterestStoredDate": "2016-09-06T13:37:50+03:00",
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "lastOverdraftInterestReviewDate": "2016-09-06T13:37:50+03:00",
  "lastSetToArrearsDate": "2016-09-06T13:37:50+03:00",
  "linkedSettlementAccountKeys": [
    "string"
  ],
  "lockedDate": "2016-09-06T13:37:50+03:00",
  "maturityDate": "2016-09-06T13:37:50+03:00",
  "migrationEventKey": "string",
  "name": "string",
  "notes": "string",
  "overdraftInterestSettings": {
    "interestRateSettings": {
      "encodedKey": "string",
      "interestChargeFrequency": "ANNUALIZED",
      "interestChargeFrequencyCount": 0,
      "interestRate": 0,
      "interestRateReviewCount": 0,
      "interestRateReviewUnit": "DAYS",
      "interestRateSource": "FIXED_INTEREST_RATE",
      "interestRateTerms": "FIXED",
      "interestRateTiers": [
        {
          "encodedKey": "string",
          "endingBalance": 0,
          "endingDay": 0,
          "interestRate": 0
        }
      ],
      "interestSpread": 0
    }
  },
  "overdraftSettings": {
    "allowOverdraft": true,
    "overdraftExpiryDate": "2016-09-06T13:37:50+03:00",
    "overdraftLimit": 0
  },
  "ownershipHistory": [
    {
      "previousOwnerKey": "string",
      "transferDate": "2016-09-06T13:37:50+03:00"
    }
  ],
  "productTypeKey": "string",
  "withholdingTaxSourceKey": "string"
}

Responses

Status Meaning Description Schema
200 OK The deposit account has been returned. DepositAccount
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The deposit account was not found. ErrorResponse

update (Deposit Accounts)

Code samples

# You can also use wget
curl -X PUT /deposits/{depositAccountId} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json'

PUT /deposits/{depositAccountId} HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/deposits/{depositAccountId}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.put '/deposits/{depositAccountId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.put('/deposits/{depositAccountId}', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PUT','/deposits/{depositAccountId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/{depositAccountId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/deposits/{depositAccountId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /deposits/{depositAccountId}

Update deposit account

Body parameter

{
  "accountHolderKey": "string",
  "accountHolderType": "CLIENT",
  "accountType": "CURRENT_ACCOUNT",
  "accruedAmounts": {},
  "assignedBranchKey": "string",
  "assignedCentreKey": "string",
  "assignedUserKey": "string",
  "balances": {},
  "creditArrangementKey": "string",
  "currencyCode": "string",
  "id": "string",
  "interestSettings": {
    "interestPaymentSettings": {
      "interestPaymentDates": [
        {
          "day": 0,
          "month": 0
        }
      ],
      "interestPaymentPoint": "FIRST_DAY_OF_MONTH"
    },
    "interestRateSettings": {
      "interestChargeFrequency": "ANNUALIZED",
      "interestChargeFrequencyCount": 0,
      "interestRate": 0,
      "interestRateReviewCount": 0,
      "interestRateReviewUnit": "DAYS",
      "interestRateTerms": "FIXED",
      "interestRateTiers": [
        {
          "endingBalance": 0,
          "endingDay": 0,
          "interestRate": 0
        }
      ],
      "interestSpread": 0
    }
  },
  "internalControls": {
    "maxDepositBalance": 0,
    "maxWithdrawalAmount": 0,
    "recommendedDepositAmount": 0,
    "targetAmount": 0
  },
  "name": "string",
  "notes": "string",
  "overdraftInterestSettings": {
    "interestRateSettings": {
      "interestChargeFrequency": "ANNUALIZED",
      "interestChargeFrequencyCount": 0,
      "interestRate": 0,
      "interestRateReviewCount": 0,
      "interestRateReviewUnit": "DAYS",
      "interestRateTerms": "FIXED",
      "interestRateTiers": [
        {
          "endingBalance": 0,
          "endingDay": 0,
          "interestRate": 0
        }
      ],
      "interestSpread": 0
    }
  },
  "overdraftSettings": {
    "allowOverdraft": true,
    "overdraftExpiryDate": "2016-09-06T13:37:50+03:00",
    "overdraftLimit": 0
  },
  "productTypeKey": "string",
  "withholdingTaxSourceKey": "string"
}

Parameters

Name Type Description In
depositAccountId (required) string The ID or encoded key of the deposit account. path
body DepositAccount Represents information about a deposit account. body

Example responses

200 Response

{
  "accountHolderKey": "string",
  "accountHolderType": "CLIENT",
  "accountState": "PENDING_APPROVAL",
  "accountType": "CURRENT_ACCOUNT",
  "accruedAmounts": {
    "interestAccrued": 0,
    "negativeInterestAccrued": 0,
    "overdraftInterestAccrued": 0,
    "technicalOverdraftInterestAccrued": 0
  },
  "activationDate": "2016-09-06T13:37:50+03:00",
  "approvedDate": "2016-09-06T13:37:50+03:00",
  "assignedBranchKey": "string",
  "assignedCentreKey": "string",
  "assignedUserKey": "string",
  "balances": {
    "availableBalance": 0,
    "blockedBalance": 0,
    "feesDue": 0,
    "forwardAvailableBalance": 0,
    "holdBalance": 0,
    "lockedBalance": 0,
    "overdraftAmount": 0,
    "overdraftInterestDue": 0,
    "technicalOverdraftAmount": 0,
    "technicalOverdraftInterestDue": 0,
    "totalBalance": 0
  },
  "closedDate": "2016-09-06T13:37:50+03:00",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "creditArrangementKey": "string",
  "currencyCode": "string",
  "encodedKey": "string",
  "id": "string",
  "interestSettings": {
    "interestPaymentSettings": {
      "interestPaymentDates": [
        {
          "day": 0,
          "month": 0
        }
      ],
      "interestPaymentPoint": "FIRST_DAY_OF_MONTH"
    },
    "interestRateSettings": {
      "encodedKey": "string",
      "interestChargeFrequency": "ANNUALIZED",
      "interestChargeFrequencyCount": 0,
      "interestRate": 0,
      "interestRateReviewCount": 0,
      "interestRateReviewUnit": "DAYS",
      "interestRateSource": "FIXED_INTEREST_RATE",
      "interestRateTerms": "FIXED",
      "interestRateTiers": [
        {
          "encodedKey": "string",
          "endingBalance": 0,
          "endingDay": 0,
          "interestRate": 0
        }
      ],
      "interestSpread": 0
    }
  },
  "internalControls": {
    "maxDepositBalance": 0,
    "maxWithdrawalAmount": 0,
    "recommendedDepositAmount": 0,
    "targetAmount": 0
  },
  "lastAccountAppraisalDate": "2016-09-06T13:37:50+03:00",
  "lastInterestCalculationDate": "2016-09-06T13:37:50+03:00",
  "lastInterestReviewDate": "2016-09-06T13:37:50+03:00",
  "lastInterestStoredDate": "2016-09-06T13:37:50+03:00",
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "lastOverdraftInterestReviewDate": "2016-09-06T13:37:50+03:00",
  "lastSetToArrearsDate": "2016-09-06T13:37:50+03:00",
  "linkedSettlementAccountKeys": [
    "string"
  ],
  "lockedDate": "2016-09-06T13:37:50+03:00",
  "maturityDate": "2016-09-06T13:37:50+03:00",
  "migrationEventKey": "string",
  "name": "string",
  "notes": "string",
  "overdraftInterestSettings": {
    "interestRateSettings": {
      "encodedKey": "string",
      "interestChargeFrequency": "ANNUALIZED",
      "interestChargeFrequencyCount": 0,
      "interestRate": 0,
      "interestRateReviewCount": 0,
      "interestRateReviewUnit": "DAYS",
      "interestRateSource": "FIXED_INTEREST_RATE",
      "interestRateTerms": "FIXED",
      "interestRateTiers": [
        {
          "encodedKey": "string",
          "endingBalance": 0,
          "endingDay": 0,
          "interestRate": 0
        }
      ],
      "interestSpread": 0
    }
  },
  "overdraftSettings": {
    "allowOverdraft": true,
    "overdraftExpiryDate": "2016-09-06T13:37:50+03:00",
    "overdraftLimit": 0
  },
  "ownershipHistory": [
    {
      "previousOwnerKey": "string",
      "transferDate": "2016-09-06T13:37:50+03:00"
    }
  ],
  "productTypeKey": "string",
  "withholdingTaxSourceKey": "string"
}

Responses

Status Meaning Description Schema
200 OK The deposit account has been updated. DepositAccount
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The deposit account was not found. ErrorResponse
409 Conflict Operation cannot be performed due to another pending operation that locked shared resources. ErrorResponse

delete (Deposit Accounts)

Code samples

# You can also use wget
curl -X DELETE /deposits/{depositAccountId} \
  -H 'Accept: application/vnd.mambu.v2+json'

DELETE /deposits/{depositAccountId} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/deposits/{depositAccountId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.delete '/deposits/{depositAccountId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.delete('/deposits/{depositAccountId}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('DELETE','/deposits/{depositAccountId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/{depositAccountId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/deposits/{depositAccountId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /deposits/{depositAccountId}

Delete inactive deposit account

Parameters

Name Type Description In
depositAccountId (required) string The ID or encoded key of the deposit account. path

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
204 No Content The deposit account has been deleted. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The deposit account was not found. ErrorResponse
409 Conflict Operation cannot be performed due to another pending operation that locked shared resources. ErrorResponse

patch (Deposit Accounts)

Code samples

# You can also use wget
curl -X PATCH /deposits/{depositAccountId} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json'

PATCH /deposits/{depositAccountId} HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/deposits/{depositAccountId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.patch '/deposits/{depositAccountId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.patch('/deposits/{depositAccountId}', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PATCH','/deposits/{depositAccountId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/{depositAccountId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PATCH");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/deposits/{depositAccountId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PATCH /deposits/{depositAccountId}

Partially update deposit account

Body parameter

[
  {
    "from": "string",
    "op": "ADD",
    "path": "string",
    "value": {}
  }
]

Parameters

Name Type Description In
depositAccountId (required) string The ID or encoded key of the deposit account. path
body (required) PatchOperation Patch operations to be applied to a resource. body

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
204 No Content The deposit account has been updated. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The deposit account was not found. ErrorResponse
409 Conflict Operation cannot be performed due to another pending operation that locked shared resources. ErrorResponse

transferOwnership (Deposit Accounts)

Code samples

# You can also use wget
curl -X POST /deposits/{depositAccountId}:transferOwnership \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /deposits/{depositAccountId}:transferOwnership HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/deposits/{depositAccountId}:transferOwnership',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/deposits/{depositAccountId}:transferOwnership',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/deposits/{depositAccountId}:transferOwnership', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/deposits/{depositAccountId}:transferOwnership', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/{depositAccountId}:transferOwnership");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/deposits/{depositAccountId}:transferOwnership", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /deposits/{depositAccountId}:transferOwnership

Transfer the account ownership from current account holder to a new one (client/group).

Body parameter

{
  "targetHolderKey": "string"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
depositAccountId (required) string The ID or encoded key of the deposit account to have it's ownership transferred. path
body (required) TransferOwnershipAction The information needed to transfer the account ownership from current account holder to a new one. body

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
204 No Content The account ownership has been transferred to the new account holder. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The deposit account was not found. ErrorResponse
409 Conflict Operation cannot be performed due to another pending operation that locked shared resources. ErrorResponse

getAuthorizationHoldById (Deposit Accounts)

Code samples

# You can also use wget
curl -X GET /deposits/{depositAccountId}/authorizationholds/{authorizationHoldExternalReferenceId} \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /deposits/{depositAccountId}/authorizationholds/{authorizationHoldExternalReferenceId} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/deposits/{depositAccountId}/authorizationholds/{authorizationHoldExternalReferenceId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/deposits/{depositAccountId}/authorizationholds/{authorizationHoldExternalReferenceId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/deposits/{depositAccountId}/authorizationholds/{authorizationHoldExternalReferenceId}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/deposits/{depositAccountId}/authorizationholds/{authorizationHoldExternalReferenceId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/{depositAccountId}/authorizationholds/{authorizationHoldExternalReferenceId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/deposits/{depositAccountId}/authorizationholds/{authorizationHoldExternalReferenceId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /deposits/{depositAccountId}/authorizationholds/{authorizationHoldExternalReferenceId}

Get account authorization hold

Parameters

Name Type Description In
depositAccountId (required) string The ID or encoded key of the deposit account. path
authorizationHoldExternalReferenceId (required) string The ID used to reference the authorization hold. path

Example responses

200 Response

{
  "accountKey": "string",
  "advice": true,
  "amount": 0,
  "cardAcceptor": {
    "city": "string",
    "country": "string",
    "mcc": 0,
    "name": "string",
    "state": "string",
    "street": "string",
    "zip": "string"
  },
  "cardToken": "string",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "creditDebitIndicator": "DBIT",
  "currencyCode": "string",
  "exchangeRate": 0,
  "externalReferenceId": "string",
  "originalAmount": 0,
  "originalCurrency": "string",
  "source": "CARD",
  "status": "PENDING",
  "userTransactionTime": "string"
}

Responses

Status Meaning Description Schema
200 OK The authorization hold has been returned. AccountAuthorizationHold
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The deposit account was not found. ErrorResponse

reverseAuthorizationHold (Deposit Accounts)

Code samples

# You can also use wget
curl -X DELETE /deposits/{depositAccountId}/authorizationholds/{authorizationHoldExternalReferenceId} \
  -H 'Accept: application/vnd.mambu.v2+json'

DELETE /deposits/{depositAccountId}/authorizationholds/{authorizationHoldExternalReferenceId} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/deposits/{depositAccountId}/authorizationholds/{authorizationHoldExternalReferenceId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.delete '/deposits/{depositAccountId}/authorizationholds/{authorizationHoldExternalReferenceId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.delete('/deposits/{depositAccountId}/authorizationholds/{authorizationHoldExternalReferenceId}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('DELETE','/deposits/{depositAccountId}/authorizationholds/{authorizationHoldExternalReferenceId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/{depositAccountId}/authorizationholds/{authorizationHoldExternalReferenceId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/deposits/{depositAccountId}/authorizationholds/{authorizationHoldExternalReferenceId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /deposits/{depositAccountId}/authorizationholds/{authorizationHoldExternalReferenceId}

Reverse account authorization hold

Parameters

Name Type Description In
depositAccountId (required) string The ID or encoded key of the deposit account. path
authorizationHoldExternalReferenceId (required) string The ID used to reference the authorization hold. path

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
204 No Content The account authorization hold was successfully reversed. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The account or authorization hold was not found. ErrorResponse
409 Conflict Operation cannot be performed due to another pending operation that locked shared resources. ErrorResponse

Code samples

# You can also use wget
curl -X POST /deposits:search \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json'

POST /deposits:search HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/deposits:search',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.post '/deposits:search',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.post('/deposits:search', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/deposits:search', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits:search");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/deposits:search", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /deposits:search

Search deposit accounts

For more information on performing searches, please read the Searching for Records section above.

Body parameter

{
  "filterCriteria": [
    {
      "field": "encodedKey",
      "operator": "EQUALS",
      "secondValue": "string",
      "value": "string",
      "values": [
        "string"
      ]
    }
  ],
  "sortingCriteria": {
    "field": "encodedKey",
    "order": "ASC"
  }
}

Parameters

Name Type Description In
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query
cursor string Pagination, cursor to start searching at when retrieving elements, used in combination with limit to paginate results query
detailsLevel string The level of details to return: FULL means the full details of the object will be returned (custom field values, address, contact info, or any other related objects) and BASIC will return only the first level elements of the object. query
body (required) DepositAccountSearchCriteria The criteria to be used to search the deposit accounts. body

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

[
  {
    "accountHolderKey": "string",
    "accountHolderType": "CLIENT",
    "accountState": "PENDING_APPROVAL",
    "accountType": "CURRENT_ACCOUNT",
    "accruedAmounts": {
      "interestAccrued": 0,
      "negativeInterestAccrued": 0,
      "overdraftInterestAccrued": 0,
      "technicalOverdraftInterestAccrued": 0
    },
    "activationDate": "2016-09-06T13:37:50+03:00",
    "approvedDate": "2016-09-06T13:37:50+03:00",
    "assignedBranchKey": "string",
    "assignedCentreKey": "string",
    "assignedUserKey": "string",
    "balances": {
      "availableBalance": 0,
      "blockedBalance": 0,
      "feesDue": 0,
      "forwardAvailableBalance": 0,
      "holdBalance": 0,
      "lockedBalance": 0,
      "overdraftAmount": 0,
      "overdraftInterestDue": 0,
      "technicalOverdraftAmount": 0,
      "technicalOverdraftInterestDue": 0,
      "totalBalance": 0
    },
    "closedDate": "2016-09-06T13:37:50+03:00",
    "creationDate": "2016-09-06T13:37:50+03:00",
    "creditArrangementKey": "string",
    "currencyCode": "string",
    "encodedKey": "string",
    "id": "string",
    "interestSettings": {
      "interestPaymentSettings": {
        "interestPaymentDates": [
          {
            "day": 0,
            "month": 0
          }
        ],
        "interestPaymentPoint": "FIRST_DAY_OF_MONTH"
      },
      "interestRateSettings": {
        "encodedKey": "string",
        "interestChargeFrequency": "ANNUALIZED",
        "interestChargeFrequencyCount": 0,
        "interestRate": 0,
        "interestRateReviewCount": 0,
        "interestRateReviewUnit": "DAYS",
        "interestRateSource": "FIXED_INTEREST_RATE",
        "interestRateTerms": "FIXED",
        "interestRateTiers": [
          {
            "encodedKey": "string",
            "endingBalance": 0,
            "endingDay": 0,
            "interestRate": 0
          }
        ],
        "interestSpread": 0
      }
    },
    "internalControls": {
      "maxDepositBalance": 0,
      "maxWithdrawalAmount": 0,
      "recommendedDepositAmount": 0,
      "targetAmount": 0
    },
    "lastAccountAppraisalDate": "2016-09-06T13:37:50+03:00",
    "lastInterestCalculationDate": "2016-09-06T13:37:50+03:00",
    "lastInterestReviewDate": "2016-09-06T13:37:50+03:00",
    "lastInterestStoredDate": "2016-09-06T13:37:50+03:00",
    "lastModifiedDate": "2016-09-06T13:37:50+03:00",
    "lastOverdraftInterestReviewDate": "2016-09-06T13:37:50+03:00",
    "lastSetToArrearsDate": "2016-09-06T13:37:50+03:00",
    "linkedSettlementAccountKeys": [
      "string"
    ],
    "lockedDate": "2016-09-06T13:37:50+03:00",
    "maturityDate": "2016-09-06T13:37:50+03:00",
    "migrationEventKey": "string",
    "name": "string",
    "notes": "string",
    "overdraftInterestSettings": {
      "interestRateSettings": {
        "encodedKey": "string",
        "interestChargeFrequency": "ANNUALIZED",
        "interestChargeFrequencyCount": 0,
        "interestRate": 0,
        "interestRateReviewCount": 0,
        "interestRateReviewUnit": "DAYS",
        "interestRateSource": "FIXED_INTEREST_RATE",
        "interestRateTerms": "FIXED",
        "interestRateTiers": [
          {
            "encodedKey": "string",
            "endingBalance": 0,
            "endingDay": 0,
            "interestRate": 0
          }
        ],
        "interestSpread": 0
      }
    },
    "overdraftSettings": {
      "allowOverdraft": true,
      "overdraftExpiryDate": "2016-09-06T13:37:50+03:00",
      "overdraftLimit": 0
    },
    "ownershipHistory": [
      {
        "previousOwnerKey": "string",
        "transferDate": "2016-09-06T13:37:50+03:00"
      }
    ],
    "productTypeKey": "string",
    "withholdingTaxSourceKey": "string"
  }
]

Responses

Status Meaning Description Schema
200 OK The deposit account search results have been returned. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [DepositAccount] [Represents information about a deposit account.] none
Ā» accountHolderKey (required) string The encoded key of the account holder, which is an individual client or group. none
Ā» accountHolderType (required) string The account holder type. none
Ā» accountState string The state of the deposit account. read-only
Ā» accountType string The deposit account type and the product that it belongs to. none
Ā» accruedAmounts DepositAccountAccruedAmounts Represents information about the accrued amounts of deposit accounts. none
»» interestAccrued number The amount of positive interest that has been accrued in the account. read-only
»» negativeInterestAccrued number The amount of negative interest that has been accrued in the account. read-only
»» overdraftInterestAccrued number The amount of overdraft interest that has been accrued in the account. read-only
»» technicalOverdraftInterestAccrued number The amount of technical overdraft interest that has been accrued in the account. read-only
Ā» activationDate string(date-time) The date when the deposit account was activated, in the organization's timezone and time format. read-only
Ā» approvedDate string(date-time) The date when the deposit account was approved, in the organization's timezone and time format. read-only
Ā» assignedBranchKey string The key of the branch that this deposit account is assigned to. none
Ā» assignedCentreKey string The key of the centre that this account is assigned to. none
Ā» assignedUserKey string The key of the user that this deposit is assigned to. none
Ā» balances DepositAccountBalances Represents information about the balances of a deposit account. none
»» availableBalance number The current available balance for deposit transactions. read-only
»» blockedBalance number The sum of all the blocked amounts on an account. read-only
»» feesDue number The amount of fees due to be paid on this account. read-only
»» forwardAvailableBalance number The sum of all the authorization hold amounts that have CRDT as the creditDebitIndicator for an account. read-only
»» holdBalance number The sum of all the authorization hold amounts that have DBIT as the creditDebitIndicator for an account. read-only
»» lockedBalance number The locked amount that is not available for withdrawal in the account. For more information, see Deposit Account Overview Details. read-only
»» overdraftAmount number The overdraft amount that has been taken out in the account. For more information, see Overdraft Products. read-only
»» overdraftInterestDue number The amount of interest due to be paid on an account as a result of an authorized overdraft. read-only
»» technicalOverdraftAmount number The technical overdraft amount that has been taken out in the account. For more information, see Technical Overdraft. read-only
»» technicalOverdraftInterestDue number The amount of interest due to be paid on an account as a result of a technical overdraft. read-only
»» totalBalance number The current balance of the account. read-only
Ā» closedDate string(date-time) The date when the deposit account was closed, in UTC. read-only
Ā» creationDate string(date-time) The date this deposit account was created, in UTC. read-only
Ā» creditArrangementKey string The key to the credit arrangement where this account is registered. none
Ā» currencyCode string The currency code. none
Ā» encodedKey string The encoded key of the deposit account, which is auto-generated and unique. read-only
Ā» id string The ID of the deposit account, which can be generated and customized - but must be unique. none
Ā» interestSettings DepositAccountInterestSettings Represents information about the deposit account's interest settings. none
»» interestPaymentSettings DepositAccountInterestPaymentSettings Represents information about the interest payment settings. none
»»» interestPaymentDates [MonthAndDay] The list of all dates when the interest is paid into the deposit account. none
»»»» day integer(int32) The day in the month none
»»»» month integer(int32) The month of the year none
»»» interestPaymentPoint string The interest payment point, which specifies when the interest should be paid to the account. none
»» interestRateSettings DepositAccountInterestRateSettings Represents information about the interest rate settings for deposit accounts. none
»»» encodedKey string The encoded key for the set of interest settings, which is auto-generated and unique. read-only
»»» interestChargeFrequency string The interest charge frequency, which shows how often interest is charged on loan or deposit accounts. none
»»» interestChargeFrequencyCount integer(int32) The number of times to apply interest in a time period. none
»»» interestRate number The interest rate for the deposit account. none
»»» interestRateReviewCount integer(int32) The number of times to review the interest rate in a time period. none
»»» interestRateReviewUnit string The time unit to use to determine the frequency of interest rate reviews. none
»»» interestRateSource string The interest calculation method used. read-only
»»» interestRateTerms string The terms for how interest rate is determined when accruing for an account. none
»»» interestRateTiers [DepositAccountInterestRateTier] The list of interest rate tiers, which hold the values to define how interest is calculated. none
»»»» encodedKey string The encoded key of the interest rate tier, auto generated, unique read-only
»»»» endingBalance number The top-limit value for the account balance in order to determine if this tier is used or not none
»»»» endingDay integer(int32) The end date for the account period. Used to determine if this interest rate tier is used or not. none
»»»» interestRate (required) number The rate used for computing the interest for an account which has the balance less than the ending balance none
»»» interestSpread number The index interest rate that is used to calculate the interest rate that is applied to accounts. none
Ā» internalControls DepositAccountInternalControls Represents information about internal controls. none
»» maxDepositBalance number The maximum deposit balance of the account. none
»» maxWithdrawalAmount number The maximum amount allowed for a withdrawal. none
»» recommendedDepositAmount number The recommended amount for a deposit. none
»» targetAmount number The target amount for a deposit made towards a savings goal. none
Ā» lastAccountAppraisalDate string(date-time) The date when the account was last evaluated for interest calculations and maturity, in the organization's timezone and time format. read-only
Ā» lastInterestCalculationDate string(date-time) The date when interest was last calculated for the account, in the organization's timezone and time format. read-only
Ā» lastInterestReviewDate string(date-time) The date when regular interest was last reviewed, in the organization's timezone and time format. read-only
Ā» lastInterestStoredDate string(date-time) The date when interest was last applied on the account, in the organization's timezone and time format. read-only
Ā» lastModifiedDate string(date-time) The last update date for the deposit account, in UTC. read-only
Ā» lastOverdraftInterestReviewDate string(date-time) The date when the overdraft interest was last reviewed, in the organization's timezone and time format. read-only
Ā» lastSetToArrearsDate string(date-time) The date when the deposit account was set to In Arrears, or null if the account is not In Arrears. The date is in the organization's timezone and time format. read-only
Ā» linkedSettlementAccountKeys [string] Lists all loan account keys on which the deposit account is used as the settlement account. read-only
Ā» lockedDate string(date-time) The date when the deposit account was locked, in the organization's timezone and time format. read-only
Ā» maturityDate string(date-time) The date when the account matures, for fixed or compulsory savings plans, in the organization's timezone and time format. read-only
Ā» migrationEventKey string The migration event encoded key associated with this deposit account. If this account was imported, you can track which migration event it came from. read-only
Ā» name (required) string The deposit account name. none
Ā» notes string The notes or description attached to this object. none
Ā» overdraftInterestSettings DepositAccountOverdraftInterestSettings Represents information about a deposit account's overdraft interest settings. none
»» interestRateSettings DepositAccountOverdraftInterestRateSettings Represents information about overdraft interest rate settings for deposit accounts. none
»»» encodedKey string The encoded key for the set of interest settings, which is auto-generated and unique. read-only
»»» interestChargeFrequency string The interest charge frequency, which shows how often interest is charged on loan or deposit accounts. none
»»» interestChargeFrequencyCount integer(int32) The number of times to apply interest in a time period. none
»»» interestRate number The interest rate for the deposit account. none
»»» interestRateReviewCount integer(int32) The number of times to review the interest rate in a time period. none
»»» interestRateReviewUnit string The time unit to use to determine the frequency of interest rate reviews. none
»»» interestRateSource string The interest calculation method used. read-only
»»» interestRateTerms string The terms for how interest rate is determined when accruing for an account. none
»»» interestRateTiers [DepositAccountInterestRateTier] The list of interest rate tiers, which hold the values to define how interest is calculated. none
»»» interestSpread number The index interest rate that is used to calculate the interest rate that is applied to accounts. none
Ā» overdraftSettings DepositAccountOverdraftSettings Represents information about a deposit account's overdraft settings. none
»» allowOverdraft boolean TRUE if this account supports overdraft, FALSE otherwise. none
»» overdraftExpiryDate string(date-time) The expiration date of an overdraft. none
»» overdraftLimit number The limit amount that may be taken out as overdraft, where null means 0. none
Ā» ownershipHistory [DepositAccountOwnershipHistory] The history of deposit account ownership read-only
»» previousOwnerKey string They key of the previous account holder read-only
»» transferDate string(date-time) The transfer date of the account ownership read-only
Ā» productTypeKey (required) string The key to the product type that this account is based on. none
Ā» withholdingTaxSourceKey string The tax source where the account withholding taxes will be updated. none

Enumerated Values

Property Value
accountHolderType CLIENT
accountHolderType GROUP
accountState PENDING_APPROVAL
accountState APPROVED
accountState ACTIVE
accountState ACTIVE_IN_ARREARS
accountState MATURED
accountState LOCKED
accountState DORMANT
accountState CLOSED
accountState CLOSED_WRITTEN_OFF
accountState WITHDRAWN
accountState CLOSED_REJECTED
accountType CURRENT_ACCOUNT
accountType REGULAR_SAVINGS
accountType FIXED_DEPOSIT
accountType SAVINGS_PLAN
accountType INVESTOR_ACCOUNT
interestPaymentPoint FIRST_DAY_OF_MONTH
interestPaymentPoint EVERY_WEEK
interestPaymentPoint EVERY_OTHER_WEEK
interestPaymentPoint EVERY_MONTH
interestPaymentPoint EVERY_3_MONTHS
interestPaymentPoint ON_FIXED_DATES
interestPaymentPoint DAILY
interestPaymentPoint ANNUALLY
interestPaymentPoint BI_ANNUALLY
interestPaymentPoint ON_ACCOUNT_MATURITY
interestChargeFrequency ANNUALIZED
interestChargeFrequency EVERY_MONTH
interestChargeFrequency EVERY_FOUR_WEEKS
interestChargeFrequency EVERY_WEEK
interestChargeFrequency EVERY_DAY
interestChargeFrequency EVERY_X_DAYS
interestRateReviewUnit DAYS
interestRateReviewUnit WEEKS
interestRateReviewUnit MONTHS
interestRateSource FIXED_INTEREST_RATE
interestRateSource INDEX_INTEREST_RATE
interestRateTerms FIXED
interestRateTerms TIERED
interestRateTerms TIERED_PERIOD
interestRateTerms TIERED_BAND
interestChargeFrequency ANNUALIZED
interestChargeFrequency EVERY_MONTH
interestChargeFrequency EVERY_FOUR_WEEKS
interestChargeFrequency EVERY_WEEK
interestChargeFrequency EVERY_DAY
interestChargeFrequency EVERY_X_DAYS
interestRateReviewUnit DAYS
interestRateReviewUnit WEEKS
interestRateReviewUnit MONTHS
interestRateSource FIXED_INTEREST_RATE
interestRateSource INDEX_INTEREST_RATE
interestRateTerms FIXED
interestRateTerms TIERED
interestRateTerms TIERED_PERIOD
interestRateTerms TIERED_BAND

Response Headers

Status Header Type Format Description
200 Items-Next-Cursor string The next cursor to be used by the subsequent calls
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

getScheduleForFundedAccount (Deposit Accounts)

Code samples

# You can also use wget
curl -X GET /deposits/{depositAccountId}/funding/{loanAccountId}/schedule \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /deposits/{depositAccountId}/funding/{loanAccountId}/schedule HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/deposits/{depositAccountId}/funding/{loanAccountId}/schedule',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/deposits/{depositAccountId}/funding/{loanAccountId}/schedule',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/deposits/{depositAccountId}/funding/{loanAccountId}/schedule', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/deposits/{depositAccountId}/funding/{loanAccountId}/schedule', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/{depositAccountId}/funding/{loanAccountId}/schedule");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/deposits/{depositAccountId}/funding/{loanAccountId}/schedule", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /deposits/{depositAccountId}/funding/{loanAccountId}/schedule

Allows retrieval of the loan account schedule for a loan account with the given id or encodedKey and funded by the deposit account with the given id or encodedKey.

Parameters

Name Type Description In
depositAccountId (required) string The ID or encoded key of the deposit account. path
loanAccountId (required) string The ID or encoded key of the loan account. path

Example responses

200 Response

{
  "currency": {
    "code": "AED",
    "currencyCode": "string"
  },
  "installments": [
    {
      "carryForwardInterestSplit": {
        "amount": 0,
        "tax": 0
      },
      "customSettingDetails": [
        {
          "loanTransactionKey": "string",
          "source": "string",
          "type": "string"
        }
      ],
      "dueDate": "2016-09-06T13:37:50+03:00",
      "encodedKey": "string",
      "expectedClosingBalance": 0,
      "fee": {
        "amount": {
          "due": 0,
          "expected": 0,
          "expectedUnapplied": 0,
          "paid": 0
        },
        "tax": {
          "due": 0,
          "expected": 0,
          "paid": 0
        }
      },
      "feeDetails": [
        {
          "amount": {
            "due": 0,
            "expected": 0,
            "paid": 0,
            "reduced": 0
          },
          "encodedKey": "string",
          "id": "string",
          "name": "string",
          "tax": {
            "due": 0,
            "expected": 0,
            "paid": 0,
            "reduced": 0
          }
        }
      ],
      "fundersInterestDue": 0,
      "interest": {
        "amount": {
          "due": 0,
          "expected": 0,
          "paid": 0
        },
        "tax": {
          "due": 0,
          "expected": 0,
          "paid": 0
        }
      },
      "interestAccrued": 0,
      "isPaymentHoliday": true,
      "lastPaidDate": "2016-09-06T13:37:50+03:00",
      "lastPenaltyAppliedDate": "2016-09-06T13:37:50+03:00",
      "nonScheduledPrincipalBalanceOverpayment": 0,
      "notes": "string",
      "number": "string",
      "organizationCommissionDue": 0,
      "parentAccountKey": "string",
      "penalty": {
        "amount": {
          "due": 0,
          "expected": 0,
          "paid": 0
        },
        "tax": {
          "due": 0,
          "expected": 0,
          "paid": 0
        }
      },
      "principal": {
        "amount": {
          "due": 0,
          "expected": 0,
          "paid": 0
        }
      },
      "repaidDate": "2016-09-06T13:37:50+03:00",
      "state": "PENDING"
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK Funded Loan Account schedule retrieved LoanAccountSchedule
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan Account or Deposit Account not found ErrorResponse

deleteCard (Deposit Accounts)

Code samples

# You can also use wget
curl -X DELETE /deposits/{depositAccountId}/cards/{cardReferenceToken} \
  -H 'Accept: application/vnd.mambu.v2+json'

DELETE /deposits/{depositAccountId}/cards/{cardReferenceToken} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/deposits/{depositAccountId}/cards/{cardReferenceToken}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.delete '/deposits/{depositAccountId}/cards/{cardReferenceToken}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.delete('/deposits/{depositAccountId}/cards/{cardReferenceToken}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('DELETE','/deposits/{depositAccountId}/cards/{cardReferenceToken}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/{depositAccountId}/cards/{cardReferenceToken}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/deposits/{depositAccountId}/cards/{cardReferenceToken}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /deposits/{depositAccountId}/cards/{cardReferenceToken}

Represents the information needed to delete a card associated to an account using its reference token.

Parameters

Name Type Description In
depositAccountId (required) string The ID or encoded key of the deposit account. path
cardReferenceToken (required) string The reference token of the card to be returned. path

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
204 No Content The card was deleted. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The deposit account was not found. ErrorResponse

getDepositAccountDocument (Deposit Accounts)

Code samples

# You can also use wget
curl -X GET /deposits/{depositAccountId}/templates/{templateId} \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /deposits/{depositAccountId}/templates/{templateId} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/deposits/{depositAccountId}/templates/{templateId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/deposits/{depositAccountId}/templates/{templateId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/deposits/{depositAccountId}/templates/{templateId}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/deposits/{depositAccountId}/templates/{templateId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/{depositAccountId}/templates/{templateId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/deposits/{depositAccountId}/templates/{templateId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /deposits/{depositAccountId}/templates/{templateId}

Get deposit account document

Parameters

Name Type Description In
depositAccountId (required) string The ID or encoded key of the deposit account. path
templateId (required) string The ID of the deposit product template. path
startDate string(date) The first date to consider when the document contains a list of transactions. Required when the document contains a transaction history. query
endDate string(date) The last date to consider when the document contains a list of transactions. Required when the document contains a transaction history. query

Example responses

200 Response

"string"

Responses

Status Meaning Description Schema
200 OK The deposit account document has been returned. string
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The deposit account or document template was not found. ErrorResponse

startMaturity (Deposit Accounts)

Code samples

# You can also use wget
curl -X POST /deposits/{depositAccountId}:startMaturity \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /deposits/{depositAccountId}:startMaturity HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/deposits/{depositAccountId}:startMaturity',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/deposits/{depositAccountId}:startMaturity',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/deposits/{depositAccountId}:startMaturity', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/deposits/{depositAccountId}:startMaturity', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/{depositAccountId}:startMaturity");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/deposits/{depositAccountId}:startMaturity", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /deposits/{depositAccountId}:startMaturity

Represents information to start the maturity period for the specified deposit account.

Body parameter

{
  "maturityDate": "1987-04-26",
  "notes": "string"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
depositAccountId (required) string The ID or encoded key of the deposit account. path
body (required) StartMaturityAction Represents the action to start the maturity period for a deposit account. body

Example responses

200 Response

{
  "accountHolderKey": "string",
  "accountHolderType": "CLIENT",
  "accountState": "PENDING_APPROVAL",
  "accountType": "CURRENT_ACCOUNT",
  "accruedAmounts": {
    "interestAccrued": 0,
    "negativeInterestAccrued": 0,
    "overdraftInterestAccrued": 0,
    "technicalOverdraftInterestAccrued": 0
  },
  "activationDate": "2016-09-06T13:37:50+03:00",
  "approvedDate": "2016-09-06T13:37:50+03:00",
  "assignedBranchKey": "string",
  "assignedCentreKey": "string",
  "assignedUserKey": "string",
  "balances": {
    "availableBalance": 0,
    "blockedBalance": 0,
    "feesDue": 0,
    "forwardAvailableBalance": 0,
    "holdBalance": 0,
    "lockedBalance": 0,
    "overdraftAmount": 0,
    "overdraftInterestDue": 0,
    "technicalOverdraftAmount": 0,
    "technicalOverdraftInterestDue": 0,
    "totalBalance": 0
  },
  "closedDate": "2016-09-06T13:37:50+03:00",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "creditArrangementKey": "string",
  "currencyCode": "string",
  "encodedKey": "string",
  "id": "string",
  "interestSettings": {
    "interestPaymentSettings": {
      "interestPaymentDates": [
        {
          "day": 0,
          "month": 0
        }
      ],
      "interestPaymentPoint": "FIRST_DAY_OF_MONTH"
    },
    "interestRateSettings": {
      "encodedKey": "string",
      "interestChargeFrequency": "ANNUALIZED",
      "interestChargeFrequencyCount": 0,
      "interestRate": 0,
      "interestRateReviewCount": 0,
      "interestRateReviewUnit": "DAYS",
      "interestRateSource": "FIXED_INTEREST_RATE",
      "interestRateTerms": "FIXED",
      "interestRateTiers": [
        {
          "encodedKey": "string",
          "endingBalance": 0,
          "endingDay": 0,
          "interestRate": 0
        }
      ],
      "interestSpread": 0
    }
  },
  "internalControls": {
    "maxDepositBalance": 0,
    "maxWithdrawalAmount": 0,
    "recommendedDepositAmount": 0,
    "targetAmount": 0
  },
  "lastAccountAppraisalDate": "2016-09-06T13:37:50+03:00",
  "lastInterestCalculationDate": "2016-09-06T13:37:50+03:00",
  "lastInterestReviewDate": "2016-09-06T13:37:50+03:00",
  "lastInterestStoredDate": "2016-09-06T13:37:50+03:00",
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "lastOverdraftInterestReviewDate": "2016-09-06T13:37:50+03:00",
  "lastSetToArrearsDate": "2016-09-06T13:37:50+03:00",
  "linkedSettlementAccountKeys": [
    "string"
  ],
  "lockedDate": "2016-09-06T13:37:50+03:00",
  "maturityDate": "2016-09-06T13:37:50+03:00",
  "migrationEventKey": "string",
  "name": "string",
  "notes": "string",
  "overdraftInterestSettings": {
    "interestRateSettings": {
      "encodedKey": "string",
      "interestChargeFrequency": "ANNUALIZED",
      "interestChargeFrequencyCount": 0,
      "interestRate": 0,
      "interestRateReviewCount": 0,
      "interestRateReviewUnit": "DAYS",
      "interestRateSource": "FIXED_INTEREST_RATE",
      "interestRateTerms": "FIXED",
      "interestRateTiers": [
        {
          "encodedKey": "string",
          "endingBalance": 0,
          "endingDay": 0,
          "interestRate": 0
        }
      ],
      "interestSpread": 0
    }
  },
  "overdraftSettings": {
    "allowOverdraft": true,
    "overdraftExpiryDate": "2016-09-06T13:37:50+03:00",
    "overdraftLimit": 0
  },
  "ownershipHistory": [
    {
      "previousOwnerKey": "string",
      "transferDate": "2016-09-06T13:37:50+03:00"
    }
  ],
  "productTypeKey": "string",
  "withholdingTaxSourceKey": "string"
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
200 OK The start maturity action has been posted. DepositAccount
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The deposit account was not found. ErrorResponse
409 Conflict Operation cannot be performed due to another pending operation that locked shared resources. ErrorResponse

changeWithholdingTax (Deposit Accounts)

Code samples

# You can also use wget
curl -X POST /deposits/{depositAccountId}:changeWithholdingTax \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /deposits/{depositAccountId}:changeWithholdingTax HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/deposits/{depositAccountId}:changeWithholdingTax',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/deposits/{depositAccountId}:changeWithholdingTax',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/deposits/{depositAccountId}:changeWithholdingTax', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/deposits/{depositAccountId}:changeWithholdingTax', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/{depositAccountId}:changeWithholdingTax");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/deposits/{depositAccountId}:changeWithholdingTax", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /deposits/{depositAccountId}:changeWithholdingTax

Change deposit account withholding tax rate

Body parameter

{
  "withholdingTaxSourceKey": "string"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
depositAccountId (required) string The ID or encoded key of the deposit account. path
body (required) ChangeWithholdingTaxAction Represents the information needed to change the withholding tax rate. body

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
204 No Content The withholding tax rate change has been applied to this deposit account. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The deposit account was not found. ErrorResponse

reopen (Deposit Accounts)

Code samples

# You can also use wget
curl -X POST /deposits/{depositAccountId}:reopen \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /deposits/{depositAccountId}:reopen HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/deposits/{depositAccountId}:reopen',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/deposits/{depositAccountId}:reopen',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/deposits/{depositAccountId}:reopen', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/deposits/{depositAccountId}:reopen', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/{depositAccountId}:reopen");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/deposits/{depositAccountId}:reopen", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /deposits/{depositAccountId}:reopen

Reopen a deposit account

Body parameter

{
  "notes": "string"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
depositAccountId (required) string The ID or encoded key of the deposit to be reopened. path
body (required) ReopenDepositAction Represents the information needed to reopen a deposit account. body

Example responses

200 Response

{
  "accountHolderKey": "string",
  "accountHolderType": "CLIENT",
  "accountState": "PENDING_APPROVAL",
  "accountType": "CURRENT_ACCOUNT",
  "accruedAmounts": {
    "interestAccrued": 0,
    "negativeInterestAccrued": 0,
    "overdraftInterestAccrued": 0,
    "technicalOverdraftInterestAccrued": 0
  },
  "activationDate": "2016-09-06T13:37:50+03:00",
  "approvedDate": "2016-09-06T13:37:50+03:00",
  "assignedBranchKey": "string",
  "assignedCentreKey": "string",
  "assignedUserKey": "string",
  "balances": {
    "availableBalance": 0,
    "blockedBalance": 0,
    "feesDue": 0,
    "forwardAvailableBalance": 0,
    "holdBalance": 0,
    "lockedBalance": 0,
    "overdraftAmount": 0,
    "overdraftInterestDue": 0,
    "technicalOverdraftAmount": 0,
    "technicalOverdraftInterestDue": 0,
    "totalBalance": 0
  },
  "closedDate": "2016-09-06T13:37:50+03:00",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "creditArrangementKey": "string",
  "currencyCode": "string",
  "encodedKey": "string",
  "id": "string",
  "interestSettings": {
    "interestPaymentSettings": {
      "interestPaymentDates": [
        {
          "day": 0,
          "month": 0
        }
      ],
      "interestPaymentPoint": "FIRST_DAY_OF_MONTH"
    },
    "interestRateSettings": {
      "encodedKey": "string",
      "interestChargeFrequency": "ANNUALIZED",
      "interestChargeFrequencyCount": 0,
      "interestRate": 0,
      "interestRateReviewCount": 0,
      "interestRateReviewUnit": "DAYS",
      "interestRateSource": "FIXED_INTEREST_RATE",
      "interestRateTerms": "FIXED",
      "interestRateTiers": [
        {
          "encodedKey": "string",
          "endingBalance": 0,
          "endingDay": 0,
          "interestRate": 0
        }
      ],
      "interestSpread": 0
    }
  },
  "internalControls": {
    "maxDepositBalance": 0,
    "maxWithdrawalAmount": 0,
    "recommendedDepositAmount": 0,
    "targetAmount": 0
  },
  "lastAccountAppraisalDate": "2016-09-06T13:37:50+03:00",
  "lastInterestCalculationDate": "2016-09-06T13:37:50+03:00",
  "lastInterestReviewDate": "2016-09-06T13:37:50+03:00",
  "lastInterestStoredDate": "2016-09-06T13:37:50+03:00",
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "lastOverdraftInterestReviewDate": "2016-09-06T13:37:50+03:00",
  "lastSetToArrearsDate": "2016-09-06T13:37:50+03:00",
  "linkedSettlementAccountKeys": [
    "string"
  ],
  "lockedDate": "2016-09-06T13:37:50+03:00",
  "maturityDate": "2016-09-06T13:37:50+03:00",
  "migrationEventKey": "string",
  "name": "string",
  "notes": "string",
  "overdraftInterestSettings": {
    "interestRateSettings": {
      "encodedKey": "string",
      "interestChargeFrequency": "ANNUALIZED",
      "interestChargeFrequencyCount": 0,
      "interestRate": 0,
      "interestRateReviewCount": 0,
      "interestRateReviewUnit": "DAYS",
      "interestRateSource": "FIXED_INTEREST_RATE",
      "interestRateTerms": "FIXED",
      "interestRateTiers": [
        {
          "encodedKey": "string",
          "endingBalance": 0,
          "endingDay": 0,
          "interestRate": 0
        }
      ],
      "interestSpread": 0
    }
  },
  "overdraftSettings": {
    "allowOverdraft": true,
    "overdraftExpiryDate": "2016-09-06T13:37:50+03:00",
    "overdraftLimit": 0
  },
  "ownershipHistory": [
    {
      "previousOwnerKey": "string",
      "transferDate": "2016-09-06T13:37:50+03:00"
    }
  ],
  "productTypeKey": "string",
  "withholdingTaxSourceKey": "string"
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
200 OK Deposit account reopened. DepositAccount
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The deposit account was not found. ErrorResponse
409 Conflict Operation cannot be performed due to another pending operation that locked shared resources. ErrorResponse

undoMaturity (Deposit Accounts)

Code samples

# You can also use wget
curl -X POST /deposits/{depositAccountId}:undoMaturity \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /deposits/{depositAccountId}:undoMaturity HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/deposits/{depositAccountId}:undoMaturity',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/deposits/{depositAccountId}:undoMaturity',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/deposits/{depositAccountId}:undoMaturity', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/deposits/{depositAccountId}:undoMaturity', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/{depositAccountId}:undoMaturity");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/deposits/{depositAccountId}:undoMaturity", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /deposits/{depositAccountId}:undoMaturity

Represents the action to undo the maturity period for the specified deposit account.

Body parameter

{
  "notes": "string"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
depositAccountId (required) string The ID or encoded key of the deposit account. path
body UndoMaturityAction Represents the action to undo the maturity period for the specified deposit account. body

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
204 No Content The undo maturity action has been posted. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The deposit account was not found. ErrorResponse
409 Conflict Operation cannot be performed due to another pending operation that locked shared resources. ErrorResponse

changeInterestRate (Deposit Accounts)

Code samples

# You can also use wget
curl -X POST /deposits/{depositAccountId}:changeInterestRate \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /deposits/{depositAccountId}:changeInterestRate HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/deposits/{depositAccountId}:changeInterestRate',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/deposits/{depositAccountId}:changeInterestRate',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/deposits/{depositAccountId}:changeInterestRate', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/deposits/{depositAccountId}:changeInterestRate', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/{depositAccountId}:changeInterestRate");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/deposits/{depositAccountId}:changeInterestRate", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /deposits/{depositAccountId}:changeInterestRate

Change deposit account interest rate

Body parameter

{
  "interestRate": 0,
  "notes": "string",
  "valueDate": "1987-04-26"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
depositAccountId (required) string The ID or encoded key of the deposit account. path
body (required) ChangeInterestRateAction Represents the information needed to change the interest rate. body

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
204 No Content The interest rate change has been applied to the deposit account. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The deposit account was not found. ErrorResponse
409 Conflict Operation cannot be performed due to another pending operation that locked shared resources. ErrorResponse

unblockFund (Deposit Accounts)

Code samples

# You can also use wget
curl -X DELETE /deposits/{depositAccountId}/blocks/{externalReferenceId} \
  -H 'Accept: application/vnd.mambu.v2+json'

DELETE /deposits/{depositAccountId}/blocks/{externalReferenceId} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/deposits/{depositAccountId}/blocks/{externalReferenceId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.delete '/deposits/{depositAccountId}/blocks/{externalReferenceId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.delete('/deposits/{depositAccountId}/blocks/{externalReferenceId}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('DELETE','/deposits/{depositAccountId}/blocks/{externalReferenceId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/{depositAccountId}/blocks/{externalReferenceId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/deposits/{depositAccountId}/blocks/{externalReferenceId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /deposits/{depositAccountId}/blocks/{externalReferenceId}

Unblock a previously blocked fund for a deposit account

Parameters

Name Type Description In
depositAccountId (required) string The ID or encoded key of the deposit account. path
externalReferenceId (required) string The external reference ID of the transaction. path

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
204 No Content The block fund has been removed. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The block fund was not found. ErrorResponse
409 Conflict Operation cannot be performed due to another pending operation that locked shared resources. ErrorResponse

patchBlockFund (Deposit Accounts)

Code samples

# You can also use wget
curl -X PATCH /deposits/{depositAccountId}/blocks/{externalReferenceId} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json'

PATCH /deposits/{depositAccountId}/blocks/{externalReferenceId} HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/deposits/{depositAccountId}/blocks/{externalReferenceId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.patch '/deposits/{depositAccountId}/blocks/{externalReferenceId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.patch('/deposits/{depositAccountId}/blocks/{externalReferenceId}', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PATCH','/deposits/{depositAccountId}/blocks/{externalReferenceId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/{depositAccountId}/blocks/{externalReferenceId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PATCH");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/deposits/{depositAccountId}/blocks/{externalReferenceId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PATCH /deposits/{depositAccountId}/blocks/{externalReferenceId}

Updates the amount of an existing blocked fund on a deposit account. If the new amount equals the seized amount the block fund will transition to a seized state.

Body parameter

[
  {
    "from": "string",
    "op": "ADD",
    "path": "string",
    "value": {}
  }
]

Parameters

Name Type Description In
depositAccountId (required) string The ID or encoded key of the deposit account. path
externalReferenceId (required) string The external reference ID of the transaction. path
body (required) PatchOperation Patch operations to be applied to a resource. body

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
204 No Content The block amount was updated. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The block fund was not found. ErrorResponse
409 Conflict Operation cannot be performed due to another pending operation that locked shared resources. ErrorResponse

getAllBlocks (Deposit Accounts)

Code samples

# You can also use wget
curl -X GET /deposits/{depositAccountId}/blocks \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /deposits/{depositAccountId}/blocks HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/deposits/{depositAccountId}/blocks',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/deposits/{depositAccountId}/blocks',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/deposits/{depositAccountId}/blocks', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/deposits/{depositAccountId}/blocks', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/{depositAccountId}/blocks");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/deposits/{depositAccountId}/blocks", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /deposits/{depositAccountId}/blocks

Get all block funds for a deposit account

Parameters

Name Type Description In
depositAccountId (required) string The ID or encoded key of the deposit account. path
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query
state string The state of the block fund to filter on query

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF
state PENDING
state SEIZED
state REMOVED
state PARTIALLY_SEIZED

Example responses

200 Response

[
  {
    "accountKey": "string",
    "amount": 0,
    "creationDate": "2016-09-06T13:37:50+03:00",
    "externalReferenceId": "string",
    "lastModifiedDate": "2016-09-06T13:37:50+03:00",
    "notes": "string",
    "seizedAmount": 0,
    "state": "PENDING"
  }
]

Responses

Status Meaning Description Schema
200 OK The block funds have been returned. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The deposit account was not found. ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [BlockFund] [Represents the block fund amount that can be later seized on the account] none
Ā» accountKey string The key of the account which block fund belongs to read-only
Ā» amount (required) number The amount to be blocked none
Ā» creationDate string(date-time) The date at which the block fund was created read-only
Ā» externalReferenceId (required) string The external reference ID to be used to reference the block fund in subsequent requests none
Ā» lastModifiedDate string(date-time) The date at which the block fund was created read-only
Ā» notes string Notes about this block fund none
Ā» seizedAmount number The amount that has been seized read-only
Ā» state string The state of the block fund read-only

Enumerated Values

Property Value
state PENDING
state SEIZED
state REMOVED
state PARTIALLY_SEIZED

createBlockFund (Deposit Accounts)

Code samples

# You can also use wget
curl -X POST /deposits/{depositAccountId}/blocks \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /deposits/{depositAccountId}/blocks HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/deposits/{depositAccountId}/blocks',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/deposits/{depositAccountId}/blocks',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/deposits/{depositAccountId}/blocks', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/deposits/{depositAccountId}/blocks', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/{depositAccountId}/blocks");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/deposits/{depositAccountId}/blocks", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /deposits/{depositAccountId}/blocks

Create a block fund for the account

Body parameter

{
  "amount": 0,
  "externalReferenceId": "string",
  "notes": "string"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
depositAccountId (required) string The ID or encoded key of the deposit account. path
body (required) BlockFund The block fund to be created. body

Example responses

201 Response

{
  "accountKey": "string",
  "amount": 0,
  "creationDate": "2016-09-06T13:37:50+03:00",
  "externalReferenceId": "string",
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "notes": "string",
  "seizedAmount": 0,
  "state": "PENDING"
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
201 Created The block fund was created. BlockFund
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The deposit account was not found. ErrorResponse
409 Conflict Operation cannot be performed due to another pending operation that locked shared resources. ErrorResponse

Deposit Products

When working with products via API we suggest the following approach:

  1. Create or amend the product using the Mambu UI following the Setting up New Deposit Products or Managing Deposit Products articles in our User Guide.
  2. Get the current product configuration by making a GET request and saving the response in a JSON file.
  3. Edit the JSON file, including removing any fields where the value will be generated by the system, for example, creationDate, lastModifiedDate and encodedkey.
  4. Use the PUT or POST API endpoints to create or update the product configuration.

We recommend using Git as a version control system to track changes to your product configurations. Using a Git hosting provider such as GitHub or GitLab will allow you to create a robust workflow around your product configuration files including retaining a full history of changes, the ability to collaborate and comment and allow for peer reviews and sign-offs before changes are finalised.

batchUpdate (Deposit Products)

Code samples

# You can also use wget
curl -X POST /depositproducts/{depositProductId}:batchUpdate \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /depositproducts/{depositProductId}:batchUpdate HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/depositproducts/{depositProductId}:batchUpdate',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/depositproducts/{depositProductId}:batchUpdate',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/depositproducts/{depositProductId}:batchUpdate', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/depositproducts/{depositProductId}:batchUpdate', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/depositproducts/{depositProductId}:batchUpdate");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/depositproducts/{depositProductId}:batchUpdate", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /depositproducts/{depositProductId}:batchUpdate

Perform a batch update action on the specified deposit product

Body parameter

{
  "action": "UPDATE_INTEREST_SETTINGS"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
depositProductId (required) string The ID or encoded key of the deposit product to perform batch update action on. path
body (required) DepositProductAction Specify the batch update action details for a deposit product. body

Example responses

202 Response

{
  "state": "QUEUED"
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
202 Accepted The batch update action accepted for the specified deposit product. DepositProductActionResponse
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The deposit product was not found. ErrorResponse

getAll (Deposit Products)

Code samples

# You can also use wget
curl -X GET /depositproducts \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /depositproducts HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/depositproducts',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/depositproducts',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/depositproducts', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/depositproducts', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/depositproducts");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/depositproducts", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /depositproducts

Get deposit products

Parameters

Name Type Description In
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query
detailsLevel string The level of details to return: FULL means the full details of the object will be returned (custom field values, address, contact info, or any other related objects) and BASIC will return only the first level elements of the object. query
branchId string The id of the branch to which the product applies to query

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

[
  {
    "accountingSettings": {
      "accountingMethod": "NONE",
      "accountingRules": [
        {
          "encodedKey": "string",
          "financialResource": "PORTFOLIO_CONTROL",
          "glAccountKey": "string"
        }
      ],
      "interestAccrualCalculation": "NONE",
      "interestAccruedAccountingMethod": "NONE"
    },
    "availabilitySettings": {
      "availableFor": [
        "INDIVIDUALS"
      ],
      "branchSettings": {
        "availableProductBranches": [
          "string"
        ],
        "forAllBranches": true
      }
    },
    "category": "PERSONAL_DEPOSIT",
    "creationDate": "2016-09-06T13:37:50+03:00",
    "creditArrangementSettings": {
      "creditArrangementRequirement": "OPTIONAL"
    },
    "currencySettings": {
      "currencies": [
        {
          "code": "AED",
          "currencyCode": "string"
        }
      ]
    },
    "encodedKey": "string",
    "feesSettings": {
      "allowArbitraryFees": true,
      "fees": [
        {
          "accountingRules": [
            {
              "encodedKey": "string",
              "financialResource": "PORTFOLIO_CONTROL",
              "glAccountKey": "string"
            }
          ],
          "amount": 0,
          "amountCalculationFunctionName": "string",
          "amountCalculationMethod": "FLAT",
          "applyDateMethod": "MONTHLY_FROM_ACTIVATION",
          "creationDate": "2016-09-06T13:37:50+03:00",
          "encodedKey": "string",
          "feeApplication": "REQUIRED",
          "id": "string",
          "lastModifiedDate": "2016-09-06T13:37:50+03:00",
          "name": "string",
          "state": "ACTIVE",
          "trigger": "MANUAL"
        }
      ]
    },
    "id": "string",
    "interestSettings": {
      "collectInterestWhenLocked": true,
      "daysInYear": "ACTUAL_365_FIXED",
      "interestCalculationBalance": "MINIMUM",
      "interestGainsProvidedEndDate": "1987-04-26",
      "interestGainsProvidedStartDate": "1987-04-26",
      "interestPaidIntoAccount": true,
      "interestPaymentSettings": {
        "interestPaymentDates": [
          {
            "day": 0,
            "month": 0
          }
        ],
        "interestPaymentPoint": "FIRST_DAY_OF_MONTH"
      },
      "interestRateSettings": {
        "accrueInterestAfterMaturity": true,
        "allowNegativeInterestRate": true,
        "encodedKey": "string",
        "indexSourceKey": "string",
        "interestChargeFrequency": "ANNUALIZED",
        "interestChargeFrequencyCount": 0,
        "interestRate": {
          "defaultValue": 0,
          "maxValue": 0,
          "minValue": 0
        },
        "interestRateReviewCount": 0,
        "interestRateReviewUnit": "DAYS",
        "interestRateSource": "FIXED_INTEREST_RATE",
        "interestRateTerms": "FIXED",
        "interestRateTiers": [
          {
            "encodedKey": "string",
            "endingBalance": 0,
            "endingDay": 0,
            "interestRate": 0
          }
        ]
      },
      "maximumBalance": 0
    },
    "internalControls": {
      "dormancyPeriodDays": 0,
      "maxWithdrawalAmount": 0,
      "openingBalance": {
        "defaultValue": 0,
        "maxValue": 0,
        "minValue": 0
      },
      "recommendedDepositAmount": 0
    },
    "lastModifiedDate": "2016-09-06T13:37:50+03:00",
    "maturitySettings": {
      "maturityPeriod": {
        "defaultValue": 0,
        "maxValue": 0,
        "minValue": 0
      },
      "maturityPeriodUnit": "DAYS"
    },
    "name": "string",
    "newAccountSettings": {
      "idGeneratorType": "INCREMENTAL_NUMBER",
      "idPattern": "string"
    },
    "notes": "string",
    "offsetSettings": {
      "allowOffset": true
    },
    "overdraftInterestSettings": {
      "daysInYear": "ACTUAL_365_FIXED",
      "interestCalculationBalance": "MINIMUM",
      "interestRateSettings": {
        "indexSourceKey": "string",
        "interestChargeFrequency": "ANNUALIZED",
        "interestChargeFrequencyCount": 0,
        "interestRate": {
          "defaultValue": 0,
          "maxValue": 0,
          "minValue": 0
        },
        "interestRateReviewCount": 0,
        "interestRateReviewUnit": "DAYS",
        "interestRateSource": "FIXED_INTEREST_RATE",
        "interestRateTerms": "FIXED",
        "interestRateTiers": [
          {
            "encodedKey": "string",
            "endingBalance": 0,
            "interestRate": 0
          }
        ]
      }
    },
    "overdraftSettings": {
      "allowOverdraft": true,
      "allowTechnicalOverdraft": true,
      "maxOverdraftLimit": 0
    },
    "state": "ACTIVE",
    "taxSettings": {
      "withholdingTaxEnabled": true
    },
    "templates": [
      {
        "creationDate": "2016-09-06T13:37:50+03:00",
        "encodedKey": "string",
        "lastModifiedDate": "2016-09-06T13:37:50+03:00",
        "name": "string",
        "type": "ACCOUNT"
      }
    ],
    "type": "CURRENT_ACCOUNT"
  }
]

Responses

Status Meaning Description Schema
200 OK The deposit products list has been returned. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [DepositProduct] [A deposit product defines the terms and constraints on deposit accounts] none
Ā» accountingSettings (required) DepositProductAccountingSettings Accounting settings, defines the accounting settings for the product. none
»» accountingMethod (required) string The calculation method used for accounting. none
»» accountingRules [DepositGLAccountingRule] A list of accounting rules for the product. none
»»» encodedKey string The encoded key of the accounting rule, auto generated, unique. read-only
»»» financialResource (required) string General Ledger Financial Resources used to setup the product accounting rules and determine the credit and debit accounts when logging journal entries none
»»» glAccountKey (required) string The encoded key of the account that is mapped to the financialResource none
»» interestAccrualCalculation string The accounting interest calculation option selected for the product. none
»» interestAccruedAccountingMethod string The interval defined for a product when the interest accrues should be maintained. none
Ā» availabilitySettings DepositProductAvailabilitySettings Holds information about product availability. none
»» availableFor [string] Holds the entities this product is available for. i.e Individuals none
»» branchSettings BranchSettings Holds information about branch availability for the product. none
»»» availableProductBranches [string] Holds the encoded keys of the branches this product should be available for. none
»»» forAllBranches boolean Indicates if this product should be available for all branches none
Ā» category string Indicates the category that the product belongs to none
Ā» creationDate string(date-time) The date this product was created none
Ā» creditArrangementSettings CreditArrangementSettings The funding settings, holds the settings regarding the funding for the loan product. none
»» creditArrangementRequirement string Shows whether accounts created after this product can/should be part of a line of credit. none
Ā» currencySettings DepositProductCurrencySettings Currency settings for the product. none
»» currencies [Currency] Currencies that can be used by accounts of this product none
»»» code string Fiat(ISO-4217) currency code or NON_FIAT for non fiat currencies. none
»»» currencyCode string Currency code for NON_FIAT currency. none
Ā» encodedKey string The encoded key of the deposit product, auto generated, unique read-only
Ā» feesSettings DepositProductFeeSettings Defines fees settings for the product. none
»» allowArbitraryFees boolean Only if true users will be able to apply fees, for current object, of type 'Other'; these fees can have any amount. none
»» fees [DepositProductPredefinedFee] List of all fees that can be applied for accounts of this loan product. none
»»» accountingRules [DepositGLAccountingRule] A list of accounting rules defined for this fee. If null, product default rules are selected. none
»»» amount number The amount of the fee none
»»» amountCalculationFunctionName string External function none
»»» amountCalculationMethod string The amount from which the fee is calculated using percentageAmount none
»»» applyDateMethod string Shows when a fee should be applied; to be used with monthly deposit fees none
»»» creationDate string(date-time) Shows the creation date of the fee none
»»» encodedKey string The encoded key of the predefined fee, auto generated, unique read-only
»»» feeApplication (required) string The type of fee application when disbursement is applied none
»»» id string The id of the fee none
»»» lastModifiedDate string(date-time) Shows the last modified date of the fee none
»»» name string The name of the fee none
»»» state (required) string Indicates the state of the fee none
»»» trigger (required) string Shows the event that will trigger a fee none
Ā» id (required) string The id of the product, can be generated and customized, unique none
Ā» interestSettings DepositProductInterestSettings The interest settings, defines constraints regarding interest that will be used on the deposit account based on this product. none
»» collectInterestWhenLocked boolean Whether locked accounts still collect Interest or not none
»» daysInYear string How many days in a year should be used for interest calculations none
»» interestCalculationBalance string The balance which is used for the Interest calculation none
»» interestGainsProvidedEndDate string(date) The date when the accounts under this product, will no longer have interest gains provided none
»» interestGainsProvidedStartDate string(date) The date when the accounts of this product will start to have interest gains provided. Starting with this date 0 interest rate is enforced on the accounts of this product. none
»» interestPaidIntoAccount boolean If interest should be payed into the deposit account none
»» interestPaymentSettings InterestPaymentSettings Defines the interest payment settings for the deposit product and for deposits created based on this product none
»»» interestPaymentDates [MonthAndDay] List of all dates on which the interest is payed into deposit account none
»»»» day integer(int32) The day in the month none
»»»» month integer(int32) The month of the year none
»»» interestPaymentPoint string Specifies when the interest should be paid to the deposit account none
»» interestRateSettings DepositProductInterestRateSettings The interest settings, defines constraints regarding interest that will be used on the deposit created based on this product. none
»»» accrueInterestAfterMaturity boolean If the product supports this option, specify if the interest should be accrued after the account maturity date none
»»» allowNegativeInterestRate boolean Indicator whether the deposit product allows negative values for interest rate none
»»» encodedKey string The encoded key of the interest rate tier, auto generated, unique read-only
»»» indexSourceKey string Index rate source key. none
»»» interestChargeFrequency string The interval used for determining how often is interest charged none
»»» interestChargeFrequencyCount integer(int32) the count of units to apply over the interval none
»»» interestRate DecimalInterval Decimal constraints, like min/max/default. none
»»»» defaultValue number The default value, will be used in case no other value was filled in by the user. none
»»»» maxValue number The maximum value. none
»»»» minValue number The minimum value. none
»»» interestRateReviewCount integer(int32) Interest rate review frequency unit count none
»»» interestRateReviewUnit string Interest rate review frequency measurement unit none
»»» interestRateSource string Interest calculation method: fixed or (interest spread + active organization index interest rate) none
»»» interestRateTerms string The option for how is the interest rate determined when being accrued for an account none
»»» interestRateTiers [DepositProductInterestRateTier] The list of interest rate tiers available for the current settings instance none
»»»» encodedKey string The encoded key of the interest rate tier, auto generated, unique read-only
»»»» endingBalance number The top-limit value for the account balance in order to determine if this tier is used or not none
»»»» endingDay integer(int32) The top-limit value for the account period since activation in order to determine if this tier is used or not none
»»»» interestRate (required) number The rate used for computing the interest for an account which has the balance less than the ending balance none
»» maximumBalance number The maximum balance used for Interest calculation none
Ā» internalControls DepositProductInternalControls Constraints and automated actions and that will be applied on the accounts. none
»» dormancyPeriodDays integer(int32) Specifies the number of days for an account to be fully paid in order to auto close it. none
»» maxWithdrawalAmount number Max amount per withdrawal none
»» openingBalance AmountDecimalInterval Decimal constraints, like min/max/default. none
»»» defaultValue number The default value, will be used in case no other value was filled in by the user. none
»»» maxValue number The maximum value. none
»»» minValue number The minimum value. none
»» recommendedDepositAmount number Recommended amount for a deposit none
Ā» lastModifiedDate string(date-time) The last date the product was updated none
Ā» maturitySettings DepositMaturitySettings The maturity settings for the product. none
»» maturityPeriod IntegerInterval Decimal integer, like min/max/default. none
»»» defaultValue integer(int32) The default value, will be used in case no other value was filled in by the user. none
»»» maxValue integer(int32) The maximum value. none
»»» minValue integer(int32) The minimum value. none
»» maturityPeriodUnit string maturity period measurement unit none
Ā» name (required) string The name of the product none
Ā» newAccountSettings (required) DepositNewAccountSettings New Account settings for deposit accounts none
»» idGeneratorType (required) string The type of generator used for IDs creation. none
»» idPattern (required) string The pattern that will be used for ID validation (as referred to as an input mask). none
Ā» notes string Some notes/a description about the product none
Ā» offsetSettings DepositProductOffsetSettings The offset settings, holds information about offset. none
»» allowOffset boolean Specify if the product allow to create accounts which can be used as offset for loans none
Ā» overdraftInterestSettings OverdraftInterestSettings Overdraft settings for the product none
»» daysInYear string How many days in a year should be used for interest calculations none
»» interestCalculationBalance string The balance which is used for the overdraft interest calculation. Default value is MINIMUM. If set to null on a PUT call and the product allows overdrafts, the null value is ignored and not changed. none
»» interestRateSettings DepositProductOverdraftInterestRateSettings The overdraft interest settings, defines constraints regarding interest that will be used on the account created based on this product. none
»»» indexSourceKey string Index rate source key. none
»»» interestChargeFrequency string The interval used for determining how often is interest charged none
»»» interestChargeFrequencyCount integer(int32) the count of units to apply over the interval none
»»» interestRate DecimalInterval Decimal constraints, like min/max/default. none
»»» interestRateReviewCount integer(int32) Interest rate review frequency unit count none
»»» interestRateReviewUnit string Interest rate review frequency measurement unit none
»»» interestRateSource string Interest calculation method: fixed or (interest spread + active organization index interest rate) none
»»» interestRateTerms string The option for how is the interest rate determined when being accrued for an account none
»»» interestRateTiers [DepositProductOverdraftInterestRateTier] The list of interest rate tiers available for the current settings instance none
»»»» encodedKey string The encoded key of the interest rate tier, auto generated, unique read-only
»»»» endingBalance number The top-limit value for the account balance in order to determine if this tier is used or not none
»»»» interestRate (required) number The rate used for computing the interest for an account which has the balance less than the ending balance none
Ā» overdraftSettings DepositProductOverdraftSettings The overdraft settings of the deposit product none
»» allowOverdraft boolean Whether the accounts for this product may have overdraft none
»» allowTechnicalOverdraft boolean Whether the accounts for this product may have technical overdraft none
»» maxOverdraftLimit number How much money may be taken out for the account to go negative none
Ā» state (required) string Indicates the current state of the product none
Ā» taxSettings DepositProductTaxSettings Tax settings, defines some settings for taxes on the loan product none
»» withholdingTaxEnabled boolean Whether withholding taxes are enabled for this product or not none
Ā» templates [DocumentTemplate] Template documents of the product. none
»» creationDate string(date-time) The creation date of the document read-only
»» encodedKey string The document encodedKey read-only
»» lastModifiedDate string(date-time) The last modified date of the document read-only
»» name string The name the document none
»» type string The type of the template none
Ā» type (required) string Indicates the type of product. none

Enumerated Values

Property Value
accountingMethod NONE
accountingMethod CASH
accountingMethod ACCRUAL
financialResource PORTFOLIO_CONTROL
financialResource FUND_SOURCE
financialResource WRITE_OFF_EXPENSE
financialResource INTEREST_INCOME
financialResource PAYMENT_HOLIDAY_INTEREST_INCOME
financialResource TAXES_PAYABLE
financialResource FEE_INCOME
financialResource PENALTY_INCOME
financialResource NEGATIVE_INTEREST_PAYABLE_RECEIVABLE
financialResource NEGATIVE_INTEREST_PAYABLE
financialResource INTEREST_RECEIVABLE
financialResource PAYMENT_HOLIDAY_INTEREST_RECEIVABLE
financialResource FEE_RECEIVABLE
financialResource PENALTY_RECEIVABLE
financialResource TAXES_RECEIVABLE
financialResource DEFERRED_INTERESTS_INCOME
financialResource DEFERRED_FEE_INCOME
financialResource DEFERRED_TAXES
financialResource DEPOSIT_REFERENCE
financialResource SAVINGS_CONTROL
financialResource INTEREST_EXPENSE
financialResource INTEREST_PAYABLE
financialResource NEGATIVE_INTEREST_INCOME
financialResource NEGATIVE_INTEREST_RECEIVABLE
financialResource OVERDRAFT_PORTFOLIO_CONTROL
financialResource OVERDRAFT_INTEREST_INCOME
financialResource OVERDRAFT_WRITE_OFF_EXPENSE
financialResource OVERDRAFT_INTEREST_RECEIVABLE
financialResource INTER_BRANCH_TRANSFER
financialResource INTEREST_FROM_ARREARS_INCOME
financialResource INTEREST_FROM_ARREARS_RECEIVABLE
financialResource INTEREST_FROM_ARREARS_WRITE_OFF_EXPENSE
financialResource PROFIT_EXPENSE
financialResource PROFIT_PAYABLE
interestAccrualCalculation NONE
interestAccrualCalculation AGGREGATED_AMOUNT
interestAccrualCalculation BREAKDOWN_PER_ACCOUNT
interestAccruedAccountingMethod NONE
interestAccruedAccountingMethod DAILY
interestAccruedAccountingMethod END_OF_MONTH
category PERSONAL_DEPOSIT
category BUSINESS_DEPOSIT
category DAILY_BANKING_ACCOUNTS
category BUSINESS_BANKING_ACCOUNTS
category STORED_VALUE_ACCOUNTS
category UNCATEGORIZED
creditArrangementRequirement OPTIONAL
creditArrangementRequirement REQUIRED
creditArrangementRequirement NOT_REQUIRED
code AED
code AFN
code ALL
code AMD
code ANG
code AOA
code ARS
code AUD
code AWG
code AZN
code BAM
code BBD
code BDT
code BGN
code BHD
code BIF
code BMD
code BND
code BOB
code BOV
code BRL
code BSD
code BTN
code BWP
code BYR
code BYN
code BZD
code CAD
code CDF
code CHE
code CHF
code CHW
code CLF
code CLP
code CNY
code COP
code COU
code CRC
code CUC
code CUP
code CVE
code CZK
code DJF
code DKK
code DOP
code DZD
code EGP
code ERN
code ETB
code EUR
code FJD
code FKP
code GBP
code GEL
code GHS
code GIP
code GMD
code GNF
code GTQ
code GYD
code HKD
code HNL
code HRK
code HTG
code HUF
code IDR
code ILS
code INR
code IQD
code IRR
code ISK
code JMD
code JOD
code JPY
code KES
code KGS
code KHR
code KMF
code KPW
code KRW
code KWD
code KYD
code KZT
code LAK
code LBP
code LKR
code LRD
code LSL
code LTL
code LVL
code LYD
code MAD
code MDL
code MGA
code MKD
code MMK
code MNT
code MOP
code MRO
code MRU
code MUR
code MVR
code MWK
code MXN
code MXV
code MYR
code MZN
code NAD
code NGN
code NIO
code NOK
code NPR
code NZD
code OMR
code PAB
code PEN
code PGK
code PHP
code PKR
code PLN
code PYG
code QAR
code RON
code RSD
code RUB
code RWF
code SAR
code SBD
code SCR
code SDG
code SEK
code SGD
code SHP
code SLL
code SOS
code SRD
code STD
code STN
code SVC
code SYP
code SZL
code THB
code TJS
code TMT
code TND
code TOP
code TRY
code TTD
code TWD
code TZS
code UAH
code UGX
code USD
code USN
code UYI
code UYU
code UYW
code UZS
code VED
code VEF
code VES
code VND
code VUV
code WST
code XAG
code XAU
code XAF
code XBA
code XBB
code XBC
code XBD
code XCD
code XDR
code XOF
code XPD
code XPF
code XPT
code XSU
code XTS
code XUA
code XXX
code YER
code ZAR
code ZIG
code ZMK
code ZWL
code ZMW
code SSP
code NON_FIAT
amountCalculationMethod FLAT
amountCalculationMethod MAMBU_FUNCTION
applyDateMethod MONTHLY_FROM_ACTIVATION
applyDateMethod FIRST_OF_EVERY_MONTH
feeApplication REQUIRED
feeApplication OPTIONAL
state ACTIVE
state INACTIVE
trigger MANUAL
trigger MONTHLY_FEE
trigger ARBITRARY
daysInYear ACTUAL_365_FIXED
daysInYear ACTUAL_360
daysInYear ACTUAL_ACTUAL_ISDA
daysInYear E30_360
daysInYear E30_42_365
daysInYear BUS_252
interestCalculationBalance MINIMUM
interestCalculationBalance AVERAGE
interestCalculationBalance END_OF_DAY
interestCalculationBalance MINIMUM_TO_END_OF_DAY
interestCalculationBalance FRENCH_INTEREST_ACCRUAL
interestPaymentPoint FIRST_DAY_OF_MONTH
interestPaymentPoint EVERY_WEEK
interestPaymentPoint EVERY_OTHER_WEEK
interestPaymentPoint EVERY_MONTH
interestPaymentPoint EVERY_3_MONTHS
interestPaymentPoint ON_FIXED_DATES
interestPaymentPoint DAILY
interestPaymentPoint ANNUALLY
interestPaymentPoint BI_ANNUALLY
interestPaymentPoint ON_ACCOUNT_MATURITY
interestChargeFrequency ANNUALIZED
interestChargeFrequency EVERY_MONTH
interestChargeFrequency EVERY_FOUR_WEEKS
interestChargeFrequency EVERY_WEEK
interestChargeFrequency EVERY_DAY
interestChargeFrequency EVERY_X_DAYS
interestRateReviewUnit DAYS
interestRateReviewUnit WEEKS
interestRateReviewUnit MONTHS
interestRateSource FIXED_INTEREST_RATE
interestRateSource INDEX_INTEREST_RATE
interestRateTerms FIXED
interestRateTerms TIERED
interestRateTerms TIERED_PERIOD
interestRateTerms TIERED_BAND
maturityPeriodUnit DAYS
maturityPeriodUnit WEEKS
maturityPeriodUnit MONTHS
idGeneratorType INCREMENTAL_NUMBER
idGeneratorType RANDOM_PATTERN
daysInYear ACTUAL_365_FIXED
daysInYear ACTUAL_360
daysInYear ACTUAL_ACTUAL_ISDA
daysInYear E30_360
daysInYear E30_42_365
daysInYear BUS_252
interestCalculationBalance MINIMUM
interestCalculationBalance AVERAGE
interestCalculationBalance END_OF_DAY
interestCalculationBalance MINIMUM_TO_END_OF_DAY
interestCalculationBalance FRENCH_INTEREST_ACCRUAL
interestChargeFrequency ANNUALIZED
interestChargeFrequency EVERY_MONTH
interestChargeFrequency EVERY_FOUR_WEEKS
interestChargeFrequency EVERY_WEEK
interestChargeFrequency EVERY_DAY
interestChargeFrequency EVERY_X_DAYS
interestRateReviewUnit DAYS
interestRateReviewUnit WEEKS
interestRateReviewUnit MONTHS
interestRateSource FIXED_INTEREST_RATE
interestRateSource INDEX_INTEREST_RATE
interestRateTerms FIXED
interestRateTerms TIERED
interestRateTerms TIERED_PERIOD
interestRateTerms TIERED_BAND
state ACTIVE
state INACTIVE
type ACCOUNT
type TRANSACTION
type ACCOUNT_WITH_TRANSACTIONS
type CURRENT_ACCOUNT
type REGULAR_SAVINGS
type FIXED_DEPOSIT
type SAVINGS_PLAN
type INVESTOR_ACCOUNT

Response Headers

Status Header Type Format Description
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

create (Deposit Products)

Code samples

# You can also use wget
curl -X POST /depositproducts \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /depositproducts HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/depositproducts',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/depositproducts',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/depositproducts', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/depositproducts', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/depositproducts");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/depositproducts", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /depositproducts

Create deposit product

Body parameter

{
  "accountingSettings": {
    "accountingMethod": "NONE",
    "accountingRules": [
      {
        "financialResource": "PORTFOLIO_CONTROL",
        "glAccountKey": "string"
      }
    ],
    "interestAccrualCalculation": "NONE",
    "interestAccruedAccountingMethod": "NONE"
  },
  "availabilitySettings": {
    "availableFor": [
      "INDIVIDUALS"
    ],
    "branchSettings": {
      "availableProductBranches": [
        "string"
      ],
      "forAllBranches": true
    }
  },
  "category": "PERSONAL_DEPOSIT",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "creditArrangementSettings": {
    "creditArrangementRequirement": "OPTIONAL"
  },
  "currencySettings": {
    "currencies": [
      {
        "code": "AED",
        "currencyCode": "string"
      }
    ]
  },
  "feesSettings": {
    "allowArbitraryFees": true,
    "fees": [
      {
        "accountingRules": [
          {
            "financialResource": "PORTFOLIO_CONTROL",
            "glAccountKey": "string"
          }
        ],
        "amount": 0,
        "amountCalculationFunctionName": "string",
        "amountCalculationMethod": "FLAT",
        "applyDateMethod": "MONTHLY_FROM_ACTIVATION",
        "creationDate": "2016-09-06T13:37:50+03:00",
        "feeApplication": "REQUIRED",
        "id": "string",
        "lastModifiedDate": "2016-09-06T13:37:50+03:00",
        "name": "string",
        "state": "ACTIVE",
        "trigger": "MANUAL"
      }
    ]
  },
  "id": "string",
  "interestSettings": {
    "collectInterestWhenLocked": true,
    "daysInYear": "ACTUAL_365_FIXED",
    "interestCalculationBalance": "MINIMUM",
    "interestGainsProvidedEndDate": "1987-04-26",
    "interestGainsProvidedStartDate": "1987-04-26",
    "interestPaidIntoAccount": true,
    "interestPaymentSettings": {
      "interestPaymentDates": [
        {
          "day": 0,
          "month": 0
        }
      ],
      "interestPaymentPoint": "FIRST_DAY_OF_MONTH"
    },
    "interestRateSettings": {
      "accrueInterestAfterMaturity": true,
      "allowNegativeInterestRate": true,
      "indexSourceKey": "string",
      "interestChargeFrequency": "ANNUALIZED",
      "interestChargeFrequencyCount": 0,
      "interestRate": {
        "defaultValue": 0,
        "maxValue": 0,
        "minValue": 0
      },
      "interestRateReviewCount": 0,
      "interestRateReviewUnit": "DAYS",
      "interestRateSource": "FIXED_INTEREST_RATE",
      "interestRateTerms": "FIXED",
      "interestRateTiers": [
        {
          "endingBalance": 0,
          "endingDay": 0,
          "interestRate": 0
        }
      ]
    },
    "maximumBalance": 0
  },
  "internalControls": {
    "dormancyPeriodDays": 0,
    "maxWithdrawalAmount": 0,
    "openingBalance": {
      "defaultValue": 0,
      "maxValue": 0,
      "minValue": 0
    },
    "recommendedDepositAmount": 0
  },
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "maturitySettings": {
    "maturityPeriod": {
      "defaultValue": 0,
      "maxValue": 0,
      "minValue": 0
    },
    "maturityPeriodUnit": "DAYS"
  },
  "name": "string",
  "newAccountSettings": {
    "idGeneratorType": "INCREMENTAL_NUMBER",
    "idPattern": "string"
  },
  "notes": "string",
  "offsetSettings": {
    "allowOffset": true
  },
  "overdraftInterestSettings": {
    "daysInYear": "ACTUAL_365_FIXED",
    "interestCalculationBalance": "MINIMUM",
    "interestRateSettings": {
      "indexSourceKey": "string",
      "interestChargeFrequency": "ANNUALIZED",
      "interestChargeFrequencyCount": 0,
      "interestRate": {
        "defaultValue": 0,
        "maxValue": 0,
        "minValue": 0
      },
      "interestRateReviewCount": 0,
      "interestRateReviewUnit": "DAYS",
      "interestRateSource": "FIXED_INTEREST_RATE",
      "interestRateTerms": "FIXED",
      "interestRateTiers": [
        {
          "endingBalance": 0,
          "interestRate": 0
        }
      ]
    }
  },
  "overdraftSettings": {
    "allowOverdraft": true,
    "allowTechnicalOverdraft": true,
    "maxOverdraftLimit": 0
  },
  "state": "ACTIVE",
  "taxSettings": {
    "withholdingTaxEnabled": true
  },
  "templates": [
    {
      "name": "string",
      "type": "ACCOUNT"
    }
  ],
  "type": "CURRENT_ACCOUNT"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
body (required) DepositProduct Represents the deposit product to be created. body

Example responses

201 Response

{
  "accountingSettings": {
    "accountingMethod": "NONE",
    "accountingRules": [
      {
        "encodedKey": "string",
        "financialResource": "PORTFOLIO_CONTROL",
        "glAccountKey": "string"
      }
    ],
    "interestAccrualCalculation": "NONE",
    "interestAccruedAccountingMethod": "NONE"
  },
  "availabilitySettings": {
    "availableFor": [
      "INDIVIDUALS"
    ],
    "branchSettings": {
      "availableProductBranches": [
        "string"
      ],
      "forAllBranches": true
    }
  },
  "category": "PERSONAL_DEPOSIT",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "creditArrangementSettings": {
    "creditArrangementRequirement": "OPTIONAL"
  },
  "currencySettings": {
    "currencies": [
      {
        "code": "AED",
        "currencyCode": "string"
      }
    ]
  },
  "encodedKey": "string",
  "feesSettings": {
    "allowArbitraryFees": true,
    "fees": [
      {
        "accountingRules": [
          {
            "encodedKey": "string",
            "financialResource": "PORTFOLIO_CONTROL",
            "glAccountKey": "string"
          }
        ],
        "amount": 0,
        "amountCalculationFunctionName": "string",
        "amountCalculationMethod": "FLAT",
        "applyDateMethod": "MONTHLY_FROM_ACTIVATION",
        "creationDate": "2016-09-06T13:37:50+03:00",
        "encodedKey": "string",
        "feeApplication": "REQUIRED",
        "id": "string",
        "lastModifiedDate": "2016-09-06T13:37:50+03:00",
        "name": "string",
        "state": "ACTIVE",
        "trigger": "MANUAL"
      }
    ]
  },
  "id": "string",
  "interestSettings": {
    "collectInterestWhenLocked": true,
    "daysInYear": "ACTUAL_365_FIXED",
    "interestCalculationBalance": "MINIMUM",
    "interestGainsProvidedEndDate": "1987-04-26",
    "interestGainsProvidedStartDate": "1987-04-26",
    "interestPaidIntoAccount": true,
    "interestPaymentSettings": {
      "interestPaymentDates": [
        {
          "day": 0,
          "month": 0
        }
      ],
      "interestPaymentPoint": "FIRST_DAY_OF_MONTH"
    },
    "interestRateSettings": {
      "accrueInterestAfterMaturity": true,
      "allowNegativeInterestRate": true,
      "encodedKey": "string",
      "indexSourceKey": "string",
      "interestChargeFrequency": "ANNUALIZED",
      "interestChargeFrequencyCount": 0,
      "interestRate": {
        "defaultValue": 0,
        "maxValue": 0,
        "minValue": 0
      },
      "interestRateReviewCount": 0,
      "interestRateReviewUnit": "DAYS",
      "interestRateSource": "FIXED_INTEREST_RATE",
      "interestRateTerms": "FIXED",
      "interestRateTiers": [
        {
          "encodedKey": "string",
          "endingBalance": 0,
          "endingDay": 0,
          "interestRate": 0
        }
      ]
    },
    "maximumBalance": 0
  },
  "internalControls": {
    "dormancyPeriodDays": 0,
    "maxWithdrawalAmount": 0,
    "openingBalance": {
      "defaultValue": 0,
      "maxValue": 0,
      "minValue": 0
    },
    "recommendedDepositAmount": 0
  },
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "maturitySettings": {
    "maturityPeriod": {
      "defaultValue": 0,
      "maxValue": 0,
      "minValue": 0
    },
    "maturityPeriodUnit": "DAYS"
  },
  "name": "string",
  "newAccountSettings": {
    "idGeneratorType": "INCREMENTAL_NUMBER",
    "idPattern": "string"
  },
  "notes": "string",
  "offsetSettings": {
    "allowOffset": true
  },
  "overdraftInterestSettings": {
    "daysInYear": "ACTUAL_365_FIXED",
    "interestCalculationBalance": "MINIMUM",
    "interestRateSettings": {
      "indexSourceKey": "string",
      "interestChargeFrequency": "ANNUALIZED",
      "interestChargeFrequencyCount": 0,
      "interestRate": {
        "defaultValue": 0,
        "maxValue": 0,
        "minValue": 0
      },
      "interestRateReviewCount": 0,
      "interestRateReviewUnit": "DAYS",
      "interestRateSource": "FIXED_INTEREST_RATE",
      "interestRateTerms": "FIXED",
      "interestRateTiers": [
        {
          "encodedKey": "string",
          "endingBalance": 0,
          "interestRate": 0
        }
      ]
    }
  },
  "overdraftSettings": {
    "allowOverdraft": true,
    "allowTechnicalOverdraft": true,
    "maxOverdraftLimit": 0
  },
  "state": "ACTIVE",
  "taxSettings": {
    "withholdingTaxEnabled": true
  },
  "templates": [
    {
      "creationDate": "2016-09-06T13:37:50+03:00",
      "encodedKey": "string",
      "lastModifiedDate": "2016-09-06T13:37:50+03:00",
      "name": "string",
      "type": "ACCOUNT"
    }
  ],
  "type": "CURRENT_ACCOUNT"
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
201 Created The deposit product was created. DepositProduct
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

getById (Deposit Products)

Code samples

# You can also use wget
curl -X GET /depositproducts/{depositProductId} \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /depositproducts/{depositProductId} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/depositproducts/{depositProductId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/depositproducts/{depositProductId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/depositproducts/{depositProductId}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/depositproducts/{depositProductId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/depositproducts/{depositProductId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/depositproducts/{depositProductId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /depositproducts/{depositProductId}

Get deposit product

Parameters

Name Type Description In
depositProductId (required) string The ID or encoded key of the deposit product to be returned. path
detailsLevel string The level of details to return: FULL means the full details of the object will be returned (custom field values, address, contact info, or any other related objects) and BASIC will return only the first level elements of the object. query

Enumerated Values

Parameter Value
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

{
  "accountingSettings": {
    "accountingMethod": "NONE",
    "accountingRules": [
      {
        "encodedKey": "string",
        "financialResource": "PORTFOLIO_CONTROL",
        "glAccountKey": "string"
      }
    ],
    "interestAccrualCalculation": "NONE",
    "interestAccruedAccountingMethod": "NONE"
  },
  "availabilitySettings": {
    "availableFor": [
      "INDIVIDUALS"
    ],
    "branchSettings": {
      "availableProductBranches": [
        "string"
      ],
      "forAllBranches": true
    }
  },
  "category": "PERSONAL_DEPOSIT",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "creditArrangementSettings": {
    "creditArrangementRequirement": "OPTIONAL"
  },
  "currencySettings": {
    "currencies": [
      {
        "code": "AED",
        "currencyCode": "string"
      }
    ]
  },
  "encodedKey": "string",
  "feesSettings": {
    "allowArbitraryFees": true,
    "fees": [
      {
        "accountingRules": [
          {
            "encodedKey": "string",
            "financialResource": "PORTFOLIO_CONTROL",
            "glAccountKey": "string"
          }
        ],
        "amount": 0,
        "amountCalculationFunctionName": "string",
        "amountCalculationMethod": "FLAT",
        "applyDateMethod": "MONTHLY_FROM_ACTIVATION",
        "creationDate": "2016-09-06T13:37:50+03:00",
        "encodedKey": "string",
        "feeApplication": "REQUIRED",
        "id": "string",
        "lastModifiedDate": "2016-09-06T13:37:50+03:00",
        "name": "string",
        "state": "ACTIVE",
        "trigger": "MANUAL"
      }
    ]
  },
  "id": "string",
  "interestSettings": {
    "collectInterestWhenLocked": true,
    "daysInYear": "ACTUAL_365_FIXED",
    "interestCalculationBalance": "MINIMUM",
    "interestGainsProvidedEndDate": "1987-04-26",
    "interestGainsProvidedStartDate": "1987-04-26",
    "interestPaidIntoAccount": true,
    "interestPaymentSettings": {
      "interestPaymentDates": [
        {
          "day": 0,
          "month": 0
        }
      ],
      "interestPaymentPoint": "FIRST_DAY_OF_MONTH"
    },
    "interestRateSettings": {
      "accrueInterestAfterMaturity": true,
      "allowNegativeInterestRate": true,
      "encodedKey": "string",
      "indexSourceKey": "string",
      "interestChargeFrequency": "ANNUALIZED",
      "interestChargeFrequencyCount": 0,
      "interestRate": {
        "defaultValue": 0,
        "maxValue": 0,
        "minValue": 0
      },
      "interestRateReviewCount": 0,
      "interestRateReviewUnit": "DAYS",
      "interestRateSource": "FIXED_INTEREST_RATE",
      "interestRateTerms": "FIXED",
      "interestRateTiers": [
        {
          "encodedKey": "string",
          "endingBalance": 0,
          "endingDay": 0,
          "interestRate": 0
        }
      ]
    },
    "maximumBalance": 0
  },
  "internalControls": {
    "dormancyPeriodDays": 0,
    "maxWithdrawalAmount": 0,
    "openingBalance": {
      "defaultValue": 0,
      "maxValue": 0,
      "minValue": 0
    },
    "recommendedDepositAmount": 0
  },
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "maturitySettings": {
    "maturityPeriod": {
      "defaultValue": 0,
      "maxValue": 0,
      "minValue": 0
    },
    "maturityPeriodUnit": "DAYS"
  },
  "name": "string",
  "newAccountSettings": {
    "idGeneratorType": "INCREMENTAL_NUMBER",
    "idPattern": "string"
  },
  "notes": "string",
  "offsetSettings": {
    "allowOffset": true
  },
  "overdraftInterestSettings": {
    "daysInYear": "ACTUAL_365_FIXED",
    "interestCalculationBalance": "MINIMUM",
    "interestRateSettings": {
      "indexSourceKey": "string",
      "interestChargeFrequency": "ANNUALIZED",
      "interestChargeFrequencyCount": 0,
      "interestRate": {
        "defaultValue": 0,
        "maxValue": 0,
        "minValue": 0
      },
      "interestRateReviewCount": 0,
      "interestRateReviewUnit": "DAYS",
      "interestRateSource": "FIXED_INTEREST_RATE",
      "interestRateTerms": "FIXED",
      "interestRateTiers": [
        {
          "encodedKey": "string",
          "endingBalance": 0,
          "interestRate": 0
        }
      ]
    }
  },
  "overdraftSettings": {
    "allowOverdraft": true,
    "allowTechnicalOverdraft": true,
    "maxOverdraftLimit": 0
  },
  "state": "ACTIVE",
  "taxSettings": {
    "withholdingTaxEnabled": true
  },
  "templates": [
    {
      "creationDate": "2016-09-06T13:37:50+03:00",
      "encodedKey": "string",
      "lastModifiedDate": "2016-09-06T13:37:50+03:00",
      "name": "string",
      "type": "ACCOUNT"
    }
  ],
  "type": "CURRENT_ACCOUNT"
}

Responses

Status Meaning Description Schema
200 OK The deposit product has been returned. DepositProduct
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The deposit product was not found. ErrorResponse

update (Deposit Products)

Code samples

# You can also use wget
curl -X PUT /depositproducts/{depositProductId} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json'

PUT /depositproducts/{depositProductId} HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/depositproducts/{depositProductId}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.put '/depositproducts/{depositProductId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.put('/depositproducts/{depositProductId}', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PUT','/depositproducts/{depositProductId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/depositproducts/{depositProductId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/depositproducts/{depositProductId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /depositproducts/{depositProductId}

Update deposit product

Body parameter

{
  "accountingSettings": {
    "accountingMethod": "NONE",
    "accountingRules": [
      {
        "financialResource": "PORTFOLIO_CONTROL",
        "glAccountKey": "string"
      }
    ],
    "interestAccrualCalculation": "NONE",
    "interestAccruedAccountingMethod": "NONE"
  },
  "availabilitySettings": {
    "availableFor": [
      "INDIVIDUALS"
    ],
    "branchSettings": {
      "availableProductBranches": [
        "string"
      ],
      "forAllBranches": true
    }
  },
  "category": "PERSONAL_DEPOSIT",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "creditArrangementSettings": {
    "creditArrangementRequirement": "OPTIONAL"
  },
  "currencySettings": {
    "currencies": [
      {
        "code": "AED",
        "currencyCode": "string"
      }
    ]
  },
  "feesSettings": {
    "allowArbitraryFees": true,
    "fees": [
      {
        "accountingRules": [
          {
            "financialResource": "PORTFOLIO_CONTROL",
            "glAccountKey": "string"
          }
        ],
        "amount": 0,
        "amountCalculationFunctionName": "string",
        "amountCalculationMethod": "FLAT",
        "applyDateMethod": "MONTHLY_FROM_ACTIVATION",
        "creationDate": "2016-09-06T13:37:50+03:00",
        "feeApplication": "REQUIRED",
        "id": "string",
        "lastModifiedDate": "2016-09-06T13:37:50+03:00",
        "name": "string",
        "state": "ACTIVE",
        "trigger": "MANUAL"
      }
    ]
  },
  "id": "string",
  "interestSettings": {
    "collectInterestWhenLocked": true,
    "daysInYear": "ACTUAL_365_FIXED",
    "interestCalculationBalance": "MINIMUM",
    "interestGainsProvidedEndDate": "1987-04-26",
    "interestGainsProvidedStartDate": "1987-04-26",
    "interestPaidIntoAccount": true,
    "interestPaymentSettings": {
      "interestPaymentDates": [
        {
          "day": 0,
          "month": 0
        }
      ],
      "interestPaymentPoint": "FIRST_DAY_OF_MONTH"
    },
    "interestRateSettings": {
      "accrueInterestAfterMaturity": true,
      "allowNegativeInterestRate": true,
      "indexSourceKey": "string",
      "interestChargeFrequency": "ANNUALIZED",
      "interestChargeFrequencyCount": 0,
      "interestRate": {
        "defaultValue": 0,
        "maxValue": 0,
        "minValue": 0
      },
      "interestRateReviewCount": 0,
      "interestRateReviewUnit": "DAYS",
      "interestRateSource": "FIXED_INTEREST_RATE",
      "interestRateTerms": "FIXED",
      "interestRateTiers": [
        {
          "endingBalance": 0,
          "endingDay": 0,
          "interestRate": 0
        }
      ]
    },
    "maximumBalance": 0
  },
  "internalControls": {
    "dormancyPeriodDays": 0,
    "maxWithdrawalAmount": 0,
    "openingBalance": {
      "defaultValue": 0,
      "maxValue": 0,
      "minValue": 0
    },
    "recommendedDepositAmount": 0
  },
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "maturitySettings": {
    "maturityPeriod": {
      "defaultValue": 0,
      "maxValue": 0,
      "minValue": 0
    },
    "maturityPeriodUnit": "DAYS"
  },
  "name": "string",
  "newAccountSettings": {
    "idGeneratorType": "INCREMENTAL_NUMBER",
    "idPattern": "string"
  },
  "notes": "string",
  "offsetSettings": {
    "allowOffset": true
  },
  "overdraftInterestSettings": {
    "daysInYear": "ACTUAL_365_FIXED",
    "interestCalculationBalance": "MINIMUM",
    "interestRateSettings": {
      "indexSourceKey": "string",
      "interestChargeFrequency": "ANNUALIZED",
      "interestChargeFrequencyCount": 0,
      "interestRate": {
        "defaultValue": 0,
        "maxValue": 0,
        "minValue": 0
      },
      "interestRateReviewCount": 0,
      "interestRateReviewUnit": "DAYS",
      "interestRateSource": "FIXED_INTEREST_RATE",
      "interestRateTerms": "FIXED",
      "interestRateTiers": [
        {
          "endingBalance": 0,
          "interestRate": 0
        }
      ]
    }
  },
  "overdraftSettings": {
    "allowOverdraft": true,
    "allowTechnicalOverdraft": true,
    "maxOverdraftLimit": 0
  },
  "state": "ACTIVE",
  "taxSettings": {
    "withholdingTaxEnabled": true
  },
  "templates": [
    {
      "name": "string",
      "type": "ACCOUNT"
    }
  ],
  "type": "CURRENT_ACCOUNT"
}

Parameters

Name Type Description In
depositProductId (required) string The ID or encoded key of the deposit product to be updated. path
body (required) DepositProduct Represents the deposit product to be updated. body

Example responses

200 Response

{
  "accountingSettings": {
    "accountingMethod": "NONE",
    "accountingRules": [
      {
        "encodedKey": "string",
        "financialResource": "PORTFOLIO_CONTROL",
        "glAccountKey": "string"
      }
    ],
    "interestAccrualCalculation": "NONE",
    "interestAccruedAccountingMethod": "NONE"
  },
  "availabilitySettings": {
    "availableFor": [
      "INDIVIDUALS"
    ],
    "branchSettings": {
      "availableProductBranches": [
        "string"
      ],
      "forAllBranches": true
    }
  },
  "category": "PERSONAL_DEPOSIT",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "creditArrangementSettings": {
    "creditArrangementRequirement": "OPTIONAL"
  },
  "currencySettings": {
    "currencies": [
      {
        "code": "AED",
        "currencyCode": "string"
      }
    ]
  },
  "encodedKey": "string",
  "feesSettings": {
    "allowArbitraryFees": true,
    "fees": [
      {
        "accountingRules": [
          {
            "encodedKey": "string",
            "financialResource": "PORTFOLIO_CONTROL",
            "glAccountKey": "string"
          }
        ],
        "amount": 0,
        "amountCalculationFunctionName": "string",
        "amountCalculationMethod": "FLAT",
        "applyDateMethod": "MONTHLY_FROM_ACTIVATION",
        "creationDate": "2016-09-06T13:37:50+03:00",
        "encodedKey": "string",
        "feeApplication": "REQUIRED",
        "id": "string",
        "lastModifiedDate": "2016-09-06T13:37:50+03:00",
        "name": "string",
        "state": "ACTIVE",
        "trigger": "MANUAL"
      }
    ]
  },
  "id": "string",
  "interestSettings": {
    "collectInterestWhenLocked": true,
    "daysInYear": "ACTUAL_365_FIXED",
    "interestCalculationBalance": "MINIMUM",
    "interestGainsProvidedEndDate": "1987-04-26",
    "interestGainsProvidedStartDate": "1987-04-26",
    "interestPaidIntoAccount": true,
    "interestPaymentSettings": {
      "interestPaymentDates": [
        {
          "day": 0,
          "month": 0
        }
      ],
      "interestPaymentPoint": "FIRST_DAY_OF_MONTH"
    },
    "interestRateSettings": {
      "accrueInterestAfterMaturity": true,
      "allowNegativeInterestRate": true,
      "encodedKey": "string",
      "indexSourceKey": "string",
      "interestChargeFrequency": "ANNUALIZED",
      "interestChargeFrequencyCount": 0,
      "interestRate": {
        "defaultValue": 0,
        "maxValue": 0,
        "minValue": 0
      },
      "interestRateReviewCount": 0,
      "interestRateReviewUnit": "DAYS",
      "interestRateSource": "FIXED_INTEREST_RATE",
      "interestRateTerms": "FIXED",
      "interestRateTiers": [
        {
          "encodedKey": "string",
          "endingBalance": 0,
          "endingDay": 0,
          "interestRate": 0
        }
      ]
    },
    "maximumBalance": 0
  },
  "internalControls": {
    "dormancyPeriodDays": 0,
    "maxWithdrawalAmount": 0,
    "openingBalance": {
      "defaultValue": 0,
      "maxValue": 0,
      "minValue": 0
    },
    "recommendedDepositAmount": 0
  },
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "maturitySettings": {
    "maturityPeriod": {
      "defaultValue": 0,
      "maxValue": 0,
      "minValue": 0
    },
    "maturityPeriodUnit": "DAYS"
  },
  "name": "string",
  "newAccountSettings": {
    "idGeneratorType": "INCREMENTAL_NUMBER",
    "idPattern": "string"
  },
  "notes": "string",
  "offsetSettings": {
    "allowOffset": true
  },
  "overdraftInterestSettings": {
    "daysInYear": "ACTUAL_365_FIXED",
    "interestCalculationBalance": "MINIMUM",
    "interestRateSettings": {
      "indexSourceKey": "string",
      "interestChargeFrequency": "ANNUALIZED",
      "interestChargeFrequencyCount": 0,
      "interestRate": {
        "defaultValue": 0,
        "maxValue": 0,
        "minValue": 0
      },
      "interestRateReviewCount": 0,
      "interestRateReviewUnit": "DAYS",
      "interestRateSource": "FIXED_INTEREST_RATE",
      "interestRateTerms": "FIXED",
      "interestRateTiers": [
        {
          "encodedKey": "string",
          "endingBalance": 0,
          "interestRate": 0
        }
      ]
    }
  },
  "overdraftSettings": {
    "allowOverdraft": true,
    "allowTechnicalOverdraft": true,
    "maxOverdraftLimit": 0
  },
  "state": "ACTIVE",
  "taxSettings": {
    "withholdingTaxEnabled": true
  },
  "templates": [
    {
      "creationDate": "2016-09-06T13:37:50+03:00",
      "encodedKey": "string",
      "lastModifiedDate": "2016-09-06T13:37:50+03:00",
      "name": "string",
      "type": "ACCOUNT"
    }
  ],
  "type": "CURRENT_ACCOUNT"
}

Responses

Status Meaning Description Schema
200 OK The deposit product was updated. DepositProduct
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The deposit product was not found. ErrorResponse
409 Conflict Operation cannot be performed due to another pending operation that locked shared resources. ErrorResponse

delete (Deposit Products)

Code samples

# You can also use wget
curl -X DELETE /depositproducts/{depositProductId} \
  -H 'Accept: application/vnd.mambu.v2+json'

DELETE /depositproducts/{depositProductId} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/depositproducts/{depositProductId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.delete '/depositproducts/{depositProductId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.delete('/depositproducts/{depositProductId}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('DELETE','/depositproducts/{depositProductId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/depositproducts/{depositProductId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/depositproducts/{depositProductId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /depositproducts/{depositProductId}

Delete deposit product

Parameters

Name Type Description In
depositProductId (required) string The ID or encoded key of the deposit product to be deleted. path

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
204 No Content The deposit product has been deleted. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The deposit product was not found. ErrorResponse
409 Conflict Operation cannot be performed due to another pending operation that locked shared resources. ErrorResponse

patch (Deposit Products)

Code samples

# You can also use wget
curl -X PATCH /depositproducts/{depositProductId} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json'

PATCH /depositproducts/{depositProductId} HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/depositproducts/{depositProductId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.patch '/depositproducts/{depositProductId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.patch('/depositproducts/{depositProductId}', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PATCH','/depositproducts/{depositProductId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/depositproducts/{depositProductId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PATCH");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/depositproducts/{depositProductId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PATCH /depositproducts/{depositProductId}

Partially update deposit product

Body parameter

[
  {
    "from": "string",
    "op": "ADD",
    "path": "string",
    "value": {}
  }
]

Parameters

Name Type Description In
depositProductId (required) string The ID or encoded key of the deposit product to be updated. path
body (required) PatchOperation Patch operations to be applied to a resource. body

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
204 No Content The deposit product was updated. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The deposit product was not found. ErrorResponse
409 Conflict Operation cannot be performed due to another pending operation that locked shared resources. ErrorResponse

Deposit Products Configuration

Retrieve and update the configuration for deposit products.

A deposit product allows you to set up the parameters for a type of deposit that you wish to regularly offer. Deposit products are flexible and highly-customizable templates for creating individual deposit accounts. For more information about this resource, see Deposit Products Configuration in our User Guide.

Your user or API consumer must have the View Manage Configuration As Code (GET_MANAGE_CONFIGURATION_AS_CODE) and/or Update Manage Configuration As Code (PUT_MANAGE_CONFIGURATION_AS_CODE) permissions to make GET and/or PUT requests to these configuration as code (CasC) endpoints. For more information about CasC, seeĀ Configuration as Code Overview.

get (Deposit Products Configuration)

Code samples

# You can also use wget
curl -X GET /configuration/depositproducts.yaml \
  -H 'Accept: application/vnd.mambu.v2+yaml'

GET /configuration/depositproducts.yaml HTTP/1.1

Accept: application/vnd.mambu.v2+yaml

var headers = {
  'Accept':'application/vnd.mambu.v2+yaml'

};

$.ajax({
  url: '/configuration/depositproducts.yaml',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+yaml'
}

result = RestClient.get '/configuration/depositproducts.yaml',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+yaml'
}

r = requests.get('/configuration/depositproducts.yaml', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+yaml',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/configuration/depositproducts.yaml', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/configuration/depositproducts.yaml");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+yaml"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/configuration/depositproducts.yaml", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /configuration/depositproducts.yaml

Get configuration for all deposit products

Parameters

Name Type Description In
type array[string] The product type of the deposit products to get. When this is used multiple times it will get all the deposit products of the given types.If the parameter is absent, all the deposit products will be returned. query

Enumerated Values

Parameter Value
type CURRENT_ACCOUNT
type REGULAR_SAVINGS
type FIXED_DEPOSIT
type SAVINGS_PLAN
type INVESTOR_ACCOUNT

Example responses

An example of a deposit products configuration

---
depositProducts:
  - id: "product1"
    name: "A product with only the minimum fields defined"
    type: "FIXED_DEPOSIT"
    category: "UNCATEGORIZED"
    state: "ACTIVE"
    description: "A saving product with a fixed deposit where clients can put\
    \ a certain amount in and lock it to collect interest until maturity 2-5 months\
    \ later"
    newAccountSettings:
      idGeneratorType: "RANDOM_PATTERN"
      idPattern: "@@@@###"
    availabilitySettings:
      forGroups: true
      forIndividuals: true
      branchSettings:
        allBranches: true
        branches:
    currencySettings:
      currencies:
        - "USD"
    interestSettings:
      daysInYear: "E30_360"
      paidIntoAccount: true
  - id: "DSP"
    name: "Product example with all fields defined"
    type: "CURRENT_ACCOUNT"
    category: "UNCATEGORIZED"
    state: "INACTIVE"
    description: "Commonly used savings product"
    newAccountSettings:
      idGeneratorType: "INCREMENTAL_NUMBER"
      idPattern: "2"
    availabilitySettings:
      forGroups: false
      forIndividuals: false
      branchSettings:
        allBranches: true
        branches: [ ]
    currencySettings:
      currencies:
        - "EUR"
        - "RON"
        - "CNY"
    maturitySettings:
      maturityPeriodInterval:
        defaultValue: 5
        minValue: 3
        maxValue: 7
      maturityPeriodUnit: "WEEKS"
    taxSettings:
      withholdingTaxEnabled: false
    creditArrangementSettings:
      requirement: "OPTIONAL"
    internalControlsSettings:
      dormancyPeriodDays: 10
      recommendedDepositAmount: 100
      maxWithdrawalAmount: 120
      openingBalance:
        minValue: 10
        maxValue: 30
        defaultValue: 20
      allowOffset: true
    feeSettings:
      allowArbitraryFees: false
      fees:
        - id: "feeForNewProduct"
          name: "Deposit Made"
          active: true
          amount: 120.9
          amountCalculationMethod: "FLAT"
          trigger: "MANUAL"
          accountingRules: [ ]
    interestSettings:
      daysInYear: "ACTUAL_365_FIXED"
      calculationBalance: "END_OF_DAY"
      paidIntoAccount: true
      collectInterestWhenLocked: true
      maximumBalance: 10003
      interestRateSettings:
        interestRateSource: "FIXED_INTEREST_RATE"
        interestRateTerms: "TIERED"
        interestRateTiers:
          - endingBalance: 500
            interestRate: 10
          - endingBalance: 900
            interestRate: 5
        accrueInterestAfterMaturity: true
    overdraftInterestSettings:
      allowOverdraft: true
      allowTechnicalOverdraft: true
      maxOverdraftLimit: 100
      daysInYear: "ACTUAL_365_FIXED"
      calculationBalance: "END_OF_DAY"
      interestRateSettings:
        allowNegativeInterestRate: false
        interestRateSource: "FIXED_INTEREST_RATE"
        interestRateTerms: "TIERED"
        interestRateTiers:
          - endingBalance: 500
            interestRate: 10
          - endingBalance: 900
            interestRate: 5
    accountingSettings:
      accountingRules:
        - glAccountCode: "11001"
          financialResource: "DEPOSIT_REFERENCE"
        - glAccountCode: "10002"
          financialResource: "SAVINGS_CONTROL"
        - glAccountCode: "11003"
          financialResource: "INTEREST_EXPENSE"
        - glAccountCode: "10004"
          financialResource: "FEE_INCOME"
      accountingMethod: "ACCRUAL"
      interestAccruedAccountingMethod: "END_OF_MONTH"

401 invalid credentials

{
    "errors": [
        {
            "errorCode": 2,
            "errorSource": "credentials",
            "errorReason": "INVALID_CREDENTIALS"
        }
    ]
}

403 forbidden

{
    "errors": [
        {
            "errorCode": 15,
            "errorSource": "not authorized",
            "errorReason": "INVALID_PERMISSIONS"
        }
    ]
}

Responses

Status Meaning Description Schema
200 OK The configuration for all deposit products has been returned. DepositProductsConfiguration
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

update (Deposit Products Configuration)

Code samples

# You can also use wget
curl -X PUT /configuration/depositproducts.yaml \
  -H 'Content-Type: application/yaml' \
  -H 'Accept: application/vnd.mambu.v2+yaml' \
  -H 'X-Mambu-Async: true' \
  -H 'X-Mambu-Callback: string'

PUT /configuration/depositproducts.yaml HTTP/1.1

Content-Type: application/yaml
Accept: application/vnd.mambu.v2+yaml
X-Mambu-Async: true
X-Mambu-Callback: string

var headers = {
  'Content-Type':'application/yaml',
  'Accept':'application/vnd.mambu.v2+yaml',
  'X-Mambu-Async':'true',
  'X-Mambu-Callback':'string'

};

$.ajax({
  url: '/configuration/depositproducts.yaml',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/yaml',
  'Accept' => 'application/vnd.mambu.v2+yaml',
  'X-Mambu-Async' => 'true',
  'X-Mambu-Callback' => 'string'
}

result = RestClient.put '/configuration/depositproducts.yaml',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/yaml',
  'Accept': 'application/vnd.mambu.v2+yaml',
  'X-Mambu-Async': 'true',
  'X-Mambu-Callback': 'string'
}

r = requests.put('/configuration/depositproducts.yaml', params={

}, headers = headers)

print r.json()

 'application/yaml',
    'Accept' => 'application/vnd.mambu.v2+yaml',
    'X-Mambu-Async' => 'true',
    'X-Mambu-Callback' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PUT','/configuration/depositproducts.yaml', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/configuration/depositproducts.yaml");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/yaml"},
        "Accept": []string{"application/vnd.mambu.v2+yaml"},
        "X-Mambu-Async": []string{"true"},
        "X-Mambu-Callback": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/configuration/depositproducts.yaml", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /configuration/depositproducts.yaml

Update all deposit products configuration

Body parameter

An example of a deposit products configuration

---
depositProducts:
  - id: "product1"
    name: "A product with only the minimum fields defined"
    type: "FIXED_DEPOSIT"
    category: "UNCATEGORIZED"
    state: "ACTIVE"
    description: "A saving product with a fixed deposit where clients can put\
    \ a certain amount in and lock it to collect interest until maturity 2-5 months\
    \ later"
    newAccountSettings:
      idGeneratorType: "RANDOM_PATTERN"
      idPattern: "@@@@###"
    availabilitySettings:
      forGroups: true
      forIndividuals: true
      branchSettings:
        allBranches: true
        branches:
    currencySettings:
      currencies:
        - "USD"
    interestSettings:
      daysInYear: "E30_360"
      paidIntoAccount: true
  - id: "DSP"
    name: "Product example with all fields defined"
    type: "CURRENT_ACCOUNT"
    category: "UNCATEGORIZED"
    state: "INACTIVE"
    description: "Commonly used savings product"
    newAccountSettings:
      idGeneratorType: "INCREMENTAL_NUMBER"
      idPattern: "2"
    availabilitySettings:
      forGroups: false
      forIndividuals: false
      branchSettings:
        allBranches: true
        branches: [ ]
    currencySettings:
      currencies:
        - "EUR"
        - "RON"
        - "CNY"
    maturitySettings:
      maturityPeriodInterval:
        defaultValue: 5
        minValue: 3
        maxValue: 7
      maturityPeriodUnit: "WEEKS"
    taxSettings:
      withholdingTaxEnabled: false
    creditArrangementSettings:
      requirement: "OPTIONAL"
    internalControlsSettings:
      dormancyPeriodDays: 10
      recommendedDepositAmount: 100
      maxWithdrawalAmount: 120
      openingBalance:
        minValue: 10
        maxValue: 30
        defaultValue: 20
      allowOffset: true
    feeSettings:
      allowArbitraryFees: false
      fees:
        - id: "feeForNewProduct"
          name: "Deposit Made"
          active: true
          amount: 120.9
          amountCalculationMethod: "FLAT"
          trigger: "MANUAL"
          accountingRules: [ ]
    interestSettings:
      daysInYear: "ACTUAL_365_FIXED"
      calculationBalance: "END_OF_DAY"
      paidIntoAccount: true
      collectInterestWhenLocked: true
      maximumBalance: 10003
      interestRateSettings:
        interestRateSource: "FIXED_INTEREST_RATE"
        interestRateTerms: "TIERED"
        interestRateTiers:
          - endingBalance: 500
            interestRate: 10
          - endingBalance: 900
            interestRate: 5
        accrueInterestAfterMaturity: true
    overdraftInterestSettings:
      allowOverdraft: true
      allowTechnicalOverdraft: true
      maxOverdraftLimit: 100
      daysInYear: "ACTUAL_365_FIXED"
      calculationBalance: "END_OF_DAY"
      interestRateSettings:
        allowNegativeInterestRate: false
        interestRateSource: "FIXED_INTEREST_RATE"
        interestRateTerms: "TIERED"
        interestRateTiers:
          - endingBalance: 500
            interestRate: 10
          - endingBalance: 900
            interestRate: 5
    accountingSettings:
      accountingRules:
        - glAccountCode: "11001"
          financialResource: "DEPOSIT_REFERENCE"
        - glAccountCode: "10002"
          financialResource: "SAVINGS_CONTROL"
        - glAccountCode: "11003"
          financialResource: "INTEREST_EXPENSE"
        - glAccountCode: "10004"
          financialResource: "FEE_INCOME"
      accountingMethod: "ACCRUAL"
      interestAccruedAccountingMethod: "END_OF_MONTH"

Parameters

Name Type Description In
X-Mambu-Async boolean none header
X-Mambu-Callback string none header
body DepositProductsConfiguration Model representation of the deposit products configuration body

Example responses

200 - Success Response

---
warnings: []

400 error response

{
    "errors": [
        {
            "errorCode": 0,
            "errorSource": "human-readable description of the error",
            "errorReason": "SOURCE_OF_ERROR"
        }
    ]
}

401 invalid credentials

{
    "errors": [
        {
            "errorCode": 2,
            "errorSource": "credentials",
            "errorReason": "INVALID_CREDENTIALS"
        }
    ]
}

403 forbidden

{
    "errors": [
        {
            "errorCode": 15,
            "errorSource": "not authorized",
            "errorReason": "INVALID_PERMISSIONS"
        }
    ]
}

404 not found

{
    "errors": [
        {
            "errorCode": 3,
            "errorSource": "server",
            "errorReason": "INVALID_API_OPERATION"
        }
    ]
}

Responses

Status Meaning Description Schema
200 OK The configuration for all deposit products has been updated. None
202 Accepted The request has been accepted for processing. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The configuration was not found. ErrorResponse

Response Schema

Deposit Transactions

Allows you to perform a number of functions on deposit transactions for deposit accounts. These include searching and retrieving as well as performing various transaction types such as single and bulk deposits, transfers, withdrawals, fees, seizures, and adjustments.

getDepositTransactionDocument (Deposit Transactions)

Code samples

# You can also use wget
curl -X GET /deposits/transactions/{depositTransactionId}/templates/{templateId} \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /deposits/transactions/{depositTransactionId}/templates/{templateId} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/deposits/transactions/{depositTransactionId}/templates/{templateId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/deposits/transactions/{depositTransactionId}/templates/{templateId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/deposits/transactions/{depositTransactionId}/templates/{templateId}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/deposits/transactions/{depositTransactionId}/templates/{templateId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/transactions/{depositTransactionId}/templates/{templateId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/deposits/transactions/{depositTransactionId}/templates/{templateId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /deposits/transactions/{depositTransactionId}/templates/{templateId}

Get deposit transaction document

Parameters

Name Type Description In
depositTransactionId (required) string The ID or encoded key of the deposit transaction. path
templateId (required) string The ID of the deposit product template. path

Example responses

200 Response

"string"

Responses

Status Meaning Description Schema
200 OK The deposit transaction document has been returned. string
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The deposit transaction or template was not found. ErrorResponse

makeTransfer (Deposit Transactions)

Code samples

# You can also use wget
curl -X POST /deposits/{depositAccountId}/transfer-transactions \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /deposits/{depositAccountId}/transfer-transactions HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/deposits/{depositAccountId}/transfer-transactions',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/deposits/{depositAccountId}/transfer-transactions',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/deposits/{depositAccountId}/transfer-transactions', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/deposits/{depositAccountId}/transfer-transactions', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/{depositAccountId}/transfer-transactions");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/deposits/{depositAccountId}/transfer-transactions", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /deposits/{depositAccountId}/transfer-transactions

Create transfer transaction

Body parameter

{
  "_Example_Custom_Field_Set_Transaction": {
    "Example_Checkbox_Custom_Field": "TRUE"
  },
  "amount": 200,
  "externalId": "46290",
  "notes": "some notes about this transaction",
  "paymentOrderId": "PAY-1234-abc",
  "transferDetails": {
    "linkedAccountId": "LMPG508",
    "linkedAccountKey": "8a19c32b72eac4420172efcb0f176bbd",
    "linkedAccountType": "LOAN"
  },
  "valueDate": "2020-12-08T17:00:00+01:00"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
depositAccountId (required) string The ID or encoded key of the deposit that the transaction will be created for. path
body (required) TransferDepositTransactionInput Represents the information needed for a transfer transaction. body

Example responses

201 Response

{
  "_Transaction_Details_Transaction": {
    "ACCOUNT_NAME_TRANSACTION_CHANNEL": "string",
    "ACCOUNT_NUMBER_TRANSACTION_CHANN": "string",
    "BANK_NUMBER_TRANSACTION_CHANNEL_": "string",
    "CHECK_NUMBER_TRANSACTION_CHANNEL": "string",
    "IDENTIFIER_TRANSACTION_CHANNEL_I": "string",
    "RECEPIT_NUMBER_TRANSACTION_CHANN": "string",
    "ROUTING_NUMBER_TRANSACTION_CHANN": "string"
  },
  "accountBalances": {
    "totalBalance": 0
  },
  "adjustmentTransactionKey": "string",
  "affectedAmounts": {
    "feesAmount": 0,
    "fractionAmount": 0,
    "fundsAmount": 0,
    "interestAmount": 0,
    "overdraftAmount": 0,
    "overdraftFeesAmount": 0,
    "overdraftInterestAmount": 0,
    "technicalOverdraftAmount": 0,
    "technicalOverdraftInterestAmount": 0
  },
  "amount": 0,
  "blockId": "string",
  "bookingDate": "2016-09-06T13:37:50+03:00",
  "branchKey": "string",
  "cardTransaction": {
    "advice": true,
    "amount": 0,
    "cardAcceptor": {
      "city": "string",
      "country": "string",
      "mcc": 0,
      "name": "string",
      "state": "string",
      "street": "string",
      "zip": "string"
    },
    "cardToken": "string",
    "currencyCode": "string",
    "encodedKey": "string",
    "externalAuthorizationReferenceId": "string",
    "externalReferenceId": "string",
    "userTransactionTime": "string"
  },
  "centreKey": "string",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "currencyCode": "string",
  "customFieldsArchived": true,
  "encodedKey": "string",
  "externalId": "string",
  "fees": [
    {
      "amount": 0,
      "name": "string",
      "predefinedFeeKey": "string",
      "taxAmount": 0,
      "trigger": "MANUAL"
    }
  ],
  "holdExternalReferenceId": "string",
  "id": "string",
  "interestAccruedAmounts": {
    "interestAccrued": 0,
    "negativeInterestAccrued": 0,
    "overdraftInterestAccrued": 0,
    "technicalOverdraftInterestAccrued": 0
  },
  "migrationEventKey": "string",
  "notes": "string",
  "originalTransactionKey": "string",
  "parentAccountKey": "string",
  "paymentDetails": {
    "creditor": {
      "name": "string"
    },
    "creditorAccount": {
      "currency": "string",
      "identification": {
        "iban": "string",
        "other": {
          "identification": "string",
          "scheme": "string"
        }
      }
    },
    "creditorAgent": {
      "financialInstitutionIdentification": {
        "bic": "string"
      }
    },
    "debtor": {
      "name": "string"
    },
    "debtorAccount": {
      "currency": "string",
      "identification": {
        "iban": "string",
        "other": {
          "identification": "string",
          "scheme": "string"
        }
      }
    },
    "debtorAgent": {
      "financialInstitutionIdentification": {
        "bic": "string"
      }
    },
    "paymentIdentification": {
      "endToEndIdentification": "string",
      "instructionIdentification": "string",
      "transactionIdentification": "string"
    },
    "paymentTypeInformation": {
      "serviceLevel": {
        "code": "string"
      }
    },
    "remittanceInformation": {
      "structured": {
        "creditorReferenceInformation": {
          "reference": "string",
          "referenceIssuer": "string",
          "referenceType": "string"
        }
      },
      "unstructured": "string"
    }
  },
  "paymentOrderId": "string",
  "taxes": {
    "taxRate": 0
  },
  "terms": {
    "interestSettings": {
      "indexInterestRate": 0,
      "interestRate": 0
    },
    "overdraftInterestSettings": {
      "indexInterestRate": 0,
      "interestRate": 0
    },
    "overdraftSettings": {
      "overdraftLimit": 0
    }
  },
  "tillKey": "string",
  "transactionDetails": {
    "transactionChannelId": "string",
    "transactionChannelKey": "string"
  },
  "transferDetails": {
    "linkedDepositTransactionKey": "string",
    "linkedLoanTransactionKey": "string"
  },
  "type": "IMPORT",
  "userKey": "string",
  "valueDate": "2016-09-06T13:37:50+03:00"
}

The transfer transaction has been created.

{
  "encodedKey": "8a19c9c5764281700176431631370690",
  "id": "134",
  "externalId": "46290",
  "paymentOrderId": "PAY-1234-abc",
  "creationDate": "2020-12-08T17:01:37+01:00",
  "valueDate": "2020-12-08T17:00:00+01:00",
  "bookingDate": "2020-12-08T17:00:00+01:00",
  "notes": "some notes about this transaction",
  "parentAccountKey": "8a19c3ea762d719601762d8270ad0020",
  "type": "TRANSFER",
  "amount": -200,
  "currencyCode": "EUR",
  "affectedAmounts": {
    "fundsAmount": 200,
    "interestAmount": 0,
    "feesAmount": 0,
    "overdraftAmount": 0,
    "overdraftFeesAmount": 0,
    "overdraftInterestAmount": 0,
    "technicalOverdraftAmount": 0,
    "technicalOverdraftInterestAmount": 0,
    "fractionAmount": 0
  },
  "taxes": {},
  "accountBalances": {
    "totalBalance": 49250
  },
  "userKey": "8a194075720ece2c017226fced6f005e",
  "terms": {
    "interestSettings": {},
    "overdraftInterestSettings": {},
    "overdraftSettings": {}
  },
  "transactionDetails": {},
  "transferDetails": {
    "linkedLoanTransactionKey": "8a19c9c5764281700176431631370692"
  },
  "fees": []
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
201 Created The transfer transaction has been created. DepositTransaction
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The deposit account was not found. ErrorResponse
409 Conflict Operation cannot be performed due to another pending operation that locked shared resources. ErrorResponse
429 Too Many Requests Too Many Requests ErrorResponse

getAll (Deposit Transactions)

Code samples

# You can also use wget
curl -X GET /deposits/{depositAccountId}/transactions \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /deposits/{depositAccountId}/transactions HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/deposits/{depositAccountId}/transactions',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/deposits/{depositAccountId}/transactions',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/deposits/{depositAccountId}/transactions', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/deposits/{depositAccountId}/transactions', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/{depositAccountId}/transactions");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/deposits/{depositAccountId}/transactions", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /deposits/{depositAccountId}/transactions

Allows retrieval of all transactions for a deposit account via id or encoded key. Please note: if there are no transactions for a given account, an empty array will be returned.

Parameters

Name Type Description In
depositAccountId (required) string The ID or encoded key of the deposit account used to get all of its transactions. path
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query
detailsLevel string The level of details to return: FULL means the full details of the object will be returned (custom field values, address, contact info, or any other related objects) and BASIC will return only the first level elements of the object. query

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

[
  {
    "_Transaction_Details_Transaction": {
      "ACCOUNT_NAME_TRANSACTION_CHANNEL": "string",
      "ACCOUNT_NUMBER_TRANSACTION_CHANN": "string",
      "BANK_NUMBER_TRANSACTION_CHANNEL_": "string",
      "CHECK_NUMBER_TRANSACTION_CHANNEL": "string",
      "IDENTIFIER_TRANSACTION_CHANNEL_I": "string",
      "RECEPIT_NUMBER_TRANSACTION_CHANN": "string",
      "ROUTING_NUMBER_TRANSACTION_CHANN": "string"
    },
    "accountBalances": {
      "totalBalance": 0
    },
    "adjustmentTransactionKey": "string",
    "affectedAmounts": {
      "feesAmount": 0,
      "fractionAmount": 0,
      "fundsAmount": 0,
      "interestAmount": 0,
      "overdraftAmount": 0,
      "overdraftFeesAmount": 0,
      "overdraftInterestAmount": 0,
      "technicalOverdraftAmount": 0,
      "technicalOverdraftInterestAmount": 0
    },
    "amount": 0,
    "blockId": "string",
    "bookingDate": "2016-09-06T13:37:50+03:00",
    "branchKey": "string",
    "cardTransaction": {
      "advice": true,
      "amount": 0,
      "cardAcceptor": {
        "city": "string",
        "country": "string",
        "mcc": 0,
        "name": "string",
        "state": "string",
        "street": "string",
        "zip": "string"
      },
      "cardToken": "string",
      "currencyCode": "string",
      "encodedKey": "string",
      "externalAuthorizationReferenceId": "string",
      "externalReferenceId": "string",
      "userTransactionTime": "string"
    },
    "centreKey": "string",
    "creationDate": "2016-09-06T13:37:50+03:00",
    "currencyCode": "string",
    "customFieldsArchived": true,
    "encodedKey": "string",
    "externalId": "string",
    "fees": [
      {
        "amount": 0,
        "name": "string",
        "predefinedFeeKey": "string",
        "taxAmount": 0,
        "trigger": "MANUAL"
      }
    ],
    "holdExternalReferenceId": "string",
    "id": "string",
    "interestAccruedAmounts": {
      "interestAccrued": 0,
      "negativeInterestAccrued": 0,
      "overdraftInterestAccrued": 0,
      "technicalOverdraftInterestAccrued": 0
    },
    "migrationEventKey": "string",
    "notes": "string",
    "originalTransactionKey": "string",
    "parentAccountKey": "string",
    "paymentDetails": {
      "creditor": {
        "name": "string"
      },
      "creditorAccount": {
        "currency": "string",
        "identification": {
          "iban": "string",
          "other": {
            "identification": "string",
            "scheme": "string"
          }
        }
      },
      "creditorAgent": {
        "financialInstitutionIdentification": {
          "bic": "string"
        }
      },
      "debtor": {
        "name": "string"
      },
      "debtorAccount": {
        "currency": "string",
        "identification": {
          "iban": "string",
          "other": {
            "identification": "string",
            "scheme": "string"
          }
        }
      },
      "debtorAgent": {
        "financialInstitutionIdentification": {
          "bic": "string"
        }
      },
      "paymentIdentification": {
        "endToEndIdentification": "string",
        "instructionIdentification": "string",
        "transactionIdentification": "string"
      },
      "paymentTypeInformation": {
        "serviceLevel": {
          "code": "string"
        }
      },
      "remittanceInformation": {
        "structured": {
          "creditorReferenceInformation": {
            "reference": "string",
            "referenceIssuer": "string",
            "referenceType": "string"
          }
        },
        "unstructured": "string"
      }
    },
    "paymentOrderId": "string",
    "taxes": {
      "taxRate": 0
    },
    "terms": {
      "interestSettings": {
        "indexInterestRate": 0,
        "interestRate": 0
      },
      "overdraftInterestSettings": {
        "indexInterestRate": 0,
        "interestRate": 0
      },
      "overdraftSettings": {
        "overdraftLimit": 0
      }
    },
    "tillKey": "string",
    "transactionDetails": {
      "transactionChannelId": "string",
      "transactionChannelKey": "string"
    },
    "transferDetails": {
      "linkedDepositTransactionKey": "string",
      "linkedLoanTransactionKey": "string"
    },
    "type": "IMPORT",
    "userKey": "string",
    "valueDate": "2016-09-06T13:37:50+03:00"
  }
]

The list of deposit transactions has been returned.

[
  {
    "encodedKey": "8a19c9c5764281700176431631370690",
    "id": "134",
    "externalId": "46290",
    "paymentOrderId": "PAY-1234-abc",
    "creationDate": "2020-12-08T17:01:37+01:00",
    "valueDate": "2020-12-08T17:00:00+01:00",
    "bookingDate": "2020-12-08T17:00:00+01:00",
    "notes": "some notes about this transaction",
    "parentAccountKey": "8a19c3ea762d719601762d8270ad0020",
    "type": "TRANSFER",
    "amount": -200,
    "currencyCode": "EUR",
    "accountBalances": {
      "totalBalance": 49250
    },
    "userKey": "8a194075720ece2c017226fced6f005e",
    "transactionDetails": {}
  },
  {
    "encodedKey": "8a19c9c5764281700176430fbebe0682",
    "id": "132",
    "creationDate": "2020-12-08T16:55:40+01:00",
    "valueDate": "2020-12-08T16:55:39+01:00",
    "bookingDate": "2020-12-08T16:55:41+01:00",
    "notes": "some notes",
    "parentAccountKey": "8a19c3ea762d719601762d8270ad0020",
    "type": "TRANSFER",
    "amount": -300,
    "currencyCode": "EUR",
    "accountBalances": {
      "totalBalance": 49450
    },
    "userKey": "8a194075720ece2c017226fced6f005e",
    "transactionDetails": {}
  },
  {
    "encodedKey": "8a19a51476366c28017636e9ef5b002c",
    "id": "131",
    "creationDate": "2020-12-06T08:32:32+01:00",
    "valueDate": "2020-12-02T12:00:00+01:00",
    "bookingDate": "2020-12-04T00:00:00+01:00",
    "notes": "update day of deposit",
    "parentAccountKey": "8a19c3ea762d719601762d8270ad0020",
    "type": "ADJUSTMENT",
    "amount": -50,
    "currencyCode": "EUR",
    "accountBalances": {
      "totalBalance": 49750
    },
    "userKey": "8a19b628762ca2a201762d39b29005ce",
    "transactionDetails": {
      "transactionChannelKey": "8a194075720ece2c017226fcf55e0064"
    }
  },
  {
    "encodedKey": "8a19a51476366c28017636e9ef5b0028",
    "id": "130",
    "creationDate": "2020-12-06T08:17:50+01:00",
    "valueDate": "2020-12-02T12:00:00+01:00",
    "bookingDate": "2020-12-03T12:00:00+01:00",
    "notes": "customer found 50 euro",
    "parentAccountKey": "8a19c3ea762d719601762d8270ad0020",
    "type": "DEPOSIT",
    "amount": 50,
    "currencyCode": "EUR",
    "accountBalances": {
      "totalBalance": 49800
    },
    "userKey": "8a19b628762ca2a201762d39b29005ce",
    "adjustmentTransactionKey": "8a19a51476366c28017636e9ef5b002c",
    "transactionDetails": {
      "transactionChannelKey": "8a194075720ece2c017226fcf55e0064"
    }
  },
  {
    "encodedKey": "8a19c7f27633d4c1017633e4ab860006",
    "id": "129",
    "creationDate": "2020-12-05T18:14:15+01:00",
    "valueDate": "2020-12-02T12:00:00+01:00",
    "bookingDate": "2020-12-04T00:00:00+01:00",
    "notes": "string",
    "parentAccountKey": "8a19c3ea762d719601762d8270ad0020",
    "type": "WITHDRAWAL_ADJUSTMENT",
    "amount": 500,
    "currencyCode": "EUR",
    "accountBalances": {
      "totalBalance": 49750
    },
    "userKey": "8a19b628762ca2a201762d39b29005ce",
    "transactionDetails": {
      "transactionChannelKey": "8a194075720ece2c017226fcf55e0064"
    }
  },
  {
    "encodedKey": "8a19bbf77631c84a017632f06cc40301",
    "id": "127",
    "creationDate": "2020-12-05T13:49:37+01:00",
    "valueDate": "2020-12-02T12:00:00+01:00",
    "bookingDate": "2020-12-03T12:00:00+01:00",
    "notes": "customer wants to buy Christmas presents",
    "parentAccountKey": "8a19c3ea762d719601762d8270ad0020",
    "type": "WITHDRAWAL",
    "amount": -500,
    "currencyCode": "EUR",
    "accountBalances": {
      "totalBalance": 49250
    },
    "userKey": "8a19b628762ca2a201762d39b29005ce",
    "adjustmentTransactionKey": "8a19c7f27633d4c1017633e4ab860006",
    "transactionDetails": {
      "transactionChannelKey": "8a194075720ece2c017226fcf55e0064"
    }
  },
  {
    "encodedKey": "8a19bbf77631c84a017632f06cc402fd",
    "id": "126",
    "creationDate": "2020-12-05T13:46:26+01:00",
    "valueDate": "2020-12-02T12:00:00+01:00",
    "bookingDate": "2020-12-03T12:00:00+01:00",
    "notes": "customer wants to buy Christmas presents",
    "parentAccountKey": "8a19c3ea762d719601762d8270ad0020",
    "type": "WITHDRAWAL",
    "amount": -500,
    "currencyCode": "EUR",
    "accountBalances": {
      "totalBalance": 49750
    },
    "userKey": "8a19b628762ca2a201762d39b29005ce",
    "transactionDetails": {
      "transactionChannelKey": "8a194075720ece2c017226fcf55e0064"
    }
  },
  {
    "encodedKey": "8a19bbf77631c84a017632df01db02f9",
    "id": "125",
    "creationDate": "2020-12-05T13:39:46+01:00",
    "valueDate": "2020-12-02T12:00:00+01:00",
    "bookingDate": "2020-12-03T12:00:00+01:00",
    "notes": "customer found 50 euro",
    "parentAccountKey": "8a19c3ea762d719601762d8270ad0020",
    "type": "DEPOSIT",
    "amount": 50,
    "currencyCode": "EUR",
    "accountBalances": {
      "totalBalance": 50250
    },
    "userKey": "8a19b628762ca2a201762d39b29005ce",
    "transactionDetails": {
      "transactionChannelKey": "8a194075720ece2c017226fcf55e0064"
    }
  }
]

Responses

Status Meaning Description Schema
200 OK The list of deposit transactions has been returned. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [DepositTransaction] [Represents the action performed on an Deposit Account after which the account's amount changes its value.] none
Ā» _Transaction_Details_Transaction _Transaction_Details_Transaction Captures default transaction custom fields none
»» ACCOUNT_NAME_TRANSACTION_CHANNEL string none none
»» ACCOUNT_NUMBER_TRANSACTION_CHANN string none none
»» BANK_NUMBER_TRANSACTION_CHANNEL_ string none none
»» CHECK_NUMBER_TRANSACTION_CHANNEL string none none
»» IDENTIFIER_TRANSACTION_CHANNEL_I string An unique user-defined identifier for each transaction. This field is optional, but if specified, it must be unique across all loan and deposit transactions none
»» RECEPIT_NUMBER_TRANSACTION_CHANN string none none
»» ROUTING_NUMBER_TRANSACTION_CHANN string none none
Ā» accountBalances DepositTransactionBalances The balances changed within a transaction. none
»» totalBalance number The running balance owed by deposit none
Ā» adjustmentTransactionKey string The key of the deposit transaction where the adjustment for this transaction was made (if any adjustment was involved) none
Ā» affectedAmounts DepositAffectedAmounts The amounts affected after completing the deposit transaction none
»» feesAmount number Amount of fees involved in a transaction that affects an account with positive balance none
»» fractionAmount number In the case of an LOAN_FRACTION_BOUGHT this represent the fraction amount which was bought from another investor none
»» fundsAmount number Balance change amount involved in a transaction that affects an account with positive balance none
»» interestAmount number Amount of interest involved in a transaction that affects an account with positive balance none
»» overdraftAmount number The amount of money that was added/subtracted from the account by this transaction as overdraft none
»» overdraftFeesAmount number Fees amount involved in a transaction that affects an overdraft none
»» overdraftInterestAmount number Interest amount involved in a transaction that affects an overdraft none
»» technicalOverdraftAmount number The amount of money that was added/subtracted from the account by this transaction as technical overdraft none
»» technicalOverdraftInterestAmount number The amount of money that was added/subtracted from the account by this transaction as technical overdraft interest none
Ā» amount number How much was added/removed in account none
Ā» blockId string The block fund id associated with the transaction none
Ā» bookingDate string(date-time) The date when corresponding JE is booked (as Organization Time) none
Ā» branchKey string The branch where the transaction was performed read-only
Ā» cardTransaction CardTransaction A card transaction entry which will have a corresponding a financial transaction performed. none
»» advice (required) boolean Whether the given request should be accepted without balance validations. none
»» amount (required) number The amount of money to be withdrawn in the financial transaction. none
»» cardAcceptor CardAcceptor The details of the card acceptor (merchant) in a transaction hold. none
»»» city string The city in which the card acceptor has the business. none
»»» country string The country in which the card acceptor has the business. none
»»» mcc integer(int32) The Merchant Category Code of the card acceptor. none
»»» name string The name of the card acceptor. none
»»» state string The state in which the card acceptor has the business. none
»»» street string The street in which the card acceptor has the business. none
»»» zip string The ZIP code of the location in which the card acceptor has the business. none
»» cardToken string The reference token of the card. read-only
»» currencyCode string The ISO currency code in which the card reversal transaction is posted. The amounts are stored in the base currency, but the transaction can be created with a foreign currency. none
»» encodedKey string The encoded key of the entity, generated, globally unique read-only
»» externalAuthorizationReferenceId string The external authorization hold reference ID, which relates this card transaction to a previous authorization hold. none
»» externalReferenceId (required) string The external reference ID to be used to reference the card transaction in subsequent requests. none
»» userTransactionTime string The formatted time at which the user made this card transaction. none
Ā» centreKey string The center where the transaction was performed read-only
Ā» creationDate string(date-time) The date when this deposit transaction was created read-only
Ā» currencyCode string The currency in which this transaction was posted none
Ā» customFieldsArchived boolean Whether the custom fields of the transaction are archived read-only
Ā» encodedKey string The encoded key of the deposit transaction, auto generated, unique read-only
Ā» externalId string The external id of the deposit transaction, customizable, unique none
Ā» fees [DepositFee] All the amounts that have been applied or paid within this transaction and involved predefined fees read-only
»» amount number The amount of the fee that was applied/paid in the transaction for the given predefined fee. none
»» name string The name of the predefined fee read-only
»» predefinedFeeKey (required) string The encoded key of the predefined fee, auto generated, unique none
»» taxAmount number The amount of the taxes on fee that was applied/paid in the transaction. none
»» trigger string Shows the event that will trigger a fee read-only
Ā» holdExternalReferenceId string The external id of an account authorization hold none
Ā» id string The id of the deposit transaction, auto generated, unique none
Ā» interestAccruedAmounts DepositInterestAccruedAmounts Represents the accrued interest amounts for an Interest Applied deposit transaction. none
»» interestAccrued number The amount of positive interest accrued since last interest application/activation date and applied within Interest Applied transaction none
»» negativeInterestAccrued number The amount of negative interest accrued since last interest application/activation date and applied within Interest Applied transaction none
»» overdraftInterestAccrued number The amount of overdraft interest accrued since last interest application/activation date and applied within Interest Applied transaction none
»» technicalOverdraftInterestAccrued number The amount of technical overdraft interest accrued since last interest application/activation date and applied within Interest Applied transaction none
Ā» migrationEventKey string The migration event encoded key associated with this deposit account. If this account was imported, track which 'migration event' they came from none
Ā» notes string Extra notes about this deposit transaction none
Ā» originalTransactionKey string The encodedKey of the transaction that was adjusted as part of this one. Available only for adjustment transactions none
Ā» parentAccountKey string The key of the parent deposit account none
Ā» paymentDetails PaymentDetails The payment information including account identification details none
»» creditor Party The details of the party for a transaction none
»»» name string The name of the party none
»» creditorAccount AccountDetails The account currency and identification none
»»» currency string The currency of the account none
»»» identification AccountIdentification The account identification details none
»»»» iban string The account unique identifier none
»»»» other OtherAccountIdentification Represents other way of identification for the account. none
»»»»» identification string The identification of the payer/payee none
»»»»» scheme string The identification scheme none
»» creditorAgent Agent The agent details for a party none
»»» financialInstitutionIdentification FinancialInstitutionIdentification The identification of the financial institution none
»»»» bic string Business identifier code none
»» debtor Party The details of the party for a transaction none
»» debtorAccount AccountDetails The account currency and identification none
»» debtorAgent Agent The agent details for a party none
»» paymentIdentification PaymentIdentification The payment identification details none
»»» endToEndIdentification string Identifier assigned by the initiating party to the transaction. Limited to 35 characters none
»»» instructionIdentification string Identifier of a payment instruction none
»»» transactionIdentification string Identifier unique for a period assigned by the first initiating party to the transaction none
»» paymentTypeInformation PaymentTypeInformation The information specifying the type of transaction none
»»» serviceLevel ServiceLevel The rules under which the transaction should be processed none
»»»» code string The code for a pre-agreed service or level of service between the parties none
»» remittanceInformation RemittanceInformation The information specifying the payment items that are intended to settle none
»»» structured Structured The information specifying the payment items that are intended to settle none
»»»» creditorReferenceInformation CreditorReferenceInformation Represents the reference to the underlying documents of the payment. none
»»»»» reference string The reference information of the creditor's underlying documents none
»»»»» referenceIssuer string The entity that assigns the reference type none
»»»»» referenceType string The type of creditor reference none
»»» unstructured string Information supplied to match the items of the payment in an unstructured form none
Ā» paymentOrderId string The payment order id of the deposit transaction, customizable none
Ā» taxes DepositTaxes The taxes applied within a transaction none
»» taxRate number The tax rate that was set or changed in this transaction none
Ā» terms DepositTerms The deposit transaction terms none
»» interestSettings DepositTransactionInterestSettings The interest settings, holds all the properties regarding interests for the deposit account none
»»» indexInterestRate number The value of the index interest rate set or changed in this transaction none
»»» interestRate number The interest rate for the deposit account none
»» overdraftInterestSettings DepositOverdraftInterestSettings Holds the deposit overdraft interest settings none
»»» indexInterestRate number The value of the index interest rate set or changed in this transaction none
»»» interestRate number The interest rate that was set or changed in this transaction. Used on product interest rate changes or interest tier switches none
»» overdraftSettings DepositOverdraftSettings Holds the deposit overdraft settings for a transaction none
»»» overdraftLimit number The overdraft limit that was set or changed in this transaction none
Ā» tillKey string The till key associated with this transaction none
Ā» transactionDetails TransactionDetails Contains the details about transaction including fields like transaction channel key and channel id none
»» transactionChannelId string The id of the transaction channel associated with the transaction details. none
»» transactionChannelKey string The encoded key of the transaction channel associated with the transaction details. none
Ā» transferDetails TransferDetails Represents the transfer details, such as the linked transaction key none
»» linkedDepositTransactionKey string The key of the related deposit transaction none
»» linkedLoanTransactionKey string The key of the related loan transaction none
Ā» type string The type of the deposit transaction none
Ā» userKey string The person that performed the transaction none
Ā» valueDate string(date-time) Date of the entry (eg date of repayment or disbursal, etc.) (as Organization Time) none

Enumerated Values

Property Value
trigger MANUAL
trigger MONTHLY_FEE
trigger ARBITRARY
type IMPORT
type WRITE_OFF
type WRITE_OFF_ADJUSTMENT
type DEPOSIT
type ADJUSTMENT
type WITHDRAWAL
type WITHDRAWAL_ADJUSTMENT
type CARD_TRANSACTION_REVERSAL
type CARD_TRANSACTION_REVERSAL_ADJUSTMENT
type TRANSFER
type TRANSFER_ADJUSTMENT
type FEE_APPLIED
type FEE_ADJUSTED
type FEES_DUE_REDUCED
type INTEREST_APPLIED
type INTEREST_APPLIED_ADJUSTMENT
type NET_DIFF_INTEREST
type PROFIT_APPLIED
type PROFIT_APPLIED_ADJUSTMENT
type FEE_REDUCTION_ADJUSTMENT
type WITHHOLDING_TAX
type WITHHOLDING_TAX_ADJUSTMENT
type INTEREST_RATE_CHANGED
type OVERDRAFT_INTEREST_RATE_CHANGED
type OVERDRAFT_LIMIT_CHANGED
type BRANCH_CHANGED
type ACCOUNT_HOLDER_CHANGED
type LOAN_FUNDED
type LOAN_FUNDED_ADJUSTMENT
type LOAN_REPAID
type LOAN_REPAID_ADJUSTMENT
type LOAN_FRACTION_BOUGHT
type LOAN_FRACTION_BOUGHT_ADJUSTMENT
type LOAN_FRACTION_SOLD
type LOAN_FRACTION_SOLD_ADJUSTMENT
type SEIZED_AMOUNT

Response Headers

Status Header Type Format Description
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

makeWithdrawal (Deposit Transactions)

Code samples

# You can also use wget
curl -X POST /deposits/{depositAccountId}/withdrawal-transactions \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /deposits/{depositAccountId}/withdrawal-transactions HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/deposits/{depositAccountId}/withdrawal-transactions',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/deposits/{depositAccountId}/withdrawal-transactions',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/deposits/{depositAccountId}/withdrawal-transactions', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/deposits/{depositAccountId}/withdrawal-transactions', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/{depositAccountId}/withdrawal-transactions");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/deposits/{depositAccountId}/withdrawal-transactions", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /deposits/{depositAccountId}/withdrawal-transactions

Create withdrawal transaction

Body parameter

{
  "_Transaction_Details_Transaction": {
    "ACCOUNT_NAME_TRANSACTION_CHANNEL": "string",
    "ACCOUNT_NUMBER_TRANSACTION_CHANN": "string",
    "BANK_NUMBER_TRANSACTION_CHANNEL_": "string",
    "CHECK_NUMBER_TRANSACTION_CHANNEL": "string",
    "IDENTIFIER_TRANSACTION_CHANNEL_I": "string",
    "RECEPIT_NUMBER_TRANSACTION_CHANN": "string",
    "ROUTING_NUMBER_TRANSACTION_CHANN": "string"
  },
  "amount": 0,
  "bookingDate": "2016-09-06T13:37:50+03:00",
  "externalId": "string",
  "holdExternalReferenceId": "string",
  "notes": "string",
  "paymentDetails": {
    "creditor": {
      "name": "string"
    },
    "creditorAccount": {
      "currency": "string",
      "identification": {
        "iban": "string",
        "other": {
          "identification": "string",
          "scheme": "string"
        }
      }
    },
    "creditorAgent": {
      "financialInstitutionIdentification": {
        "bic": "string"
      }
    },
    "debtor": {
      "name": "string"
    },
    "debtorAccount": {
      "currency": "string",
      "identification": {
        "iban": "string",
        "other": {
          "identification": "string",
          "scheme": "string"
        }
      }
    },
    "debtorAgent": {
      "financialInstitutionIdentification": {
        "bic": "string"
      }
    },
    "paymentIdentification": {
      "endToEndIdentification": "string",
      "instructionIdentification": "string",
      "transactionIdentification": "string"
    },
    "paymentTypeInformation": {
      "serviceLevel": {
        "code": "string"
      }
    },
    "remittanceInformation": {
      "structured": {
        "creditorReferenceInformation": {
          "reference": "string",
          "referenceIssuer": "string",
          "referenceType": "string"
        }
      },
      "unstructured": "string"
    }
  },
  "paymentOrderId": "string",
  "transactionDetails": {
    "transactionChannelId": "string",
    "transactionChannelKey": "string"
  },
  "valueDate": "2016-09-06T13:37:50+03:00"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
depositAccountId (required) string The ID or encoded key of the deposit that the transaction will be created for. path
body (required) WithdrawalDepositTransactionInput Represents the information for a withdrawal transaction. body

Example responses

201 Response

{
  "_Transaction_Details_Transaction": {
    "ACCOUNT_NAME_TRANSACTION_CHANNEL": "string",
    "ACCOUNT_NUMBER_TRANSACTION_CHANN": "string",
    "BANK_NUMBER_TRANSACTION_CHANNEL_": "string",
    "CHECK_NUMBER_TRANSACTION_CHANNEL": "string",
    "IDENTIFIER_TRANSACTION_CHANNEL_I": "string",
    "RECEPIT_NUMBER_TRANSACTION_CHANN": "string",
    "ROUTING_NUMBER_TRANSACTION_CHANN": "string"
  },
  "accountBalances": {
    "totalBalance": 0
  },
  "adjustmentTransactionKey": "string",
  "affectedAmounts": {
    "feesAmount": 0,
    "fractionAmount": 0,
    "fundsAmount": 0,
    "interestAmount": 0,
    "overdraftAmount": 0,
    "overdraftFeesAmount": 0,
    "overdraftInterestAmount": 0,
    "technicalOverdraftAmount": 0,
    "technicalOverdraftInterestAmount": 0
  },
  "amount": 0,
  "blockId": "string",
  "bookingDate": "2016-09-06T13:37:50+03:00",
  "branchKey": "string",
  "cardTransaction": {
    "advice": true,
    "amount": 0,
    "cardAcceptor": {
      "city": "string",
      "country": "string",
      "mcc": 0,
      "name": "string",
      "state": "string",
      "street": "string",
      "zip": "string"
    },
    "cardToken": "string",
    "currencyCode": "string",
    "encodedKey": "string",
    "externalAuthorizationReferenceId": "string",
    "externalReferenceId": "string",
    "userTransactionTime": "string"
  },
  "centreKey": "string",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "currencyCode": "string",
  "customFieldsArchived": true,
  "encodedKey": "string",
  "externalId": "string",
  "fees": [
    {
      "amount": 0,
      "name": "string",
      "predefinedFeeKey": "string",
      "taxAmount": 0,
      "trigger": "MANUAL"
    }
  ],
  "holdExternalReferenceId": "string",
  "id": "string",
  "interestAccruedAmounts": {
    "interestAccrued": 0,
    "negativeInterestAccrued": 0,
    "overdraftInterestAccrued": 0,
    "technicalOverdraftInterestAccrued": 0
  },
  "migrationEventKey": "string",
  "notes": "string",
  "originalTransactionKey": "string",
  "parentAccountKey": "string",
  "paymentDetails": {
    "creditor": {
      "name": "string"
    },
    "creditorAccount": {
      "currency": "string",
      "identification": {
        "iban": "string",
        "other": {
          "identification": "string",
          "scheme": "string"
        }
      }
    },
    "creditorAgent": {
      "financialInstitutionIdentification": {
        "bic": "string"
      }
    },
    "debtor": {
      "name": "string"
    },
    "debtorAccount": {
      "currency": "string",
      "identification": {
        "iban": "string",
        "other": {
          "identification": "string",
          "scheme": "string"
        }
      }
    },
    "debtorAgent": {
      "financialInstitutionIdentification": {
        "bic": "string"
      }
    },
    "paymentIdentification": {
      "endToEndIdentification": "string",
      "instructionIdentification": "string",
      "transactionIdentification": "string"
    },
    "paymentTypeInformation": {
      "serviceLevel": {
        "code": "string"
      }
    },
    "remittanceInformation": {
      "structured": {
        "creditorReferenceInformation": {
          "reference": "string",
          "referenceIssuer": "string",
          "referenceType": "string"
        }
      },
      "unstructured": "string"
    }
  },
  "paymentOrderId": "string",
  "taxes": {
    "taxRate": 0
  },
  "terms": {
    "interestSettings": {
      "indexInterestRate": 0,
      "interestRate": 0
    },
    "overdraftInterestSettings": {
      "indexInterestRate": 0,
      "interestRate": 0
    },
    "overdraftSettings": {
      "overdraftLimit": 0
    }
  },
  "tillKey": "string",
  "transactionDetails": {
    "transactionChannelId": "string",
    "transactionChannelKey": "string"
  },
  "transferDetails": {
    "linkedDepositTransactionKey": "string",
    "linkedLoanTransactionKey": "string"
  },
  "type": "IMPORT",
  "userKey": "string",
  "valueDate": "2016-09-06T13:37:50+03:00"
}

The withdrawal transaction has been created.

{
  "encodedKey": "8a19c9c5764281700176432736a506e6",
  "id": "139",
  "externalId": "4629011",
  "paymentOrderId": "PAY-1234-abc",
  "creationDate": "2020-12-08T17:20:12+01:00",
  "valueDate": "2020-12-07T13:00:00+01:00",
  "bookingDate": "2020-12-08T13:00:00+01:00",
  "notes": "some notes about this transaction",
  "parentAccountKey": "8a19a46f72b6bb9a0172b76ef2ed045c",
  "type": "WITHDRAWAL",
  "amount": -200,
  "currencyCode": "EUR",
  "affectedAmounts": {
    "fundsAmount": 200,
    "interestAmount": 0,
    "feesAmount": 0,
    "overdraftAmount": 0,
    "overdraftFeesAmount": 0,
    "overdraftInterestAmount": 0,
    "technicalOverdraftAmount": 0,
    "technicalOverdraftInterestAmount": 0,
    "fractionAmount": 0
  },
  "taxes": {},
  "accountBalances": {
    "totalBalance": 187987.95
  },
  "userKey": "8a194075720ece2c017226fced6f005e",
  "terms": {
    "interestSettings": {},
    "overdraftInterestSettings": {},
    "overdraftSettings": {}
  },
  "transactionDetails": {
    "transactionChannelKey": "8a194075720ece2c017226fcf55e0064",
    "transactionChannelId": "cash"
  },
  "transferDetails": {},
  "fees": [],
  "_EXAMPLE_CUSTOM_FIELDS": {
    "ACCOUNT_NAME_TRANSACTION_CHANNEL": "123987",
    "ACCOUNT_NUMBER_TRANSACTION_CHANN": "456321",
    "BANK_NUMBER_TRANSACTION_CHANNEL_": "789654"
  }
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
201 Created The withdrawal transaction has been created. DepositTransaction
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The deposit account was not found. ErrorResponse
409 Conflict Operation cannot be performed due to another pending operation that locked shared resources. ErrorResponse
429 Too Many Requests Too Many Requests ErrorResponse

applyFee (Deposit Transactions)

Code samples

# You can also use wget
curl -X POST /deposits/{depositAccountId}/fee-transactions \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /deposits/{depositAccountId}/fee-transactions HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/deposits/{depositAccountId}/fee-transactions',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/deposits/{depositAccountId}/fee-transactions',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/deposits/{depositAccountId}/fee-transactions', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/deposits/{depositAccountId}/fee-transactions', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/{depositAccountId}/fee-transactions");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/deposits/{depositAccountId}/fee-transactions", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /deposits/{depositAccountId}/fee-transactions

Apply a fee on a deposit account

Body parameter

{
  "externalId": "123abc",
  "notes": "application of a predefined fee, note that the amount is not required in the case of a predefined fee.",
  "predefinedFeeKey": "8a19dd22764733690176479683d11aba"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
depositAccountId (required) string The ID or encoded key of the deposit that the transaction will be created for. path
body (required) FeeAppliedDepositTransactionInput Represents the information for creating a FEE_APPLIED type transaction on a deposit. body

Example responses

201 Response

{
  "_Transaction_Details_Transaction": {
    "ACCOUNT_NAME_TRANSACTION_CHANNEL": "string",
    "ACCOUNT_NUMBER_TRANSACTION_CHANN": "string",
    "BANK_NUMBER_TRANSACTION_CHANNEL_": "string",
    "CHECK_NUMBER_TRANSACTION_CHANNEL": "string",
    "IDENTIFIER_TRANSACTION_CHANNEL_I": "string",
    "RECEPIT_NUMBER_TRANSACTION_CHANN": "string",
    "ROUTING_NUMBER_TRANSACTION_CHANN": "string"
  },
  "accountBalances": {
    "totalBalance": 0
  },
  "adjustmentTransactionKey": "string",
  "affectedAmounts": {
    "feesAmount": 0,
    "fractionAmount": 0,
    "fundsAmount": 0,
    "interestAmount": 0,
    "overdraftAmount": 0,
    "overdraftFeesAmount": 0,
    "overdraftInterestAmount": 0,
    "technicalOverdraftAmount": 0,
    "technicalOverdraftInterestAmount": 0
  },
  "amount": 0,
  "blockId": "string",
  "bookingDate": "2016-09-06T13:37:50+03:00",
  "branchKey": "string",
  "cardTransaction": {
    "advice": true,
    "amount": 0,
    "cardAcceptor": {
      "city": "string",
      "country": "string",
      "mcc": 0,
      "name": "string",
      "state": "string",
      "street": "string",
      "zip": "string"
    },
    "cardToken": "string",
    "currencyCode": "string",
    "encodedKey": "string",
    "externalAuthorizationReferenceId": "string",
    "externalReferenceId": "string",
    "userTransactionTime": "string"
  },
  "centreKey": "string",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "currencyCode": "string",
  "customFieldsArchived": true,
  "encodedKey": "string",
  "externalId": "string",
  "fees": [
    {
      "amount": 0,
      "name": "string",
      "predefinedFeeKey": "string",
      "taxAmount": 0,
      "trigger": "MANUAL"
    }
  ],
  "holdExternalReferenceId": "string",
  "id": "string",
  "interestAccruedAmounts": {
    "interestAccrued": 0,
    "negativeInterestAccrued": 0,
    "overdraftInterestAccrued": 0,
    "technicalOverdraftInterestAccrued": 0
  },
  "migrationEventKey": "string",
  "notes": "string",
  "originalTransactionKey": "string",
  "parentAccountKey": "string",
  "paymentDetails": {
    "creditor": {
      "name": "string"
    },
    "creditorAccount": {
      "currency": "string",
      "identification": {
        "iban": "string",
        "other": {
          "identification": "string",
          "scheme": "string"
        }
      }
    },
    "creditorAgent": {
      "financialInstitutionIdentification": {
        "bic": "string"
      }
    },
    "debtor": {
      "name": "string"
    },
    "debtorAccount": {
      "currency": "string",
      "identification": {
        "iban": "string",
        "other": {
          "identification": "string",
          "scheme": "string"
        }
      }
    },
    "debtorAgent": {
      "financialInstitutionIdentification": {
        "bic": "string"
      }
    },
    "paymentIdentification": {
      "endToEndIdentification": "string",
      "instructionIdentification": "string",
      "transactionIdentification": "string"
    },
    "paymentTypeInformation": {
      "serviceLevel": {
        "code": "string"
      }
    },
    "remittanceInformation": {
      "structured": {
        "creditorReferenceInformation": {
          "reference": "string",
          "referenceIssuer": "string",
          "referenceType": "string"
        }
      },
      "unstructured": "string"
    }
  },
  "paymentOrderId": "string",
  "taxes": {
    "taxRate": 0
  },
  "terms": {
    "interestSettings": {
      "indexInterestRate": 0,
      "interestRate": 0
    },
    "overdraftInterestSettings": {
      "indexInterestRate": 0,
      "interestRate": 0
    },
    "overdraftSettings": {
      "overdraftLimit": 0
    }
  },
  "tillKey": "string",
  "transactionDetails": {
    "transactionChannelId": "string",
    "transactionChannelKey": "string"
  },
  "transferDetails": {
    "linkedDepositTransactionKey": "string",
    "linkedLoanTransactionKey": "string"
  },
  "type": "IMPORT",
  "userKey": "string",
  "valueDate": "2016-09-06T13:37:50+03:00"
}

The fee applied transaction has been created.

{
  "encodedKey": "8a19dd227647336901764799ba181ae5",
  "id": "142",
  "externalId": "123abc",
  "creationDate": "2020-12-09T14:03:46+01:00",
  "valueDate": "2020-12-09T14:03:46+01:00",
  "bookingDate": "2020-12-09T14:03:46+01:00",
  "notes": "application of a predefined fee",
  "parentAccountKey": "8a19a46f72b6bb9a0172b76ef2ed045c",
  "type": "FEE_APPLIED",
  "amount": -15,
  "currencyCode": "EUR",
  "affectedAmounts": {
    "fundsAmount": 0,
    "interestAmount": 0,
    "feesAmount": 15,
    "overdraftAmount": 0,
    "overdraftFeesAmount": 0,
    "overdraftInterestAmount": 0,
    "technicalOverdraftAmount": 0,
    "technicalOverdraftInterestAmount": 0,
    "fractionAmount": 0
  },
  "taxes": {},
  "accountBalances": {
    "totalBalance": 187857.95
  },
  "userKey": "8a194075720ece2c017226fced6f005e",
  "terms": {
    "interestSettings": {},
    "overdraftInterestSettings": {},
    "overdraftSettings": {}
  },
  "transactionDetails": {},
  "transferDetails": {},
  "fees": [
    {
      "predefinedFeeKey": "8a19dd22764733690176479683d11aba",
      "name": "a fee",
      "amount": 15,
      "taxAmount": 0,
      "trigger": "MANUAL"
    }
  ]
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
201 Created The fee applied transaction has been created. DepositTransaction
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The deposit account was not found. ErrorResponse
409 Conflict Operation cannot be performed due to another pending operation that locked shared resources. ErrorResponse
429 Too Many Requests Too Many Requests ErrorResponse

makeSeizure (Deposit Transactions)

Code samples

# You can also use wget
curl -X POST /deposits/{depositAccountId}/seizure-transactions \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /deposits/{depositAccountId}/seizure-transactions HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/deposits/{depositAccountId}/seizure-transactions',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/deposits/{depositAccountId}/seizure-transactions',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/deposits/{depositAccountId}/seizure-transactions', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/deposits/{depositAccountId}/seizure-transactions', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/{depositAccountId}/seizure-transactions");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/deposits/{depositAccountId}/seizure-transactions", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /deposits/{depositAccountId}/seizure-transactions

Seize a block amount on a deposit account

Body parameter

{
  "amount": 500,
  "blockId": "block-007",
  "externalId": "case-1234abc1",
  "notes": "amount seized due to investigation",
  "transactionChannelId": "cash"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
depositAccountId (required) string The ID or encoded key of the deposit that the transaction will be created for. path
body (required) SeizeBlockAmount Represents the information for seizing a block amount on a deposit account. body

Example responses

201 Response

{
  "_Transaction_Details_Transaction": {
    "ACCOUNT_NAME_TRANSACTION_CHANNEL": "string",
    "ACCOUNT_NUMBER_TRANSACTION_CHANN": "string",
    "BANK_NUMBER_TRANSACTION_CHANNEL_": "string",
    "CHECK_NUMBER_TRANSACTION_CHANNEL": "string",
    "IDENTIFIER_TRANSACTION_CHANNEL_I": "string",
    "RECEPIT_NUMBER_TRANSACTION_CHANN": "string",
    "ROUTING_NUMBER_TRANSACTION_CHANN": "string"
  },
  "accountBalances": {
    "totalBalance": 0
  },
  "adjustmentTransactionKey": "string",
  "affectedAmounts": {
    "feesAmount": 0,
    "fractionAmount": 0,
    "fundsAmount": 0,
    "interestAmount": 0,
    "overdraftAmount": 0,
    "overdraftFeesAmount": 0,
    "overdraftInterestAmount": 0,
    "technicalOverdraftAmount": 0,
    "technicalOverdraftInterestAmount": 0
  },
  "amount": 0,
  "blockId": "string",
  "bookingDate": "2016-09-06T13:37:50+03:00",
  "branchKey": "string",
  "cardTransaction": {
    "advice": true,
    "amount": 0,
    "cardAcceptor": {
      "city": "string",
      "country": "string",
      "mcc": 0,
      "name": "string",
      "state": "string",
      "street": "string",
      "zip": "string"
    },
    "cardToken": "string",
    "currencyCode": "string",
    "encodedKey": "string",
    "externalAuthorizationReferenceId": "string",
    "externalReferenceId": "string",
    "userTransactionTime": "string"
  },
  "centreKey": "string",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "currencyCode": "string",
  "customFieldsArchived": true,
  "encodedKey": "string",
  "externalId": "string",
  "fees": [
    {
      "amount": 0,
      "name": "string",
      "predefinedFeeKey": "string",
      "taxAmount": 0,
      "trigger": "MANUAL"
    }
  ],
  "holdExternalReferenceId": "string",
  "id": "string",
  "interestAccruedAmounts": {
    "interestAccrued": 0,
    "negativeInterestAccrued": 0,
    "overdraftInterestAccrued": 0,
    "technicalOverdraftInterestAccrued": 0
  },
  "migrationEventKey": "string",
  "notes": "string",
  "originalTransactionKey": "string",
  "parentAccountKey": "string",
  "paymentDetails": {
    "creditor": {
      "name": "string"
    },
    "creditorAccount": {
      "currency": "string",
      "identification": {
        "iban": "string",
        "other": {
          "identification": "string",
          "scheme": "string"
        }
      }
    },
    "creditorAgent": {
      "financialInstitutionIdentification": {
        "bic": "string"
      }
    },
    "debtor": {
      "name": "string"
    },
    "debtorAccount": {
      "currency": "string",
      "identification": {
        "iban": "string",
        "other": {
          "identification": "string",
          "scheme": "string"
        }
      }
    },
    "debtorAgent": {
      "financialInstitutionIdentification": {
        "bic": "string"
      }
    },
    "paymentIdentification": {
      "endToEndIdentification": "string",
      "instructionIdentification": "string",
      "transactionIdentification": "string"
    },
    "paymentTypeInformation": {
      "serviceLevel": {
        "code": "string"
      }
    },
    "remittanceInformation": {
      "structured": {
        "creditorReferenceInformation": {
          "reference": "string",
          "referenceIssuer": "string",
          "referenceType": "string"
        }
      },
      "unstructured": "string"
    }
  },
  "paymentOrderId": "string",
  "taxes": {
    "taxRate": 0
  },
  "terms": {
    "interestSettings": {
      "indexInterestRate": 0,
      "interestRate": 0
    },
    "overdraftInterestSettings": {
      "indexInterestRate": 0,
      "interestRate": 0
    },
    "overdraftSettings": {
      "overdraftLimit": 0
    }
  },
  "tillKey": "string",
  "transactionDetails": {
    "transactionChannelId": "string",
    "transactionChannelKey": "string"
  },
  "transferDetails": {
    "linkedDepositTransactionKey": "string",
    "linkedLoanTransactionKey": "string"
  },
  "type": "IMPORT",
  "userKey": "string",
  "valueDate": "2016-09-06T13:37:50+03:00"
}

The seized amount transaction has been created.

{
  "encodedKey": "8a19dd2276473369017647b0e28b1bcb",
  "id": "143",
  "externalId": "case-1234abc1",
  "creationDate": "2020-12-09T14:29:03+01:00",
  "valueDate": "2020-12-09T14:29:03+01:00",
  "notes": "amount seized due to investigation",
  "parentAccountKey": "8a19dcee72b6a8ad0172b766f08b0367",
  "type": "SEIZED_AMOUNT",
  "amount": -500,
  "currencyCode": "EUR",
  "affectedAmounts": {
    "fundsAmount": 500,
    "interestAmount": 0,
    "feesAmount": 0,
    "overdraftAmount": 0,
    "overdraftFeesAmount": 0,
    "overdraftInterestAmount": 0,
    "technicalOverdraftAmount": 0,
    "technicalOverdraftInterestAmount": 0,
    "fractionAmount": 0
  },
  "taxes": {},
  "accountBalances": {
    "totalBalance": 85128.95
  },
  "userKey": "8a19b628762ca2a201762d39b29005ce",
  "blockId": "block-007",
  "terms": {
    "interestSettings": {},
    "overdraftInterestSettings": {},
    "overdraftSettings": {}
  },
  "transactionDetails": {
    "transactionChannelKey": "8a194075720ece2c017226fcf55e0064"
  },
  "transferDetails": {},
  "fees": []
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
201 Created The seized amount transaction has been created. DepositTransaction
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The deposit account was not found. ErrorResponse
409 Conflict Operation cannot be performed due to another pending operation that locked shared resources. ErrorResponse
429 Too Many Requests Too Many Requests ErrorResponse

getById (Deposit Transactions)

Code samples

# You can also use wget
curl -X GET /deposits/transactions/{depositTransactionId} \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /deposits/transactions/{depositTransactionId} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/deposits/transactions/{depositTransactionId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/deposits/transactions/{depositTransactionId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/deposits/transactions/{depositTransactionId}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/deposits/transactions/{depositTransactionId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/transactions/{depositTransactionId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/deposits/transactions/{depositTransactionId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /deposits/transactions/{depositTransactionId}

Get deposit transaction

Parameters

Name Type Description In
depositTransactionId (required) string The ID or encoded key of the deposit transaction. path
detailsLevel string The level of details to return: FULL means the full details of the object will be returned (custom field values, address, contact info, or any other related objects) and BASIC will return only the first level elements of the object. query

Enumerated Values

Parameter Value
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

{
  "_Transaction_Details_Transaction": {
    "ACCOUNT_NAME_TRANSACTION_CHANNEL": "string",
    "ACCOUNT_NUMBER_TRANSACTION_CHANN": "string",
    "BANK_NUMBER_TRANSACTION_CHANNEL_": "string",
    "CHECK_NUMBER_TRANSACTION_CHANNEL": "string",
    "IDENTIFIER_TRANSACTION_CHANNEL_I": "string",
    "RECEPIT_NUMBER_TRANSACTION_CHANN": "string",
    "ROUTING_NUMBER_TRANSACTION_CHANN": "string"
  },
  "accountBalances": {
    "totalBalance": 0
  },
  "adjustmentTransactionKey": "string",
  "affectedAmounts": {
    "feesAmount": 0,
    "fractionAmount": 0,
    "fundsAmount": 0,
    "interestAmount": 0,
    "overdraftAmount": 0,
    "overdraftFeesAmount": 0,
    "overdraftInterestAmount": 0,
    "technicalOverdraftAmount": 0,
    "technicalOverdraftInterestAmount": 0
  },
  "amount": 0,
  "blockId": "string",
  "bookingDate": "2016-09-06T13:37:50+03:00",
  "branchKey": "string",
  "cardTransaction": {
    "advice": true,
    "amount": 0,
    "cardAcceptor": {
      "city": "string",
      "country": "string",
      "mcc": 0,
      "name": "string",
      "state": "string",
      "street": "string",
      "zip": "string"
    },
    "cardToken": "string",
    "currencyCode": "string",
    "encodedKey": "string",
    "externalAuthorizationReferenceId": "string",
    "externalReferenceId": "string",
    "userTransactionTime": "string"
  },
  "centreKey": "string",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "currencyCode": "string",
  "customFieldsArchived": true,
  "encodedKey": "string",
  "externalId": "string",
  "fees": [
    {
      "amount": 0,
      "name": "string",
      "predefinedFeeKey": "string",
      "taxAmount": 0,
      "trigger": "MANUAL"
    }
  ],
  "holdExternalReferenceId": "string",
  "id": "string",
  "interestAccruedAmounts": {
    "interestAccrued": 0,
    "negativeInterestAccrued": 0,
    "overdraftInterestAccrued": 0,
    "technicalOverdraftInterestAccrued": 0
  },
  "migrationEventKey": "string",
  "notes": "string",
  "originalTransactionKey": "string",
  "parentAccountKey": "string",
  "paymentDetails": {
    "creditor": {
      "name": "string"
    },
    "creditorAccount": {
      "currency": "string",
      "identification": {
        "iban": "string",
        "other": {
          "identification": "string",
          "scheme": "string"
        }
      }
    },
    "creditorAgent": {
      "financialInstitutionIdentification": {
        "bic": "string"
      }
    },
    "debtor": {
      "name": "string"
    },
    "debtorAccount": {
      "currency": "string",
      "identification": {
        "iban": "string",
        "other": {
          "identification": "string",
          "scheme": "string"
        }
      }
    },
    "debtorAgent": {
      "financialInstitutionIdentification": {
        "bic": "string"
      }
    },
    "paymentIdentification": {
      "endToEndIdentification": "string",
      "instructionIdentification": "string",
      "transactionIdentification": "string"
    },
    "paymentTypeInformation": {
      "serviceLevel": {
        "code": "string"
      }
    },
    "remittanceInformation": {
      "structured": {
        "creditorReferenceInformation": {
          "reference": "string",
          "referenceIssuer": "string",
          "referenceType": "string"
        }
      },
      "unstructured": "string"
    }
  },
  "paymentOrderId": "string",
  "taxes": {
    "taxRate": 0
  },
  "terms": {
    "interestSettings": {
      "indexInterestRate": 0,
      "interestRate": 0
    },
    "overdraftInterestSettings": {
      "indexInterestRate": 0,
      "interestRate": 0
    },
    "overdraftSettings": {
      "overdraftLimit": 0
    }
  },
  "tillKey": "string",
  "transactionDetails": {
    "transactionChannelId": "string",
    "transactionChannelKey": "string"
  },
  "transferDetails": {
    "linkedDepositTransactionKey": "string",
    "linkedLoanTransactionKey": "string"
  },
  "type": "IMPORT",
  "userKey": "string",
  "valueDate": "2016-09-06T13:37:50+03:00"
}

Responses

Status Meaning Description Schema
200 OK The deposit transaction has been returned. DepositTransaction
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The deposit transaction was not found. ErrorResponse

editTransactionDetails (Deposit Transactions)

Code samples

# You can also use wget
curl -X PATCH /deposits/transactions/{depositTransactionId} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json'

PATCH /deposits/transactions/{depositTransactionId} HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/deposits/transactions/{depositTransactionId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.patch '/deposits/transactions/{depositTransactionId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.patch('/deposits/transactions/{depositTransactionId}', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PATCH','/deposits/transactions/{depositTransactionId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/transactions/{depositTransactionId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PATCH");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/deposits/transactions/{depositTransactionId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PATCH /deposits/transactions/{depositTransactionId}

Edit custom information or notes for deposit transaction

Body parameter

[
  {
    "from": "string",
    "op": "ADD",
    "path": "string",
    "value": {}
  }
]

Parameters

Name Type Description In
depositTransactionId (required) string The ID or encoded key of the deposit transaction. path
body (required) PatchOperation Patch operations to be applied to a resource. body

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
204 No Content The deposit transaction details have been edited successfully. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The deposit transaction was not found. ErrorResponse

Code samples

# You can also use wget
curl -X POST /deposits/transactions:search \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json'

POST /deposits/transactions:search HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/deposits/transactions:search',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.post '/deposits/transactions:search',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.post('/deposits/transactions:search', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/deposits/transactions:search', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/transactions:search");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/deposits/transactions:search", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /deposits/transactions:search

Search deposit transactions for deposit accounts by various criteria

For more information on performing searches, please read the Searching for Records section above.

Body parameter

{
  "filterCriteria": [
    {
      "field": "type",
      "operator": "IN",
      "values": [
        "FEE_APPLIED",
        "WITHDRAWAL"
      ]
    }
  ],
  "sortingCriteria": {
    "field": "valueDate",
    "order": "ASC"
  }
}

Parameters

Name Type Description In
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query
cursor string Pagination, cursor to start searching at when retrieving elements, used in combination with limit to paginate results query
detailsLevel string The level of details to return: FULL means the full details of the object will be returned (custom field values, address, contact info, or any other related objects) and BASIC will return only the first level elements of the object. query
body (required) DepositTransactionSearchCriteria The criteria to use to search deposit transactions. body

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

[
  {
    "_Transaction_Details_Transaction": {
      "ACCOUNT_NAME_TRANSACTION_CHANNEL": "string",
      "ACCOUNT_NUMBER_TRANSACTION_CHANN": "string",
      "BANK_NUMBER_TRANSACTION_CHANNEL_": "string",
      "CHECK_NUMBER_TRANSACTION_CHANNEL": "string",
      "IDENTIFIER_TRANSACTION_CHANNEL_I": "string",
      "RECEPIT_NUMBER_TRANSACTION_CHANN": "string",
      "ROUTING_NUMBER_TRANSACTION_CHANN": "string"
    },
    "accountBalances": {
      "totalBalance": 0
    },
    "adjustmentTransactionKey": "string",
    "affectedAmounts": {
      "feesAmount": 0,
      "fractionAmount": 0,
      "fundsAmount": 0,
      "interestAmount": 0,
      "overdraftAmount": 0,
      "overdraftFeesAmount": 0,
      "overdraftInterestAmount": 0,
      "technicalOverdraftAmount": 0,
      "technicalOverdraftInterestAmount": 0
    },
    "amount": 0,
    "blockId": "string",
    "bookingDate": "2016-09-06T13:37:50+03:00",
    "branchKey": "string",
    "cardTransaction": {
      "advice": true,
      "amount": 0,
      "cardAcceptor": {
        "city": "string",
        "country": "string",
        "mcc": 0,
        "name": "string",
        "state": "string",
        "street": "string",
        "zip": "string"
      },
      "cardToken": "string",
      "currencyCode": "string",
      "encodedKey": "string",
      "externalAuthorizationReferenceId": "string",
      "externalReferenceId": "string",
      "userTransactionTime": "string"
    },
    "centreKey": "string",
    "creationDate": "2016-09-06T13:37:50+03:00",
    "currencyCode": "string",
    "customFieldsArchived": true,
    "encodedKey": "string",
    "externalId": "string",
    "fees": [
      {
        "amount": 0,
        "name": "string",
        "predefinedFeeKey": "string",
        "taxAmount": 0,
        "trigger": "MANUAL"
      }
    ],
    "holdExternalReferenceId": "string",
    "id": "string",
    "interestAccruedAmounts": {
      "interestAccrued": 0,
      "negativeInterestAccrued": 0,
      "overdraftInterestAccrued": 0,
      "technicalOverdraftInterestAccrued": 0
    },
    "migrationEventKey": "string",
    "notes": "string",
    "originalTransactionKey": "string",
    "parentAccountKey": "string",
    "paymentDetails": {
      "creditor": {
        "name": "string"
      },
      "creditorAccount": {
        "currency": "string",
        "identification": {
          "iban": "string",
          "other": {
            "identification": "string",
            "scheme": "string"
          }
        }
      },
      "creditorAgent": {
        "financialInstitutionIdentification": {
          "bic": "string"
        }
      },
      "debtor": {
        "name": "string"
      },
      "debtorAccount": {
        "currency": "string",
        "identification": {
          "iban": "string",
          "other": {
            "identification": "string",
            "scheme": "string"
          }
        }
      },
      "debtorAgent": {
        "financialInstitutionIdentification": {
          "bic": "string"
        }
      },
      "paymentIdentification": {
        "endToEndIdentification": "string",
        "instructionIdentification": "string",
        "transactionIdentification": "string"
      },
      "paymentTypeInformation": {
        "serviceLevel": {
          "code": "string"
        }
      },
      "remittanceInformation": {
        "structured": {
          "creditorReferenceInformation": {
            "reference": "string",
            "referenceIssuer": "string",
            "referenceType": "string"
          }
        },
        "unstructured": "string"
      }
    },
    "paymentOrderId": "string",
    "taxes": {
      "taxRate": 0
    },
    "terms": {
      "interestSettings": {
        "indexInterestRate": 0,
        "interestRate": 0
      },
      "overdraftInterestSettings": {
        "indexInterestRate": 0,
        "interestRate": 0
      },
      "overdraftSettings": {
        "overdraftLimit": 0
      }
    },
    "tillKey": "string",
    "transactionDetails": {
      "transactionChannelId": "string",
      "transactionChannelKey": "string"
    },
    "transferDetails": {
      "linkedDepositTransactionKey": "string",
      "linkedLoanTransactionKey": "string"
    },
    "type": "IMPORT",
    "userKey": "string",
    "valueDate": "2016-09-06T13:37:50+03:00"
  }
]

The results of a deposit transaction search.

[
  {
    "encodedKey": "8a19a46f72b6bb9a0172b767a4b003fc",
    "id": "3",
    "creationDate": "2020-06-15T11:55:22+02:00",
    "valueDate": "2020-06-15T11:55:22+02:00",
    "parentAccountKey": "8a19dcee72b6a8ad0172b766f08b0367",
    "type": "WITHDRAWAL",
    "amount": -250,
    "currencyCode": "EUR",
    "accountBalances": {
      "totalBalance": 750
    },
    "userKey": "8a194075720ece2c017226fced6f005e",
    "transactionDetails": {
      "transactionChannelKey": "8a194075720ece2c017226fcf55e0064"
    }
  },
  {
    "encodedKey": "8a19a7de7306fd4f0173073e983e09b2",
    "id": "14",
    "creationDate": "2020-07-01T00:00:10+02:00",
    "valueDate": "2020-07-01T00:00:00+02:00",
    "parentAccountKey": "8a19df6972b787fc0172b8c7b0e70bc1",
    "type": "FEE_APPLIED",
    "amount": -50,
    "currencyCode": "EUR",
    "accountBalances": {
      "totalBalance": 2950
    },
    "transactionDetails": {}
  },
  {
    "encodedKey": "8a19da3a73a6b9020173a6e3f5137951",
    "id": "18",
    "creationDate": "2020-08-01T00:00:24+02:00",
    "valueDate": "2020-08-01T00:00:00+02:00",
    "parentAccountKey": "8a19df6972b787fc0172b8c7b0e70bc1",
    "type": "FEE_APPLIED",
    "amount": -50,
    "currencyCode": "EUR",
    "accountBalances": {
      "totalBalance": 2900
    },
    "transactionDetails": {}
  }
]

Responses

Status Meaning Description Schema
200 OK The results of a deposit transaction search. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [DepositTransaction] [Represents the action performed on an Deposit Account after which the account's amount changes its value.] none
Ā» _Transaction_Details_Transaction _Transaction_Details_Transaction Captures default transaction custom fields none
»» ACCOUNT_NAME_TRANSACTION_CHANNEL string none none
»» ACCOUNT_NUMBER_TRANSACTION_CHANN string none none
»» BANK_NUMBER_TRANSACTION_CHANNEL_ string none none
»» CHECK_NUMBER_TRANSACTION_CHANNEL string none none
»» IDENTIFIER_TRANSACTION_CHANNEL_I string An unique user-defined identifier for each transaction. This field is optional, but if specified, it must be unique across all loan and deposit transactions none
»» RECEPIT_NUMBER_TRANSACTION_CHANN string none none
»» ROUTING_NUMBER_TRANSACTION_CHANN string none none
Ā» accountBalances DepositTransactionBalances The balances changed within a transaction. none
»» totalBalance number The running balance owed by deposit none
Ā» adjustmentTransactionKey string The key of the deposit transaction where the adjustment for this transaction was made (if any adjustment was involved) none
Ā» affectedAmounts DepositAffectedAmounts The amounts affected after completing the deposit transaction none
»» feesAmount number Amount of fees involved in a transaction that affects an account with positive balance none
»» fractionAmount number In the case of an LOAN_FRACTION_BOUGHT this represent the fraction amount which was bought from another investor none
»» fundsAmount number Balance change amount involved in a transaction that affects an account with positive balance none
»» interestAmount number Amount of interest involved in a transaction that affects an account with positive balance none
»» overdraftAmount number The amount of money that was added/subtracted from the account by this transaction as overdraft none
»» overdraftFeesAmount number Fees amount involved in a transaction that affects an overdraft none
»» overdraftInterestAmount number Interest amount involved in a transaction that affects an overdraft none
»» technicalOverdraftAmount number The amount of money that was added/subtracted from the account by this transaction as technical overdraft none
»» technicalOverdraftInterestAmount number The amount of money that was added/subtracted from the account by this transaction as technical overdraft interest none
Ā» amount number How much was added/removed in account none
Ā» blockId string The block fund id associated with the transaction none
Ā» bookingDate string(date-time) The date when corresponding JE is booked (as Organization Time) none
Ā» branchKey string The branch where the transaction was performed read-only
Ā» cardTransaction CardTransaction A card transaction entry which will have a corresponding a financial transaction performed. none
»» advice (required) boolean Whether the given request should be accepted without balance validations. none
»» amount (required) number The amount of money to be withdrawn in the financial transaction. none
»» cardAcceptor CardAcceptor The details of the card acceptor (merchant) in a transaction hold. none
»»» city string The city in which the card acceptor has the business. none
»»» country string The country in which the card acceptor has the business. none
»»» mcc integer(int32) The Merchant Category Code of the card acceptor. none
»»» name string The name of the card acceptor. none
»»» state string The state in which the card acceptor has the business. none
»»» street string The street in which the card acceptor has the business. none
»»» zip string The ZIP code of the location in which the card acceptor has the business. none
»» cardToken string The reference token of the card. read-only
»» currencyCode string The ISO currency code in which the card reversal transaction is posted. The amounts are stored in the base currency, but the transaction can be created with a foreign currency. none
»» encodedKey string The encoded key of the entity, generated, globally unique read-only
»» externalAuthorizationReferenceId string The external authorization hold reference ID, which relates this card transaction to a previous authorization hold. none
»» externalReferenceId (required) string The external reference ID to be used to reference the card transaction in subsequent requests. none
»» userTransactionTime string The formatted time at which the user made this card transaction. none
Ā» centreKey string The center where the transaction was performed read-only
Ā» creationDate string(date-time) The date when this deposit transaction was created read-only
Ā» currencyCode string The currency in which this transaction was posted none
Ā» customFieldsArchived boolean Whether the custom fields of the transaction are archived read-only
Ā» encodedKey string The encoded key of the deposit transaction, auto generated, unique read-only
Ā» externalId string The external id of the deposit transaction, customizable, unique none
Ā» fees [DepositFee] All the amounts that have been applied or paid within this transaction and involved predefined fees read-only
»» amount number The amount of the fee that was applied/paid in the transaction for the given predefined fee. none
»» name string The name of the predefined fee read-only
»» predefinedFeeKey (required) string The encoded key of the predefined fee, auto generated, unique none
»» taxAmount number The amount of the taxes on fee that was applied/paid in the transaction. none
»» trigger string Shows the event that will trigger a fee read-only
Ā» holdExternalReferenceId string The external id of an account authorization hold none
Ā» id string The id of the deposit transaction, auto generated, unique none
Ā» interestAccruedAmounts DepositInterestAccruedAmounts Represents the accrued interest amounts for an Interest Applied deposit transaction. none
»» interestAccrued number The amount of positive interest accrued since last interest application/activation date and applied within Interest Applied transaction none
»» negativeInterestAccrued number The amount of negative interest accrued since last interest application/activation date and applied within Interest Applied transaction none
»» overdraftInterestAccrued number The amount of overdraft interest accrued since last interest application/activation date and applied within Interest Applied transaction none
»» technicalOverdraftInterestAccrued number The amount of technical overdraft interest accrued since last interest application/activation date and applied within Interest Applied transaction none
Ā» migrationEventKey string The migration event encoded key associated with this deposit account. If this account was imported, track which 'migration event' they came from none
Ā» notes string Extra notes about this deposit transaction none
Ā» originalTransactionKey string The encodedKey of the transaction that was adjusted as part of this one. Available only for adjustment transactions none
Ā» parentAccountKey string The key of the parent deposit account none
Ā» paymentDetails PaymentDetails The payment information including account identification details none
»» creditor Party The details of the party for a transaction none
»»» name string The name of the party none
»» creditorAccount AccountDetails The account currency and identification none
»»» currency string The currency of the account none
»»» identification AccountIdentification The account identification details none
»»»» iban string The account unique identifier none
»»»» other OtherAccountIdentification Represents other way of identification for the account. none
»»»»» identification string The identification of the payer/payee none
»»»»» scheme string The identification scheme none
»» creditorAgent Agent The agent details for a party none
»»» financialInstitutionIdentification FinancialInstitutionIdentification The identification of the financial institution none
»»»» bic string Business identifier code none
»» debtor Party The details of the party for a transaction none
»» debtorAccount AccountDetails The account currency and identification none
»» debtorAgent Agent The agent details for a party none
»» paymentIdentification PaymentIdentification The payment identification details none
»»» endToEndIdentification string Identifier assigned by the initiating party to the transaction. Limited to 35 characters none
»»» instructionIdentification string Identifier of a payment instruction none
»»» transactionIdentification string Identifier unique for a period assigned by the first initiating party to the transaction none
»» paymentTypeInformation PaymentTypeInformation The information specifying the type of transaction none
»»» serviceLevel ServiceLevel The rules under which the transaction should be processed none
»»»» code string The code for a pre-agreed service or level of service between the parties none
»» remittanceInformation RemittanceInformation The information specifying the payment items that are intended to settle none
»»» structured Structured The information specifying the payment items that are intended to settle none
»»»» creditorReferenceInformation CreditorReferenceInformation Represents the reference to the underlying documents of the payment. none
»»»»» reference string The reference information of the creditor's underlying documents none
»»»»» referenceIssuer string The entity that assigns the reference type none
»»»»» referenceType string The type of creditor reference none
»»» unstructured string Information supplied to match the items of the payment in an unstructured form none
Ā» paymentOrderId string The payment order id of the deposit transaction, customizable none
Ā» taxes DepositTaxes The taxes applied within a transaction none
»» taxRate number The tax rate that was set or changed in this transaction none
Ā» terms DepositTerms The deposit transaction terms none
»» interestSettings DepositTransactionInterestSettings The interest settings, holds all the properties regarding interests for the deposit account none
»»» indexInterestRate number The value of the index interest rate set or changed in this transaction none
»»» interestRate number The interest rate for the deposit account none
»» overdraftInterestSettings DepositOverdraftInterestSettings Holds the deposit overdraft interest settings none
»»» indexInterestRate number The value of the index interest rate set or changed in this transaction none
»»» interestRate number The interest rate that was set or changed in this transaction. Used on product interest rate changes or interest tier switches none
»» overdraftSettings DepositOverdraftSettings Holds the deposit overdraft settings for a transaction none
»»» overdraftLimit number The overdraft limit that was set or changed in this transaction none
Ā» tillKey string The till key associated with this transaction none
Ā» transactionDetails TransactionDetails Contains the details about transaction including fields like transaction channel key and channel id none
»» transactionChannelId string The id of the transaction channel associated with the transaction details. none
»» transactionChannelKey string The encoded key of the transaction channel associated with the transaction details. none
Ā» transferDetails TransferDetails Represents the transfer details, such as the linked transaction key none
»» linkedDepositTransactionKey string The key of the related deposit transaction none
»» linkedLoanTransactionKey string The key of the related loan transaction none
Ā» type string The type of the deposit transaction none
Ā» userKey string The person that performed the transaction none
Ā» valueDate string(date-time) Date of the entry (eg date of repayment or disbursal, etc.) (as Organization Time) none

Enumerated Values

Property Value
trigger MANUAL
trigger MONTHLY_FEE
trigger ARBITRARY
type IMPORT
type WRITE_OFF
type WRITE_OFF_ADJUSTMENT
type DEPOSIT
type ADJUSTMENT
type WITHDRAWAL
type WITHDRAWAL_ADJUSTMENT
type CARD_TRANSACTION_REVERSAL
type CARD_TRANSACTION_REVERSAL_ADJUSTMENT
type TRANSFER
type TRANSFER_ADJUSTMENT
type FEE_APPLIED
type FEE_ADJUSTED
type FEES_DUE_REDUCED
type INTEREST_APPLIED
type INTEREST_APPLIED_ADJUSTMENT
type NET_DIFF_INTEREST
type PROFIT_APPLIED
type PROFIT_APPLIED_ADJUSTMENT
type FEE_REDUCTION_ADJUSTMENT
type WITHHOLDING_TAX
type WITHHOLDING_TAX_ADJUSTMENT
type INTEREST_RATE_CHANGED
type OVERDRAFT_INTEREST_RATE_CHANGED
type OVERDRAFT_LIMIT_CHANGED
type BRANCH_CHANGED
type ACCOUNT_HOLDER_CHANGED
type LOAN_FUNDED
type LOAN_FUNDED_ADJUSTMENT
type LOAN_REPAID
type LOAN_REPAID_ADJUSTMENT
type LOAN_FRACTION_BOUGHT
type LOAN_FRACTION_BOUGHT_ADJUSTMENT
type LOAN_FRACTION_SOLD
type LOAN_FRACTION_SOLD_ADJUSTMENT
type SEIZED_AMOUNT

Response Headers

Status Header Type Format Description
200 Items-Next-Cursor string The next cursor to be used by the subsequent calls
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

makeDeposit (Deposit Transactions)

Code samples

# You can also use wget
curl -X POST /deposits/{depositAccountId}/deposit-transactions \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /deposits/{depositAccountId}/deposit-transactions HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/deposits/{depositAccountId}/deposit-transactions',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/deposits/{depositAccountId}/deposit-transactions',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/deposits/{depositAccountId}/deposit-transactions', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/deposits/{depositAccountId}/deposit-transactions', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/{depositAccountId}/deposit-transactions");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/deposits/{depositAccountId}/deposit-transactions", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /deposits/{depositAccountId}/deposit-transactions

Create deposit transaction

Body parameter

{
  "_Transaction_Details_Transaction": {
    "ACCOUNT_NAME_TRANSACTION_CHANNEL": "string",
    "ACCOUNT_NUMBER_TRANSACTION_CHANN": "string",
    "BANK_NUMBER_TRANSACTION_CHANNEL_": "string",
    "CHECK_NUMBER_TRANSACTION_CHANNEL": "string",
    "IDENTIFIER_TRANSACTION_CHANNEL_I": "string",
    "RECEPIT_NUMBER_TRANSACTION_CHANN": "string",
    "ROUTING_NUMBER_TRANSACTION_CHANN": "string"
  },
  "amount": 0,
  "bookingDate": "2016-09-06T13:37:50+03:00",
  "externalId": "string",
  "holdExternalReferenceId": "string",
  "notes": "string",
  "paymentDetails": {
    "creditor": {
      "name": "string"
    },
    "creditorAccount": {
      "currency": "string",
      "identification": {
        "iban": "string",
        "other": {
          "identification": "string",
          "scheme": "string"
        }
      }
    },
    "creditorAgent": {
      "financialInstitutionIdentification": {
        "bic": "string"
      }
    },
    "debtor": {
      "name": "string"
    },
    "debtorAccount": {
      "currency": "string",
      "identification": {
        "iban": "string",
        "other": {
          "identification": "string",
          "scheme": "string"
        }
      }
    },
    "debtorAgent": {
      "financialInstitutionIdentification": {
        "bic": "string"
      }
    },
    "paymentIdentification": {
      "endToEndIdentification": "string",
      "instructionIdentification": "string",
      "transactionIdentification": "string"
    },
    "paymentTypeInformation": {
      "serviceLevel": {
        "code": "string"
      }
    },
    "remittanceInformation": {
      "structured": {
        "creditorReferenceInformation": {
          "reference": "string",
          "referenceIssuer": "string",
          "referenceType": "string"
        }
      },
      "unstructured": "string"
    }
  },
  "paymentOrderId": "string",
  "skipMaximumBalanceValidation": true,
  "transactionDetails": {
    "transactionChannelId": "string",
    "transactionChannelKey": "string"
  },
  "valueDate": "2016-09-06T13:37:50+03:00"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
depositAccountId (required) string The ID or encoded key of the deposit that the transaction will be created for. path
body (required) DepositTransactionInput Represents the information needed to create a deposit transaction. body

Example responses

201 Response

{
  "_Transaction_Details_Transaction": {
    "ACCOUNT_NAME_TRANSACTION_CHANNEL": "string",
    "ACCOUNT_NUMBER_TRANSACTION_CHANN": "string",
    "BANK_NUMBER_TRANSACTION_CHANNEL_": "string",
    "CHECK_NUMBER_TRANSACTION_CHANNEL": "string",
    "IDENTIFIER_TRANSACTION_CHANNEL_I": "string",
    "RECEPIT_NUMBER_TRANSACTION_CHANN": "string",
    "ROUTING_NUMBER_TRANSACTION_CHANN": "string"
  },
  "accountBalances": {
    "totalBalance": 0
  },
  "adjustmentTransactionKey": "string",
  "affectedAmounts": {
    "feesAmount": 0,
    "fractionAmount": 0,
    "fundsAmount": 0,
    "interestAmount": 0,
    "overdraftAmount": 0,
    "overdraftFeesAmount": 0,
    "overdraftInterestAmount": 0,
    "technicalOverdraftAmount": 0,
    "technicalOverdraftInterestAmount": 0
  },
  "amount": 0,
  "blockId": "string",
  "bookingDate": "2016-09-06T13:37:50+03:00",
  "branchKey": "string",
  "cardTransaction": {
    "advice": true,
    "amount": 0,
    "cardAcceptor": {
      "city": "string",
      "country": "string",
      "mcc": 0,
      "name": "string",
      "state": "string",
      "street": "string",
      "zip": "string"
    },
    "cardToken": "string",
    "currencyCode": "string",
    "encodedKey": "string",
    "externalAuthorizationReferenceId": "string",
    "externalReferenceId": "string",
    "userTransactionTime": "string"
  },
  "centreKey": "string",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "currencyCode": "string",
  "customFieldsArchived": true,
  "encodedKey": "string",
  "externalId": "string",
  "fees": [
    {
      "amount": 0,
      "name": "string",
      "predefinedFeeKey": "string",
      "taxAmount": 0,
      "trigger": "MANUAL"
    }
  ],
  "holdExternalReferenceId": "string",
  "id": "string",
  "interestAccruedAmounts": {
    "interestAccrued": 0,
    "negativeInterestAccrued": 0,
    "overdraftInterestAccrued": 0,
    "technicalOverdraftInterestAccrued": 0
  },
  "migrationEventKey": "string",
  "notes": "string",
  "originalTransactionKey": "string",
  "parentAccountKey": "string",
  "paymentDetails": {
    "creditor": {
      "name": "string"
    },
    "creditorAccount": {
      "currency": "string",
      "identification": {
        "iban": "string",
        "other": {
          "identification": "string",
          "scheme": "string"
        }
      }
    },
    "creditorAgent": {
      "financialInstitutionIdentification": {
        "bic": "string"
      }
    },
    "debtor": {
      "name": "string"
    },
    "debtorAccount": {
      "currency": "string",
      "identification": {
        "iban": "string",
        "other": {
          "identification": "string",
          "scheme": "string"
        }
      }
    },
    "debtorAgent": {
      "financialInstitutionIdentification": {
        "bic": "string"
      }
    },
    "paymentIdentification": {
      "endToEndIdentification": "string",
      "instructionIdentification": "string",
      "transactionIdentification": "string"
    },
    "paymentTypeInformation": {
      "serviceLevel": {
        "code": "string"
      }
    },
    "remittanceInformation": {
      "structured": {
        "creditorReferenceInformation": {
          "reference": "string",
          "referenceIssuer": "string",
          "referenceType": "string"
        }
      },
      "unstructured": "string"
    }
  },
  "paymentOrderId": "string",
  "taxes": {
    "taxRate": 0
  },
  "terms": {
    "interestSettings": {
      "indexInterestRate": 0,
      "interestRate": 0
    },
    "overdraftInterestSettings": {
      "indexInterestRate": 0,
      "interestRate": 0
    },
    "overdraftSettings": {
      "overdraftLimit": 0
    }
  },
  "tillKey": "string",
  "transactionDetails": {
    "transactionChannelId": "string",
    "transactionChannelKey": "string"
  },
  "transferDetails": {
    "linkedDepositTransactionKey": "string",
    "linkedLoanTransactionKey": "string"
  },
  "type": "IMPORT",
  "userKey": "string",
  "valueDate": "2016-09-06T13:37:50+03:00"
}

The deposit transaction has been created.

{
  "encodedKey": "8a19c9c5764281700176432736a506e6",
  "id": "139",
  "externalId": "4629011",
  "paymentOrderId": "PAY-1234-abc",
  "creationDate": "2020-12-08T17:20:12+01:00",
  "valueDate": "2020-12-07T13:00:00+01:00",
  "bookingDate": "2020-12-08T13:00:00+01:00",
  "notes": "some notes about this transaction",
  "parentAccountKey": "8a19a46f72b6bb9a0172b76ef2ed045c",
  "type": "DEPOSIT",
  "amount": -200,
  "currencyCode": "EUR",
  "affectedAmounts": {
    "fundsAmount": 200,
    "interestAmount": 0,
    "feesAmount": 0,
    "overdraftAmount": 0,
    "overdraftFeesAmount": 0,
    "overdraftInterestAmount": 0,
    "technicalOverdraftAmount": 0,
    "technicalOverdraftInterestAmount": 0,
    "fractionAmount": 0
  },
  "taxes": {},
  "accountBalances": {
    "totalBalance": 187987.95
  },
  "userKey": "8a194075720ece2c017226fced6f005e",
  "terms": {
    "interestSettings": {},
    "overdraftInterestSettings": {},
    "overdraftSettings": {}
  },
  "transactionDetails": {
    "transactionChannelKey": "8a194075720ece2c017226fcf55e0064",
    "transactionChannelId": "cash"
  },
  "transferDetails": {},
  "fees": [],
  "_EXAMPLE_CUSTOM_FIELDS": {
    "ACCOUNT_NAME_TRANSACTION_CHANNEL": "123987",
    "ACCOUNT_NUMBER_TRANSACTION_CHANN": "456321",
    "BANK_NUMBER_TRANSACTION_CHANNEL_": "789654"
  }
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
201 Created The deposit transaction has been created. DepositTransaction
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The deposit account was not found. ErrorResponse
409 Conflict Operation cannot be performed due to another pending operation that locked shared resources. ErrorResponse
429 Too Many Requests Too Many Requests ErrorResponse

makeBulkDeposits (Deposit Transactions)

Code samples

# You can also use wget
curl -X POST /deposits/deposit-transactions:bulk \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /deposits/deposit-transactions:bulk HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/deposits/deposit-transactions:bulk',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/deposits/deposit-transactions:bulk',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/deposits/deposit-transactions:bulk', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/deposits/deposit-transactions:bulk', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/deposit-transactions:bulk");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/deposits/deposit-transactions:bulk", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /deposits/deposit-transactions:bulk

Create a bulk collection of deposit transactions

To query the status and results of the bulk operation, use /bulks/{bulkProcessKey}.

Body parameter

{
  "transactions": [
    [
      {
        "_EXAMPLE_CUSTOM_FIELDS": {
          "Example_Checkbox_Field": "TRUE",
          "Example_Number_Field": "123987",
          "Example_Text_Field": "Up to 255 characters of Text"
        },
        "accountId": "GHI-789",
        "amount": 200,
        "externalId": "46290",
        "notes": "some notes about this transaction",
        "paymentOrderId": "PAY-1234-abc",
        "transactionDetails": {
          "transactionChannelId": "cash",
          "transactionChannelKey": "8a194075720ece2c017226fcf55e0064"
        }
      },
      {
        "_EXAMPLE_CUSTOM_FIELDS": {
          "Example_Checkbox_Field": "FALSE",
          "Example_Number_Field": "567432",
          "Example_Text_Field": "Up to 255 characters of Text"
        },
        "accountId": "DEF-456",
        "amount": 302,
        "externalId": "1234",
        "notes": "some notes about this transaction",
        "paymentOrderId": "PAY-5678-def",
        "transactionDetails": {
          "transactionChannelId": "cheque",
          "transactionChannelKey": "8a194075720ece2c017226fcf55e0064"
        }
      },
      {
        "_EXAMPLE_CUSTOM_FIELDS": {
          "Example_Checkbox_Field": "TRUE",
          "Example_Number_Field": "192837",
          "Example_Text_Field": "Up to 255 characters of Text"
        },
        "accountId": "ABC-123",
        "amount": 546.5,
        "externalId": "5678",
        "notes": "some notes about this transaction",
        "paymentOrderId": "PAY-9876-ghi",
        "transactionDetails": {
          "transactionChannelId": "bank",
          "transactionChannelKey": "8a194075720ece2c017226fcf55e0064"
        }
      }
    ]
  ]
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
body (required) BulkDepositTransactionsInput Represents the request payload for bulk deposit transactions body

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
202 Accepted Bulk deposit transactions created None
400 Bad Request A Validation error occurred ErrorResponse
401 Unauthorized UNAUTHORIZED ErrorResponse
403 Forbidden Forbidden ErrorResponse

Response Headers

Status Header Type Format Description
202 Location string Bulk process key

adjust (Deposit Transactions)

Code samples

# You can also use wget
curl -X POST /deposits/transactions/{depositTransactionId}:adjust \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /deposits/transactions/{depositTransactionId}:adjust HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/deposits/transactions/{depositTransactionId}:adjust',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/deposits/transactions/{depositTransactionId}:adjust',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/deposits/transactions/{depositTransactionId}:adjust', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/deposits/transactions/{depositTransactionId}:adjust', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/deposits/transactions/{depositTransactionId}:adjust");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/deposits/transactions/{depositTransactionId}:adjust", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /deposits/transactions/{depositTransactionId}:adjust

Adjust a deposit transaction, which may bulk adjust multiple transactions

Body parameter

{
  "bookingDate": "2020-12-09T13:01:22+01:00",
  "notes": "some notes, for example, the reason for adjustment"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
depositTransactionId (required) string The ID or encoded key of the deposit transaction. path
body (required) DepositTransactionAdjustmentDetails Represents information about the adjustment action. body

Example responses

200 Response

{
  "_Transaction_Details_Transaction": {
    "ACCOUNT_NAME_TRANSACTION_CHANNEL": "string",
    "ACCOUNT_NUMBER_TRANSACTION_CHANN": "string",
    "BANK_NUMBER_TRANSACTION_CHANNEL_": "string",
    "CHECK_NUMBER_TRANSACTION_CHANNEL": "string",
    "IDENTIFIER_TRANSACTION_CHANNEL_I": "string",
    "RECEPIT_NUMBER_TRANSACTION_CHANN": "string",
    "ROUTING_NUMBER_TRANSACTION_CHANN": "string"
  },
  "accountBalances": {
    "totalBalance": 0
  },
  "adjustmentTransactionKey": "string",
  "affectedAmounts": {
    "feesAmount": 0,
    "fractionAmount": 0,
    "fundsAmount": 0,
    "interestAmount": 0,
    "overdraftAmount": 0,
    "overdraftFeesAmount": 0,
    "overdraftInterestAmount": 0,
    "technicalOverdraftAmount": 0,
    "technicalOverdraftInterestAmount": 0
  },
  "amount": 0,
  "blockId": "string",
  "bookingDate": "2016-09-06T13:37:50+03:00",
  "branchKey": "string",
  "cardTransaction": {
    "advice": true,
    "amount": 0,
    "cardAcceptor": {
      "city": "string",
      "country": "string",
      "mcc": 0,
      "name": "string",
      "state": "string",
      "street": "string",
      "zip": "string"
    },
    "cardToken": "string",
    "currencyCode": "string",
    "encodedKey": "string",
    "externalAuthorizationReferenceId": "string",
    "externalReferenceId": "string",
    "userTransactionTime": "string"
  },
  "centreKey": "string",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "currencyCode": "string",
  "customFieldsArchived": true,
  "encodedKey": "string",
  "externalId": "string",
  "fees": [
    {
      "amount": 0,
      "name": "string",
      "predefinedFeeKey": "string",
      "taxAmount": 0,
      "trigger": "MANUAL"
    }
  ],
  "holdExternalReferenceId": "string",
  "id": "string",
  "interestAccruedAmounts": {
    "interestAccrued": 0,
    "negativeInterestAccrued": 0,
    "overdraftInterestAccrued": 0,
    "technicalOverdraftInterestAccrued": 0
  },
  "migrationEventKey": "string",
  "notes": "string",
  "originalTransactionKey": "string",
  "parentAccountKey": "string",
  "paymentDetails": {
    "creditor": {
      "name": "string"
    },
    "creditorAccount": {
      "currency": "string",
      "identification": {
        "iban": "string",
        "other": {
          "identification": "string",
          "scheme": "string"
        }
      }
    },
    "creditorAgent": {
      "financialInstitutionIdentification": {
        "bic": "string"
      }
    },
    "debtor": {
      "name": "string"
    },
    "debtorAccount": {
      "currency": "string",
      "identification": {
        "iban": "string",
        "other": {
          "identification": "string",
          "scheme": "string"
        }
      }
    },
    "debtorAgent": {
      "financialInstitutionIdentification": {
        "bic": "string"
      }
    },
    "paymentIdentification": {
      "endToEndIdentification": "string",
      "instructionIdentification": "string",
      "transactionIdentification": "string"
    },
    "paymentTypeInformation": {
      "serviceLevel": {
        "code": "string"
      }
    },
    "remittanceInformation": {
      "structured": {
        "creditorReferenceInformation": {
          "reference": "string",
          "referenceIssuer": "string",
          "referenceType": "string"
        }
      },
      "unstructured": "string"
    }
  },
  "paymentOrderId": "string",
  "taxes": {
    "taxRate": 0
  },
  "terms": {
    "interestSettings": {
      "indexInterestRate": 0,
      "interestRate": 0
    },
    "overdraftInterestSettings": {
      "indexInterestRate": 0,
      "interestRate": 0
    },
    "overdraftSettings": {
      "overdraftLimit": 0
    }
  },
  "tillKey": "string",
  "transactionDetails": {
    "transactionChannelId": "string",
    "transactionChannelKey": "string"
  },
  "transferDetails": {
    "linkedDepositTransactionKey": "string",
    "linkedLoanTransactionKey": "string"
  },
  "type": "IMPORT",
  "userKey": "string",
  "valueDate": "2016-09-06T13:37:50+03:00"
}

The deposit transaction has been adjusted.

{
  "encodedKey": "8a19c9c5764281700176432736a506e6",
  "id": "139",
  "externalId": "4629011",
  "paymentOrderId": "PAY-1234-abc",
  "creationDate": "2020-12-08T17:20:12+01:00",
  "valueDate": "2020-12-07T13:00:00+01:00",
  "bookingDate": "2020-12-08T13:00:00+01:00",
  "notes": "some notes about this transaction",
  "parentAccountKey": "8a19a46f72b6bb9a0172b76ef2ed045c",
  "type": "WITHDRAWAL",
  "amount": -200,
  "currencyCode": "EUR",
  "affectedAmounts": {
    "fundsAmount": 200,
    "interestAmount": 0,
    "feesAmount": 0,
    "overdraftAmount": 0,
    "overdraftFeesAmount": 0,
    "overdraftInterestAmount": 0,
    "technicalOverdraftAmount": 0,
    "technicalOverdraftInterestAmount": 0,
    "fractionAmount": 0
  },
  "taxes": {},
  "accountBalances": {
    "totalBalance": 187987.95
  },
  "userKey": "8a194075720ece2c017226fced6f005e",
  "adjustmentTransactionKey": "8a19bf817647f3e50176483b546c01b4",
  "terms": {
    "interestSettings": {},
    "overdraftInterestSettings": {},
    "overdraftSettings": {}
  },
  "transactionDetails": {
    "transactionChannelKey": "8a194075720ece2c017226fcf55e0064",
    "transactionChannelId": "cash"
  },
  "transferDetails": {},
  "fees": [],
  "_EXAMPLE_CUSTOM_FIELDS_Transaction": {
    "custom_field": "TRUE"
  }
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
200 OK The deposit transaction has been adjusted. DepositTransaction
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found The deposit transaction was not found. ErrorResponse
409 Conflict Operation cannot be performed due to another pending operation that locked shared resources. ErrorResponse

Documents

Allows you to retrieve, create or delete documents. This endpoint accepts files up to a maximum size of 50MB.

createDocument (Documents)

Code samples

# You can also use wget
curl -X POST /documents \
  -H 'Content-Type: multipart/form-data' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /documents HTTP/1.1

Content-Type: multipart/form-data
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'multipart/form-data',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/documents',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'multipart/form-data',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/documents',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'multipart/form-data',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/documents', params={

}, headers = headers)

print r.json()

 'multipart/form-data',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/documents', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/documents");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"multipart/form-data"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/documents", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /documents

Create document

Body parameter

ownerType: CLIENT
id: string
file: string
name: string
notes: string

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
body (required) object none body
Ā» ownerType (required) string The type of the owner of the document. body
Ā» id (required) string The ID or encoded key of the entity that owns the document. The ID or encoded key must belong to the entity indicated by the entity parameter. Possible entity types are :CLIENT, GROUP, LOAN_PRODUCT, SAVINGS_PRODUCT, CENTRE, BRANCH, USER, LOAN_ACCOUNT, DEPOSIT_ACCOUNT, ID_DOCUMENT, LINE_OF_CREDIT, GL_JOURNAL_ENTRY. If the entity is GL_JOURNAL_ENTRY, the value can also represent the Journal Entry Transaction ID. body
Ā» file (required) string(binary) The file to be attached body
Ā» name string The name (title) of the attached file. body
Ā» notes string The description of the attached file. body

Enumerated Values

Parameter Value
Ā» ownerType CLIENT
Ā» ownerType GROUP
Ā» ownerType LOAN_PRODUCT
Ā» ownerType SAVINGS_PRODUCT
Ā» ownerType CENTRE
Ā» ownerType BRANCH
Ā» ownerType USER
Ā» ownerType LOAN_ACCOUNT
Ā» ownerType DEPOSIT_ACCOUNT
Ā» ownerType ID_DOCUMENT
Ā» ownerType LINE_OF_CREDIT
Ā» ownerType GL_JOURNAL_ENTRY

Example responses

201 Response

{
  "creationDate": "2016-09-06T13:37:50+03:00",
  "encodedKey": "string",
  "fileName": "string",
  "fileSize": 0,
  "id": 0,
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "location": "string",
  "name": "string",
  "notes": "string",
  "ownerKey": "string",
  "ownerType": "CLIENT",
  "type": "string"
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
201 Created Document created. Document
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Entity not found. ErrorResponse

downloadDocumentById (Documents)

Code samples

# You can also use wget
curl -X GET /documents/{documentId} \
  -H 'Accept: application/vnd.mambu.v2+file'

GET /documents/{documentId} HTTP/1.1

Accept: application/vnd.mambu.v2+file

var headers = {
  'Accept':'application/vnd.mambu.v2+file'

};

$.ajax({
  url: '/documents/{documentId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+file'
}

result = RestClient.get '/documents/{documentId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+file'
}

r = requests.get('/documents/{documentId}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+file',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/documents/{documentId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/documents/{documentId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+file"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/documents/{documentId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /documents/{documentId}

Download document

Parameters

Name Type Description In
documentId (required) string The ID or encoded key of the document to be returned.
The ID or encoded key of the document can be found by using the GET /documents/documentsMetadata API.
path

Example responses

200 Response

Responses

Status Meaning Description Schema
200 OK Document downloaded. string
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Entity not found. ErrorResponse

Response Headers

Status Header Type Format Description
200 Content-Disposition string "The format is - attachment; filename="{fileName}.extension"";
200 Content-Length integer int32 The size of the file.

deleteDocumentById (Documents)

Code samples

# You can also use wget
curl -X DELETE /documents/{documentId} \
  -H 'Accept: application/vnd.mambu.v2+json'

DELETE /documents/{documentId} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/documents/{documentId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.delete '/documents/{documentId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.delete('/documents/{documentId}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('DELETE','/documents/{documentId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/documents/{documentId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/documents/{documentId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /documents/{documentId}

Delete document

Parameters

Name Type Description In
documentId (required) string The ID or encoded key of the document to be deleted.
The ID or encoded key of the document can be found by using the GET /documents/documentsMetadata API.
path

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
204 No Content Successfully deleted the document. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Document was not found. ErrorResponse

getDocumentsByEntityId (Documents)

Code samples

# You can also use wget
curl -X GET /documents/documentsMetadata?entity=CLIENT&ownerKey=string \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /documents/documentsMetadata?entity=CLIENT&ownerKey=string HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/documents/documentsMetadata',
  method: 'get',
  data: '?entity=CLIENT&ownerKey=string',
  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/documents/documentsMetadata',
  params: {
  'entity' => 'string',
'ownerKey' => 'string'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/documents/documentsMetadata', params={
  'entity': 'CLIENT',  'ownerKey': 'string'
}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/documents/documentsMetadata', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/documents/documentsMetadata?entity=CLIENT&ownerKey=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/documents/documentsMetadata", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /documents/documentsMetadata

Get all documents' metadata

Parameters

Name Type Description In
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query
entity (required) string The type of the owner of the document. query
ownerKey (required) string The ID or encoded key of the entity that owns the document. The ID or encoded key must belong to the entity indicated by the entity parameter. Possible entity types are :CLIENT, GROUP, LOAN_PRODUCT, SAVINGS_PRODUCT, CENTRE, BRANCH, USER, LOAN_ACCOUNT, DEPOSIT_ACCOUNT, ID_DOCUMENT, LINE_OF_CREDIT, GL_JOURNAL_ENTRY. If the entity is GL_JOURNAL_ENTRY, the value can also represent the Journal Entry Transaction ID. query

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF
entity CLIENT
entity GROUP
entity LOAN_PRODUCT
entity SAVINGS_PRODUCT
entity CENTRE
entity BRANCH
entity USER
entity LOAN_ACCOUNT
entity DEPOSIT_ACCOUNT
entity ID_DOCUMENT
entity LINE_OF_CREDIT
entity GL_JOURNAL_ENTRY

Example responses

200 Response

[
  {
    "creationDate": "2016-09-06T13:37:50+03:00",
    "encodedKey": "string",
    "fileName": "string",
    "fileSize": 0,
    "id": 0,
    "lastModifiedDate": "2016-09-06T13:37:50+03:00",
    "location": "string",
    "name": "string",
    "notes": "string",
    "ownerKey": "string",
    "ownerType": "CLIENT",
    "type": "string"
  }
]

Responses

Status Meaning Description Schema
200 OK Successfully returned the list of all documents metadata. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Entity not found. ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [Document] [Holds information regarding the documents uploaded as attachments] none
Ā» creationDate string(date-time) The creation date of the document, stored as UTC read-only
Ā» encodedKey string The document encodedKey read-only
Ā» fileName string The original file name of the document none
Ā» fileSize integer(int64) The file size of the document none
Ā» id (required) integer(int64) The document id none
Ā» lastModifiedDate string(date-time) The last modified date of the document, stored as UTC read-only
Ā» location string Location where the document can be found, eg /myfiles/mypicture.jpeg none
Ā» name (required) string The name of the document none
Ā» notes string Detailed notes about the document none
Ā» ownerKey string Represents the holder of this document. If null, means nobody is the owner of this document read-only
Ā» ownerType string Determines the owner type of the document read-only
Ā» type (required) string The extension of the document none

Enumerated Values

Property Value
ownerType CLIENT
ownerType GROUP
ownerType LOAN_PRODUCT
ownerType SAVINGS_PRODUCT
ownerType CENTRE
ownerType BRANCH
ownerType USER
ownerType LOAN_ACCOUNT
ownerType DEPOSIT_ACCOUNT
ownerType ID_DOCUMENT
ownerType LINE_OF_CREDIT
ownerType GL_JOURNAL_ENTRY

Response Headers

Status Header Type Format Description
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

End of Day Processing Configuration

Retrieve and update the configuration for end of day processing.

End of Day (EOD) processing refers to the daily and hourly jobs that are executed usually at the end of each day in order to manage the data in your system properly.

Your user or API consumer must have the View Manage Configuration As Code (GET_MANAGE_CONFIGURATION_AS_CODE) and/or Update Manage Configuration As Code (PUT_MANAGE_CONFIGURATION_AS_CODE) permissions to make GET and/or PUT requests to these configuration as code (CasC) endpoints. For more information about CasC, seeĀ Configuration as Code Overview.

get (End of Day Processing Configuration)

Code samples

# You can also use wget
curl -X GET /configuration/endofdayprocessing.yaml \
  -H 'Accept: application/vnd.mambu.v2+yaml'

GET /configuration/endofdayprocessing.yaml HTTP/1.1

Accept: application/vnd.mambu.v2+yaml

var headers = {
  'Accept':'application/vnd.mambu.v2+yaml'

};

$.ajax({
  url: '/configuration/endofdayprocessing.yaml',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+yaml'
}

result = RestClient.get '/configuration/endofdayprocessing.yaml',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+yaml'
}

r = requests.get('/configuration/endofdayprocessing.yaml', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+yaml',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/configuration/endofdayprocessing.yaml', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/configuration/endofdayprocessing.yaml");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+yaml"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/configuration/endofdayprocessing.yaml", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /configuration/endofdayprocessing.yaml

Get end of day processing configuration

Example responses

An example of an end of day processing configuration

---
endOfDayProcessingMethod: "AUTOMATIC"
accountingCutOffTime: "10:00:00"

401 invalid credentials

{
    "errors": [
        {
            "errorCode": 2,
            "errorSource": "credentials",
            "errorReason": "INVALID_CREDENTIALS"
        }
    ]
}

403 forbidden

{
    "errors": [
        {
            "errorCode": 15,
            "errorSource": "not authorized",
            "errorReason": "INVALID_PERMISSIONS"
        }
    ]
}

Responses

Status Meaning Description Schema
200 OK End of day processing configuration returned. EndOfDayProcessingConfiguration
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

update (End of Day Processing Configuration)

Code samples

# You can also use wget
curl -X PUT /configuration/endofdayprocessing.yaml \
  -H 'Content-Type: application/yaml' \
  -H 'Accept: application/vnd.mambu.v2+yaml'

PUT /configuration/endofdayprocessing.yaml HTTP/1.1

Content-Type: application/yaml
Accept: application/vnd.mambu.v2+yaml

var headers = {
  'Content-Type':'application/yaml',
  'Accept':'application/vnd.mambu.v2+yaml'

};

$.ajax({
  url: '/configuration/endofdayprocessing.yaml',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/yaml',
  'Accept' => 'application/vnd.mambu.v2+yaml'
}

result = RestClient.put '/configuration/endofdayprocessing.yaml',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/yaml',
  'Accept': 'application/vnd.mambu.v2+yaml'
}

r = requests.put('/configuration/endofdayprocessing.yaml', params={

}, headers = headers)

print r.json()

 'application/yaml',
    'Accept' => 'application/vnd.mambu.v2+yaml',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PUT','/configuration/endofdayprocessing.yaml', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/configuration/endofdayprocessing.yaml");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/yaml"},
        "Accept": []string{"application/vnd.mambu.v2+yaml"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/configuration/endofdayprocessing.yaml", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /configuration/endofdayprocessing.yaml

Update end of day processing configuration

Body parameter

An example of an end of day processing configuration

---
endOfDayProcessingMethod: "AUTOMATIC"
accountingCutOffTime: "10:00:00"

Parameters

Name Type Description In
body EndOfDayProcessingConfiguration Model representation of the end of day processing configuration. body

Example responses

200 - Success Response

400 Invalid Syntax

{
    "errors": [
        {
            "errorCode": 10811,
            "errorSource": "Accounting cut off time must have HH:mm:ss format",
            "errorReason": "END_OF_DAY_PROCESSING_INVALID_FORMAT"
        }
    ]
}

401 invalid credentials

{
    "errors": [
        {
            "errorCode": 2,
            "errorSource": "credentials",
            "errorReason": "INVALID_CREDENTIALS"
        }
    ]
}

403 forbidden

{
    "errors": [
        {
            "errorCode": 15,
            "errorSource": "not authorized",
            "errorReason": "INVALID_PERMISSIONS"
        }
    ]
}

404 not found

{
    "errors": [
        {
            "errorCode": 3,
            "errorSource": "server",
            "errorReason": "INVALID_API_OPERATION"
        }
    ]
}

Responses

Status Meaning Description Schema
200 OK End of day processing configuration updated. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found End of day processing configuration not found. ErrorResponse

Response Schema

Funding Sources

Allows performing actions for loan account funding sources owned by client investors. Sell is the only permitted action. This relates to the peer-to-peer (P2P) lending feature. For more information, see Secondary Marketplace for Peer-to-Peer Loans in our User Guide.

sell (Funding Sources)

Code samples

# You can also use wget
curl -X POST /fundingsources/{fundingSourceId}:sell \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /fundingsources/{fundingSourceId}:sell HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/fundingsources/{fundingSourceId}:sell',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/fundingsources/{fundingSourceId}:sell',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/fundingsources/{fundingSourceId}:sell', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/fundingsources/{fundingSourceId}:sell', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/fundingsources/{fundingSourceId}:sell");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/fundingsources/{fundingSourceId}:sell", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /fundingsources/{fundingSourceId}:sell

Performs the sell of a funding share owned by an investor. Investors can sell the total share or only a part of the investment. In case of a partial sale, multiple operations can be performed until the entire investment is sold. For the seller, money will be deposited in the funding account, for the buyers money will be withdrawn from provided accounts.

Body parameter

{
  "purchases": [
    {
      "amount": 0,
      "depositAccountKey": "string",
      "price": 0
    }
  ]
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
fundingSourceId (required) string Id/Encoded key of the funding source path
body (required) SellFundingSourceAction List of purchases containing details about buyer, price, amount body

Example responses

200 Response

[
  {
    "_Transaction_Details_Transaction": {
      "ACCOUNT_NAME_TRANSACTION_CHANNEL": "string",
      "ACCOUNT_NUMBER_TRANSACTION_CHANN": "string",
      "BANK_NUMBER_TRANSACTION_CHANNEL_": "string",
      "CHECK_NUMBER_TRANSACTION_CHANNEL": "string",
      "IDENTIFIER_TRANSACTION_CHANNEL_I": "string",
      "RECEPIT_NUMBER_TRANSACTION_CHANN": "string",
      "ROUTING_NUMBER_TRANSACTION_CHANN": "string"
    },
    "accountBalances": {
      "totalBalance": 0
    },
    "adjustmentTransactionKey": "string",
    "affectedAmounts": {
      "feesAmount": 0,
      "fractionAmount": 0,
      "fundsAmount": 0,
      "interestAmount": 0,
      "overdraftAmount": 0,
      "overdraftFeesAmount": 0,
      "overdraftInterestAmount": 0,
      "technicalOverdraftAmount": 0,
      "technicalOverdraftInterestAmount": 0
    },
    "amount": 0,
    "blockId": "string",
    "bookingDate": "2016-09-06T13:37:50+03:00",
    "branchKey": "string",
    "cardTransaction": {
      "advice": true,
      "amount": 0,
      "cardAcceptor": {
        "city": "string",
        "country": "string",
        "mcc": 0,
        "name": "string",
        "state": "string",
        "street": "string",
        "zip": "string"
      },
      "cardToken": "string",
      "currencyCode": "string",
      "encodedKey": "string",
      "externalAuthorizationReferenceId": "string",
      "externalReferenceId": "string",
      "userTransactionTime": "string"
    },
    "centreKey": "string",
    "creationDate": "2016-09-06T13:37:50+03:00",
    "currencyCode": "string",
    "customFieldsArchived": true,
    "encodedKey": "string",
    "externalId": "string",
    "fees": [
      {
        "amount": 0,
        "name": "string",
        "predefinedFeeKey": "string",
        "taxAmount": 0,
        "trigger": "MANUAL"
      }
    ],
    "holdExternalReferenceId": "string",
    "id": "string",
    "interestAccruedAmounts": {
      "interestAccrued": 0,
      "negativeInterestAccrued": 0,
      "overdraftInterestAccrued": 0,
      "technicalOverdraftInterestAccrued": 0
    },
    "migrationEventKey": "string",
    "notes": "string",
    "originalTransactionKey": "string",
    "parentAccountKey": "string",
    "paymentDetails": {
      "creditor": {
        "name": "string"
      },
      "creditorAccount": {
        "currency": "string",
        "identification": {
          "iban": "string",
          "other": {
            "identification": "string",
            "scheme": "string"
          }
        }
      },
      "creditorAgent": {
        "financialInstitutionIdentification": {
          "bic": "string"
        }
      },
      "debtor": {
        "name": "string"
      },
      "debtorAccount": {
        "currency": "string",
        "identification": {
          "iban": "string",
          "other": {
            "identification": "string",
            "scheme": "string"
          }
        }
      },
      "debtorAgent": {
        "financialInstitutionIdentification": {
          "bic": "string"
        }
      },
      "paymentIdentification": {
        "endToEndIdentification": "string",
        "instructionIdentification": "string",
        "transactionIdentification": "string"
      },
      "paymentTypeInformation": {
        "serviceLevel": {
          "code": "string"
        }
      },
      "remittanceInformation": {
        "structured": {
          "creditorReferenceInformation": {
            "reference": "string",
            "referenceIssuer": "string",
            "referenceType": "string"
          }
        },
        "unstructured": "string"
      }
    },
    "paymentOrderId": "string",
    "taxes": {
      "taxRate": 0
    },
    "terms": {
      "interestSettings": {
        "indexInterestRate": 0,
        "interestRate": 0
      },
      "overdraftInterestSettings": {
        "indexInterestRate": 0,
        "interestRate": 0
      },
      "overdraftSettings": {
        "overdraftLimit": 0
      }
    },
    "tillKey": "string",
    "transactionDetails": {
      "transactionChannelId": "string",
      "transactionChannelKey": "string"
    },
    "transferDetails": {
      "linkedDepositTransactionKey": "string",
      "linkedLoanTransactionKey": "string"
    },
    "type": "IMPORT",
    "userKey": "string",
    "valueDate": "2016-09-06T13:37:50+03:00"
  }
]

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
200 OK Sell funding source action posted Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Funding source not found ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [DepositTransaction] [Represents the action performed on an Deposit Account after which the account's amount changes its value.] none
Ā» _Transaction_Details_Transaction _Transaction_Details_Transaction Captures default transaction custom fields none
»» ACCOUNT_NAME_TRANSACTION_CHANNEL string none none
»» ACCOUNT_NUMBER_TRANSACTION_CHANN string none none
»» BANK_NUMBER_TRANSACTION_CHANNEL_ string none none
»» CHECK_NUMBER_TRANSACTION_CHANNEL string none none
»» IDENTIFIER_TRANSACTION_CHANNEL_I string An unique user-defined identifier for each transaction. This field is optional, but if specified, it must be unique across all loan and deposit transactions none
»» RECEPIT_NUMBER_TRANSACTION_CHANN string none none
»» ROUTING_NUMBER_TRANSACTION_CHANN string none none
Ā» accountBalances DepositTransactionBalances The balances changed within a transaction. none
»» totalBalance number The running balance owed by deposit none
Ā» adjustmentTransactionKey string The key of the deposit transaction where the adjustment for this transaction was made (if any adjustment was involved) none
Ā» affectedAmounts DepositAffectedAmounts The amounts affected after completing the deposit transaction none
»» feesAmount number Amount of fees involved in a transaction that affects an account with positive balance none
»» fractionAmount number In the case of an LOAN_FRACTION_BOUGHT this represent the fraction amount which was bought from another investor none
»» fundsAmount number Balance change amount involved in a transaction that affects an account with positive balance none
»» interestAmount number Amount of interest involved in a transaction that affects an account with positive balance none
»» overdraftAmount number The amount of money that was added/subtracted from the account by this transaction as overdraft none
»» overdraftFeesAmount number Fees amount involved in a transaction that affects an overdraft none
»» overdraftInterestAmount number Interest amount involved in a transaction that affects an overdraft none
»» technicalOverdraftAmount number The amount of money that was added/subtracted from the account by this transaction as technical overdraft none
»» technicalOverdraftInterestAmount number The amount of money that was added/subtracted from the account by this transaction as technical overdraft interest none
Ā» amount number How much was added/removed in account none
Ā» blockId string The block fund id associated with the transaction none
Ā» bookingDate string(date-time) The date when corresponding JE is booked (as Organization Time) none
Ā» branchKey string The branch where the transaction was performed read-only
Ā» cardTransaction CardTransaction A card transaction entry which will have a corresponding a financial transaction performed. none
»» advice (required) boolean Whether the given request should be accepted without balance validations. none
»» amount (required) number The amount of money to be withdrawn in the financial transaction. none
»» cardAcceptor CardAcceptor The details of the card acceptor (merchant) in a transaction hold. none
»»» city string The city in which the card acceptor has the business. none
»»» country string The country in which the card acceptor has the business. none
»»» mcc integer(int32) The Merchant Category Code of the card acceptor. none
»»» name string The name of the card acceptor. none
»»» state string The state in which the card acceptor has the business. none
»»» street string The street in which the card acceptor has the business. none
»»» zip string The ZIP code of the location in which the card acceptor has the business. none
»» cardToken string The reference token of the card. read-only
»» currencyCode string The ISO currency code in which the card reversal transaction is posted. The amounts are stored in the base currency, but the transaction can be created with a foreign currency. none
»» encodedKey string The encoded key of the entity, generated, globally unique read-only
»» externalAuthorizationReferenceId string The external authorization hold reference ID, which relates this card transaction to a previous authorization hold. none
»» externalReferenceId (required) string The external reference ID to be used to reference the card transaction in subsequent requests. none
»» userTransactionTime string The formatted time at which the user made this card transaction. none
Ā» centreKey string The center where the transaction was performed read-only
Ā» creationDate string(date-time) The date when this deposit transaction was created read-only
Ā» currencyCode string The currency in which this transaction was posted none
Ā» customFieldsArchived boolean Whether the custom fields of the transaction are archived read-only
Ā» encodedKey string The encoded key of the deposit transaction, auto generated, unique read-only
Ā» externalId string The external id of the deposit transaction, customizable, unique none
Ā» fees [DepositFee] All the amounts that have been applied or paid within this transaction and involved predefined fees read-only
»» amount number The amount of the fee that was applied/paid in the transaction for the given predefined fee. none
»» name string The name of the predefined fee read-only
»» predefinedFeeKey (required) string The encoded key of the predefined fee, auto generated, unique none
»» taxAmount number The amount of the taxes on fee that was applied/paid in the transaction. none
»» trigger string Shows the event that will trigger a fee read-only
Ā» holdExternalReferenceId string The external id of an account authorization hold none
Ā» id string The id of the deposit transaction, auto generated, unique none
Ā» interestAccruedAmounts DepositInterestAccruedAmounts Represents the accrued interest amounts for an Interest Applied deposit transaction. none
»» interestAccrued number The amount of positive interest accrued since last interest application/activation date and applied within Interest Applied transaction none
»» negativeInterestAccrued number The amount of negative interest accrued since last interest application/activation date and applied within Interest Applied transaction none
»» overdraftInterestAccrued number The amount of overdraft interest accrued since last interest application/activation date and applied within Interest Applied transaction none
»» technicalOverdraftInterestAccrued number The amount of technical overdraft interest accrued since last interest application/activation date and applied within Interest Applied transaction none
Ā» migrationEventKey string The migration event encoded key associated with this deposit account. If this account was imported, track which 'migration event' they came from none
Ā» notes string Extra notes about this deposit transaction none
Ā» originalTransactionKey string The encodedKey of the transaction that was adjusted as part of this one. Available only for adjustment transactions none
Ā» parentAccountKey string The key of the parent deposit account none
Ā» paymentDetails PaymentDetails The payment information including account identification details none
»» creditor Party The details of the party for a transaction none
»»» name string The name of the party none
»» creditorAccount AccountDetails The account currency and identification none
»»» currency string The currency of the account none
»»» identification AccountIdentification The account identification details none
»»»» iban string The account unique identifier none
»»»» other OtherAccountIdentification Represents other way of identification for the account. none
»»»»» identification string The identification of the payer/payee none
»»»»» scheme string The identification scheme none
»» creditorAgent Agent The agent details for a party none
»»» financialInstitutionIdentification FinancialInstitutionIdentification The identification of the financial institution none
»»»» bic string Business identifier code none
»» debtor Party The details of the party for a transaction none
»» debtorAccount AccountDetails The account currency and identification none
»» debtorAgent Agent The agent details for a party none
»» paymentIdentification PaymentIdentification The payment identification details none
»»» endToEndIdentification string Identifier assigned by the initiating party to the transaction. Limited to 35 characters none
»»» instructionIdentification string Identifier of a payment instruction none
»»» transactionIdentification string Identifier unique for a period assigned by the first initiating party to the transaction none
»» paymentTypeInformation PaymentTypeInformation The information specifying the type of transaction none
»»» serviceLevel ServiceLevel The rules under which the transaction should be processed none
»»»» code string The code for a pre-agreed service or level of service between the parties none
»» remittanceInformation RemittanceInformation The information specifying the payment items that are intended to settle none
»»» structured Structured The information specifying the payment items that are intended to settle none
»»»» creditorReferenceInformation CreditorReferenceInformation Represents the reference to the underlying documents of the payment. none
»»»»» reference string The reference information of the creditor's underlying documents none
»»»»» referenceIssuer string The entity that assigns the reference type none
»»»»» referenceType string The type of creditor reference none
»»» unstructured string Information supplied to match the items of the payment in an unstructured form none
Ā» paymentOrderId string The payment order id of the deposit transaction, customizable none
Ā» taxes DepositTaxes The taxes applied within a transaction none
»» taxRate number The tax rate that was set or changed in this transaction none
Ā» terms DepositTerms The deposit transaction terms none
»» interestSettings DepositTransactionInterestSettings The interest settings, holds all the properties regarding interests for the deposit account none
»»» indexInterestRate number The value of the index interest rate set or changed in this transaction none
»»» interestRate number The interest rate for the deposit account none
»» overdraftInterestSettings DepositOverdraftInterestSettings Holds the deposit overdraft interest settings none
»»» indexInterestRate number The value of the index interest rate set or changed in this transaction none
»»» interestRate number The interest rate that was set or changed in this transaction. Used on product interest rate changes or interest tier switches none
»» overdraftSettings DepositOverdraftSettings Holds the deposit overdraft settings for a transaction none
»»» overdraftLimit number The overdraft limit that was set or changed in this transaction none
Ā» tillKey string The till key associated with this transaction none
Ā» transactionDetails TransactionDetails Contains the details about transaction including fields like transaction channel key and channel id none
»» transactionChannelId string The id of the transaction channel associated with the transaction details. none
»» transactionChannelKey string The encoded key of the transaction channel associated with the transaction details. none
Ā» transferDetails TransferDetails Represents the transfer details, such as the linked transaction key none
»» linkedDepositTransactionKey string The key of the related deposit transaction none
»» linkedLoanTransactionKey string The key of the related loan transaction none
Ā» type string The type of the deposit transaction none
Ā» userKey string The person that performed the transaction none
Ā» valueDate string(date-time) Date of the entry (eg date of repayment or disbursal, etc.) (as Organization Time) none

Enumerated Values

Property Value
trigger MANUAL
trigger MONTHLY_FEE
trigger ARBITRARY
type IMPORT
type WRITE_OFF
type WRITE_OFF_ADJUSTMENT
type DEPOSIT
type ADJUSTMENT
type WITHDRAWAL
type WITHDRAWAL_ADJUSTMENT
type CARD_TRANSACTION_REVERSAL
type CARD_TRANSACTION_REVERSAL_ADJUSTMENT
type TRANSFER
type TRANSFER_ADJUSTMENT
type FEE_APPLIED
type FEE_ADJUSTED
type FEES_DUE_REDUCED
type INTEREST_APPLIED
type INTEREST_APPLIED_ADJUSTMENT
type NET_DIFF_INTEREST
type PROFIT_APPLIED
type PROFIT_APPLIED_ADJUSTMENT
type FEE_REDUCTION_ADJUSTMENT
type WITHHOLDING_TAX
type WITHHOLDING_TAX_ADJUSTMENT
type INTEREST_RATE_CHANGED
type OVERDRAFT_INTEREST_RATE_CHANGED
type OVERDRAFT_LIMIT_CHANGED
type BRANCH_CHANGED
type ACCOUNT_HOLDER_CHANGED
type LOAN_FUNDED
type LOAN_FUNDED_ADJUSTMENT
type LOAN_REPAID
type LOAN_REPAID_ADJUSTMENT
type LOAN_FRACTION_BOUGHT
type LOAN_FRACTION_BOUGHT_ADJUSTMENT
type LOAN_FRACTION_SOLD
type LOAN_FRACTION_SOLD_ADJUSTMENT
type SEIZED_AMOUNT

GL Accounts

Allows you to retrieve GL accounts.

getById (GL Accounts)

Code samples

# You can also use wget
curl -X GET /glaccounts/{glAccountId} \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /glaccounts/{glAccountId} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/glaccounts/{glAccountId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/glaccounts/{glAccountId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/glaccounts/{glAccountId}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/glaccounts/{glAccountId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/glaccounts/{glAccountId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/glaccounts/{glAccountId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /glaccounts/{glAccountId}

Get general ledger account

Parameters

Name Type Description In
glAccountId (required) string The general ledger account code or encoded key. path
from string(date) The start date to calculate the account balance from. query
to string(date) The end date to calculate the account balance to. query
branchId string The branch ID to use to calculate general ledger account balances. query
balanceExcluded boolean TRUE if the balance is excluded, FALSE otherwise. query

Example responses

200 Response

{
  "activated": true,
  "allowManualJournalEntries": true,
  "balance": 0,
  "creationDate": "2016-09-06T13:37:50+03:00",
  "currency": {
    "code": "AED",
    "currencyCode": "string"
  },
  "description": "string",
  "encodedKey": "string",
  "glCode": "string",
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "migrationEventKey": "string",
  "name": "string",
  "stripTrailingZeros": true,
  "type": "ASSET",
  "usage": "DETAIL"
}

Responses

Status Meaning Description Schema
200 OK General ledger account returned. GLAccount
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found General ledger account not found. ErrorResponse

patch (GL Accounts)

Code samples

# You can also use wget
curl -X PATCH /glaccounts/{glAccountId} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json'

PATCH /glaccounts/{glAccountId} HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/glaccounts/{glAccountId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.patch '/glaccounts/{glAccountId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.patch('/glaccounts/{glAccountId}', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PATCH','/glaccounts/{glAccountId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/glaccounts/{glAccountId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PATCH");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/glaccounts/{glAccountId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PATCH /glaccounts/{glAccountId}

Partially update an existing general ledger account

Body parameter

[
  {
    "from": "string",
    "op": "ADD",
    "path": "string",
    "value": {}
  }
]

Parameters

Name Type Description In
glAccountId (required) string The general ledger account code or encoded key. path
body (required) PatchOperation Patch operations to be applied to a resource. body

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
204 No Content General ledger account updated. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found General ledger account not found. ErrorResponse

getAll (GL Accounts)

Code samples

# You can also use wget
curl -X GET /glaccounts?type=ASSET \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /glaccounts?type=ASSET HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/glaccounts',
  method: 'get',
  data: '?type=ASSET',
  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/glaccounts',
  params: {
  'type' => 'string'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/glaccounts', params={
  'type': 'ASSET'
}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/glaccounts', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/glaccounts?type=ASSET");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/glaccounts", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /glaccounts

Get general ledger accounts

Parameters

Name Type Description In
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query
type (required) string The general ledger account type. query
from string(date) The start date to calculate the account balance from. query
to string(date) The end date to calculate the account balance to. query
branchId string The branch ID that the general ledger account balances are generated for. query
balanceExcluded boolean TRUE if the balance is excluded, FALSE otherwise. query

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF
type ASSET
type LIABILITY
type EQUITY
type INCOME
type EXPENSE

Example responses

200 Response

[
  {
    "activated": true,
    "allowManualJournalEntries": true,
    "balance": 0,
    "creationDate": "2016-09-06T13:37:50+03:00",
    "currency": {
      "code": "AED",
      "currencyCode": "string"
    },
    "description": "string",
    "encodedKey": "string",
    "glCode": "string",
    "lastModifiedDate": "2016-09-06T13:37:50+03:00",
    "migrationEventKey": "string",
    "name": "string",
    "stripTrailingZeros": true,
    "type": "ASSET",
    "usage": "DETAIL"
  }
]

Responses

Status Meaning Description Schema
200 OK General ledger accounts list returned. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [GLAccount] [Represents a general ledger account.] none
Ā» activated boolean TRUE if the account is activated and may be used, FALSE otherwise. none
Ā» allowManualJournalEntries boolean TRUE if manual journal entries are allowed, FALSE otherwise. none
Ā» balance number If the GET /glaccounts API request contains both parameters from={date}&to={date}, the value of balance is equal to Net Change. If the request only contains to={date}, or none of the two, the balance is equal to Closing Balance. none
Ā» creationDate string(date-time) The creation date for this account, which is stored as UTC. none
Ā» currency Currency Represents a currency. To represent a fiat currency, the code value and the currencyCode value must be the ISO-4217 currency code of the fiat currency. To represent a non-fiat currency, the code value must be NON_FIAT and the currencyCode value must be the currency code of the non-fiat currency. none
»» code string Fiat(ISO-4217) currency code or NON_FIAT for non fiat currencies. none
»» currencyCode string Currency code for NON_FIAT currency. none
Ā» description string A description of the general ledger account. none
Ā» encodedKey string The encoded key of the entity, generated, globally unique read-only
Ā» glCode string The general ledger code used to identify different account types. Also used for grouping and categorizing accounts. For example: an account code of '3201' is considered a subtype of '3200'. none
Ā» lastModifiedDate string(date-time) The last modification date and time, which is stored as UTC. none
Ā» migrationEventKey string The data migration event key if the general ledger account was created as a part of a data migration event. none
Ā» name string The name of the general ledger account. none
Ā» stripTrailingZeros boolean TRUE if trailing zeros are stripped, FALSE otherwise. none
Ā» type string The general ledger account type. none
Ā» usage string The usage type of the general ledger account. DETAIL accounts are used to stores transaction balances. HEADER accounts are used to organise and group detail accounts for reporting purposes. none

Enumerated Values

Property Value
code AED
code AFN
code ALL
code AMD
code ANG
code AOA
code ARS
code AUD
code AWG
code AZN
code BAM
code BBD
code BDT
code BGN
code BHD
code BIF
code BMD
code BND
code BOB
code BOV
code BRL
code BSD
code BTN
code BWP
code BYR
code BYN
code BZD
code CAD
code CDF
code CHE
code CHF
code CHW
code CLF
code CLP
code CNY
code COP
code COU
code CRC
code CUC
code CUP
code CVE
code CZK
code DJF
code DKK
code DOP
code DZD
code EGP
code ERN
code ETB
code EUR
code FJD
code FKP
code GBP
code GEL
code GHS
code GIP
code GMD
code GNF
code GTQ
code GYD
code HKD
code HNL
code HRK
code HTG
code HUF
code IDR
code ILS
code INR
code IQD
code IRR
code ISK
code JMD
code JOD
code JPY
code KES
code KGS
code KHR
code KMF
code KPW
code KRW
code KWD
code KYD
code KZT
code LAK
code LBP
code LKR
code LRD
code LSL
code LTL
code LVL
code LYD
code MAD
code MDL
code MGA
code MKD
code MMK
code MNT
code MOP
code MRO
code MRU
code MUR
code MVR
code MWK
code MXN
code MXV
code MYR
code MZN
code NAD
code NGN
code NIO
code NOK
code NPR
code NZD
code OMR
code PAB
code PEN
code PGK
code PHP
code PKR
code PLN
code PYG
code QAR
code RON
code RSD
code RUB
code RWF
code SAR
code SBD
code SCR
code SDG
code SEK
code SGD
code SHP
code SLL
code SOS
code SRD
code STD
code STN
code SVC
code SYP
code SZL
code THB
code TJS
code TMT
code TND
code TOP
code TRY
code TTD
code TWD
code TZS
code UAH
code UGX
code USD
code USN
code UYI
code UYU
code UYW
code UZS
code VED
code VEF
code VES
code VND
code VUV
code WST
code XAG
code XAU
code XAF
code XBA
code XBB
code XBC
code XBD
code XCD
code XDR
code XOF
code XPD
code XPF
code XPT
code XSU
code XTS
code XUA
code XXX
code YER
code ZAR
code ZIG
code ZMK
code ZWL
code ZMW
code SSP
code NON_FIAT
type ASSET
type LIABILITY
type EQUITY
type INCOME
type EXPENSE
usage DETAIL
usage HEADER

Response Headers

Status Header Type Format Description
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

create (GL Accounts)

Code samples

# You can also use wget
curl -X POST /glaccounts \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /glaccounts HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/glaccounts',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/glaccounts',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/glaccounts', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/glaccounts', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/glaccounts");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/glaccounts", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /glaccounts

Create general ledger account

Body parameter

[
  {
    "allowManualJournalEntries": true,
    "currency": {
      "code": "AED",
      "currencyCode": "string"
    },
    "description": "string",
    "glCode": "string",
    "name": "string",
    "stripTrailingZeros": true,
    "type": "ASSET",
    "usage": "DETAIL"
  }
]

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
body (required) GLAccountInput Represents the information to create a general ledger account. body

Example responses

201 Response

[
  {
    "activated": true,
    "allowManualJournalEntries": true,
    "balance": 0,
    "creationDate": "2016-09-06T13:37:50+03:00",
    "currency": {
      "code": "AED",
      "currencyCode": "string"
    },
    "description": "string",
    "encodedKey": "string",
    "glCode": "string",
    "lastModifiedDate": "2016-09-06T13:37:50+03:00",
    "migrationEventKey": "string",
    "name": "string",
    "stripTrailingZeros": true,
    "type": "ASSET",
    "usage": "DETAIL"
  }
]

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
201 Created General ledger account created. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Currency not found. ErrorResponse

Response Schema

Status Code 201

Name Type Description Restrictions
anonymous [GLAccount] [Represents a general ledger account.] none
Ā» activated boolean TRUE if the account is activated and may be used, FALSE otherwise. none
Ā» allowManualJournalEntries boolean TRUE if manual journal entries are allowed, FALSE otherwise. none
Ā» balance number If the GET /glaccounts API request contains both parameters from={date}&to={date}, the value of balance is equal to Net Change. If the request only contains to={date}, or none of the two, the balance is equal to Closing Balance. none
Ā» creationDate string(date-time) The creation date for this account, which is stored as UTC. none
Ā» currency Currency Represents a currency. To represent a fiat currency, the code value and the currencyCode value must be the ISO-4217 currency code of the fiat currency. To represent a non-fiat currency, the code value must be NON_FIAT and the currencyCode value must be the currency code of the non-fiat currency. none
»» code string Fiat(ISO-4217) currency code or NON_FIAT for non fiat currencies. none
»» currencyCode string Currency code for NON_FIAT currency. none
Ā» description string A description of the general ledger account. none
Ā» encodedKey string The encoded key of the entity, generated, globally unique read-only
Ā» glCode string The general ledger code used to identify different account types. Also used for grouping and categorizing accounts. For example: an account code of '3201' is considered a subtype of '3200'. none
Ā» lastModifiedDate string(date-time) The last modification date and time, which is stored as UTC. none
Ā» migrationEventKey string The data migration event key if the general ledger account was created as a part of a data migration event. none
Ā» name string The name of the general ledger account. none
Ā» stripTrailingZeros boolean TRUE if trailing zeros are stripped, FALSE otherwise. none
Ā» type string The general ledger account type. none
Ā» usage string The usage type of the general ledger account. DETAIL accounts are used to stores transaction balances. HEADER accounts are used to organise and group detail accounts for reporting purposes. none

Enumerated Values

Property Value
code AED
code AFN
code ALL
code AMD
code ANG
code AOA
code ARS
code AUD
code AWG
code AZN
code BAM
code BBD
code BDT
code BGN
code BHD
code BIF
code BMD
code BND
code BOB
code BOV
code BRL
code BSD
code BTN
code BWP
code BYR
code BYN
code BZD
code CAD
code CDF
code CHE
code CHF
code CHW
code CLF
code CLP
code CNY
code COP
code COU
code CRC
code CUC
code CUP
code CVE
code CZK
code DJF
code DKK
code DOP
code DZD
code EGP
code ERN
code ETB
code EUR
code FJD
code FKP
code GBP
code GEL
code GHS
code GIP
code GMD
code GNF
code GTQ
code GYD
code HKD
code HNL
code HRK
code HTG
code HUF
code IDR
code ILS
code INR
code IQD
code IRR
code ISK
code JMD
code JOD
code JPY
code KES
code KGS
code KHR
code KMF
code KPW
code KRW
code KWD
code KYD
code KZT
code LAK
code LBP
code LKR
code LRD
code LSL
code LTL
code LVL
code LYD
code MAD
code MDL
code MGA
code MKD
code MMK
code MNT
code MOP
code MRO
code MRU
code MUR
code MVR
code MWK
code MXN
code MXV
code MYR
code MZN
code NAD
code NGN
code NIO
code NOK
code NPR
code NZD
code OMR
code PAB
code PEN
code PGK
code PHP
code PKR
code PLN
code PYG
code QAR
code RON
code RSD
code RUB
code RWF
code SAR
code SBD
code SCR
code SDG
code SEK
code SGD
code SHP
code SLL
code SOS
code SRD
code STD
code STN
code SVC
code SYP
code SZL
code THB
code TJS
code TMT
code TND
code TOP
code TRY
code TTD
code TWD
code TZS
code UAH
code UGX
code USD
code USN
code UYI
code UYU
code UYW
code UZS
code VED
code VEF
code VES
code VND
code VUV
code WST
code XAG
code XAU
code XAF
code XBA
code XBB
code XBC
code XBD
code XCD
code XDR
code XOF
code XPD
code XPF
code XPT
code XSU
code XTS
code XUA
code XXX
code YER
code ZAR
code ZIG
code ZMK
code ZWL
code ZMW
code SSP
code NON_FIAT
type ASSET
type LIABILITY
type EQUITY
type INCOME
type EXPENSE
usage DETAIL
usage HEADER

General Setup

Allows you to retrieve general setup.

getGeneralSetup (General Setup)

Code samples

# You can also use wget
curl -X GET /setup/general \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /setup/general HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/setup/general',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/setup/general',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/setup/general', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/setup/general', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/setup/general");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/setup/general", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /setup/general

Get general setup

Example responses

200 Response

{
  "accountingCutOffTime": "string",
  "approvalDisbursalTwoManRuleEnabled": true,
  "arrearsDaysBeforeWriteOff": 0,
  "assignmentConstraints": [
    "BRANCH"
  ],
  "automatedAccountingClosuresInterval": 0,
  "clientIdFormat": "string",
  "dashboardConfigurations": [
    {
      "creationDate": "2016-09-06T13:37:50+03:00",
      "encodedKey": "string",
      "name": "LATEST_ACTIVITY"
    }
  ],
  "dateFormats": {
    "property1": "string",
    "property2": "string"
  },
  "decimalSeparator": "COMMA",
  "defaultClientRoleKey": "string",
  "defaultClientState": "PENDING_APPROVAL",
  "defaultGroupRoleKey": "string",
  "defaultLineOfCreditState": "PENDING_APPROVAL",
  "defaultTransactionChannelKey": "string",
  "duplicateClientChecks": [
    {
      "active": true,
      "dataField": "string",
      "dataItemType": "LOANS",
      "encodedKey": "string",
      "groupIndex": 0
    }
  ],
  "duplicateClientConstraintAction": "NONE",
  "enabledComponents": [
    "LOANS"
  ],
  "encodedKey": "string",
  "eodProcessingMethod": "AUTOMATIC",
  "exposureAmount": 0,
  "exposureType": "UNLIMITED",
  "groupIdFormat": "string",
  "groupSizeLimitType": "HARD",
  "interBranchTransferGLAccountKey": "string",
  "lineOfCreditIdFormat": "string",
  "maxAllowedIdDocumentAttachments": 0,
  "maxAllowedJournalEntryDocumentAttachments": 0,
  "maxAllowedUndoClosurePeriod": 0,
  "maxGroupSizeLimit": 0,
  "minGroupSizeLimit": 0,
  "multipleGroupMemberships": "UNLIMITED",
  "multipleLoans": "UNLIMITED",
  "otherIdDocumentsEnabled": true,
  "overdraftInterestEodBalanceDate": "2016-09-06T13:37:50+03:00",
  "tillIdFormat": "string"
}

Responses

Status Meaning Description Schema
200 OK General setup returned. GeneralSetup
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

Group Role Names Configuration

Retrieve and update the configuration for group role names.

Group role names are used to determine specific roles for members within a group. For more information about this resource, see Group Role Names Configuration in our User Guide.

Your user or API consumer must have the View Manage Configuration As Code (GET_MANAGE_CONFIGURATION_AS_CODE) and/or Update Manage Configuration As Code (PUT_MANAGE_CONFIGURATION_AS_CODE) permissions to make GET and/or PUT requests to these configuration as code (CasC) endpoints. For more information about CasC, seeĀ Configuration as Code Overview.

get (Group Role Names Configuration)

Code samples

# You can also use wget
curl -X GET /configuration/grouprolenames.yaml \
  -H 'Accept: application/vnd.mambu.v2+yaml'

GET /configuration/grouprolenames.yaml HTTP/1.1

Accept: application/vnd.mambu.v2+yaml

var headers = {
  'Accept':'application/vnd.mambu.v2+yaml'

};

$.ajax({
  url: '/configuration/grouprolenames.yaml',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+yaml'
}

result = RestClient.get '/configuration/grouprolenames.yaml',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+yaml'
}

r = requests.get('/configuration/grouprolenames.yaml', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+yaml',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/configuration/grouprolenames.yaml', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/configuration/grouprolenames.yaml");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+yaml"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/configuration/grouprolenames.yaml", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /configuration/grouprolenames.yaml

Get group role names configuration

Example responses

An array of group role names and their IDs

---
groupRoleNames:
- id: "281227669"
  name: "Secretary"
- id: "328808045"
  name: "President"
- id: "715206643"
  name: "Treasurer"

401 invalid credentials

{
    "errors": [
        {
            "errorCode": 2,
            "errorSource": "credentials",
            "errorReason": "INVALID_CREDENTIALS"
        }
    ]
}

403 forbidden

{
    "errors": [
        {
            "errorCode": 15,
            "errorSource": "not authorized",
            "errorReason": "INVALID_PERMISSIONS"
        }
    ]
}

404 not found

{
    "errors": [
        {
            "errorCode": 3,
            "errorSource": "server",
            "errorReason": "INVALID_API_OPERATION"
        }
    ]
}

Responses

Status Meaning Description Schema
200 OK Group role names configuration returned. GroupRoleNamesConfiguration
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found none None

Response Schema

update (Group Role Names Configuration)

Code samples

# You can also use wget
curl -X PUT /configuration/grouprolenames.yaml \
  -H 'Content-Type: application/yaml' \
  -H 'Accept: application/vnd.mambu.v2+yaml'

PUT /configuration/grouprolenames.yaml HTTP/1.1

Content-Type: application/yaml
Accept: application/vnd.mambu.v2+yaml

var headers = {
  'Content-Type':'application/yaml',
  'Accept':'application/vnd.mambu.v2+yaml'

};

$.ajax({
  url: '/configuration/grouprolenames.yaml',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/yaml',
  'Accept' => 'application/vnd.mambu.v2+yaml'
}

result = RestClient.put '/configuration/grouprolenames.yaml',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/yaml',
  'Accept': 'application/vnd.mambu.v2+yaml'
}

r = requests.put('/configuration/grouprolenames.yaml', params={

}, headers = headers)

print r.json()

 'application/yaml',
    'Accept' => 'application/vnd.mambu.v2+yaml',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PUT','/configuration/grouprolenames.yaml', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/configuration/grouprolenames.yaml");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/yaml"},
        "Accept": []string{"application/vnd.mambu.v2+yaml"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/configuration/grouprolenames.yaml", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /configuration/grouprolenames.yaml

Update group role names configuration

Body parameter

An array of group role names and their IDs

---
groupRoleNames:
- id: "281227669"
  name: "Secretary"
- id: "328808045"
  name: "President"
- id: "715206643"
  name: "Treasurer"

Parameters

Name Type Description In
body GroupRoleNamesConfiguration Represents the group role names configuration. body

Example responses

200 - Success response

---
warnings: []

400 - Example validation failure

{
    "errors": [
        {
            "errorCode": 9804,
            "errorSource": "GroupRoleName[id = 281227669]: The id must not be duplicate",
            "errorReason": "GROUP_ROLE_NAME_DUPLICATE_ID"
        }
    ]
}

401 invalid credentials

{
    "errors": [
        {
            "errorCode": 2,
            "errorSource": "credentials",
            "errorReason": "INVALID_CREDENTIALS"
        }
    ]
}

403 forbidden

{
    "errors": [
        {
            "errorCode": 15,
            "errorSource": "not authorized",
            "errorReason": "INVALID_PERMISSIONS"
        }
    ]
}

404 not found

{
    "errors": [
        {
            "errorCode": 3,
            "errorSource": "server",
            "errorReason": "INVALID_API_OPERATION"
        }
    ]
}

Responses

Status Meaning Description Schema
200 OK Group role names configuration updated. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Group role names configuration not found. ErrorResponse

Response Schema

Groups

Allows you to search groups by various criteria.

getAll (Groups)

Code samples

# You can also use wget
curl -X GET /groups \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /groups HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/groups',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/groups',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/groups', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/groups', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/groups");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/groups", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /groups

Get groups

Parameters

Name Type Description In
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query
detailsLevel string The level of details to return: FULL means the full details of the object will be returned (custom field values, address, contact info, or any other related objects) and BASIC will return only the first level elements of the object. query
creditOfficerUsername string The username of the credit officer to whom the entities are assigned to query
branchId string The id/encodedKey of the branch to which the entities are assigned to query
centreId string The id/encodedKey of the centre to which the entities are assigned to query
sortBy string The criteria based on which the records will be sorted. Expected format is , for example, sortBy = field1:ASC,field2:DESC.
Only the following fields can be used: creationDate, lastModifiedDate, groupName
Default sorting is done by creationDate:DESC
query

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

[
  {
    "addresses": [
      {
        "city": "string",
        "country": "string",
        "encodedKey": "string",
        "indexInList": 0,
        "latitude": 0,
        "line1": "string",
        "line2": "string",
        "longitude": 0,
        "parentKey": "string",
        "postcode": "string",
        "region": "string"
      }
    ],
    "assignedBranchKey": "string",
    "assignedCentreKey": "string",
    "assignedUserKey": "string",
    "creationDate": "2016-09-06T13:37:50+03:00",
    "emailAddress": "string",
    "encodedKey": "string",
    "groupMembers": [
      {
        "clientKey": "string",
        "roles": [
          {
            "encodedKey": "string",
            "groupRoleNameKey": "string",
            "roleName": "string",
            "roleNameId": "string"
          }
        ]
      }
    ],
    "groupName": "string",
    "groupRoleKey": "string",
    "homePhone": "string",
    "id": "string",
    "lastModifiedDate": "2016-09-06T13:37:50+03:00",
    "loanCycle": 0,
    "migrationEventKey": "string",
    "mobilePhone": "string",
    "notes": "string",
    "preferredLanguage": "ENGLISH"
  }
]

Responses

Status Meaning Description Schema
200 OK Groups list returned. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [Group] [A group is a type of client that can represent a non-physical person such as a company client or a grouping of individual clients. A group can have its own accounts and can optionally have individual clients as members, in which case they also need to have an individual profile in Mambu.] none
Ā» addresses [Address] The addresses associated with this group. none
»» city string The city for the address. none
»» country string The country. none
»» encodedKey string The address encoded key, which is unique and generated. read-only
»» indexInList integer(int32) The index of this address in the list of addresses. none
»» latitude number The GPS latitude of this address in signed degrees format (DDD.dddd) with 6 decimal positions, ranging from -90 to +90. none
»» line1 string The first line of the address. none
»» line2 string The second line of the address. none
»» longitude number The GPS longitude of this address in signed degrees format (DDD.dddd) with 6 decimal positions, ranging from -180 to +180. none
»» parentKey string The address parent key indicating the object owning this address. For example: client, centre, or branch. read-only
»» postcode string The post code. none
»» region string The region for the address. none
Ā» assignedBranchKey string Key of the branch this group is assigned to. none
Ā» assignedCentreKey string Key of the centre this group is assigned to. none
Ā» assignedUserKey string Key of the user this group is assigned to. none
Ā» creationDate string(date-time) The date the group was created. read-only
Ā» emailAddress string The email address associated with the group. none
Ā» encodedKey (required) string The encoded key of the group, which is auto generated, and must be unique. read-only
Ā» groupMembers [GroupMember] The members of this group. none
»» clientKey (required) string The encoded key of the client assigned as member of the group. none
»» roles [GroupRole] The group role name associated with a group member. none
»»» encodedKey string The encoded key of the group role name, which is auto generated, and unique. read-only
»»» groupRoleNameKey (required) string The group role name key. none
»»» roleName string The group role name. read-only
»»» roleNameId string The group role name ID. read-only
Ā» groupName (required) string The name of the group. none
Ā» groupRoleKey string A role which describes the intended use of a group in the system. none
Ā» homePhone string The home phone number associated with the group. none
Ā» id (required) string The ID of the group, which can be generated and customized, but must be unique. none
Ā» lastModifiedDate string(date-time) The last date the group was updated. read-only
Ā» loanCycle integer(int32) Number of paid and closed (with 'obligations met') accounts for this client. When the closing operation is reverted, this is reduced. read-only
Ā» migrationEventKey string The migration event encoded key associated with this group. read-only
Ā» mobilePhone string The mobile phone number associated with the group. none
Ā» notes string Extra notes about this group. none
Ā» preferredLanguage string The preferred language associated with the group (used for the notifications). none

Enumerated Values

Property Value
preferredLanguage ENGLISH
preferredLanguage PORTUGESE
preferredLanguage SPANISH
preferredLanguage RUSSIAN
preferredLanguage FRENCH
preferredLanguage GEORGIAN
preferredLanguage CHINESE
preferredLanguage INDONESIAN
preferredLanguage ROMANIAN
preferredLanguage BURMESE
preferredLanguage GERMAN
preferredLanguage PORTUGUESE_BRAZIL
preferredLanguage VIETNAMESE
preferredLanguage ITALIAN
preferredLanguage THAI
preferredLanguage NORWEGIAN
preferredLanguage PHRASE

Response Headers

Status Header Type Format Description
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

create (Groups)

Code samples

# You can also use wget
curl -X POST /groups \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /groups HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/groups',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/groups',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/groups', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/groups', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/groups");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/groups", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /groups

Create group

Body parameter

{
  "addresses": [
    {
      "city": "string",
      "country": "string",
      "indexInList": 0,
      "latitude": 0,
      "line1": "string",
      "line2": "string",
      "longitude": 0,
      "postcode": "string",
      "region": "string"
    }
  ],
  "assignedBranchKey": "string",
  "assignedCentreKey": "string",
  "assignedUserKey": "string",
  "emailAddress": "string",
  "groupMembers": [
    {
      "clientKey": "string",
      "roles": [
        {
          "groupRoleNameKey": "string"
        }
      ]
    }
  ],
  "groupName": "string",
  "groupRoleKey": "string",
  "homePhone": "string",
  "id": "string",
  "mobilePhone": "string",
  "notes": "string",
  "preferredLanguage": "ENGLISH"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
body (required) Group Group to be created. body

Example responses

201 Response

{
  "addresses": [
    {
      "city": "string",
      "country": "string",
      "encodedKey": "string",
      "indexInList": 0,
      "latitude": 0,
      "line1": "string",
      "line2": "string",
      "longitude": 0,
      "parentKey": "string",
      "postcode": "string",
      "region": "string"
    }
  ],
  "assignedBranchKey": "string",
  "assignedCentreKey": "string",
  "assignedUserKey": "string",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "emailAddress": "string",
  "encodedKey": "string",
  "groupMembers": [
    {
      "clientKey": "string",
      "roles": [
        {
          "encodedKey": "string",
          "groupRoleNameKey": "string",
          "roleName": "string",
          "roleNameId": "string"
        }
      ]
    }
  ],
  "groupName": "string",
  "groupRoleKey": "string",
  "homePhone": "string",
  "id": "string",
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "loanCycle": 0,
  "migrationEventKey": "string",
  "mobilePhone": "string",
  "notes": "string",
  "preferredLanguage": "ENGLISH"
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
201 Created Group created. Group
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

getById (Groups)

Code samples

# You can also use wget
curl -X GET /groups/{groupId} \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /groups/{groupId} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/groups/{groupId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/groups/{groupId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/groups/{groupId}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/groups/{groupId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/groups/{groupId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/groups/{groupId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /groups/{groupId}

Get group

Parameters

Name Type Description In
groupId (required) string The ID or encoded key of the group to be returned. path
detailsLevel string The level of details to return: FULL means the full details of the object will be returned (custom field values, address, contact info, or any other related objects) and BASIC will return only the first level elements of the object. query

Enumerated Values

Parameter Value
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

{
  "addresses": [
    {
      "city": "string",
      "country": "string",
      "encodedKey": "string",
      "indexInList": 0,
      "latitude": 0,
      "line1": "string",
      "line2": "string",
      "longitude": 0,
      "parentKey": "string",
      "postcode": "string",
      "region": "string"
    }
  ],
  "assignedBranchKey": "string",
  "assignedCentreKey": "string",
  "assignedUserKey": "string",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "emailAddress": "string",
  "encodedKey": "string",
  "groupMembers": [
    {
      "clientKey": "string",
      "roles": [
        {
          "encodedKey": "string",
          "groupRoleNameKey": "string",
          "roleName": "string",
          "roleNameId": "string"
        }
      ]
    }
  ],
  "groupName": "string",
  "groupRoleKey": "string",
  "homePhone": "string",
  "id": "string",
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "loanCycle": 0,
  "migrationEventKey": "string",
  "mobilePhone": "string",
  "notes": "string",
  "preferredLanguage": "ENGLISH"
}

Responses

Status Meaning Description Schema
200 OK Group returned. Group
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Group not found. ErrorResponse

update (Groups)

Code samples

# You can also use wget
curl -X PUT /groups/{groupId} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json'

PUT /groups/{groupId} HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/groups/{groupId}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.put '/groups/{groupId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.put('/groups/{groupId}', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PUT','/groups/{groupId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/groups/{groupId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/groups/{groupId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /groups/{groupId}

Update group

Body parameter

{
  "addresses": [
    {
      "city": "string",
      "country": "string",
      "indexInList": 0,
      "latitude": 0,
      "line1": "string",
      "line2": "string",
      "longitude": 0,
      "postcode": "string",
      "region": "string"
    }
  ],
  "assignedBranchKey": "string",
  "assignedCentreKey": "string",
  "assignedUserKey": "string",
  "emailAddress": "string",
  "groupMembers": [
    {
      "clientKey": "string",
      "roles": [
        {
          "groupRoleNameKey": "string"
        }
      ]
    }
  ],
  "groupName": "string",
  "groupRoleKey": "string",
  "homePhone": "string",
  "id": "string",
  "mobilePhone": "string",
  "notes": "string",
  "preferredLanguage": "ENGLISH"
}

Parameters

Name Type Description In
groupId (required) string The ID or encoded key of the group to be updated. path
body (required) Group Group to be updated. body

Example responses

200 Response

{
  "addresses": [
    {
      "city": "string",
      "country": "string",
      "encodedKey": "string",
      "indexInList": 0,
      "latitude": 0,
      "line1": "string",
      "line2": "string",
      "longitude": 0,
      "parentKey": "string",
      "postcode": "string",
      "region": "string"
    }
  ],
  "assignedBranchKey": "string",
  "assignedCentreKey": "string",
  "assignedUserKey": "string",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "emailAddress": "string",
  "encodedKey": "string",
  "groupMembers": [
    {
      "clientKey": "string",
      "roles": [
        {
          "encodedKey": "string",
          "groupRoleNameKey": "string",
          "roleName": "string",
          "roleNameId": "string"
        }
      ]
    }
  ],
  "groupName": "string",
  "groupRoleKey": "string",
  "homePhone": "string",
  "id": "string",
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "loanCycle": 0,
  "migrationEventKey": "string",
  "mobilePhone": "string",
  "notes": "string",
  "preferredLanguage": "ENGLISH"
}

Responses

Status Meaning Description Schema
200 OK Group updated. Group
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Group not found. ErrorResponse

delete (Groups)

Code samples

# You can also use wget
curl -X DELETE /groups/{groupId} \
  -H 'Accept: application/vnd.mambu.v2+json'

DELETE /groups/{groupId} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/groups/{groupId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.delete '/groups/{groupId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.delete('/groups/{groupId}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('DELETE','/groups/{groupId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/groups/{groupId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/groups/{groupId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /groups/{groupId}

Delete group

Parameters

Name Type Description In
groupId (required) string The ID or encoded key of the group to be deleted. path

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
204 No Content Group deleted. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Group not found. ErrorResponse

patch (Groups)

Code samples

# You can also use wget
curl -X PATCH /groups/{groupId} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json'

PATCH /groups/{groupId} HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/groups/{groupId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.patch '/groups/{groupId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.patch('/groups/{groupId}', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PATCH','/groups/{groupId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/groups/{groupId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PATCH");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/groups/{groupId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PATCH /groups/{groupId}

Partially update group

Body parameter

[
  {
    "from": "string",
    "op": "ADD",
    "path": "string",
    "value": {}
  }
]

Parameters

Name Type Description In
groupId (required) string The ID or encoded key of the group to be updated. path
body (required) PatchOperation Patch operations to be applied to a resource. body

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
204 No Content Group updated. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Group not found. ErrorResponse

getCreditArrangementsByGroupIdOrKey (Groups)

Code samples

# You can also use wget
curl -X GET /groups/{groupId}/creditarrangements \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /groups/{groupId}/creditarrangements HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/groups/{groupId}/creditarrangements',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/groups/{groupId}/creditarrangements',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/groups/{groupId}/creditarrangements', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/groups/{groupId}/creditarrangements', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/groups/{groupId}/creditarrangements");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/groups/{groupId}/creditarrangements", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /groups/{groupId}/creditarrangements

Credit arrangements list returned.

Parameters

Name Type Description In
groupId (required) string The ID or encoded key of the group to be returned. path
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query
detailsLevel string The level of details to return: FULL means the full details of the object will be returned (custom field values, address, contact info, or any other related objects) and BASIC will return only the first level elements of the object. query

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

[
  {
    "amount": 0,
    "approvedDate": "2016-09-06T13:37:50+03:00",
    "availableCreditAmount": 0,
    "closedDate": "2016-09-06T13:37:50+03:00",
    "consumedCreditAmount": 0,
    "creationDate": "2016-09-06T13:37:50+03:00",
    "currency": {
      "code": "AED",
      "currencyCode": "string"
    },
    "encodedKey": "string",
    "expireDate": "2016-09-06T13:37:50+03:00",
    "exposureLimitType": "APPROVED_AMOUNT",
    "holderKey": "string",
    "holderType": "CLIENT",
    "id": "string",
    "lastModifiedDate": "2016-09-06T13:37:50+03:00",
    "notes": "string",
    "startDate": "2016-09-06T13:37:50+03:00",
    "state": "PENDING_APPROVAL",
    "subState": "PENDING_APPROVAL"
  }
]

Responses

Status Meaning Description Schema
200 OK Credit arrangements list returned. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Group not found. ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [CreditArrangement] [Represents a credit arrangement.] none
Ā» amount (required) number The maximum credit amount the client can be exposed to. none
Ā» approvedDate string(date-time) The date when the credit arrangement was approved. read-only
Ā» availableCreditAmount number The available amount of the credit arrangement. read-only
Ā» closedDate string(date-time) The date when the credit arrangement was closed. read-only
Ā» consumedCreditAmount number The consumed amount of the credit arrangement, which is calculated as the difference between the amount and available amount. read-only
Ā» creationDate string(date-time) The date when the credit arrangement was created. read-only
Ā» currency Currency Represents a currency. To represent a fiat currency, the code value and the currencyCode value must be the ISO-4217 currency code of the fiat currency. To represent a non-fiat currency, the code value must be NON_FIAT and the currencyCode value must be the currency code of the non-fiat currency. none
»» code string Fiat(ISO-4217) currency code or NON_FIAT for non fiat currencies. none
»» currencyCode string Currency code for NON_FIAT currency. none
Ā» encodedKey string The encoded key of the credit arrangement, it is auto generated, and unique. read-only
Ā» expireDate (required) string(date-time) The date when the credit arrangement expires. none
Ā» exposureLimitType string The type of exposure limit calculation method used for the credit arrangement. none
Ā» holderKey (required) string The encoded key of the credit arrangement holder (individual client or group). none
Ā» holderType (required) string The type of the credit arrangement holder (individual client or group). none
Ā» id string The ID of credit arrangement, can be generated and customized, and must be unique. none
Ā» lastModifiedDate string(date-time) The last date when the credit arrangement was modified. read-only
Ā» notes string The notes or description of the credit arrangement. none
Ā» startDate (required) string(date-time) The start date from which the credit arrangement became active. none
Ā» state string The state of the credit arrangement. read-only
Ā» subState string The substate of credit arrangement. read-only

Enumerated Values

Property Value
code AED
code AFN
code ALL
code AMD
code ANG
code AOA
code ARS
code AUD
code AWG
code AZN
code BAM
code BBD
code BDT
code BGN
code BHD
code BIF
code BMD
code BND
code BOB
code BOV
code BRL
code BSD
code BTN
code BWP
code BYR
code BYN
code BZD
code CAD
code CDF
code CHE
code CHF
code CHW
code CLF
code CLP
code CNY
code COP
code COU
code CRC
code CUC
code CUP
code CVE
code CZK
code DJF
code DKK
code DOP
code DZD
code EGP
code ERN
code ETB
code EUR
code FJD
code FKP
code GBP
code GEL
code GHS
code GIP
code GMD
code GNF
code GTQ
code GYD
code HKD
code HNL
code HRK
code HTG
code HUF
code IDR
code ILS
code INR
code IQD
code IRR
code ISK
code JMD
code JOD
code JPY
code KES
code KGS
code KHR
code KMF
code KPW
code KRW
code KWD
code KYD
code KZT
code LAK
code LBP
code LKR
code LRD
code LSL
code LTL
code LVL
code LYD
code MAD
code MDL
code MGA
code MKD
code MMK
code MNT
code MOP
code MRO
code MRU
code MUR
code MVR
code MWK
code MXN
code MXV
code MYR
code MZN
code NAD
code NGN
code NIO
code NOK
code NPR
code NZD
code OMR
code PAB
code PEN
code PGK
code PHP
code PKR
code PLN
code PYG
code QAR
code RON
code RSD
code RUB
code RWF
code SAR
code SBD
code SCR
code SDG
code SEK
code SGD
code SHP
code SLL
code SOS
code SRD
code STD
code STN
code SVC
code SYP
code SZL
code THB
code TJS
code TMT
code TND
code TOP
code TRY
code TTD
code TWD
code TZS
code UAH
code UGX
code USD
code USN
code UYI
code UYU
code UYW
code UZS
code VED
code VEF
code VES
code VND
code VUV
code WST
code XAG
code XAU
code XAF
code XBA
code XBB
code XBC
code XBD
code XCD
code XDR
code XOF
code XPD
code XPF
code XPT
code XSU
code XTS
code XUA
code XXX
code YER
code ZAR
code ZIG
code ZMK
code ZWL
code ZMW
code SSP
code NON_FIAT
exposureLimitType APPROVED_AMOUNT
exposureLimitType OUTSTANDING_AMOUNT
holderType CLIENT
holderType GROUP
state PENDING_APPROVAL
state APPROVED
state ACTIVE
state CLOSED
state WITHDRAWN
state REJECTED
subState PENDING_APPROVAL
subState APPROVED
subState ACTIVE
subState CLOSED
subState WITHDRAWN
subState REJECTED

Response Headers

Status Header Type Format Description
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

Code samples

# You can also use wget
curl -X POST /groups:search \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json'

POST /groups:search HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/groups:search',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.post '/groups:search',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.post('/groups:search', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/groups:search', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/groups:search");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/groups:search", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /groups:search

Search groups

For more information on performing searches, please read the Searching for Records section above.

Body parameter

{
  "filterCriteria": [
    {
      "field": "encodedKey",
      "operator": "EQUALS",
      "secondValue": "string",
      "value": "string",
      "values": [
        "string"
      ]
    }
  ],
  "sortingCriteria": {
    "field": "encodedKey",
    "order": "ASC"
  }
}

Parameters

Name Type Description In
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query
detailsLevel string The level of details to return: FULL means the full details of the object will be returned (custom field values, address, contact info, or any other related objects) and BASIC will return only the first level elements of the object. query
body (required) GroupSearchCriteria Criteria to be used to search groups. body

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

[
  {
    "addresses": [
      {
        "city": "string",
        "country": "string",
        "encodedKey": "string",
        "indexInList": 0,
        "latitude": 0,
        "line1": "string",
        "line2": "string",
        "longitude": 0,
        "parentKey": "string",
        "postcode": "string",
        "region": "string"
      }
    ],
    "assignedBranchKey": "string",
    "assignedCentreKey": "string",
    "assignedUserKey": "string",
    "creationDate": "2016-09-06T13:37:50+03:00",
    "emailAddress": "string",
    "encodedKey": "string",
    "groupMembers": [
      {
        "clientKey": "string",
        "roles": [
          {
            "encodedKey": "string",
            "groupRoleNameKey": "string",
            "roleName": "string",
            "roleNameId": "string"
          }
        ]
      }
    ],
    "groupName": "string",
    "groupRoleKey": "string",
    "homePhone": "string",
    "id": "string",
    "lastModifiedDate": "2016-09-06T13:37:50+03:00",
    "loanCycle": 0,
    "migrationEventKey": "string",
    "mobilePhone": "string",
    "notes": "string",
    "preferredLanguage": "ENGLISH"
  }
]

Responses

Status Meaning Description Schema
200 OK Result of group search. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [Group] [A group is a type of client that can represent a non-physical person such as a company client or a grouping of individual clients. A group can have its own accounts and can optionally have individual clients as members, in which case they also need to have an individual profile in Mambu.] none
Ā» addresses [Address] The addresses associated with this group. none
»» city string The city for the address. none
»» country string The country. none
»» encodedKey string The address encoded key, which is unique and generated. read-only
»» indexInList integer(int32) The index of this address in the list of addresses. none
»» latitude number The GPS latitude of this address in signed degrees format (DDD.dddd) with 6 decimal positions, ranging from -90 to +90. none
»» line1 string The first line of the address. none
»» line2 string The second line of the address. none
»» longitude number The GPS longitude of this address in signed degrees format (DDD.dddd) with 6 decimal positions, ranging from -180 to +180. none
»» parentKey string The address parent key indicating the object owning this address. For example: client, centre, or branch. read-only
»» postcode string The post code. none
»» region string The region for the address. none
Ā» assignedBranchKey string Key of the branch this group is assigned to. none
Ā» assignedCentreKey string Key of the centre this group is assigned to. none
Ā» assignedUserKey string Key of the user this group is assigned to. none
Ā» creationDate string(date-time) The date the group was created. read-only
Ā» emailAddress string The email address associated with the group. none
Ā» encodedKey (required) string The encoded key of the group, which is auto generated, and must be unique. read-only
Ā» groupMembers [GroupMember] The members of this group. none
»» clientKey (required) string The encoded key of the client assigned as member of the group. none
»» roles [GroupRole] The group role name associated with a group member. none
»»» encodedKey string The encoded key of the group role name, which is auto generated, and unique. read-only
»»» groupRoleNameKey (required) string The group role name key. none
»»» roleName string The group role name. read-only
»»» roleNameId string The group role name ID. read-only
Ā» groupName (required) string The name of the group. none
Ā» groupRoleKey string A role which describes the intended use of a group in the system. none
Ā» homePhone string The home phone number associated with the group. none
Ā» id (required) string The ID of the group, which can be generated and customized, but must be unique. none
Ā» lastModifiedDate string(date-time) The last date the group was updated. read-only
Ā» loanCycle integer(int32) Number of paid and closed (with 'obligations met') accounts for this client. When the closing operation is reverted, this is reduced. read-only
Ā» migrationEventKey string The migration event encoded key associated with this group. read-only
Ā» mobilePhone string The mobile phone number associated with the group. none
Ā» notes string Extra notes about this group. none
Ā» preferredLanguage string The preferred language associated with the group (used for the notifications). none

Enumerated Values

Property Value
preferredLanguage ENGLISH
preferredLanguage PORTUGESE
preferredLanguage SPANISH
preferredLanguage RUSSIAN
preferredLanguage FRENCH
preferredLanguage GEORGIAN
preferredLanguage CHINESE
preferredLanguage INDONESIAN
preferredLanguage ROMANIAN
preferredLanguage BURMESE
preferredLanguage GERMAN
preferredLanguage PORTUGUESE_BRAZIL
preferredLanguage VIETNAMESE
preferredLanguage ITALIAN
preferredLanguage THAI
preferredLanguage NORWEGIAN
preferredLanguage PHRASE

Response Headers

Status Header Type Format Description
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

Holidays

Allows operations on the general holidays and non working days of the organization.

getByIdentifier (Holidays)

Code samples

# You can also use wget
curl -X GET /organization/holidays/general/{holidayIdentifier} \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /organization/holidays/general/{holidayIdentifier} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/organization/holidays/general/{holidayIdentifier}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/organization/holidays/general/{holidayIdentifier}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/organization/holidays/general/{holidayIdentifier}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/organization/holidays/general/{holidayIdentifier}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/organization/holidays/general/{holidayIdentifier}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/organization/holidays/general/{holidayIdentifier}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /organization/holidays/general/{holidayIdentifier}

Get holiday

Parameters

Name Type Description In
holidayIdentifier (required) string The ID or encodedKey of the holiday. path

Example responses

200 Response

{
  "creationDate": "2016-09-06T13:37:50+03:00",
  "date": "1987-04-26",
  "encodedKey": "string",
  "id": 0,
  "isAnnuallyRecurring": true,
  "name": "string"
}

Responses

Status Meaning Description Schema
200 OK Holiday returned. Holiday
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Holiday not found. ErrorResponse
409 Conflict Invalid operation due to conflicting state, the provided ID is not unique. Update holidays to have unique IDs. ErrorResponse

delete (Holidays)

Code samples

# You can also use wget
curl -X DELETE /organization/holidays/general/{holidayIdentifier} \
  -H 'Accept: application/vnd.mambu.v2+json'

DELETE /organization/holidays/general/{holidayIdentifier} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/organization/holidays/general/{holidayIdentifier}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.delete '/organization/holidays/general/{holidayIdentifier}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.delete('/organization/holidays/general/{holidayIdentifier}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('DELETE','/organization/holidays/general/{holidayIdentifier}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/organization/holidays/general/{holidayIdentifier}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/organization/holidays/general/{holidayIdentifier}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /organization/holidays/general/{holidayIdentifier}

Delete holiday

Parameters

Name Type Description In
holidayIdentifier (required) string The ID of the holiday to be deleted. path

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
204 No Content Holidays deleted None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Holiday not found. ErrorResponse
409 Conflict Invalid operation due to conflicting state, the provided ID is not unique. Update holidays to have unique IDs. ErrorResponse

create (Holidays)

Code samples

# You can also use wget
curl -X POST /organization/holidays/general \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /organization/holidays/general HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/organization/holidays/general',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/organization/holidays/general',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/organization/holidays/general', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/organization/holidays/general', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/organization/holidays/general");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/organization/holidays/general", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /organization/holidays/general

Create holidays

Body parameter

[
  {
    "date": "1987-04-26",
    "id": 0,
    "isAnnuallyRecurring": true,
    "name": "string"
  }
]

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
body (required) Holiday Holiday values used to create multiple holidays. body

Example responses

201 Response

[
  {
    "creationDate": "2016-09-06T13:37:50+03:00",
    "date": "1987-04-26",
    "encodedKey": "string",
    "id": 0,
    "isAnnuallyRecurring": true,
    "name": "string"
  }
]

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
201 Created Holidays created. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

Response Schema

Status Code 201

Name Type Description Restrictions
anonymous [Holiday] [Represents the holiday.] none
Ā» creationDate string(date-time) The date when the holiday was created. read-only
Ā» date string(date) The date the holiday takes place. none
Ā» encodedKey string The encoded key of the entity, generated, globally unique read-only
Ā» id integer(int64) The ID of the holiday. none
Ā» isAnnuallyRecurring boolean TRUE if a holiday is annually recurring, FALSE otherwise. none
Ā» name string The name of the holiday. none

getNonWorkingDays (Holidays)

Code samples

# You can also use wget
curl -X GET /organization/holidays/nonworkingdays \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /organization/holidays/nonworkingdays HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/organization/holidays/nonworkingdays',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/organization/holidays/nonworkingdays',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/organization/holidays/nonworkingdays', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/organization/holidays/nonworkingdays', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/organization/holidays/nonworkingdays");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/organization/holidays/nonworkingdays", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /organization/holidays/nonworkingdays

Get non-working days

Example responses

200 Response

{
  "nonWorkingDays": [
    "MONDAY"
  ]
}

Responses

Status Meaning Description Schema
200 OK Non-working days returned. NonWorkingDays
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

updateNonWorkingDays (Holidays)

Code samples

# You can also use wget
curl -X PUT /organization/holidays/nonworkingdays \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json'

PUT /organization/holidays/nonworkingdays HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/organization/holidays/nonworkingdays',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.put '/organization/holidays/nonworkingdays',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.put('/organization/holidays/nonworkingdays', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PUT','/organization/holidays/nonworkingdays', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/organization/holidays/nonworkingdays");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/organization/holidays/nonworkingdays", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /organization/holidays/nonworkingdays

Update non-working days

Body parameter

{
  "nonWorkingDays": [
    "MONDAY"
  ]
}

Parameters

Name Type Description In
body (required) NonWorkingDays Non-working days to be updated. body

Example responses

200 Response

{
  "nonWorkingDays": [
    "MONDAY"
  ]
}

Responses

Status Meaning Description Schema
200 OK Non-working days updated. NonWorkingDays
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Non-working days not found. ErrorResponse

get (Holidays)

Code samples

# You can also use wget
curl -X GET /organization/holidays \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /organization/holidays HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/organization/holidays',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/organization/holidays',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/organization/holidays', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/organization/holidays', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/organization/holidays");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/organization/holidays", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /organization/holidays

Get holidays

Example responses

200 Response

{
  "holidays": [
    {
      "creationDate": "2016-09-06T13:37:50+03:00",
      "date": "1987-04-26",
      "encodedKey": "string",
      "id": 0,
      "isAnnuallyRecurring": true,
      "name": "string"
    }
  ],
  "nonWorkingDays": [
    "MONDAY"
  ]
}

Responses

Status Meaning Description Schema
200 OK Holidays returned. Holidays
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

update (Holidays)

Code samples

# You can also use wget
curl -X PUT /organization/holidays \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json'

PUT /organization/holidays HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/organization/holidays',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.put '/organization/holidays',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.put('/organization/holidays', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PUT','/organization/holidays', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/organization/holidays");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/organization/holidays", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /organization/holidays

Update holidays

Body parameter

{
  "holidays": [
    {
      "date": "1987-04-26",
      "id": 0,
      "isAnnuallyRecurring": true,
      "name": "string"
    }
  ],
  "nonWorkingDays": [
    "MONDAY"
  ]
}

Parameters

Name Type Description In
body (required) Holidays Holidays to be updated. body

Example responses

200 Response

{
  "holidays": [
    {
      "creationDate": "2016-09-06T13:37:50+03:00",
      "date": "1987-04-26",
      "encodedKey": "string",
      "id": 0,
      "isAnnuallyRecurring": true,
      "name": "string"
    }
  ],
  "nonWorkingDays": [
    "MONDAY"
  ]
}

Responses

Status Meaning Description Schema
200 OK Holidays updated. Holidays
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Holidays not found. ErrorResponse

Holidays Configuration

Retrieve and update the configuration for holidays and non-working days.

Holidays and non-working days apply to the whole organization. Loan products can be configured so that installments which would fall on holidays and non-working days are automatically rescheduled. For more information about this resource, see Holidays Configuration in our User Guide.

Your user or API consumer must have the View Manage Configuration As Code (GET_MANAGE_CONFIGURATION_AS_CODE) and/or Update Manage Configuration As Code (PUT_MANAGE_CONFIGURATION_AS_CODE) permissions to make GET and/or PUT requests to these configuration as code (CasC) endpoints. For more information about CasC, seeĀ Configuration as Code Overview.

get (Holidays Configuration)

Code samples

# You can also use wget
curl -X GET /configuration/holidays.yaml \
  -H 'Accept: application/vnd.mambu.v2+yaml'

GET /configuration/holidays.yaml HTTP/1.1

Accept: application/vnd.mambu.v2+yaml

var headers = {
  'Accept':'application/vnd.mambu.v2+yaml'

};

$.ajax({
  url: '/configuration/holidays.yaml',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+yaml'
}

result = RestClient.get '/configuration/holidays.yaml',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+yaml'
}

r = requests.get('/configuration/holidays.yaml', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+yaml',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/configuration/holidays.yaml', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/configuration/holidays.yaml");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+yaml"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/configuration/holidays.yaml", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /configuration/holidays.yaml

Get holidays configuration

Example responses

an array of holidays

---
nonWorkingDays:
- "SATURDAY"
- "SUNDAY"
holidays:
- id: 0
  name: "Remembrance Day"
  dayOfMonth: 26
  monthOfYear: 4
  year: 2020
  isAnnuallyRecurring: true
- id: 1
  name: "World Peace Day"
  dayOfMonth: 22
  monthOfYear: 6
  year: 2020
  isAnnuallyRecurring: true
- id: 2
  name: "Independence Day"
  dayOfMonth: 25
  monthOfYear: 6
  year: 2020
  isAnnuallyRecurring: true
- id: 11
  name: "Liberation Day"
  dayOfMonth: 30
  monthOfYear: 6
  year: 2020
  isAnnuallyRecurring: false

400 error response

{
    "errors": [
        {
            "errorCode": 0,
            "errorSource": "human-readable description of the error",
            "errorReason": "SOURCE_OF_ERROR"
        }
    ]
}

401 invalid credentials

{
    "errors": [
        {
            "errorCode": 2,
            "errorSource": "credentials",
            "errorReason": "INVALID_CREDENTIALS"
        }
    ]
}

403 forbidden

{
    "errors": [
        {
            "errorCode": 15,
            "errorSource": "not authorized",
            "errorReason": "INVALID_PERMISSIONS"
        }
    ]
}

404 not found

{
    "errors": [
        {
            "errorCode": 3,
            "errorSource": "server",
            "errorReason": "INVALID_API_OPERATION"
        }
    ]
}

Responses

Status Meaning Description Schema
200 OK Holidays configuration details returned. HolidaysConfiguration
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Holidays configuration details not found. ErrorResponse

update (Holidays Configuration)

Code samples

# You can also use wget
curl -X PUT /configuration/holidays.yaml \
  -H 'Content-Type: application/yaml' \
  -H 'Accept: application/vnd.mambu.v2+yaml'

PUT /configuration/holidays.yaml HTTP/1.1

Content-Type: application/yaml
Accept: application/vnd.mambu.v2+yaml

var headers = {
  'Content-Type':'application/yaml',
  'Accept':'application/vnd.mambu.v2+yaml'

};

$.ajax({
  url: '/configuration/holidays.yaml',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/yaml',
  'Accept' => 'application/vnd.mambu.v2+yaml'
}

result = RestClient.put '/configuration/holidays.yaml',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/yaml',
  'Accept': 'application/vnd.mambu.v2+yaml'
}

r = requests.put('/configuration/holidays.yaml', params={

}, headers = headers)

print r.json()

 'application/yaml',
    'Accept' => 'application/vnd.mambu.v2+yaml',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PUT','/configuration/holidays.yaml', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/configuration/holidays.yaml");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/yaml"},
        "Accept": []string{"application/vnd.mambu.v2+yaml"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/configuration/holidays.yaml", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /configuration/holidays.yaml

Update holidays configuration

Body parameter

an array of holidays

---
nonWorkingDays:
- "SATURDAY"
- "SUNDAY"
holidays:
- id: 0
  name: "Remembrance Day"
  dayOfMonth: 26
  monthOfYear: 4
  year: 2020
  isAnnuallyRecurring: true
- id: 1
  name: "World Peace Day"
  dayOfMonth: 22
  monthOfYear: 6
  year: 2020
  isAnnuallyRecurring: true
- id: 2
  name: "Independence Day"
  dayOfMonth: 25
  monthOfYear: 6
  year: 2020
  isAnnuallyRecurring: true
- id: 11
  name: "Liberation Day"
  dayOfMonth: 30
  monthOfYear: 6
  year: 2020
  isAnnuallyRecurring: false

Parameters

Name Type Description In
body HolidaysConfiguration Represents the holidays of the organization. body

Example responses

200 success response

---
warnings: []

400 error response

{
    "errors": [
        {
            "errorCode": 0,
            "errorSource": "human-readable description of the error",
            "errorReason": "SOURCE_OF_ERROR"
        }
    ]
}

401 invalid credentials

{
    "errors": [
        {
            "errorCode": 2,
            "errorSource": "credentials",
            "errorReason": "INVALID_CREDENTIALS"
        }
    ]
}

403 forbidden

{
    "errors": [
        {
            "errorCode": 15,
            "errorSource": "not authorized",
            "errorReason": "INVALID_PERMISSIONS"
        }
    ]
}

404 not found

{
    "errors": [
        {
            "errorCode": 3,
            "errorSource": "server",
            "errorReason": "INVALID_API_OPERATION"
        }
    ]
}

Responses

Status Meaning Description Schema
200 OK Holidays configuration updated. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Holidays configuration not found. ErrorResponse

Response Schema

ID Templates

ID templates are representations of different forms of identification documents that you can collect from your clients. For more information, see ID Templates in our User Guide.

To access this enpoint using basic authentication, your user must be assigned the Administrator type. For more information, see the Type section in our Creating a User article.

To access this endpoint with an API key, your API consumer must be assigned the Administrator type. For more information, see API Consumers in our User Guide.

getAll (ID Templates)

Code samples

# You can also use wget
curl -X GET /organization/identificationDocumentTemplates \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /organization/identificationDocumentTemplates HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/organization/identificationDocumentTemplates',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/organization/identificationDocumentTemplates',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/organization/identificationDocumentTemplates', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/organization/identificationDocumentTemplates', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/organization/identificationDocumentTemplates");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/organization/identificationDocumentTemplates", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /organization/identificationDocumentTemplates

Get ID templates

Parameters

Name Type Description In
detailsLevel string The level of details to return: FULL means the full details of the object will be returned (custom field values, address, contact info, or any other related objects) and BASIC will return only the first level elements of the object. query

Enumerated Values

Parameter Value
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

[
  {
    "allowAttachments": true,
    "documentIdTemplate": "string",
    "documentType": "string",
    "encodedKey": "string",
    "id": "string",
    "issuingAuthority": "string",
    "mandatory": true
  }
]

Responses

Status Meaning Description Schema
200 OK ID templates list returned. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [IdentificationDocumentTemplate] [Represents a template for identification documents.] none
Ā» allowAttachments boolean TRUE if a template allows files to be attached, FALSE otherwise. none
Ā» documentIdTemplate string The ID template constraint to define the ID number length and format. Templates consist of the characters #, @, and $, where # specifies a number, @ a letter, and $ a number or a letter. none
Ā» documentType string The type of the document. For example, passport. none
Ā» encodedKey string The encoded key of the ID template. It is auto generated and unique. read-only
Ā» id string The unique identifier for the template. none
Ā» issuingAuthority string The authority that issued the document. none
Ā» mandatory boolean TRUE if a template is mandatory for all the individual clients, FALSE otherwise. none

ID Templates Configuration

Retrieve and update the configuration for ID templates.

An ID template is a representation of a type of ID document. For more information about this resource, see ID Templates Configuration in our User Guide.

Your user or API consumer must have the View Manage Configuration As Code (GET_MANAGE_CONFIGURATION_AS_CODE) and/or Update Manage Configuration As Code (PUT_MANAGE_CONFIGURATION_AS_CODE) permissions to make GET and/or PUT requests to these configuration as code (CasC) endpoints. For more information about CasC, seeĀ Configuration as Code Overview.

get (ID Templates Configuration)

Code samples

# You can also use wget
curl -X GET /configuration/iddocumenttemplates.yaml \
  -H 'Accept: application/vnd.mambu.v2+yaml'

GET /configuration/iddocumenttemplates.yaml HTTP/1.1

Accept: application/vnd.mambu.v2+yaml

var headers = {
  'Accept':'application/vnd.mambu.v2+yaml'

};

$.ajax({
  url: '/configuration/iddocumenttemplates.yaml',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+yaml'
}

result = RestClient.get '/configuration/iddocumenttemplates.yaml',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+yaml'
}

r = requests.get('/configuration/iddocumenttemplates.yaml', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+yaml',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/configuration/iddocumenttemplates.yaml', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/configuration/iddocumenttemplates.yaml");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+yaml"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/configuration/iddocumenttemplates.yaml", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /configuration/iddocumenttemplates.yaml

Get ID templates configuration

Example responses

An example of an ID templates configuration

---
idDocumentTemplates:
- id: "438499999"
  documentType: "Passport"
  issuingAuthority: "Government"
  documentIdTemplate: "#########"
  mandatoryForClients: false
  allowAttachments: false
- id: "662323814"
  documentType: "ID Card"
  issuingAuthority: "Government"
  documentIdTemplate: "#########"
  mandatoryForClients: true
  allowAttachments: true

401 invalid credentials

{
    "errors": [
        {
            "errorCode": 2,
            "errorSource": "credentials",
            "errorReason": "INVALID_CREDENTIALS"
        }
    ]
}

403 forbidden

{
    "errors": [
        {
            "errorCode": 15,
            "errorSource": "not authorized",
            "errorReason": "INVALID_PERMISSIONS"
        }
    ]
}

Responses

Status Meaning Description Schema
200 OK ID templates configuration returned. IdentificationDocumentTemplatesConfiguration
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

update (ID Templates Configuration)

Code samples

# You can also use wget
curl -X PUT /configuration/iddocumenttemplates.yaml \
  -H 'Content-Type: application/yaml' \
  -H 'Accept: application/vnd.mambu.v2+yaml'

PUT /configuration/iddocumenttemplates.yaml HTTP/1.1

Content-Type: application/yaml
Accept: application/vnd.mambu.v2+yaml

var headers = {
  'Content-Type':'application/yaml',
  'Accept':'application/vnd.mambu.v2+yaml'

};

$.ajax({
  url: '/configuration/iddocumenttemplates.yaml',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/yaml',
  'Accept' => 'application/vnd.mambu.v2+yaml'
}

result = RestClient.put '/configuration/iddocumenttemplates.yaml',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/yaml',
  'Accept': 'application/vnd.mambu.v2+yaml'
}

r = requests.put('/configuration/iddocumenttemplates.yaml', params={

}, headers = headers)

print r.json()

 'application/yaml',
    'Accept' => 'application/vnd.mambu.v2+yaml',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PUT','/configuration/iddocumenttemplates.yaml', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/configuration/iddocumenttemplates.yaml");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/yaml"},
        "Accept": []string{"application/vnd.mambu.v2+yaml"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/configuration/iddocumenttemplates.yaml", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /configuration/iddocumenttemplates.yaml

Update ID templates configuration

Body parameter

An example of an ID templates configuration

---
idDocumentTemplates:
- id: "438499999"
  documentType: "Passport"
  issuingAuthority: "Government"
  documentIdTemplate: "#########"
  mandatoryForClients: false
  allowAttachments: false
- id: "662323814"
  documentType: "ID Card"
  issuingAuthority: "Government"
  documentIdTemplate: "#########"
  mandatoryForClients: true
  allowAttachments: true

Parameters

Name Type Description In
body IdentificationDocumentTemplatesConfiguration Represents the templates for identification documents body

Example responses

200 - Success Response

---
warnings: []

400 error response

{
    "errors": [
        {
            "errorCode": 0,
            "errorSource": "human-readable description of the error",
            "errorReason": "SOURCE_OF_ERROR"
        }
    ]
}

401 invalid credentials

{
    "errors": [
        {
            "errorCode": 2,
            "errorSource": "credentials",
            "errorReason": "INVALID_CREDENTIALS"
        }
    ]
}

403 forbidden

{
    "errors": [
        {
            "errorCode": 15,
            "errorSource": "not authorized",
            "errorReason": "INVALID_PERMISSIONS"
        }
    ]
}

404 not found

{
    "errors": [
        {
            "errorCode": 3,
            "errorSource": "server",
            "errorReason": "INVALID_API_OPERATION"
        }
    ]
}

Responses

Status Meaning Description Schema
200 OK ID templates configuration updated. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found ID templates configuration not found. ErrorResponse

Response Schema

Index Rate Sources

Allows you to retrieve, create, update index rate sources and the index rates belonging to a source so that you can easily automate the process of updating these to reflect real-world rates. Check our documentation page for more general information regaring index rate sources and rates.

getAllIndexRateSources (Index Rate Sources)

Code samples

# You can also use wget
curl -X GET /indexratesources \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /indexratesources HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/indexratesources',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/indexratesources',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/indexratesources', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/indexratesources', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/indexratesources");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/indexratesources", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /indexratesources

Get index rate sources

Example responses

200 Response

[
  {
    "creationDate": "2016-09-06T13:37:50+03:00",
    "encodedKey": "string",
    "id": "string",
    "lastModifiedDate": "2016-09-06T13:37:50+03:00",
    "name": "string",
    "notes": "string",
    "type": "INTEREST_RATE"
  }
]

Responses

Status Meaning Description Schema
200 OK Index rate sources list returned. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [IndexRateSource] [Represents an index rate source.] none
Ā» creationDate string(date-time) The creation date of the index rate source read-only
Ā» encodedKey string The encoded key of the index rate source, which is auto generated, and unique. read-only
Ā» id string The ID of the index rate source, which can be generated and customized, and must be unique. none
Ā» lastModifiedDate string(date-time) The last date this rate source was modified read-only
Ā» name string The name of the index rate source. none
Ā» notes string The notes about the the index rate source. none
Ā» type string The type of index rate source. none

Enumerated Values

Property Value
type INTEREST_RATE
type TAX_RATE
type WITHHOLDING_TAX_RATE
type PRINCIPAL_TAX_RATE

createIndexRateSource (Index Rate Sources)

Code samples

# You can also use wget
curl -X POST /indexratesources \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /indexratesources HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/indexratesources',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/indexratesources',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/indexratesources', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/indexratesources', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/indexratesources");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/indexratesources", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /indexratesources

Create index rate source

Body parameter

{
  "id": "string",
  "name": "string",
  "notes": "string",
  "type": "INTEREST_RATE"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
body (required) IndexRateSource Index rate source to be created. body

Example responses

201 Response

{
  "creationDate": "2016-09-06T13:37:50+03:00",
  "encodedKey": "string",
  "id": "string",
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "name": "string",
  "notes": "string",
  "type": "INTEREST_RATE"
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
201 Created Index rate created. IndexRateSource
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

deleteIndexRate (Index Rate Sources)

Code samples

# You can also use wget
curl -X DELETE /indexratesources/{indexRateSourceId}/indexrates/{indexRateId} \
  -H 'Accept: application/vnd.mambu.v2+json'

DELETE /indexratesources/{indexRateSourceId}/indexrates/{indexRateId} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/indexratesources/{indexRateSourceId}/indexrates/{indexRateId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.delete '/indexratesources/{indexRateSourceId}/indexrates/{indexRateId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.delete('/indexratesources/{indexRateSourceId}/indexrates/{indexRateId}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('DELETE','/indexratesources/{indexRateSourceId}/indexrates/{indexRateId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/indexratesources/{indexRateSourceId}/indexrates/{indexRateId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/indexratesources/{indexRateSourceId}/indexrates/{indexRateId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /indexratesources/{indexRateSourceId}/indexrates/{indexRateId}

Delete index rate

Parameters

Name Type Description In
indexRateSourceId (required) string The ID of the index rate source. path
indexRateId (required) string The encoded key of the index rate to be deleted. path

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
204 No Content Index rate deleted. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Index rate not found. ErrorResponse

getIndexRateSourceById (Index Rate Sources)

Code samples

# You can also use wget
curl -X GET /indexratesources/{indexRateSourceId} \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /indexratesources/{indexRateSourceId} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/indexratesources/{indexRateSourceId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/indexratesources/{indexRateSourceId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/indexratesources/{indexRateSourceId}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/indexratesources/{indexRateSourceId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/indexratesources/{indexRateSourceId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/indexratesources/{indexRateSourceId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /indexratesources/{indexRateSourceId}

Get index rate sources

Parameters

Name Type Description In
indexRateSourceId (required) string The ID of the index rate source. path

Example responses

200 Response

{
  "creationDate": "2016-09-06T13:37:50+03:00",
  "encodedKey": "string",
  "id": "string",
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "name": "string",
  "notes": "string",
  "type": "INTEREST_RATE"
}

Responses

Status Meaning Description Schema
200 OK Index rate source returned. IndexRateSource
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Index rate source not found. ErrorResponse

deleteIndexRateSource (Index Rate Sources)

Code samples

# You can also use wget
curl -X DELETE /indexratesources/{indexRateSourceId} \
  -H 'Accept: application/vnd.mambu.v2+json'

DELETE /indexratesources/{indexRateSourceId} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/indexratesources/{indexRateSourceId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.delete '/indexratesources/{indexRateSourceId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.delete('/indexratesources/{indexRateSourceId}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('DELETE','/indexratesources/{indexRateSourceId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/indexratesources/{indexRateSourceId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/indexratesources/{indexRateSourceId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /indexratesources/{indexRateSourceId}

Delete index rate source

Parameters

Name Type Description In
indexRateSourceId (required) string The ID of the index rate source. path

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
204 No Content Index rate source deleted. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Index rate source not found. ErrorResponse

getAllIndexRates (Index Rate Sources)

Code samples

# You can also use wget
curl -X GET /indexratesources/{indexRateSourceId}/indexrates \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /indexratesources/{indexRateSourceId}/indexrates HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/indexratesources/{indexRateSourceId}/indexrates',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/indexratesources/{indexRateSourceId}/indexrates',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/indexratesources/{indexRateSourceId}/indexrates', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/indexratesources/{indexRateSourceId}/indexrates', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/indexratesources/{indexRateSourceId}/indexrates");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/indexratesources/{indexRateSourceId}/indexrates", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /indexratesources/{indexRateSourceId}/indexrates

Get index rates for a source

Parameters

Name Type Description In
indexRateSourceId (required) string The ID of the index rate source. path

Example responses

200 Response

[
  {
    "assignedIndexRateSourceKey": "string",
    "encodedKey": "string",
    "id": "string",
    "notes": "string",
    "rate": 0,
    "startDate": "2016-09-06T13:37:50+03:00",
    "userKey": "string"
  }
]

Responses

Status Meaning Description Schema
200 OK Index rates list returned. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [IndexRate] [Represents an index rate.] none
Ā» assignedIndexRateSourceKey string The index rate source that the index rate belongs to. read-only
Ā» encodedKey string The encoded key of the index rate, which is auto generated, and unique. read-only
Ā» id string The ID of the index rate, which can be generated and customized, and must be unique. none
Ā» notes string The notes or description attached to this object. none
Ā» rate number The percentage value of the index rate. none
Ā» startDate string(date-time) The date when the index rate starts being the active rate for its source. none
Ā» userKey string The key for the user that last modified the index rate. read-only

createIndexRate (Index Rate Sources)

Code samples

# You can also use wget
curl -X POST /indexratesources/{indexRateSourceId}/indexrates \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /indexratesources/{indexRateSourceId}/indexrates HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/indexratesources/{indexRateSourceId}/indexrates',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/indexratesources/{indexRateSourceId}/indexrates',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/indexratesources/{indexRateSourceId}/indexrates', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/indexratesources/{indexRateSourceId}/indexrates', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/indexratesources/{indexRateSourceId}/indexrates");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/indexratesources/{indexRateSourceId}/indexrates", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /indexratesources/{indexRateSourceId}/indexrates

Create index rate

Body parameter

{
  "id": "string",
  "notes": "string",
  "rate": 0,
  "startDate": "2016-09-06T13:37:50+03:00"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
indexRateSourceId (required) string The ID of the index rate source. path
body (required) IndexRate Index rate to be created. body

Example responses

201 Response

{
  "assignedIndexRateSourceKey": "string",
  "encodedKey": "string",
  "id": "string",
  "notes": "string",
  "rate": 0,
  "startDate": "2016-09-06T13:37:50+03:00",
  "userKey": "string"
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
201 Created Index rate created. IndexRate
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

Index Rates Configuration

Retrieve and update the configuration for index rates.

The index rates that can be configured are interest rate, value added tax rate, and withholding tax. For more information about this resource, see Index Rates Configuration in our User Guide.

Your user or API consumer must have the View Manage Configuration As Code (GET_MANAGE_CONFIGURATION_AS_CODE) and/or Update Manage Configuration As Code (PUT_MANAGE_CONFIGURATION_AS_CODE) permissions to make GET and/or PUT requests to these configuration as code (CasC) endpoints. For more information about CasC, seeĀ Configuration as Code Overview.

get (Index Rates Configuration)

Code samples

# You can also use wget
curl -X GET /configuration/indexrates.yaml \
  -H 'Accept: application/vnd.mambu.v2+yaml'

GET /configuration/indexrates.yaml HTTP/1.1

Accept: application/vnd.mambu.v2+yaml

var headers = {
  'Accept':'application/vnd.mambu.v2+yaml'

};

$.ajax({
  url: '/configuration/indexrates.yaml',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+yaml'
}

result = RestClient.get '/configuration/indexrates.yaml',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+yaml'
}

r = requests.get('/configuration/indexrates.yaml', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+yaml',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/configuration/indexrates.yaml', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/configuration/indexrates.yaml");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+yaml"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/configuration/indexrates.yaml", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /configuration/indexrates.yaml

Get index rates configuration

Example responses

An example of an index rates configuration

---
indexRateSources:
- id: "1515528602"
  name: "3 Month LIBOR"
  type: "INTEREST_RATE"
  notes: ""
  indexRates:
  - id: "54082948"
    startDate: "2021-03-08T01:00:00+01:00"
    rate: 0.85
    notes: ""
  - id: "384947284"
    startDate: "2019-03-06T01:00:00+01:00"
    rate: 2.33
    notes: ""
  - id: "951490027"
    startDate: "2018-03-05T01:00:00+01:00"
    rate: 2.3
    notes: ""
- id: "865715514"
  name: "1 Month LIBOR"
  type: "INTEREST_RATE"
  notes: ""
  indexRates:
  - id: "967424433"
    startDate: "2020-10-05T02:00:00+02:00"
    rate: 0.69
    notes: ""
  - id: "1306016671"
    startDate: "2019-10-07T02:00:00+02:00"
    rate: 2.22
    notes: ""
  - id: "703118600"
    startDate: "2018-10-01T02:00:00+02:00"
    rate: 2.02
    notes: ""
- id: "1529349105"
  name: "VAT Switzerland"
  type: "TAX_RATE"
  notes: ""
  indexRates:
  - id: "1662077234"
    startDate: "2018-10-10T02:00:00+02:00"
    rate: 7.7
    notes: ""
  - id: "1055113792"
    startDate: "2017-10-03T02:00:00+02:00"
    rate: 8
    notes: ""
- id: "95407914"
  name: "Withholding Tax Switzerland"
  type: "WITHHOLDING_TAX_RATE"
  notes: ""
  indexRates:
  - id: "673038680"
    startDate: "2020-10-05T02:00:00+02:00"
    rate: 35
    notes: ""

401 invalid credentials

{
    "errors": [
        {
            "errorCode": 2,
            "errorSource": "credentials",
            "errorReason": "INVALID_CREDENTIALS"
        }
    ]
}

403 forbidden

{
    "errors": [
        {
            "errorCode": 15,
            "errorSource": "not authorized",
            "errorReason": "INVALID_PERMISSIONS"
        }
    ]
}

Responses

Status Meaning Description Schema
200 OK Index rates configuration returned. IndexRatesConfiguration
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

update (Index Rates Configuration)

Code samples

# You can also use wget
curl -X PUT /configuration/indexrates.yaml \
  -H 'Content-Type: application/yaml' \
  -H 'Accept: application/vnd.mambu.v2+yaml'

PUT /configuration/indexrates.yaml HTTP/1.1

Content-Type: application/yaml
Accept: application/vnd.mambu.v2+yaml

var headers = {
  'Content-Type':'application/yaml',
  'Accept':'application/vnd.mambu.v2+yaml'

};

$.ajax({
  url: '/configuration/indexrates.yaml',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/yaml',
  'Accept' => 'application/vnd.mambu.v2+yaml'
}

result = RestClient.put '/configuration/indexrates.yaml',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/yaml',
  'Accept': 'application/vnd.mambu.v2+yaml'
}

r = requests.put('/configuration/indexrates.yaml', params={

}, headers = headers)

print r.json()

 'application/yaml',
    'Accept' => 'application/vnd.mambu.v2+yaml',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PUT','/configuration/indexrates.yaml', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/configuration/indexrates.yaml");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/yaml"},
        "Accept": []string{"application/vnd.mambu.v2+yaml"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/configuration/indexrates.yaml", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /configuration/indexrates.yaml

Update index rates configuration

Body parameter

An example of an index rates configuration

---
indexRateSources:
- id: "1515528602"
  name: "3 Month LIBOR"
  type: "INTEREST_RATE"
  notes: ""
  indexRates:
  - id: "54082948"
    startDate: "2021-03-08T01:00:00+01:00"
    rate: 0.85
    notes: ""
  - id: "384947284"
    startDate: "2019-03-06T01:00:00+01:00"
    rate: 2.33
    notes: ""
  - id: "951490027"
    startDate: "2018-03-05T01:00:00+01:00"
    rate: 2.3
    notes: ""
- id: "865715514"
  name: "1 Month LIBOR"
  type: "INTEREST_RATE"
  notes: ""
  indexRates:
  - id: "967424433"
    startDate: "2020-10-05T02:00:00+02:00"
    rate: 0.69
    notes: ""
  - id: "1306016671"
    startDate: "2019-10-07T02:00:00+02:00"
    rate: 2.22
    notes: ""
  - id: "703118600"
    startDate: "2018-10-01T02:00:00+02:00"
    rate: 2.02
    notes: ""
- id: "1529349105"
  name: "VAT Switzerland"
  type: "TAX_RATE"
  notes: ""
  indexRates:
  - id: "1662077234"
    startDate: "2018-10-10T02:00:00+02:00"
    rate: 7.7
    notes: ""
  - id: "1055113792"
    startDate: "2017-10-03T02:00:00+02:00"
    rate: 8
    notes: ""
- id: "95407914"
  name: "Withholding Tax Switzerland"
  type: "WITHHOLDING_TAX_RATE"
  notes: ""
  indexRates:
  - id: "673038680"
    startDate: "2020-10-05T02:00:00+02:00"
    rate: 35
    notes: ""

Parameters

Name Type Description In
body IndexRatesConfiguration Represents the index rates configuration. body

Example responses

200 - Success Response

---
warnings: []

400 error response

{
    "errors": [
        {
            "errorCode": 0,
            "errorSource": "human-readable description of the error",
            "errorReason": "SOURCE_OF_ERROR"
        }
    ]
}

401 invalid credentials

{
    "errors": [
        {
            "errorCode": 2,
            "errorSource": "credentials",
            "errorReason": "INVALID_CREDENTIALS"
        }
    ]
}

403 forbidden

{
    "errors": [
        {
            "errorCode": 15,
            "errorSource": "not authorized",
            "errorReason": "INVALID_PERMISSIONS"
        }
    ]
}

404 not found

{
    "errors": [
        {
            "errorCode": 3,
            "errorSource": "server",
            "errorReason": "INVALID_API_OPERATION"
        }
    ]
}

Responses

Status Meaning Description Schema
200 OK Index rates configuration updated. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Index rates configuration not found. ErrorResponse

Response Schema

Installments

getAll (Installments)

Code samples

# You can also use wget
curl -X GET /installments?dueFrom=2019-08-24&dueTo=2019-08-24 \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /installments?dueFrom=2019-08-24&dueTo=2019-08-24 HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/installments',
  method: 'get',
  data: '?dueFrom=2019-08-24&dueTo=2019-08-24',
  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/installments',
  params: {
  'dueFrom' => 'string(date)',
'dueTo' => 'string(date)'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/installments', params={
  'dueFrom': '2019-08-24',  'dueTo': '2019-08-24'
}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/installments', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/installments?dueFrom=2019-08-24&dueTo=2019-08-24");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/installments", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /installments

Allows you to retrieve the installments of Active or In Arrears loan accounts. To retrieve the installments of accounts in other states, make a GET request to the /loans/{loanAccountId}/schedule endpoint.

Parameters

Name Type Description In
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query
dueFrom (required) string(date) The date of the installments to search from query
dueTo (required) string(date) The date of the installments to search to query
productTypeKey string The encoded key of the product type to search for query
accountState string The state of the loan accounts to search for query
installmentState string The state of the installments to search for query

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF
accountState PARTIAL_APPLICATION
accountState PENDING_APPROVAL
accountState APPROVED
accountState ACTIVE
accountState ACTIVE_IN_ARREARS
accountState CLOSED
accountState CLOSED_WRITTEN_OFF
accountState CLOSED_REJECTED
installmentState PENDING
installmentState LATE
installmentState PAID
installmentState PARTIALLY_PAID
installmentState GRACE

Example responses

200 Response

[
  {
    "carryForwardInterestSplit": {
      "amount": 0,
      "tax": 0
    },
    "customSettingDetails": [
      {
        "loanTransactionKey": "string",
        "source": "string",
        "type": "string"
      }
    ],
    "dueDate": "2016-09-06T13:37:50+03:00",
    "encodedKey": "string",
    "expectedClosingBalance": 0,
    "fee": {
      "amount": {
        "due": 0,
        "expected": 0,
        "expectedUnapplied": 0,
        "paid": 0
      },
      "tax": {
        "due": 0,
        "expected": 0,
        "paid": 0
      }
    },
    "feeDetails": [
      {
        "amount": {
          "due": 0,
          "expected": 0,
          "paid": 0,
          "reduced": 0
        },
        "encodedKey": "string",
        "id": "string",
        "name": "string",
        "tax": {
          "due": 0,
          "expected": 0,
          "paid": 0,
          "reduced": 0
        }
      }
    ],
    "fundersInterestDue": 0,
    "interest": {
      "amount": {
        "due": 0,
        "expected": 0,
        "paid": 0
      },
      "tax": {
        "due": 0,
        "expected": 0,
        "paid": 0
      }
    },
    "interestAccrued": 0,
    "isPaymentHoliday": true,
    "lastPaidDate": "2016-09-06T13:37:50+03:00",
    "lastPenaltyAppliedDate": "2016-09-06T13:37:50+03:00",
    "nonScheduledPrincipalBalanceOverpayment": 0,
    "notes": "string",
    "number": "string",
    "organizationCommissionDue": 0,
    "parentAccountKey": "string",
    "penalty": {
      "amount": {
        "due": 0,
        "expected": 0,
        "paid": 0
      },
      "tax": {
        "due": 0,
        "expected": 0,
        "paid": 0
      }
    },
    "principal": {
      "amount": {
        "due": 0,
        "expected": 0,
        "paid": 0
      }
    },
    "repaidDate": "2016-09-06T13:37:50+03:00",
    "state": "PENDING"
  }
]

Responses

Status Meaning Description Schema
200 OK installments list retrieved Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan product not found. ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [Installment] [Represents a single installment details structure.] none
Ā» carryForwardInterestSplit CarryForwardInterestSplit Represents carry forward interest split none
»» amount number The carry forward interest amount. none
»» tax number The taxes amount on the carry forward interest. none
Ā» customSettingDetails [CustomSettingDetails] Custom settings associated with the installment. none
»» loanTransactionKey string The loan transaction associated with the custom setting. none
»» source string The source of the custom setting none
»» type string The type of custom setting. none
Ā» dueDate string(date-time) The installment due date. none
Ā» encodedKey string The encoded key of the installment, which is auto generated, and unique. read-only
Ā» expectedClosingBalance number The expected closing balance is the remaining amount per installment only applicable for interest only equal installment products. none
Ā» fee InstallmentFee Represents an installment fee structure. none
»» amount FeeAmount Represents a fee amount. none
»»» due number The due amount. none
»»» expected number The expected amount, which is sum of paid and due amounts. none
»»» expectedUnapplied number The expected amount, which is the sum of unapplied fee and planned fee due amounts. This value is not always retrieved. It is retrieved when the loan schedule is requestedwith full details. none
»»» paid number The paid amount. none
»» tax Amount Represents a simple installment amount structure. none
»»» due number The due amount. none
»»» expected number The expected amount, which is sum of paid and due amounts. none
»»» paid number The paid amount. none
Ā» feeDetails [InstallmentFeeDetails] The breakdown of the fee amounts that have been applied to the loan account. none
»» amount AmountWithReduced Represents a simple installment amount structure. none
»»» due number The due amount. none
»»» expected number The expected amount, which is sum of paid and due amounts. none
»»» paid number The paid amount. none
»»» reduced number The reduced amount. none
»» encodedKey string The encoded key of the predefined fee, auto generated, unique read-only
»» id string The id of the fee, provided by the client none
»» name string The name of the fee none
»» tax AmountWithReduced Represents a simple installment amount structure. none
Ā» fundersInterestDue number The amount of interest allocated to funders for P2P accounts only. none
Ā» interest InstallmentAllocationElementTaxableAmount Represents an installment allocation element taxable amount structure. none
»» amount Amount Represents a simple installment amount structure. none
»» tax Amount Represents a simple installment amount structure. none
Ā» interestAccrued number The interest accrued calculated on previous repayment closing balance only applicable interest only equal installment products. none
Ā» isPaymentHoliday boolean TRUE if a payment holiday is offered for the installment, FALSE otherwise. none
Ā» lastPaidDate string(date-time) The installment last paid date. none
Ā» lastPenaltyAppliedDate string(date-time) The most recent date on which a penalty was applied to the account. none
Ā» nonScheduledPrincipalBalanceOverpayment number The non-scheduled principal balance overpayment for the loan account none
Ā» notes string Any comment or notes added to the installment. none
Ā» number string The order number of an installment among all the installments generated for a loan. Loan installments are put in ascending order by due date. The order number only applies to the content of a particular JSON response therefore it is not unique. none
Ā» organizationCommissionDue number The amount of interest allocated to organization as commission for P2P accounts only. none
Ā» parentAccountKey string The parent account key of the installment. none
Ā» penalty InstallmentAllocationElementTaxableAmount Represents an installment allocation element taxable amount structure. none
Ā» principal InstallmentAllocationElementAmount Represents an installment allocation element amount structure. none
»» amount Amount Represents a simple installment amount structure. none
Ā» repaidDate string(date-time) The installment repaid date. none
Ā» state string The installment state. none

Enumerated Values

Property Value
state PENDING
state LATE
state PAID
state PARTIALLY_PAID
state GRACE

Response Headers

Status Header Type Format Description
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

Internal Controls Configuration

Retrieve and update the configuration for internal controls.

Internal controls allow you to set up automatic controls for loans, such as the dormancy period, the number of days you want to wait before locking accounts in arrears or automatically locking accounts in arrears when interest, fees, and penalties are more than a percentage of the current principal balance or of the original principal amount. For more information about this resource, see Internal Controls Configuration in our User Guide.

Your user or API consumer must have the View Manage Configuration As Code (GET_MANAGE_CONFIGURATION_AS_CODE) and/or Update Manage Configuration As Code (PUT_MANAGE_CONFIGURATION_AS_CODE) permissions to make GET and/or PUT requests to these configuration as code (CasC) endpoints. For more information about CasC, seeĀ Configuration as Code Overview.

get (Internal Controls Configuration)

Code samples

# You can also use wget
curl -X GET /configuration/internalcontrols.yaml \
  -H 'Accept: application/vnd.mambu.v2+yaml'

GET /configuration/internalcontrols.yaml HTTP/1.1

Accept: application/vnd.mambu.v2+yaml

var headers = {
  'Accept':'application/vnd.mambu.v2+yaml'

};

$.ajax({
  url: '/configuration/internalcontrols.yaml',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+yaml'
}

result = RestClient.get '/configuration/internalcontrols.yaml',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+yaml'
}

r = requests.get('/configuration/internalcontrols.yaml', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+yaml',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/configuration/internalcontrols.yaml', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/configuration/internalcontrols.yaml");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+yaml"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/configuration/internalcontrols.yaml", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /configuration/internalcontrols.yaml

Get internal controls configuration

Example responses

an array of internal controls

---
loanExposure:
  exposureType: "SUM_OF_LOANS"
  exposureAmount: 25000.00
assignmentConstraints:
- "BRANCH"
- "CENTRE"
- "CREDIT_OFFICER"
allowMultipleLoans: true
allowMultipleGroupMemberships: true
duplicateClientFieldsConfiguration:
  duplicateClientChecks:
  - "DOCUMENT_ID_AND_TYPE"
  - "HOME_PHONE"
  - "MOBILE_PHONE"
  - "EMAIL"
  - "FIRST_NAME_AND_LAST_NAME"
  - "LAST_NAME_AND_DATE_OF_BIRTH"
  duplicateClientConstraintAction: "ERROR"
arrearsDaysBeforeWriteOff: 30
maxAllowedUndoClosurePeriod: 60
defaultClientState: "PENDING_APPROVAL"
defaultLineOfCreditState: "PENDING_APPROVAL"
groupSizeLimit:
  groupSizeLimitType: "HARD"
  minGroupSizeLimit: 10
  maxGroupSizeLimit: 20
approvalDisbursalTwoManRuleEnabled: true
availableDashboardSections:
- "CLIENTS"
- "CURRENT_TILLS"
- "FAVOURITE_VIEWS"
- "INDICATORS"
- "LATEST_ACTIVITY"
- "TASKS"
- "UPCOMING_REPAYMENTS"

401 invalid credentials

{
    "errors": [
        {
            "errorCode": 2,
            "errorSource": "credentials",
            "errorReason": "INVALID_CREDENTIALS"
        }
    ]
}

403 forbidden

{
    "errors": [
        {
            "errorCode": 15,
            "errorSource": "not authorized",
            "errorReason": "INVALID_PERMISSIONS"
        }
    ]
}

404 not found

{
    "errors": [
        {
            "errorCode": 3,
            "errorSource": "server",
            "errorReason": "INVALID_API_OPERATION"
        }
    ]
}

Responses

Status Meaning Description Schema
200 OK Internal controls configuration returned. InternalControlsConfiguration
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Internal controls configuration details not found. ErrorResponse

update (Internal Controls Configuration)

Code samples

# You can also use wget
curl -X PUT /configuration/internalcontrols.yaml \
  -H 'Content-Type: application/yaml' \
  -H 'Accept: application/vnd.mambu.v2+yaml'

PUT /configuration/internalcontrols.yaml HTTP/1.1

Content-Type: application/yaml
Accept: application/vnd.mambu.v2+yaml

var headers = {
  'Content-Type':'application/yaml',
  'Accept':'application/vnd.mambu.v2+yaml'

};

$.ajax({
  url: '/configuration/internalcontrols.yaml',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/yaml',
  'Accept' => 'application/vnd.mambu.v2+yaml'
}

result = RestClient.put '/configuration/internalcontrols.yaml',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/yaml',
  'Accept': 'application/vnd.mambu.v2+yaml'
}

r = requests.put('/configuration/internalcontrols.yaml', params={

}, headers = headers)

print r.json()

 'application/yaml',
    'Accept' => 'application/vnd.mambu.v2+yaml',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PUT','/configuration/internalcontrols.yaml', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/configuration/internalcontrols.yaml");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/yaml"},
        "Accept": []string{"application/vnd.mambu.v2+yaml"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/configuration/internalcontrols.yaml", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /configuration/internalcontrols.yaml

Update internal controls configuration

Body parameter

an array of internal controls

---
loanExposure:
  exposureType: "SUM_OF_LOANS"
  exposureAmount: 25000.00
assignmentConstraints:
- "BRANCH"
- "CENTRE"
- "CREDIT_OFFICER"
allowMultipleLoans: true
allowMultipleGroupMemberships: true
duplicateClientFieldsConfiguration:
  duplicateClientChecks:
  - "DOCUMENT_ID_AND_TYPE"
  - "HOME_PHONE"
  - "MOBILE_PHONE"
  - "EMAIL"
  - "FIRST_NAME_AND_LAST_NAME"
  - "LAST_NAME_AND_DATE_OF_BIRTH"
  duplicateClientConstraintAction: "ERROR"
arrearsDaysBeforeWriteOff: 30
maxAllowedUndoClosurePeriod: 60
defaultClientState: "PENDING_APPROVAL"
defaultLineOfCreditState: "PENDING_APPROVAL"
groupSizeLimit:
  groupSizeLimitType: "HARD"
  minGroupSizeLimit: 10
  maxGroupSizeLimit: 20
approvalDisbursalTwoManRuleEnabled: true
availableDashboardSections:
- "CLIENTS"
- "CURRENT_TILLS"
- "FAVOURITE_VIEWS"
- "INDICATORS"
- "LATEST_ACTIVITY"
- "TASKS"
- "UPCOMING_REPAYMENTS"

Parameters

Name Type Description In
body InternalControlsConfiguration Model representation of the internal controls configuration. body

Example responses

200 success response

400 error response

{
    "errors": [
        {
            "errorCode": 0,
            "errorSource": "human-readable description of the error",
            "errorReason": "SOURCE_OF_ERROR"
        }
    ]
}

401 invalid credentials

{
    "errors": [
        {
            "errorCode": 2,
            "errorSource": "credentials",
            "errorReason": "INVALID_CREDENTIALS"
        }
    ]
}

403 forbidden

{
    "errors": [
        {
            "errorCode": 15,
            "errorSource": "not authorized",
            "errorReason": "INVALID_PERMISSIONS"
        }
    ]
}

404 not found

{
    "errors": [
        {
            "errorCode": 3,
            "errorSource": "server",
            "errorReason": "INVALID_API_OPERATION"
        }
    ]
}

Responses

Status Meaning Description Schema
200 OK Internal controls configuration updated. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Internal controls configuration details not found. ErrorResponse

Response Schema

Journal Entries

Create GL Journal Entries.

getAll (Journal Entries)

Code samples

# You can also use wget
curl -X GET /gljournalentries?from=2019-08-24&to=2019-08-24 \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /gljournalentries?from=2019-08-24&to=2019-08-24 HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/gljournalentries',
  method: 'get',
  data: '?from=2019-08-24&to=2019-08-24',
  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/gljournalentries',
  params: {
  'from' => 'string(date)',
'to' => 'string(date)'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/gljournalentries', params={
  'from': '2019-08-24',  'to': '2019-08-24'
}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/gljournalentries', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/gljournalentries?from=2019-08-24&to=2019-08-24");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/gljournalentries", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /gljournalentries

Get general ledger journal entries

Parameters

Name Type Description In
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query
from (required) string(date) The booking date to search from for general ledger journal entries. query
to (required) string(date) The booking date to search to for general ledger journal entries. query
branchId string The branch ID to filter general ledger journal entries by. query
glAccountId string The general ledger account ID to filter general ledger journal entries by. query

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF

Example responses

200 Response

[
  {
    "accountKey": "string",
    "amount": 0,
    "assignedBranchKey": "string",
    "bookingDate": "2016-09-06T13:37:50+03:00",
    "creationDate": "2016-09-06T13:37:50+03:00",
    "encodedKey": "string",
    "entryID": 0,
    "foreignAmount": {
      "accountingRate": {
        "encodedKey": "string",
        "endDate": "2016-09-06T13:37:50+03:00",
        "fromCurrencyCode": "string",
        "rate": 0,
        "startDate": "2016-09-06T13:37:50+03:00",
        "toCurrencyCode": "string"
      },
      "amount": 0,
      "currency": {
        "code": "AED",
        "currencyCode": "string"
      }
    },
    "glAccount": {
      "activated": true,
      "allowManualJournalEntries": true,
      "balance": 0,
      "creationDate": "2016-09-06T13:37:50+03:00",
      "currency": {
        "code": "AED",
        "currencyCode": "string"
      },
      "description": "string",
      "encodedKey": "string",
      "glCode": "string",
      "lastModifiedDate": "2016-09-06T13:37:50+03:00",
      "migrationEventKey": "string",
      "name": "string",
      "stripTrailingZeros": true,
      "type": "ASSET",
      "usage": "DETAIL"
    },
    "notes": "string",
    "productKey": "string",
    "productType": "LOAN",
    "reversalEntryKey": "string",
    "transactionId": "string",
    "type": "DEBIT",
    "userKey": "string"
  }
]

Responses

Status Meaning Description Schema
200 OK General ledger journal entries list returned. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [GLJournalEntry] [Represents a general ledger journal entry.] none
Ā» accountKey string The account associated with this journal entry. Null if the journal entry is not associated to any account. none
Ā» amount number The amount which was debited or credited in the organization's currency. none
Ā» assignedBranchKey string The key of the assigned branch for this general ledger journal entry. none
Ā» bookingDate string(date-time) The date and time when the general ledger journal entry was recorded. none
Ā» creationDate string(date-time) The creation date of the general ledger journal entry. read-only
Ā» encodedKey string The encoded key of the entity, generated, globally unique read-only
Ā» entryID integer(int64) The ID of the general ledger journal entry. read-only
Ā» foreignAmount GLJournalEntryForeignAmount Represents the details of the general ledger journal entry amount posted in foreign currency. none
»» accountingRate AccountingRate Represents the conversion rate used in accounting to convert amounts from one currency to organisation currency none
»»» encodedKey string The encoded key of the accounting rate, auto generated, unique read-only
»»» endDate string(date-time) Rate validity end date (as Organization Time) none
»»» fromCurrencyCode string Organisation currency code none
»»» rate number Value of rate to be used for accounting conversions none
»»» startDate string(date-time) Rate validity start date (as Organization Time) none
»»» toCurrencyCode string Foreign currency code none
»» amount number The amount of an accounting entry in foreign currency. none
»» currency Currency Represents a currency. To represent a fiat currency, the code value and the currencyCode value must be the ISO-4217 currency code of the fiat currency. To represent a non-fiat currency, the code value must be NON_FIAT and the currencyCode value must be the currency code of the non-fiat currency. none
»»» code string Fiat(ISO-4217) currency code or NON_FIAT for non fiat currencies. none
»»» currencyCode string Currency code for NON_FIAT currency. none
Ā» glAccount GLAccount Represents a general ledger account. none
»» activated boolean TRUE if the account is activated and may be used, FALSE otherwise. none
»» allowManualJournalEntries boolean TRUE if manual journal entries are allowed, FALSE otherwise. none
»» balance number If the GET /glaccounts API request contains both parameters from={date}&to={date}, the value of balance is equal to Net Change. If the request only contains to={date}, or none of the two, the balance is equal to Closing Balance. none
»» creationDate string(date-time) The creation date for this account, which is stored as UTC. none
»» currency Currency Represents a currency. To represent a fiat currency, the code value and the currencyCode value must be the ISO-4217 currency code of the fiat currency. To represent a non-fiat currency, the code value must be NON_FIAT and the currencyCode value must be the currency code of the non-fiat currency. none
»» description string A description of the general ledger account. none
»» encodedKey string The encoded key of the entity, generated, globally unique read-only
»» glCode string The general ledger code used to identify different account types. Also used for grouping and categorizing accounts. For example: an account code of '3201' is considered a subtype of '3200'. none
»» lastModifiedDate string(date-time) The last modification date and time, which is stored as UTC. none
»» migrationEventKey string The data migration event key if the general ledger account was created as a part of a data migration event. none
»» name string The name of the general ledger account. none
»» stripTrailingZeros boolean TRUE if trailing zeros are stripped, FALSE otherwise. none
»» type string The general ledger account type. none
»» usage string The usage type of the general ledger account. DETAIL accounts are used to stores transaction balances. HEADER accounts are used to organise and group detail accounts for reporting purposes. none
Ā» notes string Optional notes entered by the user when they performed the journal entry. none
Ā» productKey string The product associated with this journal entry. Null if the journal entry is not associated with any product. none
Ā» productType string The product type that is referenced by the account key. Null if the journal entry is not associated to any product. none
Ā» reversalEntryKey string The entry key of the general ledger journal entry that reverses this general ledger journal entry. Null if the general ledger journal entry isn't reversed. none
Ā» transactionId string The transation ID, which is not unique. none
Ā» type string The general ledger journal entry type, which may be debit or credit. none
Ā» userKey string The encoded key of the user that performed the transaction. none

Enumerated Values

Property Value
code AED
code AFN
code ALL
code AMD
code ANG
code AOA
code ARS
code AUD
code AWG
code AZN
code BAM
code BBD
code BDT
code BGN
code BHD
code BIF
code BMD
code BND
code BOB
code BOV
code BRL
code BSD
code BTN
code BWP
code BYR
code BYN
code BZD
code CAD
code CDF
code CHE
code CHF
code CHW
code CLF
code CLP
code CNY
code COP
code COU
code CRC
code CUC
code CUP
code CVE
code CZK
code DJF
code DKK
code DOP
code DZD
code EGP
code ERN
code ETB
code EUR
code FJD
code FKP
code GBP
code GEL
code GHS
code GIP
code GMD
code GNF
code GTQ
code GYD
code HKD
code HNL
code HRK
code HTG
code HUF
code IDR
code ILS
code INR
code IQD
code IRR
code ISK
code JMD
code JOD
code JPY
code KES
code KGS
code KHR
code KMF
code KPW
code KRW
code KWD
code KYD
code KZT
code LAK
code LBP
code LKR
code LRD
code LSL
code LTL
code LVL
code LYD
code MAD
code MDL
code MGA
code MKD
code MMK
code MNT
code MOP
code MRO
code MRU
code MUR
code MVR
code MWK
code MXN
code MXV
code MYR
code MZN
code NAD
code NGN
code NIO
code NOK
code NPR
code NZD
code OMR
code PAB
code PEN
code PGK
code PHP
code PKR
code PLN
code PYG
code QAR
code RON
code RSD
code RUB
code RWF
code SAR
code SBD
code SCR
code SDG
code SEK
code SGD
code SHP
code SLL
code SOS
code SRD
code STD
code STN
code SVC
code SYP
code SZL
code THB
code TJS
code TMT
code TND
code TOP
code TRY
code TTD
code TWD
code TZS
code UAH
code UGX
code USD
code USN
code UYI
code UYU
code UYW
code UZS
code VED
code VEF
code VES
code VND
code VUV
code WST
code XAG
code XAU
code XAF
code XBA
code XBB
code XBC
code XBD
code XCD
code XDR
code XOF
code XPD
code XPF
code XPT
code XSU
code XTS
code XUA
code XXX
code YER
code ZAR
code ZIG
code ZMK
code ZWL
code ZMW
code SSP
code NON_FIAT
type ASSET
type LIABILITY
type EQUITY
type INCOME
type EXPENSE
usage DETAIL
usage HEADER
productType LOAN
productType SAVINGS
type DEBIT
type CREDIT

Response Headers

Status Header Type Format Description
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

create (Journal Entries)

Code samples

# You can also use wget
curl -X POST /gljournalentries \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /gljournalentries HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/gljournalentries',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/gljournalentries',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/gljournalentries', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/gljournalentries', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/gljournalentries");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/gljournalentries", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /gljournalentries

Create general ledger journal entries.

Body parameter

{
  "branchId": "string",
  "credits": [
    {
      "amount": 0,
      "glAccount": "string"
    }
  ],
  "date": "2016-09-06T13:37:50+03:00",
  "debits": [
    {
      "amount": 0,
      "glAccount": "string"
    }
  ],
  "notes": "string",
  "transactionId": "string"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
body (required) PostGLJournalEntriesDTO Represents the information to create general ledger journal entries. body

Example responses

201 Response

[
  {
    "accountKey": "string",
    "amount": 0,
    "assignedBranchKey": "string",
    "bookingDate": "2016-09-06T13:37:50+03:00",
    "creationDate": "2016-09-06T13:37:50+03:00",
    "encodedKey": "string",
    "entryID": 0,
    "foreignAmount": {
      "accountingRate": {
        "encodedKey": "string",
        "endDate": "2016-09-06T13:37:50+03:00",
        "fromCurrencyCode": "string",
        "rate": 0,
        "startDate": "2016-09-06T13:37:50+03:00",
        "toCurrencyCode": "string"
      },
      "amount": 0,
      "currency": {
        "code": "AED",
        "currencyCode": "string"
      }
    },
    "glAccount": {
      "activated": true,
      "allowManualJournalEntries": true,
      "balance": 0,
      "creationDate": "2016-09-06T13:37:50+03:00",
      "currency": {
        "code": "AED",
        "currencyCode": "string"
      },
      "description": "string",
      "encodedKey": "string",
      "glCode": "string",
      "lastModifiedDate": "2016-09-06T13:37:50+03:00",
      "migrationEventKey": "string",
      "name": "string",
      "stripTrailingZeros": true,
      "type": "ASSET",
      "usage": "DETAIL"
    },
    "notes": "string",
    "productKey": "string",
    "productType": "LOAN",
    "reversalEntryKey": "string",
    "transactionId": "string",
    "type": "DEBIT",
    "userKey": "string"
  }
]

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
201 Created General ledger journal entries have been created. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

Response Schema

Status Code 201

Name Type Description Restrictions
anonymous [GLJournalEntry] [Represents a general ledger journal entry.] none
Ā» accountKey string The account associated with this journal entry. Null if the journal entry is not associated to any account. none
Ā» amount number The amount which was debited or credited in the organization's currency. none
Ā» assignedBranchKey string The key of the assigned branch for this general ledger journal entry. none
Ā» bookingDate string(date-time) The date and time when the general ledger journal entry was recorded. none
Ā» creationDate string(date-time) The creation date of the general ledger journal entry. read-only
Ā» encodedKey string The encoded key of the entity, generated, globally unique read-only
Ā» entryID integer(int64) The ID of the general ledger journal entry. read-only
Ā» foreignAmount GLJournalEntryForeignAmount Represents the details of the general ledger journal entry amount posted in foreign currency. none
»» accountingRate AccountingRate Represents the conversion rate used in accounting to convert amounts from one currency to organisation currency none
»»» encodedKey string The encoded key of the accounting rate, auto generated, unique read-only
»»» endDate string(date-time) Rate validity end date (as Organization Time) none
»»» fromCurrencyCode string Organisation currency code none
»»» rate number Value of rate to be used for accounting conversions none
»»» startDate string(date-time) Rate validity start date (as Organization Time) none
»»» toCurrencyCode string Foreign currency code none
»» amount number The amount of an accounting entry in foreign currency. none
»» currency Currency Represents a currency. To represent a fiat currency, the code value and the currencyCode value must be the ISO-4217 currency code of the fiat currency. To represent a non-fiat currency, the code value must be NON_FIAT and the currencyCode value must be the currency code of the non-fiat currency. none
»»» code string Fiat(ISO-4217) currency code or NON_FIAT for non fiat currencies. none
»»» currencyCode string Currency code for NON_FIAT currency. none
Ā» glAccount GLAccount Represents a general ledger account. none
»» activated boolean TRUE if the account is activated and may be used, FALSE otherwise. none
»» allowManualJournalEntries boolean TRUE if manual journal entries are allowed, FALSE otherwise. none
»» balance number If the GET /glaccounts API request contains both parameters from={date}&to={date}, the value of balance is equal to Net Change. If the request only contains to={date}, or none of the two, the balance is equal to Closing Balance. none
»» creationDate string(date-time) The creation date for this account, which is stored as UTC. none
»» currency Currency Represents a currency. To represent a fiat currency, the code value and the currencyCode value must be the ISO-4217 currency code of the fiat currency. To represent a non-fiat currency, the code value must be NON_FIAT and the currencyCode value must be the currency code of the non-fiat currency. none
»» description string A description of the general ledger account. none
»» encodedKey string The encoded key of the entity, generated, globally unique read-only
»» glCode string The general ledger code used to identify different account types. Also used for grouping and categorizing accounts. For example: an account code of '3201' is considered a subtype of '3200'. none
»» lastModifiedDate string(date-time) The last modification date and time, which is stored as UTC. none
»» migrationEventKey string The data migration event key if the general ledger account was created as a part of a data migration event. none
»» name string The name of the general ledger account. none
»» stripTrailingZeros boolean TRUE if trailing zeros are stripped, FALSE otherwise. none
»» type string The general ledger account type. none
»» usage string The usage type of the general ledger account. DETAIL accounts are used to stores transaction balances. HEADER accounts are used to organise and group detail accounts for reporting purposes. none
Ā» notes string Optional notes entered by the user when they performed the journal entry. none
Ā» productKey string The product associated with this journal entry. Null if the journal entry is not associated with any product. none
Ā» productType string The product type that is referenced by the account key. Null if the journal entry is not associated to any product. none
Ā» reversalEntryKey string The entry key of the general ledger journal entry that reverses this general ledger journal entry. Null if the general ledger journal entry isn't reversed. none
Ā» transactionId string The transation ID, which is not unique. none
Ā» type string The general ledger journal entry type, which may be debit or credit. none
Ā» userKey string The encoded key of the user that performed the transaction. none

Enumerated Values

Property Value
code AED
code AFN
code ALL
code AMD
code ANG
code AOA
code ARS
code AUD
code AWG
code AZN
code BAM
code BBD
code BDT
code BGN
code BHD
code BIF
code BMD
code BND
code BOB
code BOV
code BRL
code BSD
code BTN
code BWP
code BYR
code BYN
code BZD
code CAD
code CDF
code CHE
code CHF
code CHW
code CLF
code CLP
code CNY
code COP
code COU
code CRC
code CUC
code CUP
code CVE
code CZK
code DJF
code DKK
code DOP
code DZD
code EGP
code ERN
code ETB
code EUR
code FJD
code FKP
code GBP
code GEL
code GHS
code GIP
code GMD
code GNF
code GTQ
code GYD
code HKD
code HNL
code HRK
code HTG
code HUF
code IDR
code ILS
code INR
code IQD
code IRR
code ISK
code JMD
code JOD
code JPY
code KES
code KGS
code KHR
code KMF
code KPW
code KRW
code KWD
code KYD
code KZT
code LAK
code LBP
code LKR
code LRD
code LSL
code LTL
code LVL
code LYD
code MAD
code MDL
code MGA
code MKD
code MMK
code MNT
code MOP
code MRO
code MRU
code MUR
code MVR
code MWK
code MXN
code MXV
code MYR
code MZN
code NAD
code NGN
code NIO
code NOK
code NPR
code NZD
code OMR
code PAB
code PEN
code PGK
code PHP
code PKR
code PLN
code PYG
code QAR
code RON
code RSD
code RUB
code RWF
code SAR
code SBD
code SCR
code SDG
code SEK
code SGD
code SHP
code SLL
code SOS
code SRD
code STD
code STN
code SVC
code SYP
code SZL
code THB
code TJS
code TMT
code TND
code TOP
code TRY
code TTD
code TWD
code TZS
code UAH
code UGX
code USD
code USN
code UYI
code UYU
code UYW
code UZS
code VED
code VEF
code VES
code VND
code VUV
code WST
code XAG
code XAU
code XAF
code XBA
code XBB
code XBC
code XBD
code XCD
code XDR
code XOF
code XPD
code XPF
code XPT
code XSU
code XTS
code XUA
code XXX
code YER
code ZAR
code ZIG
code ZMK
code ZWL
code ZMW
code SSP
code NON_FIAT
type ASSET
type LIABILITY
type EQUITY
type INCOME
type EXPENSE
usage DETAIL
usage HEADER
productType LOAN
productType SAVINGS
type DEBIT
type CREDIT

Code samples

# You can also use wget
curl -X POST /gljournalentries:search \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json'

POST /gljournalentries:search HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/gljournalentries:search',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.post '/gljournalentries:search',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.post('/gljournalentries:search', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/gljournalentries:search', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/gljournalentries:search");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/gljournalentries:search", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /gljournalentries:search

Search for general ledger journal entries

For more information on performing searches, please read the Searching for Records section above.

Body parameter

{
  "filterCriteria": [
    {
      "field": "productType",
      "operator": "EQUALS",
      "secondValue": "string",
      "value": "string",
      "values": [
        "string"
      ]
    }
  ],
  "sortingCriteria": {
    "field": "encodedKey",
    "order": "ASC"
  }
}

Parameters

Name Type Description In
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query
cursor string Pagination, cursor to start searching at when retrieving elements, used in combination with limit to paginate results query
body (required) GLJournalEntrySearchCriteria Represents the filtering criteria and sorting criterion to search for general ledger journal entries. body

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF

Example responses

200 Response

[
  {
    "accountKey": "string",
    "amount": 0,
    "assignedBranchKey": "string",
    "bookingDate": "2016-09-06T13:37:50+03:00",
    "creationDate": "2016-09-06T13:37:50+03:00",
    "encodedKey": "string",
    "entryID": 0,
    "foreignAmount": {
      "accountingRate": {
        "encodedKey": "string",
        "endDate": "2016-09-06T13:37:50+03:00",
        "fromCurrencyCode": "string",
        "rate": 0,
        "startDate": "2016-09-06T13:37:50+03:00",
        "toCurrencyCode": "string"
      },
      "amount": 0,
      "currency": {
        "code": "AED",
        "currencyCode": "string"
      }
    },
    "glAccount": {
      "activated": true,
      "allowManualJournalEntries": true,
      "balance": 0,
      "creationDate": "2016-09-06T13:37:50+03:00",
      "currency": {
        "code": "AED",
        "currencyCode": "string"
      },
      "description": "string",
      "encodedKey": "string",
      "glCode": "string",
      "lastModifiedDate": "2016-09-06T13:37:50+03:00",
      "migrationEventKey": "string",
      "name": "string",
      "stripTrailingZeros": true,
      "type": "ASSET",
      "usage": "DETAIL"
    },
    "notes": "string",
    "productKey": "string",
    "productType": "LOAN",
    "reversalEntryKey": "string",
    "transactionId": "string",
    "type": "DEBIT",
    "userKey": "string"
  }
]

Responses

Status Meaning Description Schema
200 OK The general ledger journal entry search returned values. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [GLJournalEntry] [Represents a general ledger journal entry.] none
Ā» accountKey string The account associated with this journal entry. Null if the journal entry is not associated to any account. none
Ā» amount number The amount which was debited or credited in the organization's currency. none
Ā» assignedBranchKey string The key of the assigned branch for this general ledger journal entry. none
Ā» bookingDate string(date-time) The date and time when the general ledger journal entry was recorded. none
Ā» creationDate string(date-time) The creation date of the general ledger journal entry. read-only
Ā» encodedKey string The encoded key of the entity, generated, globally unique read-only
Ā» entryID integer(int64) The ID of the general ledger journal entry. read-only
Ā» foreignAmount GLJournalEntryForeignAmount Represents the details of the general ledger journal entry amount posted in foreign currency. none
»» accountingRate AccountingRate Represents the conversion rate used in accounting to convert amounts from one currency to organisation currency none
»»» encodedKey string The encoded key of the accounting rate, auto generated, unique read-only
»»» endDate string(date-time) Rate validity end date (as Organization Time) none
»»» fromCurrencyCode string Organisation currency code none
»»» rate number Value of rate to be used for accounting conversions none
»»» startDate string(date-time) Rate validity start date (as Organization Time) none
»»» toCurrencyCode string Foreign currency code none
»» amount number The amount of an accounting entry in foreign currency. none
»» currency Currency Represents a currency. To represent a fiat currency, the code value and the currencyCode value must be the ISO-4217 currency code of the fiat currency. To represent a non-fiat currency, the code value must be NON_FIAT and the currencyCode value must be the currency code of the non-fiat currency. none
»»» code string Fiat(ISO-4217) currency code or NON_FIAT for non fiat currencies. none
»»» currencyCode string Currency code for NON_FIAT currency. none
Ā» glAccount GLAccount Represents a general ledger account. none
»» activated boolean TRUE if the account is activated and may be used, FALSE otherwise. none
»» allowManualJournalEntries boolean TRUE if manual journal entries are allowed, FALSE otherwise. none
»» balance number If the GET /glaccounts API request contains both parameters from={date}&to={date}, the value of balance is equal to Net Change. If the request only contains to={date}, or none of the two, the balance is equal to Closing Balance. none
»» creationDate string(date-time) The creation date for this account, which is stored as UTC. none
»» currency Currency Represents a currency. To represent a fiat currency, the code value and the currencyCode value must be the ISO-4217 currency code of the fiat currency. To represent a non-fiat currency, the code value must be NON_FIAT and the currencyCode value must be the currency code of the non-fiat currency. none
»» description string A description of the general ledger account. none
»» encodedKey string The encoded key of the entity, generated, globally unique read-only
»» glCode string The general ledger code used to identify different account types. Also used for grouping and categorizing accounts. For example: an account code of '3201' is considered a subtype of '3200'. none
»» lastModifiedDate string(date-time) The last modification date and time, which is stored as UTC. none
»» migrationEventKey string The data migration event key if the general ledger account was created as a part of a data migration event. none
»» name string The name of the general ledger account. none
»» stripTrailingZeros boolean TRUE if trailing zeros are stripped, FALSE otherwise. none
»» type string The general ledger account type. none
»» usage string The usage type of the general ledger account. DETAIL accounts are used to stores transaction balances. HEADER accounts are used to organise and group detail accounts for reporting purposes. none
Ā» notes string Optional notes entered by the user when they performed the journal entry. none
Ā» productKey string The product associated with this journal entry. Null if the journal entry is not associated with any product. none
Ā» productType string The product type that is referenced by the account key. Null if the journal entry is not associated to any product. none
Ā» reversalEntryKey string The entry key of the general ledger journal entry that reverses this general ledger journal entry. Null if the general ledger journal entry isn't reversed. none
Ā» transactionId string The transation ID, which is not unique. none
Ā» type string The general ledger journal entry type, which may be debit or credit. none
Ā» userKey string The encoded key of the user that performed the transaction. none

Enumerated Values

Property Value
code AED
code AFN
code ALL
code AMD
code ANG
code AOA
code ARS
code AUD
code AWG
code AZN
code BAM
code BBD
code BDT
code BGN
code BHD
code BIF
code BMD
code BND
code BOB
code BOV
code BRL
code BSD
code BTN
code BWP
code BYR
code BYN
code BZD
code CAD
code CDF
code CHE
code CHF
code CHW
code CLF
code CLP
code CNY
code COP
code COU
code CRC
code CUC
code CUP
code CVE
code CZK
code DJF
code DKK
code DOP
code DZD
code EGP
code ERN
code ETB
code EUR
code FJD
code FKP
code GBP
code GEL
code GHS
code GIP
code GMD
code GNF
code GTQ
code GYD
code HKD
code HNL
code HRK
code HTG
code HUF
code IDR
code ILS
code INR
code IQD
code IRR
code ISK
code JMD
code JOD
code JPY
code KES
code KGS
code KHR
code KMF
code KPW
code KRW
code KWD
code KYD
code KZT
code LAK
code LBP
code LKR
code LRD
code LSL
code LTL
code LVL
code LYD
code MAD
code MDL
code MGA
code MKD
code MMK
code MNT
code MOP
code MRO
code MRU
code MUR
code MVR
code MWK
code MXN
code MXV
code MYR
code MZN
code NAD
code NGN
code NIO
code NOK
code NPR
code NZD
code OMR
code PAB
code PEN
code PGK
code PHP
code PKR
code PLN
code PYG
code QAR
code RON
code RSD
code RUB
code RWF
code SAR
code SBD
code SCR
code SDG
code SEK
code SGD
code SHP
code SLL
code SOS
code SRD
code STD
code STN
code SVC
code SYP
code SZL
code THB
code TJS
code TMT
code TND
code TOP
code TRY
code TTD
code TWD
code TZS
code UAH
code UGX
code USD
code USN
code UYI
code UYU
code UYW
code UZS
code VED
code VEF
code VES
code VND
code VUV
code WST
code XAG
code XAU
code XAF
code XBA
code XBB
code XBC
code XBD
code XCD
code XDR
code XOF
code XPD
code XPF
code XPT
code XSU
code XTS
code XUA
code XXX
code YER
code ZAR
code ZIG
code ZMK
code ZWL
code ZMW
code SSP
code NON_FIAT
type ASSET
type LIABILITY
type EQUITY
type INCOME
type EXPENSE
usage DETAIL
usage HEADER
productType LOAN
productType SAVINGS
type DEBIT
type CREDIT

Response Headers

Status Header Type Format Description
200 Items-Next-Cursor string The next cursor to be used by the subsequent calls
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

Loan Account Collateral Assets

Executes a background task which re-evaluates the collateral amount in the loan currency with the most recent exchange rates based on the original currency and amount. For more information, see Adding collateral assets to loans.

reevaluateCollateralAssets (Loan Account Collateral Assets)

Code samples

# You can also use wget
curl -X POST /loans:reevaluateCollateral \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /loans:reevaluateCollateral HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/loans:reevaluateCollateral',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/loans:reevaluateCollateral',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/loans:reevaluateCollateral', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/loans:reevaluateCollateral', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans:reevaluateCollateral");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/loans:reevaluateCollateral", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /loans:reevaluateCollateral

Update collateral asset amounts

To query the status and results of the background operation, use /bulks/{bulkProcessKey}.

Body parameter

{
  "branchKeys": [
    "string"
  ],
  "currencies": [
    "string"
  ],
  "productKeys": [
    "string"
  ]
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
body (required) CollateralAssetFilter The request containing the fields to filter out which loan accounts to recalculate with the background process. body

Example responses

202 Response

{
  "bulkProcessKey": "string",
  "status": "QUEUED"
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
202 Accepted Update collateral asset amounts CollateralAssetsReevaluationResponse
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

Loan Account Funding

Allows you to operate with the loan account funding sources. This relates to the peer-to-peer (P2P) lending feature. For more information, see Funding Sources - P2P Lending in our User Guide.

createLoanAccountFundingSources (Loan Account Funding)

Code samples

# You can also use wget
curl -X POST /loans/{loanAccountId}/funding \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /loans/{loanAccountId}/funding HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/loans/{loanAccountId}/funding',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/loans/{loanAccountId}/funding',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/loans/{loanAccountId}/funding', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/loans/{loanAccountId}/funding', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans/{loanAccountId}/funding");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/loans/{loanAccountId}/funding", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /loans/{loanAccountId}/funding

Create funding sources for a loan account

Body parameter

[
  {
    "amount": 0,
    "assetName": "string",
    "depositAccountKey": "string",
    "guarantorKey": "string",
    "guarantorType": "CLIENT",
    "id": "string",
    "interestCommission": 0,
    "sharePercentage": 0
  }
]

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
loanAccountId (required) string The ID or encoded key of the loan account. path
body (required) InvestorFund The funding sources to create for loan account. body

Example responses

201 Response

[
  {
    "amount": 0,
    "assetName": "string",
    "depositAccountKey": "string",
    "encodedKey": "string",
    "guarantorKey": "string",
    "guarantorType": "CLIENT",
    "id": "string",
    "interestCommission": 0,
    "sharePercentage": 0
  }
]

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
201 Created Created list of the loan account funding sources. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan account not found. ErrorResponse

Response Schema

Status Code 201

Name Type Description Restrictions
anonymous [InvestorFund] [Contains the details about an investor fund including fields like encoded key, guarantor type, amount and guarantor key] none
Ā» amount (required) number The amount used by the client for the guaranty none
Ā» assetName string The name of a value the client guarantees with (populated when the guaranty type is ASSET) none
Ā» depositAccountKey string The key of the deposit account used by the guarantor (populated when the guaranty type is GUARANTOR). It can be null. none
Ā» encodedKey string The encoded key of the entity, generated, globally unique read-only
Ā» guarantorKey (required) string The key of the client/group used as the guarantor. none
Ā» guarantorType (required) string The type of the guarantor (client/group) none
Ā» id string Investor fund unique identifier. All versions of an investor fund will have same id. none
Ā» interestCommission number The constraint minimum value none
Ā» sharePercentage number Percentage of loan shares this investor owns none

Enumerated Values

Property Value
guarantorType CLIENT
guarantorType GROUP

updateLoanAccountFundingSources (Loan Account Funding)

Code samples

# You can also use wget
curl -X PUT /loans/{loanAccountId}/funding \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json'

PUT /loans/{loanAccountId}/funding HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/loans/{loanAccountId}/funding',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.put '/loans/{loanAccountId}/funding',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.put('/loans/{loanAccountId}/funding', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PUT','/loans/{loanAccountId}/funding', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans/{loanAccountId}/funding");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/loans/{loanAccountId}/funding", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /loans/{loanAccountId}/funding

Update loan account funding sources

Body parameter

[
  {
    "amount": 0,
    "assetName": "string",
    "depositAccountKey": "string",
    "guarantorKey": "string",
    "guarantorType": "CLIENT",
    "id": "string",
    "interestCommission": 0,
    "sharePercentage": 0
  }
]

Parameters

Name Type Description In
loanAccountId (required) string The ID or encoded key of the loan account. path
body (required) InvestorFund The funding sources to update the loan account with. body

Example responses

200 Response

[
  {
    "amount": 0,
    "assetName": "string",
    "depositAccountKey": "string",
    "encodedKey": "string",
    "guarantorKey": "string",
    "guarantorType": "CLIENT",
    "id": "string",
    "interestCommission": 0,
    "sharePercentage": 0
  }
]

Responses

Status Meaning Description Schema
200 OK The updated list of the loan account funding sources. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan account not found. ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [InvestorFund] [Contains the details about an investor fund including fields like encoded key, guarantor type, amount and guarantor key] none
Ā» amount (required) number The amount used by the client for the guaranty none
Ā» assetName string The name of a value the client guarantees with (populated when the guaranty type is ASSET) none
Ā» depositAccountKey string The key of the deposit account used by the guarantor (populated when the guaranty type is GUARANTOR). It can be null. none
Ā» encodedKey string The encoded key of the entity, generated, globally unique read-only
Ā» guarantorKey (required) string The key of the client/group used as the guarantor. none
Ā» guarantorType (required) string The type of the guarantor (client/group) none
Ā» id string Investor fund unique identifier. All versions of an investor fund will have same id. none
Ā» interestCommission number The constraint minimum value none
Ā» sharePercentage number Percentage of loan shares this investor owns none

Enumerated Values

Property Value
guarantorType CLIENT
guarantorType GROUP

deleteFundingSources (Loan Account Funding)

Code samples

# You can also use wget
curl -X DELETE /loans/{loanAccountId}/funding \
  -H 'Accept: application/vnd.mambu.v2+json'

DELETE /loans/{loanAccountId}/funding HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/loans/{loanAccountId}/funding',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.delete '/loans/{loanAccountId}/funding',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.delete('/loans/{loanAccountId}/funding', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('DELETE','/loans/{loanAccountId}/funding', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans/{loanAccountId}/funding");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/loans/{loanAccountId}/funding", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /loans/{loanAccountId}/funding

Delete loan account funding sources

Parameters

Name Type Description In
loanAccountId (required) string The ID or encoded key of the loan account. path

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
204 No Content Deleted all loan account funding sources. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan account not found. ErrorResponse

deleteSingleFundingSource (Loan Account Funding)

Code samples

# You can also use wget
curl -X DELETE /loans/{loanAccountId}/funding/{fundEncodedKey} \
  -H 'Accept: application/vnd.mambu.v2+json'

DELETE /loans/{loanAccountId}/funding/{fundEncodedKey} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/loans/{loanAccountId}/funding/{fundEncodedKey}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.delete '/loans/{loanAccountId}/funding/{fundEncodedKey}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.delete('/loans/{loanAccountId}/funding/{fundEncodedKey}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('DELETE','/loans/{loanAccountId}/funding/{fundEncodedKey}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans/{loanAccountId}/funding/{fundEncodedKey}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/loans/{loanAccountId}/funding/{fundEncodedKey}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /loans/{loanAccountId}/funding/{fundEncodedKey}

Delete loan account funding source

Parameters

Name Type Description In
loanAccountId (required) string The ID or encoded key of the loan account. path
fundEncodedKey (required) string The encoded key of the funding source. path

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
204 No Content Deleted loan account funding source. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan account not found. ErrorResponse

patchFundingSource (Loan Account Funding)

Code samples

# You can also use wget
curl -X PATCH /loans/{loanAccountId}/funding/{fundEncodedKey} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json'

PATCH /loans/{loanAccountId}/funding/{fundEncodedKey} HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/loans/{loanAccountId}/funding/{fundEncodedKey}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.patch '/loans/{loanAccountId}/funding/{fundEncodedKey}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.patch('/loans/{loanAccountId}/funding/{fundEncodedKey}', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PATCH','/loans/{loanAccountId}/funding/{fundEncodedKey}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans/{loanAccountId}/funding/{fundEncodedKey}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PATCH");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/loans/{loanAccountId}/funding/{fundEncodedKey}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PATCH /loans/{loanAccountId}/funding/{fundEncodedKey}

Update loan account funding source

Body parameter

[
  {
    "from": "string",
    "op": "ADD",
    "path": "string",
    "value": {}
  }
]

Parameters

Name Type Description In
loanAccountId (required) string The ID or encoded key of the loan account. path
fundEncodedKey (required) string The encoded key of the funding source. path
body (required) PatchOperation Patch operations to be applied to a resource. body

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
204 No Content Funding source patched. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan account not found. ErrorResponse

Loan Account Planned Fees

These endpoints allow you to manage fees that are planned for future installments of a loan including viewing, updating, deleting and creating new planned fees.

applyPlannedFees (Loan Account Planned Fees)

Code samples

# You can also use wget
curl -X POST /loans/{loanAccountId}/plannedfees:apply \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /loans/{loanAccountId}/plannedfees:apply HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/loans/{loanAccountId}/plannedfees:apply',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/loans/{loanAccountId}/plannedfees:apply',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/loans/{loanAccountId}/plannedfees:apply', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/loans/{loanAccountId}/plannedfees:apply', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans/{loanAccountId}/plannedfees:apply");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/loans/{loanAccountId}/plannedfees:apply", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /loans/{loanAccountId}/plannedfees:apply

ApplY planned fees from the past installments, as backdated or from future installments, on the first pending installment

Body parameter

{
  "encodedKeys": [
    "string"
  ]
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
loanAccountId (required) string The ID or encoded key of the loan account. path
body (required) PlannedFeeKeys List of all loan account's planned installment fees to be applied. body

Example responses

201 Response

[
  {
    "_Transaction_Details_Transaction": {
      "ACCOUNT_NAME_TRANSACTION_CHANNEL": "string",
      "ACCOUNT_NUMBER_TRANSACTION_CHANN": "string",
      "BANK_NUMBER_TRANSACTION_CHANNEL_": "string",
      "CHECK_NUMBER_TRANSACTION_CHANNEL": "string",
      "IDENTIFIER_TRANSACTION_CHANNEL_I": "string",
      "RECEPIT_NUMBER_TRANSACTION_CHANN": "string",
      "ROUTING_NUMBER_TRANSACTION_CHANN": "string"
    },
    "accountBalances": {
      "advancePosition": 0,
      "arrearsPosition": 0,
      "expectedPrincipalRedraw": 0,
      "principalBalance": 0,
      "redrawBalance": 0,
      "totalBalance": 0
    },
    "adjustmentTransactionKey": "string",
    "affectedAmounts": {
      "deferredInterestAmount": 0,
      "feesAmount": 0,
      "fundersInterestAmount": 0,
      "interestAmount": 0,
      "interestFromArrearsAmount": 0,
      "organizationCommissionAmount": 0,
      "paymentHolidaysInterestAmount": 0,
      "penaltyAmount": 0,
      "principalAmount": 0
    },
    "amount": 0,
    "bookingDate": "2016-09-06T13:37:50+03:00",
    "branchKey": "string",
    "cardTransaction": {
      "advice": true,
      "amount": 0,
      "cardAcceptor": {
        "city": "string",
        "country": "string",
        "mcc": 0,
        "name": "string",
        "state": "string",
        "street": "string",
        "zip": "string"
      },
      "cardToken": "string",
      "currencyCode": "string",
      "encodedKey": "string",
      "externalAuthorizationReferenceId": "string",
      "externalReferenceId": "string",
      "userTransactionTime": "string"
    },
    "centreKey": "string",
    "creationDate": "2016-09-06T13:37:50+03:00",
    "currency": {
      "code": "AED",
      "currencyCode": "string"
    },
    "customPaymentAmounts": [
      {
        "amount": 0,
        "customPaymentAmountType": "PRINCIPAL",
        "predefinedFeeKey": "string",
        "taxOnAmount": 0
      }
    ],
    "encodedKey": "string",
    "externalId": "string",
    "fees": [
      {
        "amount": 0,
        "name": "string",
        "predefinedFeeKey": "string",
        "taxAmount": 0,
        "trigger": "MANUAL"
      }
    ],
    "id": "string",
    "installmentEncodedKey": "string",
    "migrationEventKey": "string",
    "notes": "string",
    "originalAmount": 0,
    "originalCurrencyCode": "string",
    "originalTransactionKey": "string",
    "parentAccountKey": "string",
    "parentLoanTransactionKey": "string",
    "prepaymentRecalculationMethod": "NO_RECALCULATION",
    "taxes": {
      "deferredTaxOnInterestAmount": 0,
      "taxOnFeesAmount": 0,
      "taxOnInterestAmount": 0,
      "taxOnInterestFromArrearsAmount": 0,
      "taxOnPaymentHolidaysInterest": 0,
      "taxOnPenaltyAmount": 0,
      "taxRate": 0
    },
    "terms": {
      "interestSettings": {
        "indexInterestRate": 0,
        "interestRate": 0
      },
      "periodicPayment": 0,
      "principalPaymentAmount": 0,
      "principalPaymentPercentage": 0
    },
    "tillKey": "string",
    "transactionDetails": {
      "transactionChannelId": "string",
      "transactionChannelKey": "string"
    },
    "transferDetails": {
      "linkedDepositTransactionKey": "string",
      "linkedLoanTransactionKey": "string"
    },
    "type": "IMPORT",
    "userKey": "string",
    "valueDate": "2016-09-06T13:37:50+03:00"
  }
]

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
201 Created Planned installment fees were applied on the loan account. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan account not found. ErrorResponse

Response Schema

Status Code 201

Name Type Description Restrictions
anonymous [LoanTransaction] [Represents the action performed on a loan account after which the account's amount changes its value.] none
Ā» _Transaction_Details_Transaction _Transaction_Details_Transaction Captures default transaction custom fields none
»» ACCOUNT_NAME_TRANSACTION_CHANNEL string none none
»» ACCOUNT_NUMBER_TRANSACTION_CHANN string none none
»» BANK_NUMBER_TRANSACTION_CHANNEL_ string none none
»» CHECK_NUMBER_TRANSACTION_CHANNEL string none none
»» IDENTIFIER_TRANSACTION_CHANNEL_I string An unique user-defined identifier for each transaction. This field is optional, but if specified, it must be unique across all loan and deposit transactions none
»» RECEPIT_NUMBER_TRANSACTION_CHANN string none none
»» ROUTING_NUMBER_TRANSACTION_CHANN string none none
Ā» accountBalances TransactionBalances The balances changed within a transaction. none
»» advancePosition number Captures the advance (prepaid) amount. none
»» arrearsPosition number Captures the arrears position amount for the account in arrears. none
»» expectedPrincipalRedraw number The difference between principal balance and redraw balance after each transaction performed on the loan account. none
»» principalBalance number The account redraw balance captured after the transaction update. none
»» redrawBalance number The account redraw balance captured after the transaction update. none
»» totalBalance number The running balance still owed for the loan. none
Ā» adjustmentTransactionKey string The key of the loan transaction where the adjustment for the transaction was made (if any adjustment was involved). none
Ā» affectedAmounts LoanAffectedAmounts The amounts affected after completing the loan transaction none
»» deferredInterestAmount number How much interest pre-paid was added/removed in account, within this transaction (including taxes). none
»» feesAmount number How much fees was added/removed in account, within this transaction. none
»» fundersInterestAmount number How much interest is given to the investors, within this transaction (only for p2p products) none
»» interestAmount number How much interest was added/removed in account, within this transaction (including taxes). If there is any deferred interest amount set in this transaction, that amount should be included in this field. none
»» interestFromArrearsAmount number How much interest from arrears was added/removed in account, within this transaction (including taxes). none
»» organizationCommissionAmount number How much interest is given to the organization, within this transaction (only for p2p products) none
»» paymentHolidaysInterestAmount number How much Payment Holidays interest was added/removed in account, within this transaction (including taxes). none
»» penaltyAmount number How much penalties was added/removed in account, within this transaction. none
»» principalAmount number How much principal was added/removed in account, within this transaction. none
Ā» amount number The amount that was added or removed on the loan account. none
Ā» bookingDate string(date-time) The date when the corresponding journal entry is booked. none
Ā» branchKey string The branch where the transaction was performed. none
Ā» cardTransaction CardTransaction A card transaction entry which will have a corresponding a financial transaction performed. none
»» advice (required) boolean Whether the given request should be accepted without balance validations. none
»» amount (required) number The amount of money to be withdrawn in the financial transaction. none
»» cardAcceptor CardAcceptor The details of the card acceptor (merchant) in a transaction hold. none
»»» city string The city in which the card acceptor has the business. none
»»» country string The country in which the card acceptor has the business. none
»»» mcc integer(int32) The Merchant Category Code of the card acceptor. none
»»» name string The name of the card acceptor. none
»»» state string The state in which the card acceptor has the business. none
»»» street string The street in which the card acceptor has the business. none
»»» zip string The ZIP code of the location in which the card acceptor has the business. none
»» cardToken string The reference token of the card. read-only
»» currencyCode string The ISO currency code in which the card reversal transaction is posted. The amounts are stored in the base currency, but the transaction can be created with a foreign currency. none
»» encodedKey string The encoded key of the entity, generated, globally unique read-only
»» externalAuthorizationReferenceId string The external authorization hold reference ID, which relates this card transaction to a previous authorization hold. none
»» externalReferenceId (required) string The external reference ID to be used to reference the card transaction in subsequent requests. none
»» userTransactionTime string The formatted time at which the user made this card transaction. none
Ā» centreKey string The center where the transaction was performed. none
Ā» creationDate string(date-time) The date when this loan transaction was created. none
Ā» currency Currency Represents a currency. To represent a fiat currency, the code value and the currencyCode value must be the ISO-4217 currency code of the fiat currency. To represent a non-fiat currency, the code value must be NON_FIAT and the currencyCode value must be the currency code of the non-fiat currency. none
»» code string Fiat(ISO-4217) currency code or NON_FIAT for non fiat currencies. none
»» currencyCode string Currency code for NON_FIAT currency. none
Ā» customPaymentAmounts [CustomPaymentAmount] The list of custom amounts which the user has paid as part of this transaction. none
»» amount (required) number The amount of the payment paid in the transaction for the given type. none
»» customPaymentAmountType (required) string The type of the custom payment none
»» predefinedFeeKey string The encodedKey of the predefined fee to be paid. none
»» taxOnAmount number The amount of the taxes paid in the transaction for the given type. none
Ā» encodedKey string The encoded key of the loan transaction, which is auto generated, and must be unique. none
Ā» externalId string The external ID of the loan transaction, it is customizable, and must be unique. none
Ā» fees [Fee] The amounts that have been applied or paid as part of this transaction and involved predefined fees. none
»» amount number The amount of the fee that was applied/paid in the transaction for the given predefined fee. none
»» name string The name of the predefined fee read-only
»» predefinedFeeKey (required) string The encoded key of the predefined fee, auto generated, unique none
»» taxAmount number The amount of the taxes on fee that was applied/paid in the transaction. none
»» trigger string Shows the event that will trigger a fee read-only
Ā» id string The ID of the loan transaction, can be generated and customized, and must be unique. none
Ā» installmentEncodedKey string The specific installment encoded key associated to the loan transaction. none
Ā» migrationEventKey string The migration event encoded key associated with the loan account. If the account was imported, track which 'migration event' it came from. none
Ā» notes string The notes or description for the loan transaction. none
Ā» originalAmount number The amount that was posted in a foreign currency. This amount was converted using the exchange rate available at entry date and set into the amount field. none
Ā» originalCurrencyCode string The currency in which this transaction was posted. The amounts are stored in the base currency, but the user may enter it in a foreign currency. none
Ā» originalTransactionKey string The encoded key of the transaction that was adjusted as part of this one. Available only for adjustment transactions. none
Ā» parentAccountKey string The key of the parent loan account. none
Ā» parentLoanTransactionKey string The key of the parent loan transaction. none
Ā» prepaymentRecalculationMethod string The prepayment recalculation method of the loan transaction. none
Ā» taxes Taxes The taxes applied within a transaction. none
»» deferredTaxOnInterestAmount number How much taxes on the interest that was pre-paid were added/removed in account, within this transaction. If there is any deferred tax on interest amount set in this transaction, that amount should be included in this field. none
»» taxOnFeesAmount number How much taxes on the fees that were paid in this transaction were added/removed in account, within this transaction. none
»» taxOnInterestAmount number How much taxes on the interest that was paid in this transaction were added/removed in account, within this transaction. none
»» taxOnInterestFromArrearsAmount number The amount of taxes on the interest from arrears that were applied/paid in account, within this transaction. none
»» taxOnPaymentHolidaysInterest number The amount of taxes on the Payment Holidays interest that were added/removed in account, within this transaction. none
»» taxOnPenaltyAmount number How much taxes on the penalties that were paid in this transaction were added/removed in account, within this transaction. none
»» taxRate number The tax rate that was set or changed in this transaction. none
Ā» terms LoanTerms The loan transaction terms none
»» interestSettings TransactionInterestSettings The interest settings, holds all the properties regarding interests for the loan account. none
»»» indexInterestRate number The value of the index interest rate none
»»» interestRate number The interest rate. Represents the interest rate for the loan account. The interest on loans is accrued on a daily basis, which allows charging the clients only for the days they actually used the loan amount. none
»» periodicPayment number The periodic payment value logged when changing it for a Balloon Payments account none
»» principalPaymentAmount number The principal payment flat amount logged when changing it for a Revolving Credit account none
»» principalPaymentPercentage number The principal payment percentage value logged when changing it for a Revolving Credit account none
Ā» tillKey string The till key associated with the transaction. none
Ā» transactionDetails TransactionDetails Contains the details about transaction including fields like transaction channel key and channel id none
»» transactionChannelId string The id of the transaction channel associated with the transaction details. none
»» transactionChannelKey string The encoded key of the transaction channel associated with the transaction details. none
Ā» transferDetails TransferDetails Represents the transfer details, such as the linked transaction key none
»» linkedDepositTransactionKey string The key of the related deposit transaction none
»» linkedLoanTransactionKey string The key of the related loan transaction none
Ā» type string The type of loan transaction. none
Ā» userKey string The user that performed the transaction. none
Ā» valueDate string(date-time) The date of the entry in the organization time format and timezone. none

Enumerated Values

Property Value
code AED
code AFN
code ALL
code AMD
code ANG
code AOA
code ARS
code AUD
code AWG
code AZN
code BAM
code BBD
code BDT
code BGN
code BHD
code BIF
code BMD
code BND
code BOB
code BOV
code BRL
code BSD
code BTN
code BWP
code BYR
code BYN
code BZD
code CAD
code CDF
code CHE
code CHF
code CHW
code CLF
code CLP
code CNY
code COP
code COU
code CRC
code CUC
code CUP
code CVE
code CZK
code DJF
code DKK
code DOP
code DZD
code EGP
code ERN
code ETB
code EUR
code FJD
code FKP
code GBP
code GEL
code GHS
code GIP
code GMD
code GNF
code GTQ
code GYD
code HKD
code HNL
code HRK
code HTG
code HUF
code IDR
code ILS
code INR
code IQD
code IRR
code ISK
code JMD
code JOD
code JPY
code KES
code KGS
code KHR
code KMF
code KPW
code KRW
code KWD
code KYD
code KZT
code LAK
code LBP
code LKR
code LRD
code LSL
code LTL
code LVL
code LYD
code MAD
code MDL
code MGA
code MKD
code MMK
code MNT
code MOP
code MRO
code MRU
code MUR
code MVR
code MWK
code MXN
code MXV
code MYR
code MZN
code NAD
code NGN
code NIO
code NOK
code NPR
code NZD
code OMR
code PAB
code PEN
code PGK
code PHP
code PKR
code PLN
code PYG
code QAR
code RON
code RSD
code RUB
code RWF
code SAR
code SBD
code SCR
code SDG
code SEK
code SGD
code SHP
code SLL
code SOS
code SRD
code STD
code STN
code SVC
code SYP
code SZL
code THB
code TJS
code TMT
code TND
code TOP
code TRY
code TTD
code TWD
code TZS
code UAH
code UGX
code USD
code USN
code UYI
code UYU
code UYW
code UZS
code VED
code VEF
code VES
code VND
code VUV
code WST
code XAG
code XAU
code XAF
code XBA
code XBB
code XBC
code XBD
code XCD
code XDR
code XOF
code XPD
code XPF
code XPT
code XSU
code XTS
code XUA
code XXX
code YER
code ZAR
code ZIG
code ZMK
code ZWL
code ZMW
code SSP
code NON_FIAT
customPaymentAmountType PRINCIPAL
customPaymentAmountType INTEREST
customPaymentAmountType MANUAL_FEE
customPaymentAmountType UPFRONT_DISBURSEMENT_FEE
customPaymentAmountType LATE_REPAYMENT_FEE
customPaymentAmountType PAYMENT_DUE_FEE
customPaymentAmountType PENALTY
customPaymentAmountType INTEREST_FROM_ARREARS
customPaymentAmountType NON_SCHEDULED_FEE
customPaymentAmountType INTEREST_BEARING_FEE
customPaymentAmountType INTEREST_BEARING_FEE_INTEREST
customPaymentAmountType CF_PRINCIPAL_IN_ARREARS
customPaymentAmountType CF_INTEREST
customPaymentAmountType CF_INTEREST_FROM_ARREARS
trigger MANUAL
trigger MANUAL_PLANNED
trigger DISBURSEMENT
trigger CAPITALIZED_DISBURSEMENT
trigger UPFRONT_DISBURSEMENT
trigger LATE_REPAYMENT
trigger PAYMENT_DUE
trigger PAYMENT_DUE_APPLIED_ON_DUE_DATES
trigger ARBITRARY
trigger IOF
trigger EARLY_REPAYMENT_CHARGE
trigger FEE_INCLUDED_IN_PMT
prepaymentRecalculationMethod NO_RECALCULATION
prepaymentRecalculationMethod RESCHEDULE_REMAINING_REPAYMENTS
prepaymentRecalculationMethod RECALCULATE_SCHEDULE_KEEP_SAME_NUMBER_OF_TERMS
prepaymentRecalculationMethod RECALCULATE_SCHEDULE_KEEP_SAME_PRINCIPAL_AMOUNT
prepaymentRecalculationMethod RECALCULATE_SCHEDULE_KEEP_SAME_TOTAL_REPAYMENT_AMOUNT
prepaymentRecalculationMethod REDUCE_AMOUNT_PER_INSTALLMENT
prepaymentRecalculationMethod REDUCE_NUMBER_OF_INSTALLMENTS
prepaymentRecalculationMethod REDUCE_NUMBER_OF_INSTALLMENTS_NEW
type IMPORT
type DISBURSEMENT
type DISBURSEMENT_ADJUSTMENT
type WRITE_OFF
type WRITE_OFF_ADJUSTMENT
type REPAYMENT
type PAYMENT_MADE
type WITHDRAWAL_REDRAW
type WITHDRAWAL_REDRAW_ADJUSTMENT
type FEE_APPLIED
type FEE_CHARGED
type FEE_CAPITALISED
type SCHEDULE_FIX_APPLIED
type FEES_DUE_REDUCED
type FEE_REFUND
type FEE_REFUND_ADJUSTMENT
type FEE_ADJUSTMENT
type PENALTY_APPLIED
type PENALTY_ADJUSTMENT
type PENALTIES_DUE_REDUCED
type REPAYMENT_ADJUSTMENT
type FEE_CAPITALISED_ADJUSTMENT
type PAYMENT_MADE_ADJUSTMENT
type INTEREST_RATE_CHANGED
type TAX_RATE_CHANGED
type PENALTY_RATE_CHANGED
type INTEREST_APPLIED
type IBF_INTEREST_APPLIED
type IBF_INTEREST_APPLIED_ADJUSTMENT
type INTEREST_APPLIED_ADJUSTMENT
type INTEREST_DUE_REDUCED
type PENALTY_REDUCTION_ADJUSTMENT
type FEE_REDUCTION_ADJUSTMENT
type INTEREST_REDUCTION_ADJUSTMENT
type DEFERRED_INTEREST_APPLIED
type DEFERRED_INTEREST_APPLIED_ADJUSTMENT
type DEFERRED_INTEREST_PAID
type DEFERRED_INTEREST_PAID_ADJUSTMENT
type INTEREST_LOCKED
type FEE_LOCKED
type PENALTY_LOCKED
type INTEREST_UNLOCKED
type FEE_UNLOCKED
type PENALTY_UNLOCKED
type REDRAW_TRANSFER
type REDRAW_REPAYMENT
type REDRAW_TRANSFER_ADJUSTMENT
type REDRAW_REPAYMENT_ADJUSTMENT
type TRANSFER
type TRANSFER_ADJUSTMENT
type BRANCH_CHANGED
type TERMS_CHANGED
type CARD_TRANSACTION_REVERSAL
type CARD_TRANSACTION_REVERSAL_ADJUSTMENT
type DUE_DATE_CHANGED
type DUE_DATE_CHANGED_ADJUSTMENT
type ACCOUNT_TERMINATED
type ACCOUNT_TERMINATED_ADJUSTMENT
type REFUND
type REFUND_ADJUSTMENT
type REDUCE_BALANCE
type REDUCE_BALANCE_ADJUSTMENT
type PRINCIPAL_OVERPAYMENT
type PRINCIPAL_OVERPAYMENT_ADJUSTMENT

getAllPlannedFees (Loan Account Planned Fees)

Code samples

# You can also use wget
curl -X GET /loans/{loanAccountId}/plannedfees \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /loans/{loanAccountId}/plannedfees HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/loans/{loanAccountId}/plannedfees',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/loans/{loanAccountId}/plannedfees',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/loans/{loanAccountId}/plannedfees', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/loans/{loanAccountId}/plannedfees', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans/{loanAccountId}/plannedfees");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/loans/{loanAccountId}/plannedfees", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /loans/{loanAccountId}/plannedfees

Get planned fees

Parameters

Name Type Description In
loanAccountId (required) string The ID or encoded key of the loan account. path

Example responses

200 Response

[
  {
    "amount": 0,
    "applyOnDate": "2016-09-06T13:37:50+03:00",
    "encodedKey": "string",
    "installmentKey": "string",
    "installmentNumber": 0,
    "predefinedFeeKey": "string"
  }
]

Responses

Status Meaning Description Schema
200 OK Planned installment fees list was returned. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [PlannedInstallmentFee] [The planned fee details holds the information related to the installment key, predefined fee key and amount] none
Ā» amount number The amount of the planned fee. none
Ā» applyOnDate string(date-time) The date when a planned fee should be applied, overriding due date of the installment. It should match the interval of the installment. If it belongs to the first installment, it should be between disbursement date and installment due date. Returned only if its value has been previously set. none
Ā» encodedKey string The encoded key of the planned installment fee, auto generated, unique. read-only
Ā» installmentKey string The encoded key of the installment on which the predefined fee is planned. none
Ā» installmentNumber integer(int32) The number of the installment for which the predefined fee is planned. It is used only in the case when fees are created at the same time as the loan account or during preview schedule, before account creation. In all other cases, this field will be nil and installmentKey will be used to identify an installment. none
Ā» predefinedFeeKey (required) string The encoded key of the predefined fee which is planned. none

createPlannedFees (Loan Account Planned Fees)

Code samples

# You can also use wget
curl -X POST /loans/{loanAccountId}/plannedfees \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /loans/{loanAccountId}/plannedfees HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/loans/{loanAccountId}/plannedfees',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/loans/{loanAccountId}/plannedfees',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/loans/{loanAccountId}/plannedfees', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/loans/{loanAccountId}/plannedfees', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans/{loanAccountId}/plannedfees");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/loans/{loanAccountId}/plannedfees", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /loans/{loanAccountId}/plannedfees

Create planned fees

Body parameter

[
  {
    "amount": 0,
    "applyOnDate": "2016-09-06T13:37:50+03:00",
    "installmentKey": "string",
    "installmentNumber": 0,
    "predefinedFeeKey": "string"
  }
]

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
loanAccountId (required) string The ID or encoded key of the loan account. path
body (required) PlannedInstallmentFee List of all loan account's planned installment fees to be created. body

Example responses

201 Response

[
  {
    "amount": 0,
    "applyOnDate": "2016-09-06T13:37:50+03:00",
    "encodedKey": "string",
    "installmentKey": "string",
    "installmentNumber": 0,
    "predefinedFeeKey": "string"
  }
]

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
201 Created Loan account planned installment fees were created. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan account not found. ErrorResponse

Response Schema

Status Code 201

Name Type Description Restrictions
anonymous [PlannedInstallmentFee] [The planned fee details holds the information related to the installment key, predefined fee key and amount] none
Ā» amount number The amount of the planned fee. none
Ā» applyOnDate string(date-time) The date when a planned fee should be applied, overriding due date of the installment. It should match the interval of the installment. If it belongs to the first installment, it should be between disbursement date and installment due date. Returned only if its value has been previously set. none
Ā» encodedKey string The encoded key of the planned installment fee, auto generated, unique. read-only
Ā» installmentKey string The encoded key of the installment on which the predefined fee is planned. none
Ā» installmentNumber integer(int32) The number of the installment for which the predefined fee is planned. It is used only in the case when fees are created at the same time as the loan account or during preview schedule, before account creation. In all other cases, this field will be nil and installmentKey will be used to identify an installment. none
Ā» predefinedFeeKey (required) string The encoded key of the predefined fee which is planned. none

updatePlannedFees (Loan Account Planned Fees)

Code samples

# You can also use wget
curl -X PUT /loans/{loanAccountId}/plannedfees \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json'

PUT /loans/{loanAccountId}/plannedfees HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/loans/{loanAccountId}/plannedfees',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.put '/loans/{loanAccountId}/plannedfees',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.put('/loans/{loanAccountId}/plannedfees', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PUT','/loans/{loanAccountId}/plannedfees', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans/{loanAccountId}/plannedfees");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/loans/{loanAccountId}/plannedfees", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /loans/{loanAccountId}/plannedfees

Update planned fees

Body parameter

[
  {
    "amount": 0,
    "applyOnDate": "2016-09-06T13:37:50+03:00",
    "installmentKey": "string",
    "installmentNumber": 0,
    "predefinedFeeKey": "string"
  }
]

Parameters

Name Type Description In
loanAccountId (required) string The ID or encoded key of the loan account. path
body (required) PlannedInstallmentFee List of all loan account's planned installment fees to be updated. Installment key should be used for identification. body

Example responses

200 Response

[
  {
    "amount": 0,
    "applyOnDate": "2016-09-06T13:37:50+03:00",
    "encodedKey": "string",
    "installmentKey": "string",
    "installmentNumber": 0,
    "predefinedFeeKey": "string"
  }
]

Responses

Status Meaning Description Schema
200 OK Loan account planned installment fees were updated. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan account not found. ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [PlannedInstallmentFee] [The planned fee details holds the information related to the installment key, predefined fee key and amount] none
Ā» amount number The amount of the planned fee. none
Ā» applyOnDate string(date-time) The date when a planned fee should be applied, overriding due date of the installment. It should match the interval of the installment. If it belongs to the first installment, it should be between disbursement date and installment due date. Returned only if its value has been previously set. none
Ā» encodedKey string The encoded key of the planned installment fee, auto generated, unique. read-only
Ā» installmentKey string The encoded key of the installment on which the predefined fee is planned. none
Ā» installmentNumber integer(int32) The number of the installment for which the predefined fee is planned. It is used only in the case when fees are created at the same time as the loan account or during preview schedule, before account creation. In all other cases, this field will be nil and installmentKey will be used to identify an installment. none
Ā» predefinedFeeKey (required) string The encoded key of the predefined fee which is planned. none

deletePlannedFees (Loan Account Planned Fees)

Code samples

# You can also use wget
curl -X DELETE /loans/{loanAccountId}/plannedfees/{plannedInstallmentFeeKey} \
  -H 'Accept: application/vnd.mambu.v2+json'

DELETE /loans/{loanAccountId}/plannedfees/{plannedInstallmentFeeKey} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/loans/{loanAccountId}/plannedfees/{plannedInstallmentFeeKey}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.delete '/loans/{loanAccountId}/plannedfees/{plannedInstallmentFeeKey}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.delete('/loans/{loanAccountId}/plannedfees/{plannedInstallmentFeeKey}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('DELETE','/loans/{loanAccountId}/plannedfees/{plannedInstallmentFeeKey}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans/{loanAccountId}/plannedfees/{plannedInstallmentFeeKey}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/loans/{loanAccountId}/plannedfees/{plannedInstallmentFeeKey}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /loans/{loanAccountId}/plannedfees/{plannedInstallmentFeeKey}

Delete planned fee

Parameters

Name Type Description In
loanAccountId (required) string The ID or encoded key of the loan account. path
plannedInstallmentFeeKey (required) string The encoded key of the planned installment fee to be deleted. path

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
204 No Content Loan account planned installment fee was deleted. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan account not found. ErrorResponse

Loan Account Tranches

Tranches loans are disbursed in instalments instead of one lump sum. This helps you spread the risk across the lifetime of the loan.

These endpoints help you manage your tranched loans and can be used to view the current tranches and their status as well as edit individual tranches to either increase or decrease the amount to be disbursed or the date of disbursement.

When associating fees with a tranche, use the Loan Account Planned Fees endpoints to retrieve the ID for the fees you want to apply.

getTranches (Loan Account Tranches)

Code samples

# You can also use wget
curl -X GET /loans/{loanAccountId}/tranches \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /loans/{loanAccountId}/tranches HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/loans/{loanAccountId}/tranches',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/loans/{loanAccountId}/tranches',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/loans/{loanAccountId}/tranches', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/loans/{loanAccountId}/tranches', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans/{loanAccountId}/tranches");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/loans/{loanAccountId}/tranches", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /loans/{loanAccountId}/tranches

Get loan account tranches list

Parameters

Name Type Description In
loanAccountId (required) string The ID or encoded key of the loan account. path

Example responses

200 Response

[
  {
    "amount": 0,
    "disbursementDetails": {
      "disbursementTransactionKey": "string",
      "expectedDisbursementDate": "2016-09-06T13:37:50+03:00"
    },
    "encodedKey": "string",
    "fees": [
      {
        "amount": 0,
        "encodedKey": "string",
        "percentage": 0,
        "predefinedFeeEncodedKey": "string"
      }
    ],
    "trancheNumber": 0
  }
]

Responses

Status Meaning Description Schema
200 OK Loan accounts tranches list returned. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [LoanTranche] [In some cases organizations may approve loans but not disburse the full amount initially. They would like to spread the disbursement (and risk) over time. Likewise for the client, they may not need the full loan amount up front. They may want to have a loan to buy some equipment for their business but will make one purchase today and another purchase in a few months. In these cases, they don't need the full amount and wouldn't want to pay interest on cash they don't need yet. A solution for this matter is the usage of disbursement in tranches. This class holds the information required for one of this tranche. ] none
Ā» amount (required) number The amount this tranche has available for disburse none
Ā» disbursementDetails TrancheDisbursementDetails The disbursement details regarding a loan tranche. none
»» disbursementTransactionKey string The key of the disbursement transaction logged when this tranche was disbursed. This field will be null until the tranche disbursement none
»» expectedDisbursementDate string(date-time) The date when this tranche is supposed to be disbursed (as Organization Time) none
Ā» encodedKey string The encoded key of the transaction details , auto generated, unique. read-only
Ā» fees [CustomPredefinedFee] Fees that are associated with this tranche none
»» amount number The amount of the custom fee. none
»» encodedKey string The encoded key of the custom predefined fee, auto generated, unique. read-only
»» percentage number The percentage of the custom fee. none
»» predefinedFeeEncodedKey string The encoded key of the predefined fee none
Ā» trancheNumber integer(int32) Index indicating the tranche number none

editTranches (Loan Account Tranches)

Code samples

# You can also use wget
curl -X PUT /loans/{loanAccountId}/tranches \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json'

PUT /loans/{loanAccountId}/tranches HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/loans/{loanAccountId}/tranches',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.put '/loans/{loanAccountId}/tranches',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.put('/loans/{loanAccountId}/tranches', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PUT','/loans/{loanAccountId}/tranches', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans/{loanAccountId}/tranches");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/loans/{loanAccountId}/tranches", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /loans/{loanAccountId}/tranches

Update loan account tranches list

Body parameter

[
  {
    "amount": 0,
    "disbursementDetails": {
      "disbursementTransactionKey": "string",
      "expectedDisbursementDate": "2016-09-06T13:37:50+03:00"
    },
    "fees": [
      {
        "amount": 0,
        "percentage": 0,
        "predefinedFeeEncodedKey": "string"
      }
    ],
    "trancheNumber": 0
  }
]

Parameters

Name Type Description In
loanAccountId (required) string The ID or encoded key of the loan account. path
body (required) LoanTranche The list of tranches to update the current loan account with. body

Example responses

200 Response

[
  {
    "amount": 0,
    "disbursementDetails": {
      "disbursementTransactionKey": "string",
      "expectedDisbursementDate": "2016-09-06T13:37:50+03:00"
    },
    "encodedKey": "string",
    "fees": [
      {
        "amount": 0,
        "encodedKey": "string",
        "percentage": 0,
        "predefinedFeeEncodedKey": "string"
      }
    ],
    "trancheNumber": 0
  }
]

Responses

Status Meaning Description Schema
200 OK Updated loan account tranches. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan account not found. ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [LoanTranche] [In some cases organizations may approve loans but not disburse the full amount initially. They would like to spread the disbursement (and risk) over time. Likewise for the client, they may not need the full loan amount up front. They may want to have a loan to buy some equipment for their business but will make one purchase today and another purchase in a few months. In these cases, they don't need the full amount and wouldn't want to pay interest on cash they don't need yet. A solution for this matter is the usage of disbursement in tranches. This class holds the information required for one of this tranche. ] none
Ā» amount (required) number The amount this tranche has available for disburse none
Ā» disbursementDetails TrancheDisbursementDetails The disbursement details regarding a loan tranche. none
»» disbursementTransactionKey string The key of the disbursement transaction logged when this tranche was disbursed. This field will be null until the tranche disbursement none
»» expectedDisbursementDate string(date-time) The date when this tranche is supposed to be disbursed (as Organization Time) none
Ā» encodedKey string The encoded key of the transaction details , auto generated, unique. read-only
Ā» fees [CustomPredefinedFee] Fees that are associated with this tranche none
»» amount number The amount of the custom fee. none
»» encodedKey string The encoded key of the custom predefined fee, auto generated, unique. read-only
»» percentage number The percentage of the custom fee. none
»» predefinedFeeEncodedKey string The encoded key of the predefined fee none
Ā» trancheNumber integer(int32) Index indicating the tranche number none

Loan Accounts

Allows you to retrieve, create, update, delete loan accounts and it also allows to execute some other actions like:

getScheduleForLoanAccount (Loan Accounts)

Code samples

# You can also use wget
curl -X GET /loans/{loanAccountId}/schedule \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /loans/{loanAccountId}/schedule HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/loans/{loanAccountId}/schedule',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/loans/{loanAccountId}/schedule',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/loans/{loanAccountId}/schedule', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/loans/{loanAccountId}/schedule', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans/{loanAccountId}/schedule");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/loans/{loanAccountId}/schedule", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /loans/{loanAccountId}/schedule

Get loan account schedule

Parameters

Name Type Description In
loanAccountId (required) string The ID or encoded key of the loan account. path
detailsLevel string The level of details to return: FULL means the full details of the object will be returned (custom field values, address, contact info, or any other related objects) and BASIC will return only the first level elements of the object. query

Enumerated Values

Parameter Value
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

{
  "currency": {
    "code": "AED",
    "currencyCode": "string"
  },
  "installments": [
    {
      "carryForwardInterestSplit": {
        "amount": 0,
        "tax": 0
      },
      "customSettingDetails": [
        {
          "loanTransactionKey": "string",
          "source": "string",
          "type": "string"
        }
      ],
      "dueDate": "2016-09-06T13:37:50+03:00",
      "encodedKey": "string",
      "expectedClosingBalance": 0,
      "fee": {
        "amount": {
          "due": 0,
          "expected": 0,
          "expectedUnapplied": 0,
          "paid": 0
        },
        "tax": {
          "due": 0,
          "expected": 0,
          "paid": 0
        }
      },
      "feeDetails": [
        {
          "amount": {
            "due": 0,
            "expected": 0,
            "paid": 0,
            "reduced": 0
          },
          "encodedKey": "string",
          "id": "string",
          "name": "string",
          "tax": {
            "due": 0,
            "expected": 0,
            "paid": 0,
            "reduced": 0
          }
        }
      ],
      "fundersInterestDue": 0,
      "interest": {
        "amount": {
          "due": 0,
          "expected": 0,
          "paid": 0
        },
        "tax": {
          "due": 0,
          "expected": 0,
          "paid": 0
        }
      },
      "interestAccrued": 0,
      "isPaymentHoliday": true,
      "lastPaidDate": "2016-09-06T13:37:50+03:00",
      "lastPenaltyAppliedDate": "2016-09-06T13:37:50+03:00",
      "nonScheduledPrincipalBalanceOverpayment": 0,
      "notes": "string",
      "number": "string",
      "organizationCommissionDue": 0,
      "parentAccountKey": "string",
      "penalty": {
        "amount": {
          "due": 0,
          "expected": 0,
          "paid": 0
        },
        "tax": {
          "due": 0,
          "expected": 0,
          "paid": 0
        }
      },
      "principal": {
        "amount": {
          "due": 0,
          "expected": 0,
          "paid": 0
        }
      },
      "repaidDate": "2016-09-06T13:37:50+03:00",
      "state": "PENDING"
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK Loan account schedule returned by the loan account ID or encoded key. LoanAccountSchedule
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan account not found. ErrorResponse

editSchedule (Loan Accounts)

Code samples

# You can also use wget
curl -X PUT /loans/{loanAccountId}/schedule \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json'

PUT /loans/{loanAccountId}/schedule HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/loans/{loanAccountId}/schedule',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.put '/loans/{loanAccountId}/schedule',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.put('/loans/{loanAccountId}/schedule', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PUT','/loans/{loanAccountId}/schedule', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans/{loanAccountId}/schedule");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/loans/{loanAccountId}/schedule", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /loans/{loanAccountId}/schedule

Update loan account schedule

Body parameter

[
  {
    "carryForwardInterestSplit": {
      "amount": 0,
      "tax": 0
    },
    "customSettingDetails": [
      {
        "loanTransactionKey": "string",
        "source": "string",
        "type": "string"
      }
    ],
    "dueDate": "2016-09-06T13:37:50+03:00",
    "expectedClosingBalance": 0,
    "fee": {
      "amount": {
        "due": 0,
        "expected": 0,
        "expectedUnapplied": 0,
        "paid": 0
      },
      "tax": {
        "due": 0,
        "expected": 0,
        "paid": 0
      }
    },
    "feeDetails": [
      {
        "amount": {
          "due": 0,
          "expected": 0,
          "paid": 0,
          "reduced": 0
        },
        "id": "string",
        "name": "string",
        "tax": {
          "due": 0,
          "expected": 0,
          "paid": 0,
          "reduced": 0
        }
      }
    ],
    "fundersInterestDue": 0,
    "interest": {
      "amount": {
        "due": 0,
        "expected": 0,
        "paid": 0
      },
      "tax": {
        "due": 0,
        "expected": 0,
        "paid": 0
      }
    },
    "interestAccrued": 0,
    "isPaymentHoliday": true,
    "lastPaidDate": "2016-09-06T13:37:50+03:00",
    "lastPenaltyAppliedDate": "2016-09-06T13:37:50+03:00",
    "nonScheduledPrincipalBalanceOverpayment": 0,
    "notes": "string",
    "number": "string",
    "organizationCommissionDue": 0,
    "parentAccountKey": "string",
    "penalty": {
      "amount": {
        "due": 0,
        "expected": 0,
        "paid": 0
      },
      "tax": {
        "due": 0,
        "expected": 0,
        "paid": 0
      }
    },
    "principal": {
      "amount": {
        "due": 0,
        "expected": 0,
        "paid": 0
      }
    },
    "repaidDate": "2016-09-06T13:37:50+03:00",
    "state": "PENDING"
  }
]

Parameters

Name Type Description In
loanAccountId (required) string The ID or encoded key of the loan account. path
body (required) Installment The list of installments to update the current loan account schedule. body

Example responses

200 Response

{
  "currency": {
    "code": "AED",
    "currencyCode": "string"
  },
  "installments": [
    {
      "carryForwardInterestSplit": {
        "amount": 0,
        "tax": 0
      },
      "customSettingDetails": [
        {
          "loanTransactionKey": "string",
          "source": "string",
          "type": "string"
        }
      ],
      "dueDate": "2016-09-06T13:37:50+03:00",
      "encodedKey": "string",
      "expectedClosingBalance": 0,
      "fee": {
        "amount": {
          "due": 0,
          "expected": 0,
          "expectedUnapplied": 0,
          "paid": 0
        },
        "tax": {
          "due": 0,
          "expected": 0,
          "paid": 0
        }
      },
      "feeDetails": [
        {
          "amount": {
            "due": 0,
            "expected": 0,
            "paid": 0,
            "reduced": 0
          },
          "encodedKey": "string",
          "id": "string",
          "name": "string",
          "tax": {
            "due": 0,
            "expected": 0,
            "paid": 0,
            "reduced": 0
          }
        }
      ],
      "fundersInterestDue": 0,
      "interest": {
        "amount": {
          "due": 0,
          "expected": 0,
          "paid": 0
        },
        "tax": {
          "due": 0,
          "expected": 0,
          "paid": 0
        }
      },
      "interestAccrued": 0,
      "isPaymentHoliday": true,
      "lastPaidDate": "2016-09-06T13:37:50+03:00",
      "lastPenaltyAppliedDate": "2016-09-06T13:37:50+03:00",
      "nonScheduledPrincipalBalanceOverpayment": 0,
      "notes": "string",
      "number": "string",
      "organizationCommissionDue": 0,
      "parentAccountKey": "string",
      "penalty": {
        "amount": {
          "due": 0,
          "expected": 0,
          "paid": 0
        },
        "tax": {
          "due": 0,
          "expected": 0,
          "paid": 0
        }
      },
      "principal": {
        "amount": {
          "due": 0,
          "expected": 0,
          "paid": 0
        }
      },
      "repaidDate": "2016-09-06T13:37:50+03:00",
      "state": "PENDING"
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK Updated loan account schedule. LoanAccountSchedule
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan account not found. ErrorResponse

previewProcessPMTTransactionally (Loan Accounts)

Code samples

# You can also use wget
curl -X POST /loans/{loanAccountId}/schedule/previewProcessPMTTransactionally \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /loans/{loanAccountId}/schedule/previewProcessPMTTransactionally HTTP/1.1

Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/loans/{loanAccountId}/schedule/previewProcessPMTTransactionally',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/loans/{loanAccountId}/schedule/previewProcessPMTTransactionally',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/loans/{loanAccountId}/schedule/previewProcessPMTTransactionally', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/loans/{loanAccountId}/schedule/previewProcessPMTTransactionally', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans/{loanAccountId}/schedule/previewProcessPMTTransactionally");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/loans/{loanAccountId}/schedule/previewProcessPMTTransactionally", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /loans/{loanAccountId}/schedule/previewProcessPMTTransactionally

Preview loan account schedule using transactional processing for PMT.

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
loanAccountId (required) string The ID or encoded key of the loan account. path

Example responses

200 Response

{
  "error": "string",
  "info": "string",
  "result": {
    "differences": true,
    "existingSchedule": [
      {
        "carryForwardInterestSplit": {
          "amount": 0,
          "tax": 0
        },
        "customSettingDetails": [
          {
            "loanTransactionKey": "string",
            "source": "string",
            "type": "string"
          }
        ],
        "dueDate": "2016-09-06T13:37:50+03:00",
        "encodedKey": "string",
        "expectedClosingBalance": 0,
        "fee": {
          "amount": {
            "due": 0,
            "expected": 0,
            "expectedUnapplied": 0,
            "paid": 0
          },
          "tax": {
            "due": 0,
            "expected": 0,
            "paid": 0
          }
        },
        "feeDetails": [
          {
            "amount": {
              "due": 0,
              "expected": 0,
              "paid": 0,
              "reduced": 0
            },
            "encodedKey": "string",
            "id": "string",
            "name": "string",
            "tax": {
              "due": 0,
              "expected": 0,
              "paid": 0,
              "reduced": 0
            }
          }
        ],
        "fundersInterestDue": 0,
        "interest": {
          "amount": {
            "due": 0,
            "expected": 0,
            "paid": 0
          },
          "tax": {
            "due": 0,
            "expected": 0,
            "paid": 0
          }
        },
        "interestAccrued": 0,
        "isPaymentHoliday": true,
        "lastPaidDate": "2016-09-06T13:37:50+03:00",
        "lastPenaltyAppliedDate": "2016-09-06T13:37:50+03:00",
        "nonScheduledPrincipalBalanceOverpayment": 0,
        "notes": "string",
        "number": "string",
        "organizationCommissionDue": 0,
        "parentAccountKey": "string",
        "penalty": {
          "amount": {
            "due": 0,
            "expected": 0,
            "paid": 0
          },
          "tax": {
            "due": 0,
            "expected": 0,
            "paid": 0
          }
        },
        "principal": {
          "amount": {
            "due": 0,
            "expected": 0,
            "paid": 0
          }
        },
        "repaidDate": "2016-09-06T13:37:50+03:00",
        "state": "PENDING"
      }
    ],
    "schedule": [
      {
        "carryForwardInterestSplit": {
          "amount": 0,
          "tax": 0
        },
        "customSettingDetails": [
          {
            "loanTransactionKey": "string",
            "source": "string",
            "type": "string"
          }
        ],
        "dueDate": "2016-09-06T13:37:50+03:00",
        "encodedKey": "string",
        "expectedClosingBalance": 0,
        "fee": {
          "amount": {
            "due": 0,
            "expected": 0,
            "expectedUnapplied": 0,
            "paid": 0
          },
          "tax": {
            "due": 0,
            "expected": 0,
            "paid": 0
          }
        },
        "feeDetails": [
          {
            "amount": {
              "due": 0,
              "expected": 0,
              "paid": 0,
              "reduced": 0
            },
            "encodedKey": "string",
            "id": "string",
            "name": "string",
            "tax": {
              "due": 0,
              "expected": 0,
              "paid": 0,
              "reduced": 0
            }
          }
        ],
        "fundersInterestDue": 0,
        "interest": {
          "amount": {
            "due": 0,
            "expected": 0,
            "paid": 0
          },
          "tax": {
            "due": 0,
            "expected": 0,
            "paid": 0
          }
        },
        "interestAccrued": 0,
        "isPaymentHoliday": true,
        "lastPaidDate": "2016-09-06T13:37:50+03:00",
        "lastPenaltyAppliedDate": "2016-09-06T13:37:50+03:00",
        "nonScheduledPrincipalBalanceOverpayment": 0,
        "notes": "string",
        "number": "string",
        "organizationCommissionDue": 0,
        "parentAccountKey": "string",
        "penalty": {
          "amount": {
            "due": 0,
            "expected": 0,
            "paid": 0
          },
          "tax": {
            "due": 0,
            "expected": 0,
            "paid": 0
          }
        },
        "principal": {
          "amount": {
            "due": 0,
            "expected": 0,
            "paid": 0
          }
        },
        "repaidDate": "2016-09-06T13:37:50+03:00",
        "state": "PENDING"
      }
    ]
  },
  "status": "string"
}

Responses

Status Meaning Description Schema
200 OK Loan account schedule preview is ready. LoanAccountPreviewProcessPMTTransactionally
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan account not found. ErrorResponse

previewTranchesOnSchedule (Loan Accounts)

Code samples

# You can also use wget
curl -X POST /loans/{loanAccountId}/schedule:previewTranches \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /loans/{loanAccountId}/schedule:previewTranches HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/loans/{loanAccountId}/schedule:previewTranches',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/loans/{loanAccountId}/schedule:previewTranches',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/loans/{loanAccountId}/schedule:previewTranches', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/loans/{loanAccountId}/schedule:previewTranches', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans/{loanAccountId}/schedule:previewTranches");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/loans/{loanAccountId}/schedule:previewTranches", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /loans/{loanAccountId}/schedule:previewTranches

Preview loan account schedule for non-existent loan account

Body parameter

[
  {
    "amount": 0,
    "disbursementDetails": {
      "disbursementTransactionKey": "string",
      "expectedDisbursementDate": "2016-09-06T13:37:50+03:00"
    },
    "fees": [
      {
        "amount": 0,
        "percentage": 0,
        "predefinedFeeEncodedKey": "string"
      }
    ],
    "trancheNumber": 0
  }
]

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
loanAccountId (required) string The ID or encoded key of the loan account. path
body (required) LoanTranche List of tranches to be considered in the schedule preview. body

Example responses

200 Response

{
  "currency": {
    "code": "AED",
    "currencyCode": "string"
  },
  "installments": [
    {
      "carryForwardInterestSplit": {
        "amount": 0,
        "tax": 0
      },
      "customSettingDetails": [
        {
          "loanTransactionKey": "string",
          "source": "string",
          "type": "string"
        }
      ],
      "dueDate": "2016-09-06T13:37:50+03:00",
      "encodedKey": "string",
      "expectedClosingBalance": 0,
      "fee": {
        "amount": {
          "due": 0,
          "expected": 0,
          "expectedUnapplied": 0,
          "paid": 0
        },
        "tax": {
          "due": 0,
          "expected": 0,
          "paid": 0
        }
      },
      "feeDetails": [
        {
          "amount": {
            "due": 0,
            "expected": 0,
            "paid": 0,
            "reduced": 0
          },
          "encodedKey": "string",
          "id": "string",
          "name": "string",
          "tax": {
            "due": 0,
            "expected": 0,
            "paid": 0,
            "reduced": 0
          }
        }
      ],
      "fundersInterestDue": 0,
      "interest": {
        "amount": {
          "due": 0,
          "expected": 0,
          "paid": 0
        },
        "tax": {
          "due": 0,
          "expected": 0,
          "paid": 0
        }
      },
      "interestAccrued": 0,
      "isPaymentHoliday": true,
      "lastPaidDate": "2016-09-06T13:37:50+03:00",
      "lastPenaltyAppliedDate": "2016-09-06T13:37:50+03:00",
      "nonScheduledPrincipalBalanceOverpayment": 0,
      "notes": "string",
      "number": "string",
      "organizationCommissionDue": 0,
      "parentAccountKey": "string",
      "penalty": {
        "amount": {
          "due": 0,
          "expected": 0,
          "paid": 0
        },
        "tax": {
          "due": 0,
          "expected": 0,
          "paid": 0
        }
      },
      "principal": {
        "amount": {
          "due": 0,
          "expected": 0,
          "paid": 0
        }
      },
      "repaidDate": "2016-09-06T13:37:50+03:00",
      "state": "PENDING"
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK Loan account schedule preview is ready. LoanAccountSchedule
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

previewSchedule (Loan Accounts)

Code samples

# You can also use wget
curl -X POST /loans/schedule:preview \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /loans/schedule:preview HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/loans/schedule:preview',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/loans/schedule:preview',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/loans/schedule:preview', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/loans/schedule:preview', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans/schedule:preview");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/loans/schedule:preview", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /loans/schedule:preview

Preview loan account schedule for non-existent loan account

Body parameter

{
  "disbursementDetails": {
    "expectedDisbursementDate": "2016-09-06T13:37:50+03:00",
    "fees": [
      {
        "amount": 0,
        "percentage": 0,
        "predefinedFeeEncodedKey": "string"
      }
    ],
    "firstRepaymentDate": "2016-09-06T13:37:50+03:00"
  },
  "interestCommission": 0,
  "interestSettings": {
    "accountInterestRateSettings": [
      {
        "indexSourceKey": "string",
        "interestRate": 0,
        "interestRateCeilingValue": 0,
        "interestRateFloorValue": 0,
        "interestRateReviewCount": 0,
        "interestRateReviewUnit": "DAYS",
        "interestRateSource": "FIXED_INTEREST_RATE",
        "interestSpread": 0,
        "validFrom": "2016-09-06T13:37:50+03:00"
      }
    ],
    "interestRate": 0,
    "interestSpread": 0
  },
  "loanAmount": 0,
  "plannedInstallmentFees": [
    {
      "amount": 0,
      "applyOnDate": "2016-09-06T13:37:50+03:00",
      "installmentKey": "string",
      "installmentNumber": 0,
      "predefinedFeeKey": "string"
    }
  ],
  "productTypeKey": "string",
  "scheduleSettings": {
    "amortizationPeriod": 0,
    "fixedDaysOfMonth": [
      0
    ],
    "gracePeriod": 0,
    "paymentPlan": [
      {
        "amount": 0,
        "toInstallment": 0
      }
    ],
    "periodicPayment": 0,
    "principalRepaymentInterval": 0,
    "repaymentInstallments": 0,
    "repaymentPeriodCount": 0,
    "repaymentPeriodUnit": "DAYS"
  },
  "topUpAmount": 0,
  "tranches": [
    {
      "amount": 0,
      "disbursementDetails": {
        "disbursementTransactionKey": "string",
        "expectedDisbursementDate": "2016-09-06T13:37:50+03:00"
      },
      "fees": [
        {
          "amount": 0,
          "percentage": 0,
          "predefinedFeeEncodedKey": "string"
        }
      ],
      "trancheNumber": 0
    }
  ]
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
body (required) PreviewLoanAccountSchedule Loan account parameters for a schedule to be previewed. body

Example responses

200 Response

{
  "currency": {
    "code": "AED",
    "currencyCode": "string"
  },
  "installments": [
    {
      "carryForwardInterestSplit": {
        "amount": 0,
        "tax": 0
      },
      "customSettingDetails": [
        {
          "loanTransactionKey": "string",
          "source": "string",
          "type": "string"
        }
      ],
      "dueDate": "2016-09-06T13:37:50+03:00",
      "encodedKey": "string",
      "expectedClosingBalance": 0,
      "fee": {
        "amount": {
          "due": 0,
          "expected": 0,
          "expectedUnapplied": 0,
          "paid": 0
        },
        "tax": {
          "due": 0,
          "expected": 0,
          "paid": 0
        }
      },
      "feeDetails": [
        {
          "amount": {
            "due": 0,
            "expected": 0,
            "paid": 0,
            "reduced": 0
          },
          "encodedKey": "string",
          "id": "string",
          "name": "string",
          "tax": {
            "due": 0,
            "expected": 0,
            "paid": 0,
            "reduced": 0
          }
        }
      ],
      "fundersInterestDue": 0,
      "interest": {
        "amount": {
          "due": 0,
          "expected": 0,
          "paid": 0
        },
        "tax": {
          "due": 0,
          "expected": 0,
          "paid": 0
        }
      },
      "interestAccrued": 0,
      "isPaymentHoliday": true,
      "lastPaidDate": "2016-09-06T13:37:50+03:00",
      "lastPenaltyAppliedDate": "2016-09-06T13:37:50+03:00",
      "nonScheduledPrincipalBalanceOverpayment": 0,
      "notes": "string",
      "number": "string",
      "organizationCommissionDue": 0,
      "parentAccountKey": "string",
      "penalty": {
        "amount": {
          "due": 0,
          "expected": 0,
          "paid": 0
        },
        "tax": {
          "due": 0,
          "expected": 0,
          "paid": 0
        }
      },
      "principal": {
        "amount": {
          "due": 0,
          "expected": 0,
          "paid": 0
        }
      },
      "repaidDate": "2016-09-06T13:37:50+03:00",
      "state": "PENDING"
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK Loan account schedule preview is ready. LoanAccountSchedule
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

getLoanAccountDocument (Loan Accounts)

Code samples

# You can also use wget
curl -X GET /loans/{loanAccountId}/templates/{templateId} \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /loans/{loanAccountId}/templates/{templateId} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/loans/{loanAccountId}/templates/{templateId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/loans/{loanAccountId}/templates/{templateId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/loans/{loanAccountId}/templates/{templateId}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/loans/{loanAccountId}/templates/{templateId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans/{loanAccountId}/templates/{templateId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/loans/{loanAccountId}/templates/{templateId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /loans/{loanAccountId}/templates/{templateId}

Get loan account document

Parameters

Name Type Description In
loanAccountId (required) string The ID or encoded key of the loan account. path
templateId (required) string The ID of the loan product template. path
startDate string(date) The first date to consider when the document contains a list of transactions. Required when the document contains a transaction history. query
endDate string(date) The last date to consider when the document contains a list of transactions. Required when the document contains a transaction history. query

Example responses

200 Response

"string"

Responses

Status Meaning Description Schema
200 OK Loan account document returned. string
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan account or template not found. ErrorResponse

undoWriteOff (Loan Accounts)

Code samples

# You can also use wget
curl -X POST /loans/{loanAccountId}:undoWriteOff \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /loans/{loanAccountId}:undoWriteOff HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/loans/{loanAccountId}:undoWriteOff',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/loans/{loanAccountId}:undoWriteOff',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/loans/{loanAccountId}:undoWriteOff', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/loans/{loanAccountId}:undoWriteOff', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans/{loanAccountId}:undoWriteOff");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/loans/{loanAccountId}:undoWriteOff", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /loans/{loanAccountId}:undoWriteOff

Undo write off for loan account

Body parameter

{
  "notes": "string"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
loanAccountId (required) string The ID or encoded key of the loan account. path
body (required) LoanActionDetails Represents input details for a loan account write off. body

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
204 No Content Undo write off action applied. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan account not found. ErrorResponse

payOff (Loan Accounts)

Code samples

# You can also use wget
curl -X POST /loans/{loanAccountId}:payOff \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /loans/{loanAccountId}:payOff HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/loans/{loanAccountId}:payOff',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/loans/{loanAccountId}:payOff',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/loans/{loanAccountId}:payOff', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/loans/{loanAccountId}:payOff', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans/{loanAccountId}:payOff");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/loans/{loanAccountId}:payOff", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /loans/{loanAccountId}:payOff

Pay off loan account

Body parameter

{
  "externalId": "string",
  "notes": "string",
  "payOffAdjustableAmounts": {
    "carriedForwardInterestAmount": 0,
    "carriedForwardInterestFromArrearsAmount": 0,
    "carriedForwardPrincipalInArrearsAmount": 0,
    "feesPaid": 0,
    "interestFromArrearsPaid": 0,
    "interestPaid": 0,
    "nonScheduledFeeAmount": 0,
    "penaltyPaid": 0
  },
  "transactionDetails": {
    "transactionChannelId": "string",
    "transactionChannelKey": "string"
  }
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
loanAccountId (required) string The ID or encoded key of the loan account. path
body (required) LoanAccountPayOffInput Represents the information for loan account pay off action. body

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
204 No Content Pay off action posted. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan account not found. ErrorResponse

changePeriodicPayment (Loan Accounts)

Code samples

# You can also use wget
curl -X POST /loans/{loanAccountId}:changePeriodicPayment \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /loans/{loanAccountId}:changePeriodicPayment HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/loans/{loanAccountId}:changePeriodicPayment',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/loans/{loanAccountId}:changePeriodicPayment',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/loans/{loanAccountId}:changePeriodicPayment', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/loans/{loanAccountId}:changePeriodicPayment', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans/{loanAccountId}:changePeriodicPayment");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/loans/{loanAccountId}:changePeriodicPayment", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /loans/{loanAccountId}:changePeriodicPayment

Change the periodic payment amount for an active loan, so that it is still possible to have principal and interest installments, but with a smaller or greater total due amount than the initial one.

Body parameter

{
  "notes": "string",
  "periodicPayment": 0,
  "valueDate": "2016-09-06T13:37:50+03:00"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
loanAccountId (required) string The ID or encoded key of the loan account. path
body ChangePeriodicPaymentLoanAccountInput Represents information for an action to perform on a loan account. body

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
204 No Content Change periodic payment action posted. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan account not found. ErrorResponse

refinance (Loan Accounts)

Code samples

# You can also use wget
curl -X POST /loans/{loanAccountId}:refinance \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /loans/{loanAccountId}:refinance HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/loans/{loanAccountId}:refinance',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/loans/{loanAccountId}:refinance',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/loans/{loanAccountId}:refinance', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/loans/{loanAccountId}:refinance', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans/{loanAccountId}:refinance");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/loans/{loanAccountId}:refinance", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /loans/{loanAccountId}:refinance

Refinance loan account

Body parameter

{
  "keepSameAccountId": true,
  "loanAccount": {
    "accountArrearsSettings": {
      "tolerancePercentageOfOutstandingPrincipal": 15,
      "tolerancePeriod": 3
    },
    "disbursementDetails": {
      "expectedDisbursementDate": "2021-12-30T13:37:50+03:00",
      "fees": [
        {
          "amount": 10,
          "predefinedFeeEncodedKey": "def456"
        }
      ],
      "firstRepaymentDate": "2022-01-31T13:37:50+03:00"
    },
    "guarantors": [
      {
        "amount": 20000,
        "assetName": "Maserati",
        "guarantorKey": "ghi789",
        "guarantorType": "ASSET"
      }
    ],
    "id": "LOAN-1234",
    "interestSettings": {
      "interestRate": 1.5,
      "interestSpread": 0
    },
    "loanName": "home improvement loan",
    "notes": "a loan to create a new wing for the mansion",
    "penaltySettings": {
      "penaltyRate": 0
    },
    "principalPaymentSettings": {
      "amount": 0,
      "percentage": 0
    },
    "productTypeKey": "abc123",
    "scheduleSettings": {
      "billingCycleDays": {
        "days": [
          30
        ]
      },
      "fixedDaysOfMonth": [
        0
      ],
      "gracePeriod": 3,
      "periodicPayment": 0,
      "previewSchedule": {
        "numberOfPreviewedInstalments": 0
      },
      "repaymentInstallments": 24,
      "repaymentPeriodCount": 30,
      "repaymentPeriodUnit": "DAYS"
    }
  },
  "topUpAmount": 10000,
  "writeOffAmounts": {
    "fee": 0,
    "interest": 0,
    "penalty": 0
  }
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
loanAccountId (required) string The ID or encoded key of the loan account. path
body RefinanceLoanAccountAction Represents information for an action to perform on a loan account. body

Example responses

200 Response

{
  "accountArrearsSettings": {
    "dateCalculationMethod": "ACCOUNT_FIRST_WENT_TO_ARREARS",
    "encodedKey": "string",
    "monthlyToleranceDay": 0,
    "nonWorkingDaysMethod": "INCLUDED",
    "toleranceCalculationMethod": "ARREARS_TOLERANCE_PERIOD",
    "toleranceFloorAmount": 0,
    "tolerancePercentageOfOutstandingPrincipal": 0,
    "tolerancePeriod": 0
  },
  "accountHolderKey": "string",
  "accountHolderType": "CLIENT",
  "accountState": "PARTIAL_APPLICATION",
  "accountSubState": "PARTIALLY_DISBURSED",
  "accruedInterest": 0,
  "accruedPenalty": 0,
  "activationTransactionKey": "string",
  "adjustTotalDueForInstallmentsWithDifferentInterval": true,
  "allowOffset": true,
  "approvedDate": "2016-09-06T13:37:50+03:00",
  "arrearsTolerancePeriod": 0,
  "assets": [
    {
      "amount": 0,
      "assetName": "string",
      "depositAccountKey": "string",
      "encodedKey": "string",
      "guarantorKey": "string",
      "guarantorType": "CLIENT",
      "originalAmount": 0,
      "originalCurrency": {
        "code": "AED",
        "currencyCode": "string"
      }
    }
  ],
  "assignedBranchKey": "string",
  "assignedCentreKey": "string",
  "assignedUserKey": "string",
  "balances": {
    "feesBalance": 0,
    "feesDue": 0,
    "feesPaid": 0,
    "holdBalance": 0,
    "interestBalance": 0,
    "interestDue": 0,
    "interestFromArrearsBalance": 0,
    "interestFromArrearsDue": 0,
    "interestFromArrearsPaid": 0,
    "interestPaid": 0,
    "penaltyBalance": 0,
    "penaltyDue": 0,
    "penaltyPaid": 0,
    "principalBalance": 0,
    "principalDue": 0,
    "principalPaid": 0,
    "redrawBalance": 0
  },
  "closedDate": "2016-09-06T13:37:50+03:00",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "creditArrangementKey": "string",
  "currency": {
    "code": "AED",
    "currencyCode": "string"
  },
  "daysInArrears": 0,
  "daysLate": 0,
  "disbursementDetails": {
    "disbursementDate": "2016-09-06T13:37:50+03:00",
    "encodedKey": "string",
    "expectedDisbursementDate": "2016-09-06T13:37:50+03:00",
    "fees": [
      {
        "amount": 0,
        "encodedKey": "string",
        "percentage": 0,
        "predefinedFeeEncodedKey": "string"
      }
    ],
    "firstRepaymentDate": "2016-09-06T13:37:50+03:00",
    "transactionDetails": {
      "encodedKey": "string",
      "internalTransfer": true,
      "targetDepositAccountKey": "string",
      "transactionChannelId": "string",
      "transactionChannelKey": "string"
    }
  },
  "encodedKey": "string",
  "feesSettings": {
    "accruedFee": 0,
    "accruedFeeFromArrears": 0,
    "feeRate": 0
  },
  "fundingSources": [
    {
      "amount": 0,
      "assetName": "string",
      "depositAccountKey": "string",
      "encodedKey": "string",
      "guarantorKey": "string",
      "guarantorType": "CLIENT",
      "id": "string",
      "interestCommission": 0,
      "sharePercentage": 0
    }
  ],
  "futurePaymentsAcceptance": "NO_FUTURE_PAYMENTS",
  "guarantors": [
    {
      "amount": 0,
      "assetName": "string",
      "depositAccountKey": "string",
      "encodedKey": "string",
      "guarantorKey": "string",
      "guarantorType": "CLIENT"
    }
  ],
  "id": "string",
  "interestAccruedInBillingCycle": 0,
  "interestCommission": 0,
  "interestFromArrearsAccrued": 0,
  "interestSettings": {
    "accountInterestRateSettings": [
      {
        "encodedKey": "string",
        "indexSourceKey": "string",
        "interestRate": 0,
        "interestRateCeilingValue": 0,
        "interestRateFloorValue": 0,
        "interestRateReviewCount": 0,
        "interestRateReviewUnit": "DAYS",
        "interestRateSource": "FIXED_INTEREST_RATE",
        "interestSpread": 0,
        "validFrom": "2016-09-06T13:37:50+03:00"
      }
    ],
    "accrueInterestAfterMaturity": true,
    "accrueLateInterest": true,
    "effectiveInterestRate": 0,
    "interestApplicationDays": {
      "daysInMonth": [
        0
      ],
      "shortMonthHandlingMethod": "LAST_DAY_IN_MONTH"
    },
    "interestApplicationMethod": "AFTER_DISBURSEMENT",
    "interestBalanceCalculationMethod": "ONLY_PRINCIPAL",
    "interestCalculationMethod": "FLAT",
    "interestChargeFrequency": "ANNUALIZED",
    "interestRate": 0,
    "interestRateReviewCount": 0,
    "interestRateReviewUnit": "DAYS",
    "interestRateSource": "FIXED_INTEREST_RATE",
    "interestSpread": 0,
    "interestType": "SIMPLE_INTEREST",
    "pmtAdjustmentThreshold": {
      "method": "WORKING_DAYS",
      "numberOfDays": 0
    }
  },
  "lastAccountAppraisalDate": "2016-09-06T13:37:50+03:00",
  "lastInterestAppliedDate": "2016-09-06T13:37:50+03:00",
  "lastInterestReviewDate": "2016-09-06T13:37:50+03:00",
  "lastLockedDate": "2016-09-06T13:37:50+03:00",
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "lastSetToArrearsDate": "2016-09-06T13:37:50+03:00",
  "lastTaxRateReviewDate": "2016-09-06T13:37:50+03:00",
  "latePaymentsRecalculationMethod": "OVERDUE_INSTALLMENTS_INCREASE",
  "loanAmount": 0,
  "loanName": "string",
  "lockedAccountTotalDueType": "BALANCE_AMOUNT",
  "lockedOperations": [
    "APPLY_INTEREST"
  ],
  "migrationEventKey": "string",
  "modifyInterestForFirstInstallment": true,
  "notes": "string",
  "originalAccountKey": "string",
  "paymentHolidaysAccruedInterest": 0,
  "paymentMethod": "HORIZONTAL",
  "penaltySettings": {
    "loanPenaltyCalculationMethod": "NONE",
    "penaltyRate": 0
  },
  "plannedInstallmentFees": [
    {
      "amount": 0,
      "applyOnDate": "2016-09-06T13:37:50+03:00",
      "encodedKey": "string",
      "installmentKey": "string",
      "installmentNumber": 0,
      "predefinedFeeKey": "string"
    }
  ],
  "prepaymentSettings": {
    "applyInterestOnPrepaymentMethod": "AUTOMATIC",
    "elementsRecalculationMethod": "PRINCIPAL_EXPECTED_FIXED",
    "ercFreeAllowanceAmount": 0,
    "ercFreeAllowancePercentage": 0,
    "prepaymentRecalculationMethod": "NO_RECALCULATION",
    "principalPaidInstallmentStatus": "PARTIALLY_PAID"
  },
  "principalPaymentSettings": {
    "amount": 0,
    "encodedKey": "string",
    "includeFeesInFloorAmount": true,
    "includeInterestInFloorAmount": true,
    "percentage": 0,
    "principalCeilingValue": 0,
    "principalFloorValue": 0,
    "principalPaymentMethod": "FLAT",
    "totalDueAmountFloor": 0,
    "totalDuePayment": "FLAT"
  },
  "productTypeKey": "string",
  "redrawSettings": {
    "restrictNextDueWithdrawal": true
  },
  "rescheduledAccountKey": "string",
  "scheduleSettings": {
    "amortizationPeriod": 0,
    "billingCycle": {
      "days": [
        0
      ]
    },
    "defaultFirstRepaymentDueDateOffset": 0,
    "fixedDaysOfMonth": [
      0
    ],
    "gracePeriod": 0,
    "gracePeriodType": "NONE",
    "hasCustomSchedule": true,
    "paymentPlan": [
      {
        "amount": 0,
        "encodedKey": "string",
        "toInstallment": 0
      }
    ],
    "periodicPayment": 0,
    "previewSchedule": {
      "numberOfPreviewedInstalments": 0
    },
    "principalRepaymentInterval": 0,
    "repaymentInstallments": 0,
    "repaymentPeriodCount": 0,
    "repaymentPeriodUnit": "DAYS",
    "repaymentScheduleMethod": "NONE",
    "scheduleDueDatesMethod": "INTERVAL",
    "shortMonthHandlingMethod": "LAST_DAY_IN_MONTH"
  },
  "settlementAccountKey": "string",
  "taxRate": 0,
  "terminationDate": "2016-09-06T13:37:50+03:00",
  "tranches": [
    {
      "amount": 0,
      "disbursementDetails": {
        "disbursementTransactionKey": "string",
        "expectedDisbursementDate": "2016-09-06T13:37:50+03:00"
      },
      "encodedKey": "string",
      "fees": [
        {
          "amount": 0,
          "encodedKey": "string",
          "percentage": 0,
          "predefinedFeeEncodedKey": "string"
        }
      ],
      "trancheNumber": 0
    }
  ]
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
200 OK Refinance action posted. LoanAccountFullDetails
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan account not found. ErrorResponse

reschedule (Loan Accounts)

Code samples

# You can also use wget
curl -X POST /loans/{loanAccountId}:reschedule \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /loans/{loanAccountId}:reschedule HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/loans/{loanAccountId}:reschedule',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/loans/{loanAccountId}:reschedule',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/loans/{loanAccountId}:reschedule', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/loans/{loanAccountId}:reschedule', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans/{loanAccountId}:reschedule");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/loans/{loanAccountId}:reschedule", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /loans/{loanAccountId}:reschedule

Reschedule loan account

Body parameter

{
  "keepSameAccountId": true,
  "loanAccount": {
    "accountArrearsSettings": {
      "tolerancePercentageOfOutstandingPrincipal": 15,
      "tolerancePeriod": 3
    },
    "disbursementDetails": {
      "firstRepaymentDate": "2021-12-30T13:37:50+03:00"
    },
    "guarantors": [
      {
        "amount": 5000,
        "assetName": "Tesla car",
        "guarantorType": "ASSET"
      }
    ],
    "id": "LOAN-abc123",
    "interestCommission": 1.5,
    "interestSettings": {
      "interestRate": 7,
      "interestSpread": 0.75
    },
    "loanName": "Business Loan",
    "notes": "A loan for expanding the business",
    "penaltySettings": {
      "penaltyRate": 0
    },
    "principalPaymentSettings": {
      "amount": 0,
      "percentage": 0
    },
    "productTypeKey": "def456",
    "scheduleSettings": {
      "billingCycleDays": {
        "days": [
          30
        ]
      },
      "fixedDaysOfMonth": [
        0
      ],
      "gracePeriod": 0,
      "periodicPayment": 0,
      "previewSchedule": {
        "numberOfPreviewedInstalments": 0
      },
      "repaymentInstallments": 0,
      "repaymentPeriodCount": 0,
      "repaymentPeriodUnit": "DAYS"
    }
  },
  "writeOffAmounts": {
    "fee": 0,
    "interest": 0,
    "penalty": 0,
    "principal": 0
  }
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
loanAccountId (required) string The ID or encoded key of the loan account. path
body RescheduleLoanAccountAction Represents information for an action to perform on a loan account. body

Example responses

200 Response

{
  "accountArrearsSettings": {
    "dateCalculationMethod": "ACCOUNT_FIRST_WENT_TO_ARREARS",
    "encodedKey": "string",
    "monthlyToleranceDay": 0,
    "nonWorkingDaysMethod": "INCLUDED",
    "toleranceCalculationMethod": "ARREARS_TOLERANCE_PERIOD",
    "toleranceFloorAmount": 0,
    "tolerancePercentageOfOutstandingPrincipal": 0,
    "tolerancePeriod": 0
  },
  "accountHolderKey": "string",
  "accountHolderType": "CLIENT",
  "accountState": "PARTIAL_APPLICATION",
  "accountSubState": "PARTIALLY_DISBURSED",
  "accruedInterest": 0,
  "accruedPenalty": 0,
  "activationTransactionKey": "string",
  "adjustTotalDueForInstallmentsWithDifferentInterval": true,
  "allowOffset": true,
  "approvedDate": "2016-09-06T13:37:50+03:00",
  "arrearsTolerancePeriod": 0,
  "assets": [
    {
      "amount": 0,
      "assetName": "string",
      "depositAccountKey": "string",
      "encodedKey": "string",
      "guarantorKey": "string",
      "guarantorType": "CLIENT",
      "originalAmount": 0,
      "originalCurrency": {
        "code": "AED",
        "currencyCode": "string"
      }
    }
  ],
  "assignedBranchKey": "string",
  "assignedCentreKey": "string",
  "assignedUserKey": "string",
  "balances": {
    "feesBalance": 0,
    "feesDue": 0,
    "feesPaid": 0,
    "holdBalance": 0,
    "interestBalance": 0,
    "interestDue": 0,
    "interestFromArrearsBalance": 0,
    "interestFromArrearsDue": 0,
    "interestFromArrearsPaid": 0,
    "interestPaid": 0,
    "penaltyBalance": 0,
    "penaltyDue": 0,
    "penaltyPaid": 0,
    "principalBalance": 0,
    "principalDue": 0,
    "principalPaid": 0,
    "redrawBalance": 0
  },
  "closedDate": "2016-09-06T13:37:50+03:00",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "creditArrangementKey": "string",
  "currency": {
    "code": "AED",
    "currencyCode": "string"
  },
  "daysInArrears": 0,
  "daysLate": 0,
  "disbursementDetails": {
    "disbursementDate": "2016-09-06T13:37:50+03:00",
    "encodedKey": "string",
    "expectedDisbursementDate": "2016-09-06T13:37:50+03:00",
    "fees": [
      {
        "amount": 0,
        "encodedKey": "string",
        "percentage": 0,
        "predefinedFeeEncodedKey": "string"
      }
    ],
    "firstRepaymentDate": "2016-09-06T13:37:50+03:00",
    "transactionDetails": {
      "encodedKey": "string",
      "internalTransfer": true,
      "targetDepositAccountKey": "string",
      "transactionChannelId": "string",
      "transactionChannelKey": "string"
    }
  },
  "encodedKey": "string",
  "feesSettings": {
    "accruedFee": 0,
    "accruedFeeFromArrears": 0,
    "feeRate": 0
  },
  "fundingSources": [
    {
      "amount": 0,
      "assetName": "string",
      "depositAccountKey": "string",
      "encodedKey": "string",
      "guarantorKey": "string",
      "guarantorType": "CLIENT",
      "id": "string",
      "interestCommission": 0,
      "sharePercentage": 0
    }
  ],
  "futurePaymentsAcceptance": "NO_FUTURE_PAYMENTS",
  "guarantors": [
    {
      "amount": 0,
      "assetName": "string",
      "depositAccountKey": "string",
      "encodedKey": "string",
      "guarantorKey": "string",
      "guarantorType": "CLIENT"
    }
  ],
  "id": "string",
  "interestAccruedInBillingCycle": 0,
  "interestCommission": 0,
  "interestFromArrearsAccrued": 0,
  "interestSettings": {
    "accountInterestRateSettings": [
      {
        "encodedKey": "string",
        "indexSourceKey": "string",
        "interestRate": 0,
        "interestRateCeilingValue": 0,
        "interestRateFloorValue": 0,
        "interestRateReviewCount": 0,
        "interestRateReviewUnit": "DAYS",
        "interestRateSource": "FIXED_INTEREST_RATE",
        "interestSpread": 0,
        "validFrom": "2016-09-06T13:37:50+03:00"
      }
    ],
    "accrueInterestAfterMaturity": true,
    "accrueLateInterest": true,
    "effectiveInterestRate": 0,
    "interestApplicationDays": {
      "daysInMonth": [
        0
      ],
      "shortMonthHandlingMethod": "LAST_DAY_IN_MONTH"
    },
    "interestApplicationMethod": "AFTER_DISBURSEMENT",
    "interestBalanceCalculationMethod": "ONLY_PRINCIPAL",
    "interestCalculationMethod": "FLAT",
    "interestChargeFrequency": "ANNUALIZED",
    "interestRate": 0,
    "interestRateReviewCount": 0,
    "interestRateReviewUnit": "DAYS",
    "interestRateSource": "FIXED_INTEREST_RATE",
    "interestSpread": 0,
    "interestType": "SIMPLE_INTEREST",
    "pmtAdjustmentThreshold": {
      "method": "WORKING_DAYS",
      "numberOfDays": 0
    }
  },
  "lastAccountAppraisalDate": "2016-09-06T13:37:50+03:00",
  "lastInterestAppliedDate": "2016-09-06T13:37:50+03:00",
  "lastInterestReviewDate": "2016-09-06T13:37:50+03:00",
  "lastLockedDate": "2016-09-06T13:37:50+03:00",
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "lastSetToArrearsDate": "2016-09-06T13:37:50+03:00",
  "lastTaxRateReviewDate": "2016-09-06T13:37:50+03:00",
  "latePaymentsRecalculationMethod": "OVERDUE_INSTALLMENTS_INCREASE",
  "loanAmount": 0,
  "loanName": "string",
  "lockedAccountTotalDueType": "BALANCE_AMOUNT",
  "lockedOperations": [
    "APPLY_INTEREST"
  ],
  "migrationEventKey": "string",
  "modifyInterestForFirstInstallment": true,
  "notes": "string",
  "originalAccountKey": "string",
  "paymentHolidaysAccruedInterest": 0,
  "paymentMethod": "HORIZONTAL",
  "penaltySettings": {
    "loanPenaltyCalculationMethod": "NONE",
    "penaltyRate": 0
  },
  "plannedInstallmentFees": [
    {
      "amount": 0,
      "applyOnDate": "2016-09-06T13:37:50+03:00",
      "encodedKey": "string",
      "installmentKey": "string",
      "installmentNumber": 0,
      "predefinedFeeKey": "string"
    }
  ],
  "prepaymentSettings": {
    "applyInterestOnPrepaymentMethod": "AUTOMATIC",
    "elementsRecalculationMethod": "PRINCIPAL_EXPECTED_FIXED",
    "ercFreeAllowanceAmount": 0,
    "ercFreeAllowancePercentage": 0,
    "prepaymentRecalculationMethod": "NO_RECALCULATION",
    "principalPaidInstallmentStatus": "PARTIALLY_PAID"
  },
  "principalPaymentSettings": {
    "amount": 0,
    "encodedKey": "string",
    "includeFeesInFloorAmount": true,
    "includeInterestInFloorAmount": true,
    "percentage": 0,
    "principalCeilingValue": 0,
    "principalFloorValue": 0,
    "principalPaymentMethod": "FLAT",
    "totalDueAmountFloor": 0,
    "totalDuePayment": "FLAT"
  },
  "productTypeKey": "string",
  "redrawSettings": {
    "restrictNextDueWithdrawal": true
  },
  "rescheduledAccountKey": "string",
  "scheduleSettings": {
    "amortizationPeriod": 0,
    "billingCycle": {
      "days": [
        0
      ]
    },
    "defaultFirstRepaymentDueDateOffset": 0,
    "fixedDaysOfMonth": [
      0
    ],
    "gracePeriod": 0,
    "gracePeriodType": "NONE",
    "hasCustomSchedule": true,
    "paymentPlan": [
      {
        "amount": 0,
        "encodedKey": "string",
        "toInstallment": 0
      }
    ],
    "periodicPayment": 0,
    "previewSchedule": {
      "numberOfPreviewedInstalments": 0
    },
    "principalRepaymentInterval": 0,
    "repaymentInstallments": 0,
    "repaymentPeriodCount": 0,
    "repaymentPeriodUnit": "DAYS",
    "repaymentScheduleMethod": "NONE",
    "scheduleDueDatesMethod": "INTERVAL",
    "shortMonthHandlingMethod": "LAST_DAY_IN_MONTH"
  },
  "settlementAccountKey": "string",
  "taxRate": 0,
  "terminationDate": "2016-09-06T13:37:50+03:00",
  "tranches": [
    {
      "amount": 0,
      "disbursementDetails": {
        "disbursementTransactionKey": "string",
        "expectedDisbursementDate": "2016-09-06T13:37:50+03:00"
      },
      "encodedKey": "string",
      "fees": [
        {
          "amount": 0,
          "encodedKey": "string",
          "percentage": 0,
          "predefinedFeeEncodedKey": "string"
        }
      ],
      "trancheNumber": 0
    }
  ]
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
200 OK Reschedule action posted. LoanAccountFullDetails
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan account not found. ErrorResponse

previewPayOffAmounts (Loan Accounts)

Code samples

# You can also use wget
curl -X POST /loans/{loanAccountId}:previewPayOffAmounts \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /loans/{loanAccountId}:previewPayOffAmounts HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/loans/{loanAccountId}:previewPayOffAmounts',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/loans/{loanAccountId}:previewPayOffAmounts',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/loans/{loanAccountId}:previewPayOffAmounts', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/loans/{loanAccountId}:previewPayOffAmounts', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans/{loanAccountId}:previewPayOffAmounts");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/loans/{loanAccountId}:previewPayOffAmounts", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /loans/{loanAccountId}:previewPayOffAmounts

Preview pay off due amounts in a future date

Body parameter

{
  "valueDate": "2016-09-06T13:37:50+03:00"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
loanAccountId (required) string The ID or encoded key of the loan account. path
body PreviewPayOffDueAmountsInAFutureDateInput Represents information for an action to perform on a loan account. body

Example responses

200 Response

{
  "carriedForwardInterestBalance": 0,
  "carriedForwardInterestFromArrearsBalance": 0,
  "carriedForwardPrincipalInArrears": 0,
  "earlyRepaymentCharge": 0,
  "feeBalance": 0,
  "interestBalance": 0,
  "interestFromArrearsBalance": 0,
  "penaltyBalance": 0,
  "principalBalance": 0,
  "totalBalance": 0
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
200 OK Preview pay off due amounts in a future date action posted. PreviewPayOffDueAmountsInAFutureDateWrapper
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan account not found. ErrorResponse

deleteCard (Loan Accounts)

Code samples

# You can also use wget
curl -X DELETE /loans/{loanAccountId}/cards/{cardReferenceToken} \
  -H 'Accept: application/vnd.mambu.v2+json'

DELETE /loans/{loanAccountId}/cards/{cardReferenceToken} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/loans/{loanAccountId}/cards/{cardReferenceToken}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.delete '/loans/{loanAccountId}/cards/{cardReferenceToken}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.delete('/loans/{loanAccountId}/cards/{cardReferenceToken}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('DELETE','/loans/{loanAccountId}/cards/{cardReferenceToken}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans/{loanAccountId}/cards/{cardReferenceToken}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/loans/{loanAccountId}/cards/{cardReferenceToken}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /loans/{loanAccountId}/cards/{cardReferenceToken}

Represents the information needed to delete a card associated to an account using its reference token.

Parameters

Name Type Description In
loanAccountId (required) string The ID or encoded key of the loan account. path
cardReferenceToken (required) string The reference token of the card to be returned. path

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
204 No Content The card was deleted. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan account not found. ErrorResponse

undoReschedule (Loan Accounts)

Code samples

# You can also use wget
curl -X POST /loans/{loanAccountId}:undoReschedule \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /loans/{loanAccountId}:undoReschedule HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/loans/{loanAccountId}:undoReschedule',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/loans/{loanAccountId}:undoReschedule',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/loans/{loanAccountId}:undoReschedule', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/loans/{loanAccountId}:undoReschedule', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans/{loanAccountId}:undoReschedule");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/loans/{loanAccountId}:undoReschedule", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /loans/{loanAccountId}:undoReschedule

Undo loan account reschedule action

Body parameter

{
  "notes": "string"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
loanAccountId (required) string The ID or encoded key of the loan account. path
body LoanActionDetails Represents information for an action to perform on a loan account. body

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
204 No Content Undo reschedule action posted. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan account not found. ErrorResponse

changeArrearsSettings (Loan Accounts)

Code samples

# You can also use wget
curl -X POST /loans/{loanAccountId}:changeArrearsSettings \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /loans/{loanAccountId}:changeArrearsSettings HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/loans/{loanAccountId}:changeArrearsSettings',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/loans/{loanAccountId}:changeArrearsSettings',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/loans/{loanAccountId}:changeArrearsSettings', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/loans/{loanAccountId}:changeArrearsSettings', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans/{loanAccountId}:changeArrearsSettings");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/loans/{loanAccountId}:changeArrearsSettings", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /loans/{loanAccountId}:changeArrearsSettings

Change arrears settings for loan account

Body parameter

{
  "arrearsTolerancePeriod": 0,
  "entryDate": "2016-09-06T13:37:50+03:00",
  "notes": "string"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
loanAccountId (required) string The ID or encoded key of the loan account. path
body ChangeArrearsSettingsInput Represents information for an action to perform on a loan account. body

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
204 No Content Change arrears settings action posted. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan account not found. ErrorResponse

changeInterestRate (Loan Accounts)

Code samples

# You can also use wget
curl -X POST /loans/{loanAccountId}:changeInterestRate \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /loans/{loanAccountId}:changeInterestRate HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/loans/{loanAccountId}:changeInterestRate',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/loans/{loanAccountId}:changeInterestRate',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/loans/{loanAccountId}:changeInterestRate', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/loans/{loanAccountId}:changeInterestRate', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans/{loanAccountId}:changeInterestRate");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/loans/{loanAccountId}:changeInterestRate", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /loans/{loanAccountId}:changeInterestRate

Change loan account interest rate

Body parameter

{
  "interestRate": 0,
  "interestSpread": 0,
  "notes": "string",
  "valueDate": "2016-09-06T13:37:50+03:00"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
loanAccountId (required) string The ID or encoded key of the loan account. path
body ChangeInterestRateLoanAccountInput Represents information for an action to perform on a loan account. body

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
204 No Content Change interest rate action posted. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan account not found. ErrorResponse

changeDueDatesSettings (Loan Accounts)

Code samples

# You can also use wget
curl -X POST /loans/{loanAccountId}:changeDueDatesSettings \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /loans/{loanAccountId}:changeDueDatesSettings HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/loans/{loanAccountId}:changeDueDatesSettings',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/loans/{loanAccountId}:changeDueDatesSettings',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/loans/{loanAccountId}:changeDueDatesSettings', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/loans/{loanAccountId}:changeDueDatesSettings', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans/{loanAccountId}:changeDueDatesSettings");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/loans/{loanAccountId}:changeDueDatesSettings", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /loans/{loanAccountId}:changeDueDatesSettings

Change due dates settings for loan account

Body parameter

{
  "entryDate": "2016-09-06T13:37:50+03:00",
  "fixedDaysOfMonth": [
    0
  ],
  "notes": "string",
  "valueDate": "2016-09-06T13:37:50+03:00"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
loanAccountId (required) string The ID or encoded key of the loan account. path
body ChangeDueDatesSettingsInput Represents information for an action to perform on a loan account. body

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
204 No Content Change due dates settings action posted. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan account not found. ErrorResponse

Code samples

# You can also use wget
curl -X POST /loans:search \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json'

POST /loans:search HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/loans:search',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.post '/loans:search',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.post('/loans:search', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/loans:search', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans:search");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/loans:search", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /loans:search

Search loan accounts

For more information on performing searches, please read the Searching for Records section above.

Body parameter

{
  "filterCriteria": [
    {
      "field": "accountHolderKey",
      "operator": "EQUALS",
      "secondValue": "string",
      "value": "string",
      "values": [
        "string"
      ]
    }
  ],
  "sortingCriteria": {
    "field": "encodedKey",
    "order": "ASC"
  }
}

Parameters

Name Type Description In
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query
cursor string Pagination, cursor to start searching at when retrieving elements, used in combination with limit to paginate results query
detailsLevel string The level of details to return: FULL means the full details of the object will be returned (custom field values, address, contact info, or any other related objects) and BASIC will return only the first level elements of the object. query
body (required) LoanAccountSearchCriteria Criteria to be used to search the loan accounts. body

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

[
  {
    "accountArrearsSettings": {
      "dateCalculationMethod": "ACCOUNT_FIRST_WENT_TO_ARREARS",
      "encodedKey": "string",
      "monthlyToleranceDay": 0,
      "nonWorkingDaysMethod": "INCLUDED",
      "toleranceCalculationMethod": "ARREARS_TOLERANCE_PERIOD",
      "toleranceFloorAmount": 0,
      "tolerancePercentageOfOutstandingPrincipal": 0,
      "tolerancePeriod": 0
    },
    "accountHolderKey": "string",
    "accountHolderType": "CLIENT",
    "accountState": "PARTIAL_APPLICATION",
    "accountSubState": "PARTIALLY_DISBURSED",
    "accruedInterest": 0,
    "accruedPenalty": 0,
    "activationTransactionKey": "string",
    "adjustTotalDueForInstallmentsWithDifferentInterval": true,
    "allowOffset": true,
    "approvedDate": "2016-09-06T13:37:50+03:00",
    "arrearsTolerancePeriod": 0,
    "assets": [
      {
        "amount": 0,
        "assetName": "string",
        "depositAccountKey": "string",
        "encodedKey": "string",
        "guarantorKey": "string",
        "guarantorType": "CLIENT",
        "originalAmount": 0,
        "originalCurrency": {
          "code": "AED",
          "currencyCode": "string"
        }
      }
    ],
    "assignedBranchKey": "string",
    "assignedCentreKey": "string",
    "assignedUserKey": "string",
    "balances": {
      "feesBalance": 0,
      "feesDue": 0,
      "feesPaid": 0,
      "holdBalance": 0,
      "interestBalance": 0,
      "interestDue": 0,
      "interestFromArrearsBalance": 0,
      "interestFromArrearsDue": 0,
      "interestFromArrearsPaid": 0,
      "interestPaid": 0,
      "penaltyBalance": 0,
      "penaltyDue": 0,
      "penaltyPaid": 0,
      "principalBalance": 0,
      "principalDue": 0,
      "principalPaid": 0,
      "redrawBalance": 0
    },
    "closedDate": "2016-09-06T13:37:50+03:00",
    "creationDate": "2016-09-06T13:37:50+03:00",
    "creditArrangementKey": "string",
    "currency": {
      "code": "AED",
      "currencyCode": "string"
    },
    "daysInArrears": 0,
    "daysLate": 0,
    "disbursementDetails": {
      "disbursementDate": "2016-09-06T13:37:50+03:00",
      "encodedKey": "string",
      "expectedDisbursementDate": "2016-09-06T13:37:50+03:00",
      "fees": [
        {
          "amount": 0,
          "encodedKey": "string",
          "percentage": 0,
          "predefinedFeeEncodedKey": "string"
        }
      ],
      "firstRepaymentDate": "2016-09-06T13:37:50+03:00",
      "transactionDetails": {
        "encodedKey": "string",
        "internalTransfer": true,
        "targetDepositAccountKey": "string",
        "transactionChannelId": "string",
        "transactionChannelKey": "string"
      }
    },
    "encodedKey": "string",
    "feesSettings": {
      "accruedFee": 0,
      "accruedFeeFromArrears": 0,
      "feeRate": 0
    },
    "fundingSources": [
      {
        "amount": 0,
        "assetName": "string",
        "depositAccountKey": "string",
        "encodedKey": "string",
        "guarantorKey": "string",
        "guarantorType": "CLIENT",
        "id": "string",
        "interestCommission": 0,
        "sharePercentage": 0
      }
    ],
    "futurePaymentsAcceptance": "NO_FUTURE_PAYMENTS",
    "guarantors": [
      {
        "amount": 0,
        "assetName": "string",
        "depositAccountKey": "string",
        "encodedKey": "string",
        "guarantorKey": "string",
        "guarantorType": "CLIENT"
      }
    ],
    "id": "string",
    "interestAccruedInBillingCycle": 0,
    "interestCommission": 0,
    "interestFromArrearsAccrued": 0,
    "interestSettings": {
      "accountInterestRateSettings": [
        {
          "encodedKey": "string",
          "indexSourceKey": "string",
          "interestRate": 0,
          "interestRateCeilingValue": 0,
          "interestRateFloorValue": 0,
          "interestRateReviewCount": 0,
          "interestRateReviewUnit": "DAYS",
          "interestRateSource": "FIXED_INTEREST_RATE",
          "interestSpread": 0,
          "validFrom": "2016-09-06T13:37:50+03:00"
        }
      ],
      "accrueInterestAfterMaturity": true,
      "accrueLateInterest": true,
      "effectiveInterestRate": 0,
      "interestApplicationDays": {
        "daysInMonth": [
          0
        ],
        "shortMonthHandlingMethod": "LAST_DAY_IN_MONTH"
      },
      "interestApplicationMethod": "AFTER_DISBURSEMENT",
      "interestBalanceCalculationMethod": "ONLY_PRINCIPAL",
      "interestCalculationMethod": "FLAT",
      "interestChargeFrequency": "ANNUALIZED",
      "interestRate": 0,
      "interestRateReviewCount": 0,
      "interestRateReviewUnit": "DAYS",
      "interestRateSource": "FIXED_INTEREST_RATE",
      "interestSpread": 0,
      "interestType": "SIMPLE_INTEREST",
      "pmtAdjustmentThreshold": {
        "method": "WORKING_DAYS",
        "numberOfDays": 0
      }
    },
    "lastAccountAppraisalDate": "2016-09-06T13:37:50+03:00",
    "lastInterestAppliedDate": "2016-09-06T13:37:50+03:00",
    "lastInterestReviewDate": "2016-09-06T13:37:50+03:00",
    "lastLockedDate": "2016-09-06T13:37:50+03:00",
    "lastModifiedDate": "2016-09-06T13:37:50+03:00",
    "lastSetToArrearsDate": "2016-09-06T13:37:50+03:00",
    "lastTaxRateReviewDate": "2016-09-06T13:37:50+03:00",
    "latePaymentsRecalculationMethod": "OVERDUE_INSTALLMENTS_INCREASE",
    "loanAmount": 0,
    "loanName": "string",
    "lockedAccountTotalDueType": "BALANCE_AMOUNT",
    "lockedOperations": [
      "APPLY_INTEREST"
    ],
    "migrationEventKey": "string",
    "modifyInterestForFirstInstallment": true,
    "notes": "string",
    "originalAccountKey": "string",
    "paymentHolidaysAccruedInterest": 0,
    "paymentMethod": "HORIZONTAL",
    "penaltySettings": {
      "loanPenaltyCalculationMethod": "NONE",
      "penaltyRate": 0
    },
    "plannedInstallmentFees": [
      {
        "amount": 0,
        "applyOnDate": "2016-09-06T13:37:50+03:00",
        "encodedKey": "string",
        "installmentKey": "string",
        "installmentNumber": 0,
        "predefinedFeeKey": "string"
      }
    ],
    "prepaymentSettings": {
      "applyInterestOnPrepaymentMethod": "AUTOMATIC",
      "elementsRecalculationMethod": "PRINCIPAL_EXPECTED_FIXED",
      "ercFreeAllowanceAmount": 0,
      "ercFreeAllowancePercentage": 0,
      "prepaymentRecalculationMethod": "NO_RECALCULATION",
      "principalPaidInstallmentStatus": "PARTIALLY_PAID"
    },
    "principalPaymentSettings": {
      "amount": 0,
      "encodedKey": "string",
      "includeFeesInFloorAmount": true,
      "includeInterestInFloorAmount": true,
      "percentage": 0,
      "principalCeilingValue": 0,
      "principalFloorValue": 0,
      "principalPaymentMethod": "FLAT",
      "totalDueAmountFloor": 0,
      "totalDuePayment": "FLAT"
    },
    "productTypeKey": "string",
    "redrawSettings": {
      "restrictNextDueWithdrawal": true
    },
    "rescheduledAccountKey": "string",
    "scheduleSettings": {
      "amortizationPeriod": 0,
      "billingCycle": {
        "days": [
          0
        ]
      },
      "defaultFirstRepaymentDueDateOffset": 0,
      "fixedDaysOfMonth": [
        0
      ],
      "gracePeriod": 0,
      "gracePeriodType": "NONE",
      "hasCustomSchedule": true,
      "paymentPlan": [
        {
          "amount": 0,
          "encodedKey": "string",
          "toInstallment": 0
        }
      ],
      "periodicPayment": 0,
      "previewSchedule": {
        "numberOfPreviewedInstalments": 0
      },
      "principalRepaymentInterval": 0,
      "repaymentInstallments": 0,
      "repaymentPeriodCount": 0,
      "repaymentPeriodUnit": "DAYS",
      "repaymentScheduleMethod": "NONE",
      "scheduleDueDatesMethod": "INTERVAL",
      "shortMonthHandlingMethod": "LAST_DAY_IN_MONTH"
    },
    "settlementAccountKey": "string",
    "taxRate": 0,
    "terminationDate": "2016-09-06T13:37:50+03:00",
    "tranches": [
      {
        "amount": 0,
        "disbursementDetails": {
          "disbursementTransactionKey": "string",
          "expectedDisbursementDate": "2016-09-06T13:37:50+03:00"
        },
        "encodedKey": "string",
        "fees": [
          {
            "amount": 0,
            "encodedKey": "string",
            "percentage": 0,
            "predefinedFeeEncodedKey": "string"
          }
        ],
        "trancheNumber": 0
      }
    ]
  }
]

Responses

Status Meaning Description Schema
200 OK Result of loan account search. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found No loan account could be found using the supplied criteria. ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [LoanAccountFullDetails] [Represents a loan account. A loan account defines the amount that your organization lends to a client. The terms and conditions of a loan account are defined by a loan product. In a loan account, Mambu stores all the information related to disbursements, repayments, interest rates, and withdrawals.] none
Ā» accountArrearsSettings AccountArrearsSettings The account arrears settings, holds the required information for the arrears settings of an account. none
»» dateCalculationMethod string The arrears date calculation method. none
»» encodedKey string The encoded key of the arrears base settings, auto generated, unique. read-only
»» monthlyToleranceDay integer(int32) Defines monthly arrears tolerance day value. none
»» nonWorkingDaysMethod string Shows whether the non working days are taken in consideration or not when applying penaltees/late fees or when setting an account into arrears none
»» toleranceCalculationMethod string Defines the tolerance calculation method none
»» toleranceFloorAmount number The tolerance floor amount. none
»» tolerancePercentageOfOutstandingPrincipal number Defines the arrears tolerance amount. none
»» tolerancePeriod integer(int32) Defines the arrears tolerance period value. none
Ā» accountHolderKey (required) string The encoded key of the account holder. none
Ā» accountHolderType (required) string The type of the account holder. none
Ā» accountState string The state of the loan account. none
Ā» accountSubState string A second state for the loan account. Beside the account state, a second substate is sometimes necessary to provide more information about the exact lifecycle state of a loan account.For example, even if the account state of a loan account is ACTIVE, it can also have a substate of LOCKED. none
Ā» accruedInterest number The amount of interest that has been accrued in the loan account. none
Ā» accruedPenalty number The accrued penalty, represents the amount of penalty that has been accrued in the loan account. none
Ā» activationTransactionKey string The encoded key of the transaction that activated the loan account. none
Ā» adjustTotalDueForInstallmentsWithDifferentInterval boolean Adjust the total due for repayment when the repayment period is different than the repayment frequency read-only
Ā» allowOffset boolean DEPRECATED - Will always be false. none
Ā» approvedDate string(date-time) The date the loan account was approved. none
Ā» arrearsTolerancePeriod integer(int32) The arrears tolerance (period or day of month) depending on the product settings. none
Ā» assets [AssetFullDetails] The list of assets associated with the current loan account. none
»» amount (required) number The amount used by the client for the guaranty none
»» assetName (required) string The name of a value the client guarantees with (populated when the guaranty type is ASSET) none
»» depositAccountKey string The key of the deposit account used by the guarantor (populated when the guaranty type is GUARANTOR). It can be null. none
»» encodedKey string The encoded key of the security, auto generated, unique. read-only
»» guarantorKey string The key of the client/group used as the guarantor. none
»» guarantorType string The type of the guarantor (client/group) none
»» originalAmount number The original amount used by the client for a collateral asset none
»» originalCurrency Currency Represents a currency. To represent a fiat currency, the code value and the currencyCode value must be the ISO-4217 currency code of the fiat currency. To represent a non-fiat currency, the code value must be NON_FIAT and the currencyCode value must be the currency code of the non-fiat currency. none
»»» code string Fiat(ISO-4217) currency code or NON_FIAT for non fiat currencies. none
»»» currencyCode string Currency code for NON_FIAT currency. none
Ā» assignedBranchKey string The key of the branch this loan account is assigned to. The branch is set to unassigned if no branch field is set. none
Ā» assignedCentreKey string The key of the centre this account is assigned to. none
Ā» assignedUserKey string The key of the user this loan account is assigned to. none
Ā» balances Balances The loan account balance details. none
»» feesBalance number The fees balance. Represents the total fees expected to be paid on this account at a given moment. read-only
»» feesDue number The fees due. Representing the total fees due for the account. read-only
»» feesPaid number The fees paid. Represents the total fees paid for the account. read-only
»» holdBalance number The sum of all the authorization hold amounts on this account. read-only
»» interestBalance number Represents the total interest owed by the client (total interest applied for account minus interest paid). read-only
»» interestDue number The interest due. Indicates how much interest it's due for the account at this moment. read-only
»» interestFromArrearsBalance number The interest from arrears balance. Indicates interest from arrears owned by the client, from now on. (total interest from arrears accrued for account - interest from arrears paid). read-only
»» interestFromArrearsDue number The interest from arrears due. Indicates how much interest from arrears it's due for the account at this moment. read-only
»» interestFromArrearsPaid number The interest from arrears paid, indicates total interest from arrears paid into the account. read-only
»» interestPaid number The interest paid, indicates total interest paid into the account. read-only
»» penaltyBalance number The penalty balance. Represents the total penalty expected to be paid on this account at a given moment. read-only
»» penaltyDue number The penalty due. Represents the total penalty amount due for the account. read-only
»» penaltyPaid number The Penalty paid. Represents the total penalty amount paid for the account. read-only
»» principalBalance number The total principal owned by the client, from now on (principal disbursed - principal paid). read-only
»» principalDue number The principal due, indicates how much principal it's due at this moment. read-only
»» principalPaid number The principal paid, holds the value of the total paid into the account. read-only
»» redrawBalance number The total redraw amount owned by the client, from now on. none
Ā» closedDate string(date-time) The date the loan was closed. none
Ā» creationDate string(date-time) The date the loan account was created. none
Ā» creditArrangementKey string The key to the line of credit where this account is registered to. none
Ā» currency Currency Represents a currency. To represent a fiat currency, the code value and the currencyCode value must be the ISO-4217 currency code of the fiat currency. To represent a non-fiat currency, the code value must be NON_FIAT and the currencyCode value must be the currency code of the non-fiat currency. none
Ā» daysInArrears integer(int32) The number of days the loan account is in arrears. read-only
Ā» daysLate integer(int32) The number of days a repayment for the loan account is late. read-only
Ā» disbursementDetails DisbursementDetails The the disbursement details it holds the information related to the disbursement details as disbursement date, first repayment date, disbursement fees. none
»» disbursementDate string(date-time) The activation date, the date when the disbursement actually took place. none
»» encodedKey string The encoded key of the disbursement details, auto generated, unique read-only
»» expectedDisbursementDate string(date-time) The date of the expected disbursement.Stored as Organization Time. none
»» fees [CustomPredefinedFee] List of fees that should be applied at the disbursement time. none
»»» amount number The amount of the custom fee. none
»»» encodedKey string The encoded key of the custom predefined fee, auto generated, unique. read-only
»»» percentage number The percentage of the custom fee. none
»»» predefinedFeeEncodedKey string The encoded key of the predefined fee none
»» firstRepaymentDate string(date-time) The date of the expected first repayment. Stored as Organization Time. none
»» transactionDetails LoanTransactionDetails Represents the loan transaction details. none
»»» encodedKey string The encoded key of the entity, generated, globally unique read-only
»»» internalTransfer boolean Whether the transaction was transferred between loans or deposit accounts none
»»» targetDepositAccountKey string In case of a transaction to a deposit account this represent the deposit account key to which the transaction was made. none
»»» transactionChannelId string The ID of the transaction channel associated with the transaction details. none
»»» transactionChannelKey string The encoded key of the transaction channel associated with the transaction details. none
Ā» encodedKey string The encoded key of the loan account, it is auto generated, and must be unique. read-only
Ā» feesSettings FeesAccountSettings The fee settings, holds all the properties regarding fees for the loan account. none
»» accruedFee number The accrued fee. Represents the accrued fee for the loan account. The fee on loans is accrued on a daily basis, which allows charging the clients only for the days they actually used the loan amount. read-only
»» accruedFeeFromArrears number The accrued fee from arrears. Represents the accrued fee from arrears for the loan account. The fee on loans is accrued on a daily basis, which allows charging the clients only for the days they actually used the loan amount. read-only
»» feeRate number The fee rate. Represents the fee rate for the loan account. The fee on loans is accrued on a daily basis, which allows charging the clients only for the days they actually used the loan amount. none
Ā» fundingSources [InvestorFund] The list of funds associated with the loan account. none
»» amount (required) number The amount used by the client for the guaranty none
»» assetName string The name of a value the client guarantees with (populated when the guaranty type is ASSET) none
»» depositAccountKey string The key of the deposit account used by the guarantor (populated when the guaranty type is GUARANTOR). It can be null. none
»» encodedKey string The encoded key of the entity, generated, globally unique read-only
»» guarantorKey (required) string The key of the client/group used as the guarantor. none
»» guarantorType (required) string The type of the guarantor (client/group) none
»» id string Investor fund unique identifier. All versions of an investor fund will have same id. none
»» interestCommission number The constraint minimum value none
»» sharePercentage number Percentage of loan shares this investor owns none
Ā» futurePaymentsAcceptance string Shows whether the repayment transactions with entry date set in the future are allowed or not for this loan account. none
Ā» guarantors [GuarantorFullDetails] The list of guarantees associated with the loan account. none
»» amount (required) number The amount used by the client for the guaranty none
»» assetName string The name of a value the client guarantees with (populated when the guaranty type is ASSET) none
»» depositAccountKey string The key of the deposit account used by the guarantor (populated when the guaranty type is GUARANTOR). It can be null. none
»» encodedKey string The encoded key of the security, auto generated, unique. read-only
»» guarantorKey (required) string The key of the client/group used as the guarantor. none
»» guarantorType (required) string The type of the guarantor (client/group) none
Ā» id string The ID of the loan account, it can be generated and customized, and must be unique. none
Ā» interestAccruedInBillingCycle number The interest that is accrued in the current billing cycle. read-only
Ā» interestCommission number The value of the interest booked by the organization from the accounts funded by investors. Null if the funds are not enabled. none
Ā» interestFromArrearsAccrued number The amount of interest from arrears that has been accrued in the loan account. read-only
Ā» interestSettings (required) InterestSettings The interest settings, holds all the properties regarding interests for the loan account. none
»» accountInterestRateSettings [AccountInterestRateSettings] Adjustable interest rates settings for loan account none
»»» encodedKey string The encoded key of the interest rate settings, auto generated, unique read-only
»»» indexSourceKey string Index rate source key. none
»»» interestRate number Interest rate value. none
»»» interestRateCeilingValue number Maximum value allowed for index based interest rate. Valid only for index interest rate. none
»»» interestRateFloorValue number Minimum value allowed for index based interest rate. Valid only for index interest rate. none
»»» interestRateReviewCount integer(int32) Interest rate review frequency unit count. Valid only for index interest rate. none
»»» interestRateReviewUnit string Interest rate review frequency measurement unit. Valid only for index interest rate. none
»»» interestRateSource (required) string Interest calculation method: fixed or indexed(interest spread + active organization index interest rate) none
»»» interestSpread number Interest spread value. none
»»» validFrom (required) string(date-time) Date since an interest rate is valid none
»» accrueInterestAfterMaturity boolean The accrue interest after maturity. If the product support this option, specify if the interest should be accrued after the account maturity date. none
»» accrueLateInterest boolean Indicates whether late interest is accrued for this loan account read-only
»» effectiveInterestRate number The effective interest rate. Represents the interest rate for the loan accounts with semi-annually compounding product. none
»» interestApplicationDays DaysInMonth Enumeration for days of month and method of handling shorter months. none
»»» daysInMonth [integer] Specifies the day(s) of the month when the interest application dates should be. Only available if the Interest Application Method is InterestApplicationMethodDTO#FIXED_DAYS_OF_MONTH. Currently only 1 value can be specified. none
»»» shortMonthHandlingMethod string Determines how to handle the short months, if they select a fixed day of month > 28. Will be null if no such date is selected. Only available if the Interest Application Method is InterestApplicationMethodDTO#FIXED_DAYS_OF_MONTH. none
»» interestApplicationMethod string The interest application method. Represents the interest application method that determines whether the interest gets applied on the account's disbursement or on each repayment. none
»» interestBalanceCalculationMethod string The interest balance calculation method. Represents the option which determines the way the balance for the account's interest is computed. none
»» interestCalculationMethod string The interest calculation method. Holds the type of interest calculation method. none
»» interestChargeFrequency string The interest change frequency. Holds the possible values for how often is interest charged on loan or deposit accounts none
»» interestRate number The interest rate. Represents the interest rate for the loan account. The interest on loans is accrued on a daily basis, which allows charging the clients only for the days they actually used the loan amount. none
»» interestRateReviewCount integer(int32) Interest rate update frequency unit count. none
»» interestRateReviewUnit string The interest rate review unit. Defines the interest rate update frequency measurement unit. none
»» interestRateSource string The interest rate source. Represents the interest calculation method: fixed or (interest spread + active organization index interest rate) none
»» interestSpread number Interest to be added to active organization index interest rate in order to find out actual interest rate none
»» interestType string The possible values for how we compute and apply the interest none
»» pmtAdjustmentThreshold PMTAdjustmentThreshold Represents PMT Adjustment threshold settings for loan accounts and loan products. none
»»» method string The method used to calculate the PMT Adjustment threshold. Supported value is CALENDAR_DAYS none
»»» numberOfDays integer(int32) The number of days that trigger a PMT Adjustment. none
Ā» lastAccountAppraisalDate string(date-time) The date the loan account has last been evaluated for interest, principal, fees, and penalties calculations expressed in the organization time format and time zone. none
Ā» lastInterestAppliedDate string(date-time) The date of the last time the loan account had interest applied (stored to interest balance), expressed in the organization time format and time zone. none
Ā» lastInterestReviewDate string(date-time) The date the interest was reviewed last time, stored in the organization time format and time zone. none
Ā» lastLockedDate string(date-time) The date when the loan account was set for the last time in the LOCKED state expressed in the organization time format and time zone. If null, the account is not locked anymore. none
Ā» lastModifiedDate string(date-time) The last date the loan was updated. none
Ā» lastSetToArrearsDate string(date-time) The date when the loan account was set to last standing or null; if never set, it is expressed in your organization time format and time zone. none
Ā» lastTaxRateReviewDate string(date-time) The date the tax rate on the loan account was last checked, expressed in the organization time format and time zone. none
Ā» latePaymentsRecalculationMethod string The overdue payments recalculation method inherited from the loan product on which this loan account is based. none
Ā» loanAmount (required) number The loan amount. none
Ā» loanName string The name of the loan account. none
Ā» lockedAccountTotalDueType string The locked account total due type. none
Ā» lockedOperations [string] A list with operations which are locked when the account is in the AccountState.LOCKED substate. none
Ā» migrationEventKey string The migration event encoded key associated with this loan account. If this account was imported, track which 'migration event' they came from. none
Ā» modifyInterestForFirstInstallment boolean Adjust the interest for the first repayment when the first repayment period is different than the repayment frequency read-only
Ā» notes string The notes about this loan account. none
Ā» originalAccountKey string The key of the original rescheduled or refinanced loan account. none
Ā» paymentHolidaysAccruedInterest number The amount of interest that has been accrued during payment holidays in the loan account. none
Ā» paymentMethod string The interest payment method that determines whether the payments are made horizontally (on the repayments) or vertically (on the loan account). none
Ā» penaltySettings PenaltySettings The penalty settings, holds all the fields regarding penalties none
»» loanPenaltyCalculationMethod string The last penalty calculation method, represents on what amount are the penalties calculated. none
»» penaltyRate number The penalty rate, represents the rate (in percent) which is charged as a penalty. none
Ā» plannedInstallmentFees [PlannedInstallmentFee] The list with manual fees planned on the installments of the loan account. none
»» amount number The amount of the planned fee. none
»» applyOnDate string(date-time) The date when a planned fee should be applied, overriding due date of the installment. It should match the interval of the installment. If it belongs to the first installment, it should be between disbursement date and installment due date. Returned only if its value has been previously set. none
»» encodedKey string The encoded key of the planned installment fee, auto generated, unique. read-only
»» installmentKey string The encoded key of the installment on which the predefined fee is planned. none
»» installmentNumber integer(int32) The number of the installment for which the predefined fee is planned. It is used only in the case when fees are created at the same time as the loan account or during preview schedule, before account creation. In all other cases, this field will be nil and installmentKey will be used to identify an installment. none
»» predefinedFeeKey (required) string The encoded key of the predefined fee which is planned. none
Ā» prepaymentSettings PrepaymentSettings The prepayment settings, holds all prepayment properties. none
»» applyInterestOnPrepaymentMethod string Apply interest on prepayment method copied from loan product on which this account is based. none
»» elementsRecalculationMethod string The elements recalculation method, indicates how the declining balance with equal installments repayments are recalculated. none
»» ercFreeAllowanceAmount number none none
»» ercFreeAllowancePercentage number Early repayment charge fee free allowance in percentage per year none
»» prepaymentRecalculationMethod string Prepayment recalculation method copied from the loan product on which this account is based. none
»» principalPaidInstallmentStatus string Installment status for the case when principal is paid off (copied from loan product). none
Ā» principalPaymentSettings PrincipalPaymentAccountSettings The principal payment account settings, holds the required information for the principal payment process of an account. none
»» amount number Fixed amount for being used for the repayments principal due. none
»» encodedKey string The encoded key of the principal payment base settings, auto generated, unique. read-only
»» includeFeesInFloorAmount boolean Boolean flag, if true, the fees will be included along with the principal in the repayment floor amount, for a revolving credit account none
»» includeInterestInFloorAmount boolean Boolean flag, if true, the interest will be included along with the principal in the repayment floor amount, for a revolving credit account none
»» percentage number Percentage of principal amount used for the repayments principal due. none
»» principalCeilingValue number The maximum principal due amount a repayment made with this settings can have none
»» principalFloorValue number The minimum principal due amount a repayment made with this settings can have none
»» principalPaymentMethod string The method of principal payment for revolving credit. none
»» totalDueAmountFloor number The minimum total due amount a repayment made with this settings can have none
»» totalDuePayment string The method of total due payment for revolving credit none
Ā» productTypeKey (required) string The key for the type of loan product that this loan account is based on. none
Ā» redrawSettings LoanAccountRedrawSettings Represents the redraw settings for a loan account. none
»» restrictNextDueWithdrawal (required) boolean TRUE if withdrawing amounts that reduce the next due instalment repayment is restricted, FALSE otherwise. none
Ā» rescheduledAccountKey string The key pointing to where this loan account was rescheduled or refinanced to. This value is only not null if rescheduled. none
Ā» scheduleSettings (required) ScheduleSettings The schedule settings, holds all schedule properties. none
»» amortizationPeriod integer(int32) The PMT is calculated as the loan would have [amortizationPeriod] installments. none
»» billingCycle BillingCycleDays Defines the billing cycles settings for a loan account none
»»» days [integer] The billing cycle start days in case it is enabled none
»» defaultFirstRepaymentDueDateOffset integer(int32) The default first repayment due date offset, indicates how many days the first repayment due date should be extended(all other due dates from the schedule are relative to first repayment due date - they will also be affected by the offset) none
»» fixedDaysOfMonth [integer] Specifies the days of the month when the repayment due dates should be. Only available if the Repayment Methodology is FIXED_DAYS_OF_MONTH. none
»» gracePeriod (required) integer(int32) The grace period. Represents the grace period for loan repayment - in number of installments. none
»» gracePeriodType string The grace period type. Representing the type of grace period which is possible for a loan account. none
»» hasCustomSchedule boolean Flag used when the repayments schedule for the current account was determined by the user, by editing the due dates or the principal due none
»» paymentPlan [PeriodicPayment] A list of periodic payments for the current loan account. none
»»» amount (required) number The PMT value used in periodic payment none
»»» encodedKey string The encoded key of the periodic payment, auto generated, unique. read-only
»»» toInstallment (required) integer(int32) The installment's position up to which the PMT will be used none
»» periodicPayment number The periodic payment amount for the accounts which have balloon payments or Reduce Number of Installments and Optimized Payments none
»» previewSchedule RevolvingAccountSettings The number of previewed instalments for an account none
»»» numberOfPreviewedInstalments integer(int32) The number of previewed instalments none
»» principalRepaymentInterval integer(int32) The principal repayment interval. Indicates the interval of repayments that the principal has to be paid. none
»» repaymentInstallments integer(int32) The repayment installments. Represents how many installments are required to pay back the loan. none
»» repaymentPeriodCount integer(int32) The repayment period count. Represents how often the loan is to be repaid: stored based on the type repayment option. none
»» repaymentPeriodUnit string The repayment period unit. Represents the frequency of loan repayment. none
»» repaymentScheduleMethod string The repayment schedule method. Represents the method that determines whether the schedule will be fixed all over the loan account's life cycle or will be dynamically recomputed when required. none
»» scheduleDueDatesMethod string The schedule due dates method. Represents the methodology used by this account to compute the due dates of the repayments. none
»» shortMonthHandlingMethod string The short handling method. Determines how to handle the short months, if they select a fixed day of month > 28. Will be null if no such date is selected and also for the Interval methodology. Only available if the Repayment Methodology is FIXED_DAYS_OF_MONTH. none
Ā» settlementAccountKey string The encoded key of the settlement account. none
Ā» taxRate number The tax rate. none
Ā» terminationDate string(date-time) The date this loan account was terminated. none
Ā» tranches [LoanTranche] The list of disbursement tranches available for the loan account. none
»» amount (required) number The amount this tranche has available for disburse none
»» disbursementDetails TrancheDisbursementDetails The disbursement details regarding a loan tranche. none
»»» disbursementTransactionKey string The key of the disbursement transaction logged when this tranche was disbursed. This field will be null until the tranche disbursement none
»»» expectedDisbursementDate string(date-time) The date when this tranche is supposed to be disbursed (as Organization Time) none
»» encodedKey string The encoded key of the transaction details , auto generated, unique. read-only
»» fees [CustomPredefinedFee] Fees that are associated with this tranche none
»» trancheNumber integer(int32) Index indicating the tranche number none

Enumerated Values

Property Value
dateCalculationMethod ACCOUNT_FIRST_WENT_TO_ARREARS
dateCalculationMethod LAST_LATE_REPAYMENT
dateCalculationMethod ACCOUNT_FIRST_BREACHED_MATERIALITY_THRESHOLD
nonWorkingDaysMethod INCLUDED
nonWorkingDaysMethod EXCLUDED
toleranceCalculationMethod ARREARS_TOLERANCE_PERIOD
toleranceCalculationMethod MONTHLY_ARREARS_TOLERANCE_DAY
accountHolderType CLIENT
accountHolderType GROUP
accountState PARTIAL_APPLICATION
accountState PENDING_APPROVAL
accountState APPROVED
accountState ACTIVE
accountState ACTIVE_IN_ARREARS
accountState CLOSED
accountState CLOSED_WRITTEN_OFF
accountState CLOSED_REJECTED
accountSubState PARTIALLY_DISBURSED
accountSubState LOCKED
accountSubState LOCKED_CAPPING
accountSubState REFINANCED
accountSubState RESCHEDULED
accountSubState WITHDRAWN
accountSubState REPAID
accountSubState REJECTED
accountSubState WRITTEN_OFF
accountSubState TERMINATED
guarantorType CLIENT
guarantorType GROUP
code AED
code AFN
code ALL
code AMD
code ANG
code AOA
code ARS
code AUD
code AWG
code AZN
code BAM
code BBD
code BDT
code BGN
code BHD
code BIF
code BMD
code BND
code BOB
code BOV
code BRL
code BSD
code BTN
code BWP
code BYR
code BYN
code BZD
code CAD
code CDF
code CHE
code CHF
code CHW
code CLF
code CLP
code CNY
code COP
code COU
code CRC
code CUC
code CUP
code CVE
code CZK
code DJF
code DKK
code DOP
code DZD
code EGP
code ERN
code ETB
code EUR
code FJD
code FKP
code GBP
code GEL
code GHS
code GIP
code GMD
code GNF
code GTQ
code GYD
code HKD
code HNL
code HRK
code HTG
code HUF
code IDR
code ILS
code INR
code IQD
code IRR
code ISK
code JMD
code JOD
code JPY
code KES
code KGS
code KHR
code KMF
code KPW
code KRW
code KWD
code KYD
code KZT
code LAK
code LBP
code LKR
code LRD
code LSL
code LTL
code LVL
code LYD
code MAD
code MDL
code MGA
code MKD
code MMK
code MNT
code MOP
code MRO
code MRU
code MUR
code MVR
code MWK
code MXN
code MXV
code MYR
code MZN
code NAD
code NGN
code NIO
code NOK
code NPR
code NZD
code OMR
code PAB
code PEN
code PGK
code PHP
code PKR
code PLN
code PYG
code QAR
code RON
code RSD
code RUB
code RWF
code SAR
code SBD
code SCR
code SDG
code SEK
code SGD
code SHP
code SLL
code SOS
code SRD
code STD
code STN
code SVC
code SYP
code SZL
code THB
code TJS
code TMT
code TND
code TOP
code TRY
code TTD
code TWD
code TZS
code UAH
code UGX
code USD
code USN
code UYI
code UYU
code UYW
code UZS
code VED
code VEF
code VES
code VND
code VUV
code WST
code XAG
code XAU
code XAF
code XBA
code XBB
code XBC
code XBD
code XCD
code XDR
code XOF
code XPD
code XPF
code XPT
code XSU
code XTS
code XUA
code XXX
code YER
code ZAR
code ZIG
code ZMK
code ZWL
code ZMW
code SSP
code NON_FIAT
guarantorType CLIENT
guarantorType GROUP
futurePaymentsAcceptance NO_FUTURE_PAYMENTS
futurePaymentsAcceptance ACCEPT_FUTURE_PAYMENTS
futurePaymentsAcceptance ACCEPT_OVERPAYMENTS
guarantorType CLIENT
guarantorType GROUP
interestRateReviewUnit DAYS
interestRateReviewUnit WEEKS
interestRateReviewUnit MONTHS
interestRateSource FIXED_INTEREST_RATE
interestRateSource INDEX_INTEREST_RATE
shortMonthHandlingMethod LAST_DAY_IN_MONTH
shortMonthHandlingMethod FIRST_DAY_OF_NEXT_MONTH
interestApplicationMethod AFTER_DISBURSEMENT
interestApplicationMethod REPAYMENT_DUE_DATE
interestApplicationMethod FIXED_DAYS_OF_MONTH
interestBalanceCalculationMethod ONLY_PRINCIPAL
interestBalanceCalculationMethod PRINCIPAL_AND_INTEREST
interestCalculationMethod FLAT
interestCalculationMethod DECLINING_BALANCE
interestCalculationMethod DECLINING_BALANCE_DISCOUNTED
interestCalculationMethod EQUAL_INSTALLMENTS
interestChargeFrequency ANNUALIZED
interestChargeFrequency EVERY_MONTH
interestChargeFrequency EVERY_FOUR_WEEKS
interestChargeFrequency EVERY_WEEK
interestChargeFrequency EVERY_DAY
interestChargeFrequency EVERY_X_DAYS
interestRateReviewUnit DAYS
interestRateReviewUnit WEEKS
interestRateReviewUnit MONTHS
interestRateSource FIXED_INTEREST_RATE
interestRateSource INDEX_INTEREST_RATE
interestType SIMPLE_INTEREST
interestType CAPITALIZED_INTEREST
interestType COMPOUNDING_INTEREST
method WORKING_DAYS
method CALENDAR_DAYS
latePaymentsRecalculationMethod OVERDUE_INSTALLMENTS_INCREASE
latePaymentsRecalculationMethod LAST_INSTALLMENT_INCREASE
latePaymentsRecalculationMethod NO_RECALCULATION
lockedAccountTotalDueType BALANCE_AMOUNT
lockedAccountTotalDueType DUE_AMOUNT_ON_LATE_INSTALLMENTS
paymentMethod HORIZONTAL
paymentMethod VERTICAL
loanPenaltyCalculationMethod NONE
loanPenaltyCalculationMethod OVERDUE_BALANCE
loanPenaltyCalculationMethod OVERDUE_BALANCE_AND_INTEREST
loanPenaltyCalculationMethod OVERDUE_BALANCE_INTEREST_AND_FEE
loanPenaltyCalculationMethod OUTSTANDING_PRINCIPAL
applyInterestOnPrepaymentMethod AUTOMATIC
applyInterestOnPrepaymentMethod MANUAL
elementsRecalculationMethod PRINCIPAL_EXPECTED_FIXED
elementsRecalculationMethod TOTAL_EXPECTED_FIXED
prepaymentRecalculationMethod NO_RECALCULATION
prepaymentRecalculationMethod RESCHEDULE_REMAINING_REPAYMENTS
prepaymentRecalculationMethod RECALCULATE_SCHEDULE_KEEP_SAME_NUMBER_OF_TERMS
prepaymentRecalculationMethod RECALCULATE_SCHEDULE_KEEP_SAME_PRINCIPAL_AMOUNT
prepaymentRecalculationMethod RECALCULATE_SCHEDULE_KEEP_SAME_TOTAL_REPAYMENT_AMOUNT
prepaymentRecalculationMethod REDUCE_AMOUNT_PER_INSTALLMENT
prepaymentRecalculationMethod REDUCE_NUMBER_OF_INSTALLMENTS
prepaymentRecalculationMethod REDUCE_NUMBER_OF_INSTALLMENTS_NEW
principalPaidInstallmentStatus PARTIALLY_PAID
principalPaidInstallmentStatus PAID
principalPaidInstallmentStatus ORIGINAL_TOTAL_EXPECTED_PAID
principalPaymentMethod FLAT
principalPaymentMethod OUTSTANDING_PRINCIPAL_PERCENTAGE
principalPaymentMethod PRINCIPAL_PERCENTAGE_LAST_DISB
principalPaymentMethod TOTAL_BALANCE_PERCENTAGE
principalPaymentMethod TOTAL_BALANCE_FLAT
principalPaymentMethod TOTAL_PRINCIPAL_PERCENTAGE
totalDuePayment FLAT
totalDuePayment OUTSTANDING_PRINCIPAL_PERCENTAGE
totalDuePayment PRINCIPAL_PERCENTAGE_LAST_DISB
totalDuePayment TOTAL_BALANCE_PERCENTAGE
totalDuePayment TOTAL_BALANCE_FLAT
totalDuePayment TOTAL_PRINCIPAL_PERCENTAGE
gracePeriodType NONE
gracePeriodType PAY_INTEREST_ONLY
gracePeriodType INTEREST_FORGIVENESS
repaymentPeriodUnit DAYS
repaymentPeriodUnit WEEKS
repaymentPeriodUnit MONTHS
repaymentPeriodUnit YEARS
repaymentScheduleMethod NONE
repaymentScheduleMethod FIXED
repaymentScheduleMethod DYNAMIC
scheduleDueDatesMethod INTERVAL
scheduleDueDatesMethod FIXED_DAYS_OF_MONTH
shortMonthHandlingMethod LAST_DAY_IN_MONTH
shortMonthHandlingMethod FIRST_DAY_OF_NEXT_MONTH

Response Headers

Status Header Type Format Description
200 Items-Next-Cursor string The next cursor to be used by the subsequent calls
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

writeOff (Loan Accounts)

Code samples

# You can also use wget
curl -X POST /loans/{loanAccountId}:writeOff \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /loans/{loanAccountId}:writeOff HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/loans/{loanAccountId}:writeOff',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/loans/{loanAccountId}:writeOff',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/loans/{loanAccountId}:writeOff', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/loans/{loanAccountId}:writeOff', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans/{loanAccountId}:writeOff");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/loans/{loanAccountId}:writeOff", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /loans/{loanAccountId}:writeOff

Write off loan account

Body parameter

{
  "notes": "string"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
loanAccountId (required) string The ID or encoded key of the loan account. path
body LoanActionDetails Represents information for an action to perform on a loan account. body

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
204 No Content Write off action posted. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan account not found. ErrorResponse

getById (Loan Accounts)

Code samples

# You can also use wget
curl -X GET /loans/{loanAccountId} \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /loans/{loanAccountId} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/loans/{loanAccountId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/loans/{loanAccountId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/loans/{loanAccountId}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/loans/{loanAccountId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans/{loanAccountId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/loans/{loanAccountId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /loans/{loanAccountId}

Get loan account

Parameters

Name Type Description In
loanAccountId (required) string The ID or encoded key of the loan account. path
detailsLevel string The level of details to return: FULL means the full details of the object will be returned (custom field values, address, contact info, or any other related objects) and BASIC will return only the first level elements of the object. query

Enumerated Values

Parameter Value
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

{
  "accountArrearsSettings": {
    "dateCalculationMethod": "ACCOUNT_FIRST_WENT_TO_ARREARS",
    "encodedKey": "string",
    "monthlyToleranceDay": 0,
    "nonWorkingDaysMethod": "INCLUDED",
    "toleranceCalculationMethod": "ARREARS_TOLERANCE_PERIOD",
    "toleranceFloorAmount": 0,
    "tolerancePercentageOfOutstandingPrincipal": 0,
    "tolerancePeriod": 0
  },
  "accountHolderKey": "string",
  "accountHolderType": "CLIENT",
  "accountState": "PARTIAL_APPLICATION",
  "accountSubState": "PARTIALLY_DISBURSED",
  "accruedInterest": 0,
  "accruedPenalty": 0,
  "activationTransactionKey": "string",
  "adjustTotalDueForInstallmentsWithDifferentInterval": true,
  "allowOffset": true,
  "approvedDate": "2016-09-06T13:37:50+03:00",
  "arrearsTolerancePeriod": 0,
  "assets": [
    {
      "amount": 0,
      "assetName": "string",
      "depositAccountKey": "string",
      "encodedKey": "string",
      "guarantorKey": "string",
      "guarantorType": "CLIENT",
      "originalAmount": 0,
      "originalCurrency": {
        "code": "AED",
        "currencyCode": "string"
      }
    }
  ],
  "assignedBranchKey": "string",
  "assignedCentreKey": "string",
  "assignedUserKey": "string",
  "balances": {
    "feesBalance": 0,
    "feesDue": 0,
    "feesPaid": 0,
    "holdBalance": 0,
    "interestBalance": 0,
    "interestDue": 0,
    "interestFromArrearsBalance": 0,
    "interestFromArrearsDue": 0,
    "interestFromArrearsPaid": 0,
    "interestPaid": 0,
    "penaltyBalance": 0,
    "penaltyDue": 0,
    "penaltyPaid": 0,
    "principalBalance": 0,
    "principalDue": 0,
    "principalPaid": 0,
    "redrawBalance": 0
  },
  "closedDate": "2016-09-06T13:37:50+03:00",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "creditArrangementKey": "string",
  "currency": {
    "code": "AED",
    "currencyCode": "string"
  },
  "daysInArrears": 0,
  "daysLate": 0,
  "disbursementDetails": {
    "disbursementDate": "2016-09-06T13:37:50+03:00",
    "encodedKey": "string",
    "expectedDisbursementDate": "2016-09-06T13:37:50+03:00",
    "fees": [
      {
        "amount": 0,
        "encodedKey": "string",
        "percentage": 0,
        "predefinedFeeEncodedKey": "string"
      }
    ],
    "firstRepaymentDate": "2016-09-06T13:37:50+03:00",
    "transactionDetails": {
      "encodedKey": "string",
      "internalTransfer": true,
      "targetDepositAccountKey": "string",
      "transactionChannelId": "string",
      "transactionChannelKey": "string"
    }
  },
  "encodedKey": "string",
  "feesSettings": {
    "accruedFee": 0,
    "accruedFeeFromArrears": 0,
    "feeRate": 0
  },
  "fundingSources": [
    {
      "amount": 0,
      "assetName": "string",
      "depositAccountKey": "string",
      "encodedKey": "string",
      "guarantorKey": "string",
      "guarantorType": "CLIENT",
      "id": "string",
      "interestCommission": 0,
      "sharePercentage": 0
    }
  ],
  "futurePaymentsAcceptance": "NO_FUTURE_PAYMENTS",
  "guarantors": [
    {
      "amount": 0,
      "assetName": "string",
      "depositAccountKey": "string",
      "encodedKey": "string",
      "guarantorKey": "string",
      "guarantorType": "CLIENT"
    }
  ],
  "id": "string",
  "interestAccruedInBillingCycle": 0,
  "interestCommission": 0,
  "interestFromArrearsAccrued": 0,
  "interestSettings": {
    "accountInterestRateSettings": [
      {
        "encodedKey": "string",
        "indexSourceKey": "string",
        "interestRate": 0,
        "interestRateCeilingValue": 0,
        "interestRateFloorValue": 0,
        "interestRateReviewCount": 0,
        "interestRateReviewUnit": "DAYS",
        "interestRateSource": "FIXED_INTEREST_RATE",
        "interestSpread": 0,
        "validFrom": "2016-09-06T13:37:50+03:00"
      }
    ],
    "accrueInterestAfterMaturity": true,
    "accrueLateInterest": true,
    "effectiveInterestRate": 0,
    "interestApplicationDays": {
      "daysInMonth": [
        0
      ],
      "shortMonthHandlingMethod": "LAST_DAY_IN_MONTH"
    },
    "interestApplicationMethod": "AFTER_DISBURSEMENT",
    "interestBalanceCalculationMethod": "ONLY_PRINCIPAL",
    "interestCalculationMethod": "FLAT",
    "interestChargeFrequency": "ANNUALIZED",
    "interestRate": 0,
    "interestRateReviewCount": 0,
    "interestRateReviewUnit": "DAYS",
    "interestRateSource": "FIXED_INTEREST_RATE",
    "interestSpread": 0,
    "interestType": "SIMPLE_INTEREST",
    "pmtAdjustmentThreshold": {
      "method": "WORKING_DAYS",
      "numberOfDays": 0
    }
  },
  "lastAccountAppraisalDate": "2016-09-06T13:37:50+03:00",
  "lastInterestAppliedDate": "2016-09-06T13:37:50+03:00",
  "lastInterestReviewDate": "2016-09-06T13:37:50+03:00",
  "lastLockedDate": "2016-09-06T13:37:50+03:00",
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "lastSetToArrearsDate": "2016-09-06T13:37:50+03:00",
  "lastTaxRateReviewDate": "2016-09-06T13:37:50+03:00",
  "latePaymentsRecalculationMethod": "OVERDUE_INSTALLMENTS_INCREASE",
  "loanAmount": 0,
  "loanName": "string",
  "lockedAccountTotalDueType": "BALANCE_AMOUNT",
  "lockedOperations": [
    "APPLY_INTEREST"
  ],
  "migrationEventKey": "string",
  "modifyInterestForFirstInstallment": true,
  "notes": "string",
  "originalAccountKey": "string",
  "paymentHolidaysAccruedInterest": 0,
  "paymentMethod": "HORIZONTAL",
  "penaltySettings": {
    "loanPenaltyCalculationMethod": "NONE",
    "penaltyRate": 0
  },
  "plannedInstallmentFees": [
    {
      "amount": 0,
      "applyOnDate": "2016-09-06T13:37:50+03:00",
      "encodedKey": "string",
      "installmentKey": "string",
      "installmentNumber": 0,
      "predefinedFeeKey": "string"
    }
  ],
  "prepaymentSettings": {
    "applyInterestOnPrepaymentMethod": "AUTOMATIC",
    "elementsRecalculationMethod": "PRINCIPAL_EXPECTED_FIXED",
    "ercFreeAllowanceAmount": 0,
    "ercFreeAllowancePercentage": 0,
    "prepaymentRecalculationMethod": "NO_RECALCULATION",
    "principalPaidInstallmentStatus": "PARTIALLY_PAID"
  },
  "principalPaymentSettings": {
    "amount": 0,
    "encodedKey": "string",
    "includeFeesInFloorAmount": true,
    "includeInterestInFloorAmount": true,
    "percentage": 0,
    "principalCeilingValue": 0,
    "principalFloorValue": 0,
    "principalPaymentMethod": "FLAT",
    "totalDueAmountFloor": 0,
    "totalDuePayment": "FLAT"
  },
  "productTypeKey": "string",
  "redrawSettings": {
    "restrictNextDueWithdrawal": true
  },
  "rescheduledAccountKey": "string",
  "scheduleSettings": {
    "amortizationPeriod": 0,
    "billingCycle": {
      "days": [
        0
      ]
    },
    "defaultFirstRepaymentDueDateOffset": 0,
    "fixedDaysOfMonth": [
      0
    ],
    "gracePeriod": 0,
    "gracePeriodType": "NONE",
    "hasCustomSchedule": true,
    "paymentPlan": [
      {
        "amount": 0,
        "encodedKey": "string",
        "toInstallment": 0
      }
    ],
    "periodicPayment": 0,
    "previewSchedule": {
      "numberOfPreviewedInstalments": 0
    },
    "principalRepaymentInterval": 0,
    "repaymentInstallments": 0,
    "repaymentPeriodCount": 0,
    "repaymentPeriodUnit": "DAYS",
    "repaymentScheduleMethod": "NONE",
    "scheduleDueDatesMethod": "INTERVAL",
    "shortMonthHandlingMethod": "LAST_DAY_IN_MONTH"
  },
  "settlementAccountKey": "string",
  "taxRate": 0,
  "terminationDate": "2016-09-06T13:37:50+03:00",
  "tranches": [
    {
      "amount": 0,
      "disbursementDetails": {
        "disbursementTransactionKey": "string",
        "expectedDisbursementDate": "2016-09-06T13:37:50+03:00"
      },
      "encodedKey": "string",
      "fees": [
        {
          "amount": 0,
          "encodedKey": "string",
          "percentage": 0,
          "predefinedFeeEncodedKey": "string"
        }
      ],
      "trancheNumber": 0
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK Loan account returned. LoanAccountFullDetails
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan account not found. ErrorResponse

update (Loan Accounts)

Code samples

# You can also use wget
curl -X PUT /loans/{loanAccountId} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json'

PUT /loans/{loanAccountId} HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/loans/{loanAccountId}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.put '/loans/{loanAccountId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.put('/loans/{loanAccountId}', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PUT','/loans/{loanAccountId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans/{loanAccountId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/loans/{loanAccountId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /loans/{loanAccountId}

Update loan account

Body parameter

{
  "accountArrearsSettings": {
    "dateCalculationMethod": "ACCOUNT_FIRST_WENT_TO_ARREARS",
    "monthlyToleranceDay": 0,
    "nonWorkingDaysMethod": "INCLUDED",
    "toleranceCalculationMethod": "ARREARS_TOLERANCE_PERIOD",
    "toleranceFloorAmount": 0,
    "tolerancePercentageOfOutstandingPrincipal": 0,
    "tolerancePeriod": 0
  },
  "accountHolderKey": "string",
  "accountHolderType": "CLIENT",
  "accountState": "PARTIAL_APPLICATION",
  "accountSubState": "PARTIALLY_DISBURSED",
  "accruedInterest": 0,
  "accruedPenalty": 0,
  "activationTransactionKey": "string",
  "allowOffset": true,
  "approvedDate": "2016-09-06T13:37:50+03:00",
  "arrearsTolerancePeriod": 0,
  "assets": [
    {
      "amount": 0,
      "assetName": "string",
      "depositAccountKey": "string",
      "guarantorKey": "string",
      "guarantorType": "CLIENT",
      "originalAmount": 0,
      "originalCurrency": {
        "code": "AED",
        "currencyCode": "string"
      }
    }
  ],
  "assignedBranchKey": "string",
  "assignedCentreKey": "string",
  "assignedUserKey": "string",
  "balances": {
    "redrawBalance": 0
  },
  "closedDate": "2016-09-06T13:37:50+03:00",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "creditArrangementKey": "string",
  "currency": {
    "code": "AED",
    "currencyCode": "string"
  },
  "disbursementDetails": {
    "disbursementDate": "2016-09-06T13:37:50+03:00",
    "expectedDisbursementDate": "2016-09-06T13:37:50+03:00",
    "fees": [
      {
        "amount": 0,
        "percentage": 0,
        "predefinedFeeEncodedKey": "string"
      }
    ],
    "firstRepaymentDate": "2016-09-06T13:37:50+03:00",
    "transactionDetails": {
      "internalTransfer": true,
      "targetDepositAccountKey": "string",
      "transactionChannelId": "string",
      "transactionChannelKey": "string"
    }
  },
  "feesSettings": {
    "feeRate": 0
  },
  "fundingSources": [
    {
      "amount": 0,
      "assetName": "string",
      "depositAccountKey": "string",
      "guarantorKey": "string",
      "guarantorType": "CLIENT",
      "id": "string",
      "interestCommission": 0,
      "sharePercentage": 0
    }
  ],
  "futurePaymentsAcceptance": "NO_FUTURE_PAYMENTS",
  "guarantors": [
    {
      "amount": 0,
      "assetName": "string",
      "depositAccountKey": "string",
      "guarantorKey": "string",
      "guarantorType": "CLIENT"
    }
  ],
  "id": "string",
  "interestCommission": 0,
  "interestSettings": {
    "accountInterestRateSettings": [
      {
        "indexSourceKey": "string",
        "interestRate": 0,
        "interestRateCeilingValue": 0,
        "interestRateFloorValue": 0,
        "interestRateReviewCount": 0,
        "interestRateReviewUnit": "DAYS",
        "interestRateSource": "FIXED_INTEREST_RATE",
        "interestSpread": 0,
        "validFrom": "2016-09-06T13:37:50+03:00"
      }
    ],
    "accrueInterestAfterMaturity": true,
    "effectiveInterestRate": 0,
    "interestApplicationDays": {
      "daysInMonth": [
        0
      ],
      "shortMonthHandlingMethod": "LAST_DAY_IN_MONTH"
    },
    "interestApplicationMethod": "AFTER_DISBURSEMENT",
    "interestBalanceCalculationMethod": "ONLY_PRINCIPAL",
    "interestCalculationMethod": "FLAT",
    "interestChargeFrequency": "ANNUALIZED",
    "interestRate": 0,
    "interestRateReviewCount": 0,
    "interestRateReviewUnit": "DAYS",
    "interestRateSource": "FIXED_INTEREST_RATE",
    "interestSpread": 0,
    "interestType": "SIMPLE_INTEREST",
    "pmtAdjustmentThreshold": {
      "method": "WORKING_DAYS",
      "numberOfDays": 0
    }
  },
  "lastAccountAppraisalDate": "2016-09-06T13:37:50+03:00",
  "lastInterestAppliedDate": "2016-09-06T13:37:50+03:00",
  "lastInterestReviewDate": "2016-09-06T13:37:50+03:00",
  "lastLockedDate": "2016-09-06T13:37:50+03:00",
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "lastSetToArrearsDate": "2016-09-06T13:37:50+03:00",
  "lastTaxRateReviewDate": "2016-09-06T13:37:50+03:00",
  "latePaymentsRecalculationMethod": "OVERDUE_INSTALLMENTS_INCREASE",
  "loanAmount": 0,
  "loanName": "string",
  "lockedAccountTotalDueType": "BALANCE_AMOUNT",
  "lockedOperations": [
    "APPLY_INTEREST"
  ],
  "migrationEventKey": "string",
  "notes": "string",
  "originalAccountKey": "string",
  "paymentHolidaysAccruedInterest": 0,
  "paymentMethod": "HORIZONTAL",
  "penaltySettings": {
    "loanPenaltyCalculationMethod": "NONE",
    "penaltyRate": 0
  },
  "plannedInstallmentFees": [
    {
      "amount": 0,
      "applyOnDate": "2016-09-06T13:37:50+03:00",
      "installmentKey": "string",
      "installmentNumber": 0,
      "predefinedFeeKey": "string"
    }
  ],
  "prepaymentSettings": {
    "applyInterestOnPrepaymentMethod": "AUTOMATIC",
    "elementsRecalculationMethod": "PRINCIPAL_EXPECTED_FIXED",
    "ercFreeAllowanceAmount": 0,
    "ercFreeAllowancePercentage": 0,
    "prepaymentRecalculationMethod": "NO_RECALCULATION",
    "principalPaidInstallmentStatus": "PARTIALLY_PAID"
  },
  "principalPaymentSettings": {
    "amount": 0,
    "includeFeesInFloorAmount": true,
    "includeInterestInFloorAmount": true,
    "percentage": 0,
    "principalCeilingValue": 0,
    "principalFloorValue": 0,
    "principalPaymentMethod": "FLAT",
    "totalDueAmountFloor": 0,
    "totalDuePayment": "FLAT"
  },
  "productTypeKey": "string",
  "redrawSettings": {
    "restrictNextDueWithdrawal": true
  },
  "rescheduledAccountKey": "string",
  "scheduleSettings": {
    "amortizationPeriod": 0,
    "billingCycle": {
      "days": [
        0
      ]
    },
    "defaultFirstRepaymentDueDateOffset": 0,
    "fixedDaysOfMonth": [
      0
    ],
    "gracePeriod": 0,
    "gracePeriodType": "NONE",
    "hasCustomSchedule": true,
    "paymentPlan": [
      {
        "amount": 0,
        "toInstallment": 0
      }
    ],
    "periodicPayment": 0,
    "previewSchedule": {
      "numberOfPreviewedInstalments": 0
    },
    "principalRepaymentInterval": 0,
    "repaymentInstallments": 0,
    "repaymentPeriodCount": 0,
    "repaymentPeriodUnit": "DAYS",
    "repaymentScheduleMethod": "NONE",
    "scheduleDueDatesMethod": "INTERVAL",
    "shortMonthHandlingMethod": "LAST_DAY_IN_MONTH"
  },
  "settlementAccountKey": "string",
  "taxRate": 0,
  "terminationDate": "2016-09-06T13:37:50+03:00",
  "tranches": [
    {
      "amount": 0,
      "disbursementDetails": {
        "disbursementTransactionKey": "string",
        "expectedDisbursementDate": "2016-09-06T13:37:50+03:00"
      },
      "fees": [
        {
          "amount": 0,
          "percentage": 0,
          "predefinedFeeEncodedKey": "string"
        }
      ],
      "trancheNumber": 0
    }
  ]
}

Parameters

Name Type Description In
loanAccountId (required) string The ID or encoded key of the loan account. path
body (required) LoanAccountFullDetails Loan account to be updated. body

Example responses

200 Response

{
  "accountArrearsSettings": {
    "dateCalculationMethod": "ACCOUNT_FIRST_WENT_TO_ARREARS",
    "encodedKey": "string",
    "monthlyToleranceDay": 0,
    "nonWorkingDaysMethod": "INCLUDED",
    "toleranceCalculationMethod": "ARREARS_TOLERANCE_PERIOD",
    "toleranceFloorAmount": 0,
    "tolerancePercentageOfOutstandingPrincipal": 0,
    "tolerancePeriod": 0
  },
  "accountHolderKey": "string",
  "accountHolderType": "CLIENT",
  "accountState": "PARTIAL_APPLICATION",
  "accountSubState": "PARTIALLY_DISBURSED",
  "accruedInterest": 0,
  "accruedPenalty": 0,
  "activationTransactionKey": "string",
  "adjustTotalDueForInstallmentsWithDifferentInterval": true,
  "allowOffset": true,
  "approvedDate": "2016-09-06T13:37:50+03:00",
  "arrearsTolerancePeriod": 0,
  "assets": [
    {
      "amount": 0,
      "assetName": "string",
      "depositAccountKey": "string",
      "encodedKey": "string",
      "guarantorKey": "string",
      "guarantorType": "CLIENT",
      "originalAmount": 0,
      "originalCurrency": {
        "code": "AED",
        "currencyCode": "string"
      }
    }
  ],
  "assignedBranchKey": "string",
  "assignedCentreKey": "string",
  "assignedUserKey": "string",
  "balances": {
    "feesBalance": 0,
    "feesDue": 0,
    "feesPaid": 0,
    "holdBalance": 0,
    "interestBalance": 0,
    "interestDue": 0,
    "interestFromArrearsBalance": 0,
    "interestFromArrearsDue": 0,
    "interestFromArrearsPaid": 0,
    "interestPaid": 0,
    "penaltyBalance": 0,
    "penaltyDue": 0,
    "penaltyPaid": 0,
    "principalBalance": 0,
    "principalDue": 0,
    "principalPaid": 0,
    "redrawBalance": 0
  },
  "closedDate": "2016-09-06T13:37:50+03:00",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "creditArrangementKey": "string",
  "currency": {
    "code": "AED",
    "currencyCode": "string"
  },
  "daysInArrears": 0,
  "daysLate": 0,
  "disbursementDetails": {
    "disbursementDate": "2016-09-06T13:37:50+03:00",
    "encodedKey": "string",
    "expectedDisbursementDate": "2016-09-06T13:37:50+03:00",
    "fees": [
      {
        "amount": 0,
        "encodedKey": "string",
        "percentage": 0,
        "predefinedFeeEncodedKey": "string"
      }
    ],
    "firstRepaymentDate": "2016-09-06T13:37:50+03:00",
    "transactionDetails": {
      "encodedKey": "string",
      "internalTransfer": true,
      "targetDepositAccountKey": "string",
      "transactionChannelId": "string",
      "transactionChannelKey": "string"
    }
  },
  "encodedKey": "string",
  "feesSettings": {
    "accruedFee": 0,
    "accruedFeeFromArrears": 0,
    "feeRate": 0
  },
  "fundingSources": [
    {
      "amount": 0,
      "assetName": "string",
      "depositAccountKey": "string",
      "encodedKey": "string",
      "guarantorKey": "string",
      "guarantorType": "CLIENT",
      "id": "string",
      "interestCommission": 0,
      "sharePercentage": 0
    }
  ],
  "futurePaymentsAcceptance": "NO_FUTURE_PAYMENTS",
  "guarantors": [
    {
      "amount": 0,
      "assetName": "string",
      "depositAccountKey": "string",
      "encodedKey": "string",
      "guarantorKey": "string",
      "guarantorType": "CLIENT"
    }
  ],
  "id": "string",
  "interestAccruedInBillingCycle": 0,
  "interestCommission": 0,
  "interestFromArrearsAccrued": 0,
  "interestSettings": {
    "accountInterestRateSettings": [
      {
        "encodedKey": "string",
        "indexSourceKey": "string",
        "interestRate": 0,
        "interestRateCeilingValue": 0,
        "interestRateFloorValue": 0,
        "interestRateReviewCount": 0,
        "interestRateReviewUnit": "DAYS",
        "interestRateSource": "FIXED_INTEREST_RATE",
        "interestSpread": 0,
        "validFrom": "2016-09-06T13:37:50+03:00"
      }
    ],
    "accrueInterestAfterMaturity": true,
    "accrueLateInterest": true,
    "effectiveInterestRate": 0,
    "interestApplicationDays": {
      "daysInMonth": [
        0
      ],
      "shortMonthHandlingMethod": "LAST_DAY_IN_MONTH"
    },
    "interestApplicationMethod": "AFTER_DISBURSEMENT",
    "interestBalanceCalculationMethod": "ONLY_PRINCIPAL",
    "interestCalculationMethod": "FLAT",
    "interestChargeFrequency": "ANNUALIZED",
    "interestRate": 0,
    "interestRateReviewCount": 0,
    "interestRateReviewUnit": "DAYS",
    "interestRateSource": "FIXED_INTEREST_RATE",
    "interestSpread": 0,
    "interestType": "SIMPLE_INTEREST",
    "pmtAdjustmentThreshold": {
      "method": "WORKING_DAYS",
      "numberOfDays": 0
    }
  },
  "lastAccountAppraisalDate": "2016-09-06T13:37:50+03:00",
  "lastInterestAppliedDate": "2016-09-06T13:37:50+03:00",
  "lastInterestReviewDate": "2016-09-06T13:37:50+03:00",
  "lastLockedDate": "2016-09-06T13:37:50+03:00",
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "lastSetToArrearsDate": "2016-09-06T13:37:50+03:00",
  "lastTaxRateReviewDate": "2016-09-06T13:37:50+03:00",
  "latePaymentsRecalculationMethod": "OVERDUE_INSTALLMENTS_INCREASE",
  "loanAmount": 0,
  "loanName": "string",
  "lockedAccountTotalDueType": "BALANCE_AMOUNT",
  "lockedOperations": [
    "APPLY_INTEREST"
  ],
  "migrationEventKey": "string",
  "modifyInterestForFirstInstallment": true,
  "notes": "string",
  "originalAccountKey": "string",
  "paymentHolidaysAccruedInterest": 0,
  "paymentMethod": "HORIZONTAL",
  "penaltySettings": {
    "loanPenaltyCalculationMethod": "NONE",
    "penaltyRate": 0
  },
  "plannedInstallmentFees": [
    {
      "amount": 0,
      "applyOnDate": "2016-09-06T13:37:50+03:00",
      "encodedKey": "string",
      "installmentKey": "string",
      "installmentNumber": 0,
      "predefinedFeeKey": "string"
    }
  ],
  "prepaymentSettings": {
    "applyInterestOnPrepaymentMethod": "AUTOMATIC",
    "elementsRecalculationMethod": "PRINCIPAL_EXPECTED_FIXED",
    "ercFreeAllowanceAmount": 0,
    "ercFreeAllowancePercentage": 0,
    "prepaymentRecalculationMethod": "NO_RECALCULATION",
    "principalPaidInstallmentStatus": "PARTIALLY_PAID"
  },
  "principalPaymentSettings": {
    "amount": 0,
    "encodedKey": "string",
    "includeFeesInFloorAmount": true,
    "includeInterestInFloorAmount": true,
    "percentage": 0,
    "principalCeilingValue": 0,
    "principalFloorValue": 0,
    "principalPaymentMethod": "FLAT",
    "totalDueAmountFloor": 0,
    "totalDuePayment": "FLAT"
  },
  "productTypeKey": "string",
  "redrawSettings": {
    "restrictNextDueWithdrawal": true
  },
  "rescheduledAccountKey": "string",
  "scheduleSettings": {
    "amortizationPeriod": 0,
    "billingCycle": {
      "days": [
        0
      ]
    },
    "defaultFirstRepaymentDueDateOffset": 0,
    "fixedDaysOfMonth": [
      0
    ],
    "gracePeriod": 0,
    "gracePeriodType": "NONE",
    "hasCustomSchedule": true,
    "paymentPlan": [
      {
        "amount": 0,
        "encodedKey": "string",
        "toInstallment": 0
      }
    ],
    "periodicPayment": 0,
    "previewSchedule": {
      "numberOfPreviewedInstalments": 0
    },
    "principalRepaymentInterval": 0,
    "repaymentInstallments": 0,
    "repaymentPeriodCount": 0,
    "repaymentPeriodUnit": "DAYS",
    "repaymentScheduleMethod": "NONE",
    "scheduleDueDatesMethod": "INTERVAL",
    "shortMonthHandlingMethod": "LAST_DAY_IN_MONTH"
  },
  "settlementAccountKey": "string",
  "taxRate": 0,
  "terminationDate": "2016-09-06T13:37:50+03:00",
  "tranches": [
    {
      "amount": 0,
      "disbursementDetails": {
        "disbursementTransactionKey": "string",
        "expectedDisbursementDate": "2016-09-06T13:37:50+03:00"
      },
      "encodedKey": "string",
      "fees": [
        {
          "amount": 0,
          "encodedKey": "string",
          "percentage": 0,
          "predefinedFeeEncodedKey": "string"
        }
      ],
      "trancheNumber": 0
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK Loan account updated. LoanAccountFullDetails
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan account not found. ErrorResponse

delete (Loan Accounts)

Code samples

# You can also use wget
curl -X DELETE /loans/{loanAccountId} \
  -H 'Accept: application/vnd.mambu.v2+json'

DELETE /loans/{loanAccountId} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/loans/{loanAccountId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.delete '/loans/{loanAccountId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.delete('/loans/{loanAccountId}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('DELETE','/loans/{loanAccountId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans/{loanAccountId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/loans/{loanAccountId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /loans/{loanAccountId}

Delete loan account

Parameters

Name Type Description In
loanAccountId (required) string The ID or encoded key of the loan account. path

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
204 No Content Loan account deleted. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan account not found. ErrorResponse

patch (Loan Accounts)

Code samples

# You can also use wget
curl -X PATCH /loans/{loanAccountId} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json'

PATCH /loans/{loanAccountId} HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/loans/{loanAccountId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.patch '/loans/{loanAccountId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.patch('/loans/{loanAccountId}', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PATCH','/loans/{loanAccountId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans/{loanAccountId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PATCH");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/loans/{loanAccountId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PATCH /loans/{loanAccountId}

Partially update loan account

Body parameter

[
  {
    "from": "string",
    "op": "ADD",
    "path": "string",
    "value": {}
  }
]

Parameters

Name Type Description In
loanAccountId (required) string The ID or encoded key of the loan account. path
body (required) PatchOperation Patch operations to be applied to a resource. body

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
204 No Content Loan account updated. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan account not found. ErrorResponse

getAllAuthorizationHolds (Loan Accounts)

Code samples

# You can also use wget
curl -X GET /loans/{loanAccountId}/authorizationholds \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /loans/{loanAccountId}/authorizationholds HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/loans/{loanAccountId}/authorizationholds',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/loans/{loanAccountId}/authorizationholds',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/loans/{loanAccountId}/authorizationholds', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/loans/{loanAccountId}/authorizationholds', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans/{loanAccountId}/authorizationholds");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/loans/{loanAccountId}/authorizationholds", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /loans/{loanAccountId}/authorizationholds

Get authorization holds related to a loan account, ordered from newest to oldest by creation date

Parameters

Name Type Description In
loanAccountId (required) string The ID or encoded key of the loan account. path
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query
status string The status of the authorization holds to filter on query

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF
status PENDING
status REVERSED
status SETTLED
status EXPIRED

Example responses

200 Response

[
  {
    "accountKey": "string",
    "advice": true,
    "amount": 0,
    "balances": {
      "accountId": "string",
      "availableBalance": 0,
      "cardType": "DEBIT",
      "creditLimit": 0,
      "currencyCode": "string",
      "totalBalance": 0
    },
    "cardAcceptor": {
      "city": "string",
      "country": "string",
      "mcc": 0,
      "name": "string",
      "state": "string",
      "street": "string",
      "zip": "string"
    },
    "cardToken": "string",
    "creationDate": "2016-09-06T13:37:50+03:00",
    "creditDebitIndicator": "DBIT",
    "currencyCode": "string",
    "customExpirationPeriod": 0,
    "encodedKey": "string",
    "exchangeRate": 0,
    "externalReferenceId": "string",
    "originalAmount": 0,
    "originalCurrency": "string",
    "partial": true,
    "referenceDateForExpiration": "2016-09-06T13:37:50+03:00",
    "source": "CARD",
    "status": "PENDING",
    "userTransactionTime": "string"
  }
]

Responses

Status Meaning Description Schema
200 OK The list of authorization holds has been returned. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan account not found. ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [GetAuthorizationHold] [Details for retrieving a authorization hold. Deprecated due to encodedKey field.] none
Ā» accountKey string The key of the account linked with the authorization hold. read-only
Ā» advice (required) boolean Whether the given request should be accepted without balance validations. none
Ā» amount (required) number The amount of money to be held as a result of the authorization hold request. none
Ā» balances AccountBalances Account balances presented to inquirer such as card processor none
»» accountId string The unique account identifier none
»» availableBalance number The available balance of a deposit or credit account none
»» cardType string The card type either DEBIT or CREDIT none
»» creditLimit number The overdraft limit of a deposit account or the loan amount in case of a credit account none
»» currencyCode string Currency code used for the account none
»» totalBalance number The current balance of a deposit account or principal balance of a revolving credit none
Ā» cardAcceptor CardAcceptor The details of the card acceptor (merchant) in a transaction hold. none
»» city string The city in which the card acceptor has the business. none
»» country string The country in which the card acceptor has the business. none
»» mcc integer(int32) The Merchant Category Code of the card acceptor. none
»» name string The name of the card acceptor. none
»» state string The state in which the card acceptor has the business. none
»» street string The street in which the card acceptor has the business. none
»» zip string The ZIP code of the location in which the card acceptor has the business. none
Ā» cardToken string The reference token of the card. read-only
Ā» creationDate string(date-time) The organization time when the authorization hold was created read-only
Ā» creditDebitIndicator string Indicates whether the authorization hold amount is credited or debited.If not provided, the default values is DBIT. none
Ā» currencyCode string The ISO currency code in which the hold was created. The amounts are stored in the base currency, but the user could have enter it in a foreign currency. none
Ā» customExpirationPeriod integer(int32) The custom expiration period for the hold which overwrites mcc and default expiration periods none
Ā» encodedKey string The internal ID of the authorization hold, auto generated, unique. read-only
Ā» exchangeRate number The exchange rate for the original currency. none
Ā» externalReferenceId (required) string The external reference ID to be used to reference the account hold in subsequent requests. none
Ā» originalAmount number The original amount of money to be held as a result of the authorization hold request. none
Ā» originalCurrency string The original currency in which the hold was created. none
Ā» partial boolean Indicates whether the authorization is partial or not none
Ā» referenceDateForExpiration string(date-time) The date to consider as start date when calculating the number of days passed until expiration read-only
Ā» source string Indicates the source of the authorization hold, the default values is CARD. read-only
Ā» status string The authorization hold status. read-only
Ā» userTransactionTime string The formatted time at which the user made this authorization hold. none

Enumerated Values

Property Value
cardType DEBIT
cardType CREDIT
creditDebitIndicator DBIT
creditDebitIndicator CRDT
source CARD
source ACCOUNT
status PENDING
status REVERSED
status SETTLED
status EXPIRED

Response Headers

Status Header Type Format Description
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

getAllCards (Loan Accounts)

Code samples

# You can also use wget
curl -X GET /loans/{loanAccountId}/cards \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /loans/{loanAccountId}/cards HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/loans/{loanAccountId}/cards',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/loans/{loanAccountId}/cards',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/loans/{loanAccountId}/cards', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/loans/{loanAccountId}/cards', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans/{loanAccountId}/cards");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/loans/{loanAccountId}/cards", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /loans/{loanAccountId}/cards

Get cards associated with an account

Parameters

Name Type Description In
loanAccountId (required) string The ID or encoded key of the loan account. path

Example responses

200 Response

[
  {
    "referenceToken": "string"
  }
]

Responses

Status Meaning Description Schema
200 OK The list of cards attached to the account was returned. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan account not found. ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [Card] [Returns a card that can be associated to a deposit or loan account. Cards consist only of card reference tokens and the card details are not stored in Mambu.] none
Ā» referenceToken (required) string The card's reference token. none

Response Headers

Status Header Type Format Description
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

createCard (Loan Accounts)

Code samples

# You can also use wget
curl -X POST /loans/{loanAccountId}/cards \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /loans/{loanAccountId}/cards HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/loans/{loanAccountId}/cards',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/loans/{loanAccountId}/cards',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/loans/{loanAccountId}/cards', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/loans/{loanAccountId}/cards', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans/{loanAccountId}/cards");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/loans/{loanAccountId}/cards", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /loans/{loanAccountId}/cards

Represents the information needed to create and associate a new card to an account.

Body parameter

{
  "referenceToken": "string"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
loanAccountId (required) string The ID or encoded key of the loan account. path
body (required) Card The card to be created. body

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
201 Created The card was created. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan account not found. ErrorResponse

applyInterest (Loan Accounts)

Code samples

# You can also use wget
curl -X POST /loans/{loanAccountId}:applyInterest \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /loans/{loanAccountId}:applyInterest HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/loans/{loanAccountId}:applyInterest',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/loans/{loanAccountId}:applyInterest',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/loans/{loanAccountId}:applyInterest', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/loans/{loanAccountId}:applyInterest', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans/{loanAccountId}:applyInterest");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/loans/{loanAccountId}:applyInterest", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /loans/{loanAccountId}:applyInterest

Apply accrued interest

Body parameter

{
  "interestApplicationDate": "2016-09-06T13:37:50+03:00",
  "isInterestFromArrears": true,
  "isPaymentHolidaysInterest": true,
  "notes": "string",
  "paymentHolidaysInterestAmount": 0
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
loanAccountId (required) string The ID or encoded key of the loan account. path
body (required) ApplyInterestInput Represents the information for apply accrued interest action. body

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
204 No Content Interest applied. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan account not found. ErrorResponse

changeRepaymentValue (Loan Accounts)

Code samples

# You can also use wget
curl -X POST /loans/{loanAccountId}:changeRepaymentValue \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /loans/{loanAccountId}:changeRepaymentValue HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/loans/{loanAccountId}:changeRepaymentValue',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/loans/{loanAccountId}:changeRepaymentValue',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/loans/{loanAccountId}:changeRepaymentValue', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/loans/{loanAccountId}:changeRepaymentValue', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans/{loanAccountId}:changeRepaymentValue");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/loans/{loanAccountId}:changeRepaymentValue", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /loans/{loanAccountId}:changeRepaymentValue

Change repayment value for loan account

Body parameter

{
  "amount": 0,
  "notes": "string",
  "percentage": 0,
  "valueDate": "2016-09-06T13:37:50+03:00"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
loanAccountId (required) string The ID or encoded key of the loan account. path
body ChangeRepaymentValueLoanAccountInput Represents information for an action to perform on a loan account. body

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
204 No Content Change repayment value action posted. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan account not found. ErrorResponse

getAll (Loan Accounts)

Code samples

# You can also use wget
curl -X GET /loans \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /loans HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/loans',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/loans',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/loans', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/loans', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/loans", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /loans

Get loan accounts

Parameters

Name Type Description In
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query
detailsLevel string The level of details to return: FULL means the full details of the object will be returned (custom field values, address, contact info, or any other related objects) and BASIC will return only the first level elements of the object. query
creditOfficerUsername string The username of the credit officer to whom the entities are assigned to query
branchId string The id/encodedKey of the branch to which the entities are assigned to query
centreId string The id/encodedKey of the centre to which the entities are assigned to query
accountState string The state of the loan account to search for query
accountHolderType string The type of the account holder: CLIENT/GROUP query
accountHolderId string The id of the account holder query
sortBy string The criteria based on which the records will be sorted. Expected format is , for example, sortBy = field1:ASC,field2:DESC.
Only the following fields can be used: id, loanName, creationDate, lastModifiedDate
Default sorting is done by creationDate:ASC
query

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF
detailsLevel BASIC
detailsLevel FULL
accountState PARTIAL_APPLICATION
accountState PENDING_APPROVAL
accountState APPROVED
accountState ACTIVE
accountState ACTIVE_IN_ARREARS
accountState CLOSED
accountState CLOSED_WRITTEN_OFF
accountState CLOSED_REJECTED
accountHolderType CLIENT
accountHolderType GROUP

Example responses

200 Response

[
  {
    "accountArrearsSettings": {
      "dateCalculationMethod": "ACCOUNT_FIRST_WENT_TO_ARREARS",
      "encodedKey": "string",
      "monthlyToleranceDay": 0,
      "nonWorkingDaysMethod": "INCLUDED",
      "toleranceCalculationMethod": "ARREARS_TOLERANCE_PERIOD",
      "toleranceFloorAmount": 0,
      "tolerancePercentageOfOutstandingPrincipal": 0,
      "tolerancePeriod": 0
    },
    "accountHolderKey": "string",
    "accountHolderType": "CLIENT",
    "accountState": "PARTIAL_APPLICATION",
    "accountSubState": "PARTIALLY_DISBURSED",
    "accruedInterest": 0,
    "accruedPenalty": 0,
    "activationTransactionKey": "string",
    "adjustTotalDueForInstallmentsWithDifferentInterval": true,
    "allowOffset": true,
    "approvedDate": "2016-09-06T13:37:50+03:00",
    "arrearsTolerancePeriod": 0,
    "assets": [
      {
        "amount": 0,
        "assetName": "string",
        "depositAccountKey": "string",
        "encodedKey": "string",
        "guarantorKey": "string",
        "guarantorType": "CLIENT",
        "originalAmount": 0,
        "originalCurrency": {
          "code": "AED",
          "currencyCode": "string"
        }
      }
    ],
    "assignedBranchKey": "string",
    "assignedCentreKey": "string",
    "assignedUserKey": "string",
    "balances": {
      "feesBalance": 0,
      "feesDue": 0,
      "feesPaid": 0,
      "holdBalance": 0,
      "interestBalance": 0,
      "interestDue": 0,
      "interestFromArrearsBalance": 0,
      "interestFromArrearsDue": 0,
      "interestFromArrearsPaid": 0,
      "interestPaid": 0,
      "penaltyBalance": 0,
      "penaltyDue": 0,
      "penaltyPaid": 0,
      "principalBalance": 0,
      "principalDue": 0,
      "principalPaid": 0,
      "redrawBalance": 0
    },
    "closedDate": "2016-09-06T13:37:50+03:00",
    "creationDate": "2016-09-06T13:37:50+03:00",
    "creditArrangementKey": "string",
    "currency": {
      "code": "AED",
      "currencyCode": "string"
    },
    "daysInArrears": 0,
    "daysLate": 0,
    "disbursementDetails": {
      "disbursementDate": "2016-09-06T13:37:50+03:00",
      "encodedKey": "string",
      "expectedDisbursementDate": "2016-09-06T13:37:50+03:00",
      "fees": [
        {
          "amount": 0,
          "encodedKey": "string",
          "percentage": 0,
          "predefinedFeeEncodedKey": "string"
        }
      ],
      "firstRepaymentDate": "2016-09-06T13:37:50+03:00",
      "transactionDetails": {
        "encodedKey": "string",
        "internalTransfer": true,
        "targetDepositAccountKey": "string",
        "transactionChannelId": "string",
        "transactionChannelKey": "string"
      }
    },
    "encodedKey": "string",
    "feesSettings": {
      "accruedFee": 0,
      "accruedFeeFromArrears": 0,
      "feeRate": 0
    },
    "fundingSources": [
      {
        "amount": 0,
        "assetName": "string",
        "depositAccountKey": "string",
        "encodedKey": "string",
        "guarantorKey": "string",
        "guarantorType": "CLIENT",
        "id": "string",
        "interestCommission": 0,
        "sharePercentage": 0
      }
    ],
    "futurePaymentsAcceptance": "NO_FUTURE_PAYMENTS",
    "guarantors": [
      {
        "amount": 0,
        "assetName": "string",
        "depositAccountKey": "string",
        "encodedKey": "string",
        "guarantorKey": "string",
        "guarantorType": "CLIENT"
      }
    ],
    "id": "string",
    "interestAccruedInBillingCycle": 0,
    "interestCommission": 0,
    "interestFromArrearsAccrued": 0,
    "interestSettings": {
      "accountInterestRateSettings": [
        {
          "encodedKey": "string",
          "indexSourceKey": "string",
          "interestRate": 0,
          "interestRateCeilingValue": 0,
          "interestRateFloorValue": 0,
          "interestRateReviewCount": 0,
          "interestRateReviewUnit": "DAYS",
          "interestRateSource": "FIXED_INTEREST_RATE",
          "interestSpread": 0,
          "validFrom": "2016-09-06T13:37:50+03:00"
        }
      ],
      "accrueInterestAfterMaturity": true,
      "accrueLateInterest": true,
      "effectiveInterestRate": 0,
      "interestApplicationDays": {
        "daysInMonth": [
          0
        ],
        "shortMonthHandlingMethod": "LAST_DAY_IN_MONTH"
      },
      "interestApplicationMethod": "AFTER_DISBURSEMENT",
      "interestBalanceCalculationMethod": "ONLY_PRINCIPAL",
      "interestCalculationMethod": "FLAT",
      "interestChargeFrequency": "ANNUALIZED",
      "interestRate": 0,
      "interestRateReviewCount": 0,
      "interestRateReviewUnit": "DAYS",
      "interestRateSource": "FIXED_INTEREST_RATE",
      "interestSpread": 0,
      "interestType": "SIMPLE_INTEREST",
      "pmtAdjustmentThreshold": {
        "method": "WORKING_DAYS",
        "numberOfDays": 0
      }
    },
    "lastAccountAppraisalDate": "2016-09-06T13:37:50+03:00",
    "lastInterestAppliedDate": "2016-09-06T13:37:50+03:00",
    "lastInterestReviewDate": "2016-09-06T13:37:50+03:00",
    "lastLockedDate": "2016-09-06T13:37:50+03:00",
    "lastModifiedDate": "2016-09-06T13:37:50+03:00",
    "lastSetToArrearsDate": "2016-09-06T13:37:50+03:00",
    "lastTaxRateReviewDate": "2016-09-06T13:37:50+03:00",
    "latePaymentsRecalculationMethod": "OVERDUE_INSTALLMENTS_INCREASE",
    "loanAmount": 0,
    "loanName": "string",
    "lockedAccountTotalDueType": "BALANCE_AMOUNT",
    "lockedOperations": [
      "APPLY_INTEREST"
    ],
    "migrationEventKey": "string",
    "modifyInterestForFirstInstallment": true,
    "notes": "string",
    "originalAccountKey": "string",
    "paymentHolidaysAccruedInterest": 0,
    "paymentMethod": "HORIZONTAL",
    "penaltySettings": {
      "loanPenaltyCalculationMethod": "NONE",
      "penaltyRate": 0
    },
    "plannedInstallmentFees": [
      {
        "amount": 0,
        "applyOnDate": "2016-09-06T13:37:50+03:00",
        "encodedKey": "string",
        "installmentKey": "string",
        "installmentNumber": 0,
        "predefinedFeeKey": "string"
      }
    ],
    "prepaymentSettings": {
      "applyInterestOnPrepaymentMethod": "AUTOMATIC",
      "elementsRecalculationMethod": "PRINCIPAL_EXPECTED_FIXED",
      "ercFreeAllowanceAmount": 0,
      "ercFreeAllowancePercentage": 0,
      "prepaymentRecalculationMethod": "NO_RECALCULATION",
      "principalPaidInstallmentStatus": "PARTIALLY_PAID"
    },
    "principalPaymentSettings": {
      "amount": 0,
      "encodedKey": "string",
      "includeFeesInFloorAmount": true,
      "includeInterestInFloorAmount": true,
      "percentage": 0,
      "principalCeilingValue": 0,
      "principalFloorValue": 0,
      "principalPaymentMethod": "FLAT",
      "totalDueAmountFloor": 0,
      "totalDuePayment": "FLAT"
    },
    "productTypeKey": "string",
    "redrawSettings": {
      "restrictNextDueWithdrawal": true
    },
    "rescheduledAccountKey": "string",
    "scheduleSettings": {
      "amortizationPeriod": 0,
      "billingCycle": {
        "days": [
          0
        ]
      },
      "defaultFirstRepaymentDueDateOffset": 0,
      "fixedDaysOfMonth": [
        0
      ],
      "gracePeriod": 0,
      "gracePeriodType": "NONE",
      "hasCustomSchedule": true,
      "paymentPlan": [
        {
          "amount": 0,
          "encodedKey": "string",
          "toInstallment": 0
        }
      ],
      "periodicPayment": 0,
      "previewSchedule": {
        "numberOfPreviewedInstalments": 0
      },
      "principalRepaymentInterval": 0,
      "repaymentInstallments": 0,
      "repaymentPeriodCount": 0,
      "repaymentPeriodUnit": "DAYS",
      "repaymentScheduleMethod": "NONE",
      "scheduleDueDatesMethod": "INTERVAL",
      "shortMonthHandlingMethod": "LAST_DAY_IN_MONTH"
    },
    "settlementAccountKey": "string",
    "taxRate": 0,
    "terminationDate": "2016-09-06T13:37:50+03:00",
    "tranches": [
      {
        "amount": 0,
        "disbursementDetails": {
          "disbursementTransactionKey": "string",
          "expectedDisbursementDate": "2016-09-06T13:37:50+03:00"
        },
        "encodedKey": "string",
        "fees": [
          {
            "amount": 0,
            "encodedKey": "string",
            "percentage": 0,
            "predefinedFeeEncodedKey": "string"
          }
        ],
        "trancheNumber": 0
      }
    ]
  }
]

Responses

Status Meaning Description Schema
200 OK Loan accounts list returned. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [LoanAccountFullDetails] [Represents a loan account. A loan account defines the amount that your organization lends to a client. The terms and conditions of a loan account are defined by a loan product. In a loan account, Mambu stores all the information related to disbursements, repayments, interest rates, and withdrawals.] none
Ā» accountArrearsSettings AccountArrearsSettings The account arrears settings, holds the required information for the arrears settings of an account. none
»» dateCalculationMethod string The arrears date calculation method. none
»» encodedKey string The encoded key of the arrears base settings, auto generated, unique. read-only
»» monthlyToleranceDay integer(int32) Defines monthly arrears tolerance day value. none
»» nonWorkingDaysMethod string Shows whether the non working days are taken in consideration or not when applying penaltees/late fees or when setting an account into arrears none
»» toleranceCalculationMethod string Defines the tolerance calculation method none
»» toleranceFloorAmount number The tolerance floor amount. none
»» tolerancePercentageOfOutstandingPrincipal number Defines the arrears tolerance amount. none
»» tolerancePeriod integer(int32) Defines the arrears tolerance period value. none
Ā» accountHolderKey (required) string The encoded key of the account holder. none
Ā» accountHolderType (required) string The type of the account holder. none
Ā» accountState string The state of the loan account. none
Ā» accountSubState string A second state for the loan account. Beside the account state, a second substate is sometimes necessary to provide more information about the exact lifecycle state of a loan account.For example, even if the account state of a loan account is ACTIVE, it can also have a substate of LOCKED. none
Ā» accruedInterest number The amount of interest that has been accrued in the loan account. none
Ā» accruedPenalty number The accrued penalty, represents the amount of penalty that has been accrued in the loan account. none
Ā» activationTransactionKey string The encoded key of the transaction that activated the loan account. none
Ā» adjustTotalDueForInstallmentsWithDifferentInterval boolean Adjust the total due for repayment when the repayment period is different than the repayment frequency read-only
Ā» allowOffset boolean DEPRECATED - Will always be false. none
Ā» approvedDate string(date-time) The date the loan account was approved. none
Ā» arrearsTolerancePeriod integer(int32) The arrears tolerance (period or day of month) depending on the product settings. none
Ā» assets [AssetFullDetails] The list of assets associated with the current loan account. none
»» amount (required) number The amount used by the client for the guaranty none
»» assetName (required) string The name of a value the client guarantees with (populated when the guaranty type is ASSET) none
»» depositAccountKey string The key of the deposit account used by the guarantor (populated when the guaranty type is GUARANTOR). It can be null. none
»» encodedKey string The encoded key of the security, auto generated, unique. read-only
»» guarantorKey string The key of the client/group used as the guarantor. none
»» guarantorType string The type of the guarantor (client/group) none
»» originalAmount number The original amount used by the client for a collateral asset none
»» originalCurrency Currency Represents a currency. To represent a fiat currency, the code value and the currencyCode value must be the ISO-4217 currency code of the fiat currency. To represent a non-fiat currency, the code value must be NON_FIAT and the currencyCode value must be the currency code of the non-fiat currency. none
»»» code string Fiat(ISO-4217) currency code or NON_FIAT for non fiat currencies. none
»»» currencyCode string Currency code for NON_FIAT currency. none
Ā» assignedBranchKey string The key of the branch this loan account is assigned to. The branch is set to unassigned if no branch field is set. none
Ā» assignedCentreKey string The key of the centre this account is assigned to. none
Ā» assignedUserKey string The key of the user this loan account is assigned to. none
Ā» balances Balances The loan account balance details. none
»» feesBalance number The fees balance. Represents the total fees expected to be paid on this account at a given moment. read-only
»» feesDue number The fees due. Representing the total fees due for the account. read-only
»» feesPaid number The fees paid. Represents the total fees paid for the account. read-only
»» holdBalance number The sum of all the authorization hold amounts on this account. read-only
»» interestBalance number Represents the total interest owed by the client (total interest applied for account minus interest paid). read-only
»» interestDue number The interest due. Indicates how much interest it's due for the account at this moment. read-only
»» interestFromArrearsBalance number The interest from arrears balance. Indicates interest from arrears owned by the client, from now on. (total interest from arrears accrued for account - interest from arrears paid). read-only
»» interestFromArrearsDue number The interest from arrears due. Indicates how much interest from arrears it's due for the account at this moment. read-only
»» interestFromArrearsPaid number The interest from arrears paid, indicates total interest from arrears paid into the account. read-only
»» interestPaid number The interest paid, indicates total interest paid into the account. read-only
»» penaltyBalance number The penalty balance. Represents the total penalty expected to be paid on this account at a given moment. read-only
»» penaltyDue number The penalty due. Represents the total penalty amount due for the account. read-only
»» penaltyPaid number The Penalty paid. Represents the total penalty amount paid for the account. read-only
»» principalBalance number The total principal owned by the client, from now on (principal disbursed - principal paid). read-only
»» principalDue number The principal due, indicates how much principal it's due at this moment. read-only
»» principalPaid number The principal paid, holds the value of the total paid into the account. read-only
»» redrawBalance number The total redraw amount owned by the client, from now on. none
Ā» closedDate string(date-time) The date the loan was closed. none
Ā» creationDate string(date-time) The date the loan account was created. none
Ā» creditArrangementKey string The key to the line of credit where this account is registered to. none
Ā» currency Currency Represents a currency. To represent a fiat currency, the code value and the currencyCode value must be the ISO-4217 currency code of the fiat currency. To represent a non-fiat currency, the code value must be NON_FIAT and the currencyCode value must be the currency code of the non-fiat currency. none
Ā» daysInArrears integer(int32) The number of days the loan account is in arrears. read-only
Ā» daysLate integer(int32) The number of days a repayment for the loan account is late. read-only
Ā» disbursementDetails DisbursementDetails The the disbursement details it holds the information related to the disbursement details as disbursement date, first repayment date, disbursement fees. none
»» disbursementDate string(date-time) The activation date, the date when the disbursement actually took place. none
»» encodedKey string The encoded key of the disbursement details, auto generated, unique read-only
»» expectedDisbursementDate string(date-time) The date of the expected disbursement.Stored as Organization Time. none
»» fees [CustomPredefinedFee] List of fees that should be applied at the disbursement time. none
»»» amount number The amount of the custom fee. none
»»» encodedKey string The encoded key of the custom predefined fee, auto generated, unique. read-only
»»» percentage number The percentage of the custom fee. none
»»» predefinedFeeEncodedKey string The encoded key of the predefined fee none
»» firstRepaymentDate string(date-time) The date of the expected first repayment. Stored as Organization Time. none
»» transactionDetails LoanTransactionDetails Represents the loan transaction details. none
»»» encodedKey string The encoded key of the entity, generated, globally unique read-only
»»» internalTransfer boolean Whether the transaction was transferred between loans or deposit accounts none
»»» targetDepositAccountKey string In case of a transaction to a deposit account this represent the deposit account key to which the transaction was made. none
»»» transactionChannelId string The ID of the transaction channel associated with the transaction details. none
»»» transactionChannelKey string The encoded key of the transaction channel associated with the transaction details. none
Ā» encodedKey string The encoded key of the loan account, it is auto generated, and must be unique. read-only
Ā» feesSettings FeesAccountSettings The fee settings, holds all the properties regarding fees for the loan account. none
»» accruedFee number The accrued fee. Represents the accrued fee for the loan account. The fee on loans is accrued on a daily basis, which allows charging the clients only for the days they actually used the loan amount. read-only
»» accruedFeeFromArrears number The accrued fee from arrears. Represents the accrued fee from arrears for the loan account. The fee on loans is accrued on a daily basis, which allows charging the clients only for the days they actually used the loan amount. read-only
»» feeRate number The fee rate. Represents the fee rate for the loan account. The fee on loans is accrued on a daily basis, which allows charging the clients only for the days they actually used the loan amount. none
Ā» fundingSources [InvestorFund] The list of funds associated with the loan account. none
»» amount (required) number The amount used by the client for the guaranty none
»» assetName string The name of a value the client guarantees with (populated when the guaranty type is ASSET) none
»» depositAccountKey string The key of the deposit account used by the guarantor (populated when the guaranty type is GUARANTOR). It can be null. none
»» encodedKey string The encoded key of the entity, generated, globally unique read-only
»» guarantorKey (required) string The key of the client/group used as the guarantor. none
»» guarantorType (required) string The type of the guarantor (client/group) none
»» id string Investor fund unique identifier. All versions of an investor fund will have same id. none
»» interestCommission number The constraint minimum value none
»» sharePercentage number Percentage of loan shares this investor owns none
Ā» futurePaymentsAcceptance string Shows whether the repayment transactions with entry date set in the future are allowed or not for this loan account. none
Ā» guarantors [GuarantorFullDetails] The list of guarantees associated with the loan account. none
»» amount (required) number The amount used by the client for the guaranty none
»» assetName string The name of a value the client guarantees with (populated when the guaranty type is ASSET) none
»» depositAccountKey string The key of the deposit account used by the guarantor (populated when the guaranty type is GUARANTOR). It can be null. none
»» encodedKey string The encoded key of the security, auto generated, unique. read-only
»» guarantorKey (required) string The key of the client/group used as the guarantor. none
»» guarantorType (required) string The type of the guarantor (client/group) none
Ā» id string The ID of the loan account, it can be generated and customized, and must be unique. none
Ā» interestAccruedInBillingCycle number The interest that is accrued in the current billing cycle. read-only
Ā» interestCommission number The value of the interest booked by the organization from the accounts funded by investors. Null if the funds are not enabled. none
Ā» interestFromArrearsAccrued number The amount of interest from arrears that has been accrued in the loan account. read-only
Ā» interestSettings (required) InterestSettings The interest settings, holds all the properties regarding interests for the loan account. none
»» accountInterestRateSettings [AccountInterestRateSettings] Adjustable interest rates settings for loan account none
»»» encodedKey string The encoded key of the interest rate settings, auto generated, unique read-only
»»» indexSourceKey string Index rate source key. none
»»» interestRate number Interest rate value. none
»»» interestRateCeilingValue number Maximum value allowed for index based interest rate. Valid only for index interest rate. none
»»» interestRateFloorValue number Minimum value allowed for index based interest rate. Valid only for index interest rate. none
»»» interestRateReviewCount integer(int32) Interest rate review frequency unit count. Valid only for index interest rate. none
»»» interestRateReviewUnit string Interest rate review frequency measurement unit. Valid only for index interest rate. none
»»» interestRateSource (required) string Interest calculation method: fixed or indexed(interest spread + active organization index interest rate) none
»»» interestSpread number Interest spread value. none
»»» validFrom (required) string(date-time) Date since an interest rate is valid none
»» accrueInterestAfterMaturity boolean The accrue interest after maturity. If the product support this option, specify if the interest should be accrued after the account maturity date. none
»» accrueLateInterest boolean Indicates whether late interest is accrued for this loan account read-only
»» effectiveInterestRate number The effective interest rate. Represents the interest rate for the loan accounts with semi-annually compounding product. none
»» interestApplicationDays DaysInMonth Enumeration for days of month and method of handling shorter months. none
»»» daysInMonth [integer] Specifies the day(s) of the month when the interest application dates should be. Only available if the Interest Application Method is InterestApplicationMethodDTO#FIXED_DAYS_OF_MONTH. Currently only 1 value can be specified. none
»»» shortMonthHandlingMethod string Determines how to handle the short months, if they select a fixed day of month > 28. Will be null if no such date is selected. Only available if the Interest Application Method is InterestApplicationMethodDTO#FIXED_DAYS_OF_MONTH. none
»» interestApplicationMethod string The interest application method. Represents the interest application method that determines whether the interest gets applied on the account's disbursement or on each repayment. none
»» interestBalanceCalculationMethod string The interest balance calculation method. Represents the option which determines the way the balance for the account's interest is computed. none
»» interestCalculationMethod string The interest calculation method. Holds the type of interest calculation method. none
»» interestChargeFrequency string The interest change frequency. Holds the possible values for how often is interest charged on loan or deposit accounts none
»» interestRate number The interest rate. Represents the interest rate for the loan account. The interest on loans is accrued on a daily basis, which allows charging the clients only for the days they actually used the loan amount. none
»» interestRateReviewCount integer(int32) Interest rate update frequency unit count. none
»» interestRateReviewUnit string The interest rate review unit. Defines the interest rate update frequency measurement unit. none
»» interestRateSource string The interest rate source. Represents the interest calculation method: fixed or (interest spread + active organization index interest rate) none
»» interestSpread number Interest to be added to active organization index interest rate in order to find out actual interest rate none
»» interestType string The possible values for how we compute and apply the interest none
»» pmtAdjustmentThreshold PMTAdjustmentThreshold Represents PMT Adjustment threshold settings for loan accounts and loan products. none
»»» method string The method used to calculate the PMT Adjustment threshold. Supported value is CALENDAR_DAYS none
»»» numberOfDays integer(int32) The number of days that trigger a PMT Adjustment. none
Ā» lastAccountAppraisalDate string(date-time) The date the loan account has last been evaluated for interest, principal, fees, and penalties calculations expressed in the organization time format and time zone. none
Ā» lastInterestAppliedDate string(date-time) The date of the last time the loan account had interest applied (stored to interest balance), expressed in the organization time format and time zone. none
Ā» lastInterestReviewDate string(date-time) The date the interest was reviewed last time, stored in the organization time format and time zone. none
Ā» lastLockedDate string(date-time) The date when the loan account was set for the last time in the LOCKED state expressed in the organization time format and time zone. If null, the account is not locked anymore. none
Ā» lastModifiedDate string(date-time) The last date the loan was updated. none
Ā» lastSetToArrearsDate string(date-time) The date when the loan account was set to last standing or null; if never set, it is expressed in your organization time format and time zone. none
Ā» lastTaxRateReviewDate string(date-time) The date the tax rate on the loan account was last checked, expressed in the organization time format and time zone. none
Ā» latePaymentsRecalculationMethod string The overdue payments recalculation method inherited from the loan product on which this loan account is based. none
Ā» loanAmount (required) number The loan amount. none
Ā» loanName string The name of the loan account. none
Ā» lockedAccountTotalDueType string The locked account total due type. none
Ā» lockedOperations [string] A list with operations which are locked when the account is in the AccountState.LOCKED substate. none
Ā» migrationEventKey string The migration event encoded key associated with this loan account. If this account was imported, track which 'migration event' they came from. none
Ā» modifyInterestForFirstInstallment boolean Adjust the interest for the first repayment when the first repayment period is different than the repayment frequency read-only
Ā» notes string The notes about this loan account. none
Ā» originalAccountKey string The key of the original rescheduled or refinanced loan account. none
Ā» paymentHolidaysAccruedInterest number The amount of interest that has been accrued during payment holidays in the loan account. none
Ā» paymentMethod string The interest payment method that determines whether the payments are made horizontally (on the repayments) or vertically (on the loan account). none
Ā» penaltySettings PenaltySettings The penalty settings, holds all the fields regarding penalties none
»» loanPenaltyCalculationMethod string The last penalty calculation method, represents on what amount are the penalties calculated. none
»» penaltyRate number The penalty rate, represents the rate (in percent) which is charged as a penalty. none
Ā» plannedInstallmentFees [PlannedInstallmentFee] The list with manual fees planned on the installments of the loan account. none
»» amount number The amount of the planned fee. none
»» applyOnDate string(date-time) The date when a planned fee should be applied, overriding due date of the installment. It should match the interval of the installment. If it belongs to the first installment, it should be between disbursement date and installment due date. Returned only if its value has been previously set. none
»» encodedKey string The encoded key of the planned installment fee, auto generated, unique. read-only
»» installmentKey string The encoded key of the installment on which the predefined fee is planned. none
»» installmentNumber integer(int32) The number of the installment for which the predefined fee is planned. It is used only in the case when fees are created at the same time as the loan account or during preview schedule, before account creation. In all other cases, this field will be nil and installmentKey will be used to identify an installment. none
»» predefinedFeeKey (required) string The encoded key of the predefined fee which is planned. none
Ā» prepaymentSettings PrepaymentSettings The prepayment settings, holds all prepayment properties. none
»» applyInterestOnPrepaymentMethod string Apply interest on prepayment method copied from loan product on which this account is based. none
»» elementsRecalculationMethod string The elements recalculation method, indicates how the declining balance with equal installments repayments are recalculated. none
»» ercFreeAllowanceAmount number none none
»» ercFreeAllowancePercentage number Early repayment charge fee free allowance in percentage per year none
»» prepaymentRecalculationMethod string Prepayment recalculation method copied from the loan product on which this account is based. none
»» principalPaidInstallmentStatus string Installment status for the case when principal is paid off (copied from loan product). none
Ā» principalPaymentSettings PrincipalPaymentAccountSettings The principal payment account settings, holds the required information for the principal payment process of an account. none
»» amount number Fixed amount for being used for the repayments principal due. none
»» encodedKey string The encoded key of the principal payment base settings, auto generated, unique. read-only
»» includeFeesInFloorAmount boolean Boolean flag, if true, the fees will be included along with the principal in the repayment floor amount, for a revolving credit account none
»» includeInterestInFloorAmount boolean Boolean flag, if true, the interest will be included along with the principal in the repayment floor amount, for a revolving credit account none
»» percentage number Percentage of principal amount used for the repayments principal due. none
»» principalCeilingValue number The maximum principal due amount a repayment made with this settings can have none
»» principalFloorValue number The minimum principal due amount a repayment made with this settings can have none
»» principalPaymentMethod string The method of principal payment for revolving credit. none
»» totalDueAmountFloor number The minimum total due amount a repayment made with this settings can have none
»» totalDuePayment string The method of total due payment for revolving credit none
Ā» productTypeKey (required) string The key for the type of loan product that this loan account is based on. none
Ā» redrawSettings LoanAccountRedrawSettings Represents the redraw settings for a loan account. none
»» restrictNextDueWithdrawal (required) boolean TRUE if withdrawing amounts that reduce the next due instalment repayment is restricted, FALSE otherwise. none
Ā» rescheduledAccountKey string The key pointing to where this loan account was rescheduled or refinanced to. This value is only not null if rescheduled. none
Ā» scheduleSettings (required) ScheduleSettings The schedule settings, holds all schedule properties. none
»» amortizationPeriod integer(int32) The PMT is calculated as the loan would have [amortizationPeriod] installments. none
»» billingCycle BillingCycleDays Defines the billing cycles settings for a loan account none
»»» days [integer] The billing cycle start days in case it is enabled none
»» defaultFirstRepaymentDueDateOffset integer(int32) The default first repayment due date offset, indicates how many days the first repayment due date should be extended(all other due dates from the schedule are relative to first repayment due date - they will also be affected by the offset) none
»» fixedDaysOfMonth [integer] Specifies the days of the month when the repayment due dates should be. Only available if the Repayment Methodology is FIXED_DAYS_OF_MONTH. none
»» gracePeriod (required) integer(int32) The grace period. Represents the grace period for loan repayment - in number of installments. none
»» gracePeriodType string The grace period type. Representing the type of grace period which is possible for a loan account. none
»» hasCustomSchedule boolean Flag used when the repayments schedule for the current account was determined by the user, by editing the due dates or the principal due none
»» paymentPlan [PeriodicPayment] A list of periodic payments for the current loan account. none
»»» amount (required) number The PMT value used in periodic payment none
»»» encodedKey string The encoded key of the periodic payment, auto generated, unique. read-only
»»» toInstallment (required) integer(int32) The installment's position up to which the PMT will be used none
»» periodicPayment number The periodic payment amount for the accounts which have balloon payments or Reduce Number of Installments and Optimized Payments none
»» previewSchedule RevolvingAccountSettings The number of previewed instalments for an account none
»»» numberOfPreviewedInstalments integer(int32) The number of previewed instalments none
»» principalRepaymentInterval integer(int32) The principal repayment interval. Indicates the interval of repayments that the principal has to be paid. none
»» repaymentInstallments integer(int32) The repayment installments. Represents how many installments are required to pay back the loan. none
»» repaymentPeriodCount integer(int32) The repayment period count. Represents how often the loan is to be repaid: stored based on the type repayment option. none
»» repaymentPeriodUnit string The repayment period unit. Represents the frequency of loan repayment. none
»» repaymentScheduleMethod string The repayment schedule method. Represents the method that determines whether the schedule will be fixed all over the loan account's life cycle or will be dynamically recomputed when required. none
»» scheduleDueDatesMethod string The schedule due dates method. Represents the methodology used by this account to compute the due dates of the repayments. none
»» shortMonthHandlingMethod string The short handling method. Determines how to handle the short months, if they select a fixed day of month > 28. Will be null if no such date is selected and also for the Interval methodology. Only available if the Repayment Methodology is FIXED_DAYS_OF_MONTH. none
Ā» settlementAccountKey string The encoded key of the settlement account. none
Ā» taxRate number The tax rate. none
Ā» terminationDate string(date-time) The date this loan account was terminated. none
Ā» tranches [LoanTranche] The list of disbursement tranches available for the loan account. none
»» amount (required) number The amount this tranche has available for disburse none
»» disbursementDetails TrancheDisbursementDetails The disbursement details regarding a loan tranche. none
»»» disbursementTransactionKey string The key of the disbursement transaction logged when this tranche was disbursed. This field will be null until the tranche disbursement none
»»» expectedDisbursementDate string(date-time) The date when this tranche is supposed to be disbursed (as Organization Time) none
»» encodedKey string The encoded key of the transaction details , auto generated, unique. read-only
»» fees [CustomPredefinedFee] Fees that are associated with this tranche none
»» trancheNumber integer(int32) Index indicating the tranche number none

Enumerated Values

Property Value
dateCalculationMethod ACCOUNT_FIRST_WENT_TO_ARREARS
dateCalculationMethod LAST_LATE_REPAYMENT
dateCalculationMethod ACCOUNT_FIRST_BREACHED_MATERIALITY_THRESHOLD
nonWorkingDaysMethod INCLUDED
nonWorkingDaysMethod EXCLUDED
toleranceCalculationMethod ARREARS_TOLERANCE_PERIOD
toleranceCalculationMethod MONTHLY_ARREARS_TOLERANCE_DAY
accountHolderType CLIENT
accountHolderType GROUP
accountState PARTIAL_APPLICATION
accountState PENDING_APPROVAL
accountState APPROVED
accountState ACTIVE
accountState ACTIVE_IN_ARREARS
accountState CLOSED
accountState CLOSED_WRITTEN_OFF
accountState CLOSED_REJECTED
accountSubState PARTIALLY_DISBURSED
accountSubState LOCKED
accountSubState LOCKED_CAPPING
accountSubState REFINANCED
accountSubState RESCHEDULED
accountSubState WITHDRAWN
accountSubState REPAID
accountSubState REJECTED
accountSubState WRITTEN_OFF
accountSubState TERMINATED
guarantorType CLIENT
guarantorType GROUP
code AED
code AFN
code ALL
code AMD
code ANG
code AOA
code ARS
code AUD
code AWG
code AZN
code BAM
code BBD
code BDT
code BGN
code BHD
code BIF
code BMD
code BND
code BOB
code BOV
code BRL
code BSD
code BTN
code BWP
code BYR
code BYN
code BZD
code CAD
code CDF
code CHE
code CHF
code CHW
code CLF
code CLP
code CNY
code COP
code COU
code CRC
code CUC
code CUP
code CVE
code CZK
code DJF
code DKK
code DOP
code DZD
code EGP
code ERN
code ETB
code EUR
code FJD
code FKP
code GBP
code GEL
code GHS
code GIP
code GMD
code GNF
code GTQ
code GYD
code HKD
code HNL
code HRK
code HTG
code HUF
code IDR
code ILS
code INR
code IQD
code IRR
code ISK
code JMD
code JOD
code JPY
code KES
code KGS
code KHR
code KMF
code KPW
code KRW
code KWD
code KYD
code KZT
code LAK
code LBP
code LKR
code LRD
code LSL
code LTL
code LVL
code LYD
code MAD
code MDL
code MGA
code MKD
code MMK
code MNT
code MOP
code MRO
code MRU
code MUR
code MVR
code MWK
code MXN
code MXV
code MYR
code MZN
code NAD
code NGN
code NIO
code NOK
code NPR
code NZD
code OMR
code PAB
code PEN
code PGK
code PHP
code PKR
code PLN
code PYG
code QAR
code RON
code RSD
code RUB
code RWF
code SAR
code SBD
code SCR
code SDG
code SEK
code SGD
code SHP
code SLL
code SOS
code SRD
code STD
code STN
code SVC
code SYP
code SZL
code THB
code TJS
code TMT
code TND
code TOP
code TRY
code TTD
code TWD
code TZS
code UAH
code UGX
code USD
code USN
code UYI
code UYU
code UYW
code UZS
code VED
code VEF
code VES
code VND
code VUV
code WST
code XAG
code XAU
code XAF
code XBA
code XBB
code XBC
code XBD
code XCD
code XDR
code XOF
code XPD
code XPF
code XPT
code XSU
code XTS
code XUA
code XXX
code YER
code ZAR
code ZIG
code ZMK
code ZWL
code ZMW
code SSP
code NON_FIAT
guarantorType CLIENT
guarantorType GROUP
futurePaymentsAcceptance NO_FUTURE_PAYMENTS
futurePaymentsAcceptance ACCEPT_FUTURE_PAYMENTS
futurePaymentsAcceptance ACCEPT_OVERPAYMENTS
guarantorType CLIENT
guarantorType GROUP
interestRateReviewUnit DAYS
interestRateReviewUnit WEEKS
interestRateReviewUnit MONTHS
interestRateSource FIXED_INTEREST_RATE
interestRateSource INDEX_INTEREST_RATE
shortMonthHandlingMethod LAST_DAY_IN_MONTH
shortMonthHandlingMethod FIRST_DAY_OF_NEXT_MONTH
interestApplicationMethod AFTER_DISBURSEMENT
interestApplicationMethod REPAYMENT_DUE_DATE
interestApplicationMethod FIXED_DAYS_OF_MONTH
interestBalanceCalculationMethod ONLY_PRINCIPAL
interestBalanceCalculationMethod PRINCIPAL_AND_INTEREST
interestCalculationMethod FLAT
interestCalculationMethod DECLINING_BALANCE
interestCalculationMethod DECLINING_BALANCE_DISCOUNTED
interestCalculationMethod EQUAL_INSTALLMENTS
interestChargeFrequency ANNUALIZED
interestChargeFrequency EVERY_MONTH
interestChargeFrequency EVERY_FOUR_WEEKS
interestChargeFrequency EVERY_WEEK
interestChargeFrequency EVERY_DAY
interestChargeFrequency EVERY_X_DAYS
interestRateReviewUnit DAYS
interestRateReviewUnit WEEKS
interestRateReviewUnit MONTHS
interestRateSource FIXED_INTEREST_RATE
interestRateSource INDEX_INTEREST_RATE
interestType SIMPLE_INTEREST
interestType CAPITALIZED_INTEREST
interestType COMPOUNDING_INTEREST
method WORKING_DAYS
method CALENDAR_DAYS
latePaymentsRecalculationMethod OVERDUE_INSTALLMENTS_INCREASE
latePaymentsRecalculationMethod LAST_INSTALLMENT_INCREASE
latePaymentsRecalculationMethod NO_RECALCULATION
lockedAccountTotalDueType BALANCE_AMOUNT
lockedAccountTotalDueType DUE_AMOUNT_ON_LATE_INSTALLMENTS
paymentMethod HORIZONTAL
paymentMethod VERTICAL
loanPenaltyCalculationMethod NONE
loanPenaltyCalculationMethod OVERDUE_BALANCE
loanPenaltyCalculationMethod OVERDUE_BALANCE_AND_INTEREST
loanPenaltyCalculationMethod OVERDUE_BALANCE_INTEREST_AND_FEE
loanPenaltyCalculationMethod OUTSTANDING_PRINCIPAL
applyInterestOnPrepaymentMethod AUTOMATIC
applyInterestOnPrepaymentMethod MANUAL
elementsRecalculationMethod PRINCIPAL_EXPECTED_FIXED
elementsRecalculationMethod TOTAL_EXPECTED_FIXED
prepaymentRecalculationMethod NO_RECALCULATION
prepaymentRecalculationMethod RESCHEDULE_REMAINING_REPAYMENTS
prepaymentRecalculationMethod RECALCULATE_SCHEDULE_KEEP_SAME_NUMBER_OF_TERMS
prepaymentRecalculationMethod RECALCULATE_SCHEDULE_KEEP_SAME_PRINCIPAL_AMOUNT
prepaymentRecalculationMethod RECALCULATE_SCHEDULE_KEEP_SAME_TOTAL_REPAYMENT_AMOUNT
prepaymentRecalculationMethod REDUCE_AMOUNT_PER_INSTALLMENT
prepaymentRecalculationMethod REDUCE_NUMBER_OF_INSTALLMENTS
prepaymentRecalculationMethod REDUCE_NUMBER_OF_INSTALLMENTS_NEW
principalPaidInstallmentStatus PARTIALLY_PAID
principalPaidInstallmentStatus PAID
principalPaidInstallmentStatus ORIGINAL_TOTAL_EXPECTED_PAID
principalPaymentMethod FLAT
principalPaymentMethod OUTSTANDING_PRINCIPAL_PERCENTAGE
principalPaymentMethod PRINCIPAL_PERCENTAGE_LAST_DISB
principalPaymentMethod TOTAL_BALANCE_PERCENTAGE
principalPaymentMethod TOTAL_BALANCE_FLAT
principalPaymentMethod TOTAL_PRINCIPAL_PERCENTAGE
totalDuePayment FLAT
totalDuePayment OUTSTANDING_PRINCIPAL_PERCENTAGE
totalDuePayment PRINCIPAL_PERCENTAGE_LAST_DISB
totalDuePayment TOTAL_BALANCE_PERCENTAGE
totalDuePayment TOTAL_BALANCE_FLAT
totalDuePayment TOTAL_PRINCIPAL_PERCENTAGE
gracePeriodType NONE
gracePeriodType PAY_INTEREST_ONLY
gracePeriodType INTEREST_FORGIVENESS
repaymentPeriodUnit DAYS
repaymentPeriodUnit WEEKS
repaymentPeriodUnit MONTHS
repaymentPeriodUnit YEARS
repaymentScheduleMethod NONE
repaymentScheduleMethod FIXED
repaymentScheduleMethod DYNAMIC
scheduleDueDatesMethod INTERVAL
scheduleDueDatesMethod FIXED_DAYS_OF_MONTH
shortMonthHandlingMethod LAST_DAY_IN_MONTH
shortMonthHandlingMethod FIRST_DAY_OF_NEXT_MONTH

Response Headers

Status Header Type Format Description
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

create (Loan Accounts)

Code samples

# You can also use wget
curl -X POST /loans \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /loans HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/loans',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/loans',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/loans', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/loans', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/loans", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /loans

Create loan account

Body parameter

{
  "accountArrearsSettings": {
    "dateCalculationMethod": "ACCOUNT_FIRST_WENT_TO_ARREARS",
    "monthlyToleranceDay": 0,
    "nonWorkingDaysMethod": "INCLUDED",
    "toleranceCalculationMethod": "ARREARS_TOLERANCE_PERIOD",
    "toleranceFloorAmount": 0,
    "tolerancePercentageOfOutstandingPrincipal": 0,
    "tolerancePeriod": 0
  },
  "accountHolderKey": "string",
  "accountHolderType": "CLIENT",
  "accountState": "PARTIAL_APPLICATION",
  "accountSubState": "PARTIALLY_DISBURSED",
  "accruedInterest": 0,
  "accruedPenalty": 0,
  "activationTransactionKey": "string",
  "allowOffset": true,
  "approvedDate": "2016-09-06T13:37:50+03:00",
  "arrearsTolerancePeriod": 0,
  "assets": [
    {
      "amount": 0,
      "assetName": "string",
      "depositAccountKey": "string",
      "guarantorKey": "string",
      "guarantorType": "CLIENT",
      "originalAmount": 0,
      "originalCurrency": {
        "code": "AED",
        "currencyCode": "string"
      }
    }
  ],
  "assignedBranchKey": "string",
  "assignedCentreKey": "string",
  "assignedUserKey": "string",
  "balances": {
    "redrawBalance": 0
  },
  "closedDate": "2016-09-06T13:37:50+03:00",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "creditArrangementKey": "string",
  "currency": {
    "code": "AED",
    "currencyCode": "string"
  },
  "disbursementDetails": {
    "disbursementDate": "2016-09-06T13:37:50+03:00",
    "expectedDisbursementDate": "2016-09-06T13:37:50+03:00",
    "fees": [
      {
        "amount": 0,
        "percentage": 0,
        "predefinedFeeEncodedKey": "string"
      }
    ],
    "firstRepaymentDate": "2016-09-06T13:37:50+03:00",
    "transactionDetails": {
      "internalTransfer": true,
      "targetDepositAccountKey": "string",
      "transactionChannelId": "string",
      "transactionChannelKey": "string"
    }
  },
  "feesSettings": {
    "feeRate": 0
  },
  "fundingSources": [
    {
      "amount": 0,
      "assetName": "string",
      "depositAccountKey": "string",
      "guarantorKey": "string",
      "guarantorType": "CLIENT",
      "id": "string",
      "interestCommission": 0,
      "sharePercentage": 0
    }
  ],
  "futurePaymentsAcceptance": "NO_FUTURE_PAYMENTS",
  "guarantors": [
    {
      "amount": 0,
      "assetName": "string",
      "depositAccountKey": "string",
      "guarantorKey": "string",
      "guarantorType": "CLIENT"
    }
  ],
  "id": "string",
  "interestCommission": 0,
  "interestSettings": {
    "accountInterestRateSettings": [
      {
        "indexSourceKey": "string",
        "interestRate": 0,
        "interestRateCeilingValue": 0,
        "interestRateFloorValue": 0,
        "interestRateReviewCount": 0,
        "interestRateReviewUnit": "DAYS",
        "interestRateSource": "FIXED_INTEREST_RATE",
        "interestSpread": 0,
        "validFrom": "2016-09-06T13:37:50+03:00"
      }
    ],
    "accrueInterestAfterMaturity": true,
    "effectiveInterestRate": 0,
    "interestApplicationDays": {
      "daysInMonth": [
        0
      ],
      "shortMonthHandlingMethod": "LAST_DAY_IN_MONTH"
    },
    "interestApplicationMethod": "AFTER_DISBURSEMENT",
    "interestBalanceCalculationMethod": "ONLY_PRINCIPAL",
    "interestCalculationMethod": "FLAT",
    "interestChargeFrequency": "ANNUALIZED",
    "interestRate": 0,
    "interestRateReviewCount": 0,
    "interestRateReviewUnit": "DAYS",
    "interestRateSource": "FIXED_INTEREST_RATE",
    "interestSpread": 0,
    "interestType": "SIMPLE_INTEREST",
    "pmtAdjustmentThreshold": {
      "method": "WORKING_DAYS",
      "numberOfDays": 0
    }
  },
  "lastAccountAppraisalDate": "2016-09-06T13:37:50+03:00",
  "lastInterestAppliedDate": "2016-09-06T13:37:50+03:00",
  "lastInterestReviewDate": "2016-09-06T13:37:50+03:00",
  "lastLockedDate": "2016-09-06T13:37:50+03:00",
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "lastSetToArrearsDate": "2016-09-06T13:37:50+03:00",
  "lastTaxRateReviewDate": "2016-09-06T13:37:50+03:00",
  "latePaymentsRecalculationMethod": "OVERDUE_INSTALLMENTS_INCREASE",
  "loanAmount": 0,
  "loanName": "string",
  "lockedAccountTotalDueType": "BALANCE_AMOUNT",
  "lockedOperations": [
    "APPLY_INTEREST"
  ],
  "migrationEventKey": "string",
  "notes": "string",
  "originalAccountKey": "string",
  "paymentHolidaysAccruedInterest": 0,
  "paymentMethod": "HORIZONTAL",
  "penaltySettings": {
    "loanPenaltyCalculationMethod": "NONE",
    "penaltyRate": 0
  },
  "plannedInstallmentFees": [
    {
      "amount": 0,
      "applyOnDate": "2016-09-06T13:37:50+03:00",
      "installmentKey": "string",
      "installmentNumber": 0,
      "predefinedFeeKey": "string"
    }
  ],
  "prepaymentSettings": {
    "applyInterestOnPrepaymentMethod": "AUTOMATIC",
    "elementsRecalculationMethod": "PRINCIPAL_EXPECTED_FIXED",
    "ercFreeAllowanceAmount": 0,
    "ercFreeAllowancePercentage": 0,
    "prepaymentRecalculationMethod": "NO_RECALCULATION",
    "principalPaidInstallmentStatus": "PARTIALLY_PAID"
  },
  "principalPaymentSettings": {
    "amount": 0,
    "includeFeesInFloorAmount": true,
    "includeInterestInFloorAmount": true,
    "percentage": 0,
    "principalCeilingValue": 0,
    "principalFloorValue": 0,
    "principalPaymentMethod": "FLAT",
    "totalDueAmountFloor": 0,
    "totalDuePayment": "FLAT"
  },
  "productTypeKey": "string",
  "redrawSettings": {
    "restrictNextDueWithdrawal": true
  },
  "rescheduledAccountKey": "string",
  "scheduleSettings": {
    "amortizationPeriod": 0,
    "billingCycle": {
      "days": [
        0
      ]
    },
    "defaultFirstRepaymentDueDateOffset": 0,
    "fixedDaysOfMonth": [
      0
    ],
    "gracePeriod": 0,
    "gracePeriodType": "NONE",
    "hasCustomSchedule": true,
    "paymentPlan": [
      {
        "amount": 0,
        "toInstallment": 0
      }
    ],
    "periodicPayment": 0,
    "previewSchedule": {
      "numberOfPreviewedInstalments": 0
    },
    "principalRepaymentInterval": 0,
    "repaymentInstallments": 0,
    "repaymentPeriodCount": 0,
    "repaymentPeriodUnit": "DAYS",
    "repaymentScheduleMethod": "NONE",
    "scheduleDueDatesMethod": "INTERVAL",
    "shortMonthHandlingMethod": "LAST_DAY_IN_MONTH"
  },
  "settlementAccountKey": "string",
  "taxRate": 0,
  "terminationDate": "2016-09-06T13:37:50+03:00",
  "tranches": [
    {
      "amount": 0,
      "disbursementDetails": {
        "disbursementTransactionKey": "string",
        "expectedDisbursementDate": "2016-09-06T13:37:50+03:00"
      },
      "fees": [
        {
          "amount": 0,
          "percentage": 0,
          "predefinedFeeEncodedKey": "string"
        }
      ],
      "trancheNumber": 0
    }
  ]
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
body (required) LoanAccountFullDetails Loan account to be created. body

Example responses

201 Response

{
  "accountArrearsSettings": {
    "dateCalculationMethod": "ACCOUNT_FIRST_WENT_TO_ARREARS",
    "encodedKey": "string",
    "monthlyToleranceDay": 0,
    "nonWorkingDaysMethod": "INCLUDED",
    "toleranceCalculationMethod": "ARREARS_TOLERANCE_PERIOD",
    "toleranceFloorAmount": 0,
    "tolerancePercentageOfOutstandingPrincipal": 0,
    "tolerancePeriod": 0
  },
  "accountHolderKey": "string",
  "accountHolderType": "CLIENT",
  "accountState": "PARTIAL_APPLICATION",
  "accountSubState": "PARTIALLY_DISBURSED",
  "accruedInterest": 0,
  "accruedPenalty": 0,
  "activationTransactionKey": "string",
  "adjustTotalDueForInstallmentsWithDifferentInterval": true,
  "allowOffset": true,
  "approvedDate": "2016-09-06T13:37:50+03:00",
  "arrearsTolerancePeriod": 0,
  "assets": [
    {
      "amount": 0,
      "assetName": "string",
      "depositAccountKey": "string",
      "encodedKey": "string",
      "guarantorKey": "string",
      "guarantorType": "CLIENT",
      "originalAmount": 0,
      "originalCurrency": {
        "code": "AED",
        "currencyCode": "string"
      }
    }
  ],
  "assignedBranchKey": "string",
  "assignedCentreKey": "string",
  "assignedUserKey": "string",
  "balances": {
    "feesBalance": 0,
    "feesDue": 0,
    "feesPaid": 0,
    "holdBalance": 0,
    "interestBalance": 0,
    "interestDue": 0,
    "interestFromArrearsBalance": 0,
    "interestFromArrearsDue": 0,
    "interestFromArrearsPaid": 0,
    "interestPaid": 0,
    "penaltyBalance": 0,
    "penaltyDue": 0,
    "penaltyPaid": 0,
    "principalBalance": 0,
    "principalDue": 0,
    "principalPaid": 0,
    "redrawBalance": 0
  },
  "closedDate": "2016-09-06T13:37:50+03:00",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "creditArrangementKey": "string",
  "currency": {
    "code": "AED",
    "currencyCode": "string"
  },
  "daysInArrears": 0,
  "daysLate": 0,
  "disbursementDetails": {
    "disbursementDate": "2016-09-06T13:37:50+03:00",
    "encodedKey": "string",
    "expectedDisbursementDate": "2016-09-06T13:37:50+03:00",
    "fees": [
      {
        "amount": 0,
        "encodedKey": "string",
        "percentage": 0,
        "predefinedFeeEncodedKey": "string"
      }
    ],
    "firstRepaymentDate": "2016-09-06T13:37:50+03:00",
    "transactionDetails": {
      "encodedKey": "string",
      "internalTransfer": true,
      "targetDepositAccountKey": "string",
      "transactionChannelId": "string",
      "transactionChannelKey": "string"
    }
  },
  "encodedKey": "string",
  "feesSettings": {
    "accruedFee": 0,
    "accruedFeeFromArrears": 0,
    "feeRate": 0
  },
  "fundingSources": [
    {
      "amount": 0,
      "assetName": "string",
      "depositAccountKey": "string",
      "encodedKey": "string",
      "guarantorKey": "string",
      "guarantorType": "CLIENT",
      "id": "string",
      "interestCommission": 0,
      "sharePercentage": 0
    }
  ],
  "futurePaymentsAcceptance": "NO_FUTURE_PAYMENTS",
  "guarantors": [
    {
      "amount": 0,
      "assetName": "string",
      "depositAccountKey": "string",
      "encodedKey": "string",
      "guarantorKey": "string",
      "guarantorType": "CLIENT"
    }
  ],
  "id": "string",
  "interestAccruedInBillingCycle": 0,
  "interestCommission": 0,
  "interestFromArrearsAccrued": 0,
  "interestSettings": {
    "accountInterestRateSettings": [
      {
        "encodedKey": "string",
        "indexSourceKey": "string",
        "interestRate": 0,
        "interestRateCeilingValue": 0,
        "interestRateFloorValue": 0,
        "interestRateReviewCount": 0,
        "interestRateReviewUnit": "DAYS",
        "interestRateSource": "FIXED_INTEREST_RATE",
        "interestSpread": 0,
        "validFrom": "2016-09-06T13:37:50+03:00"
      }
    ],
    "accrueInterestAfterMaturity": true,
    "accrueLateInterest": true,
    "effectiveInterestRate": 0,
    "interestApplicationDays": {
      "daysInMonth": [
        0
      ],
      "shortMonthHandlingMethod": "LAST_DAY_IN_MONTH"
    },
    "interestApplicationMethod": "AFTER_DISBURSEMENT",
    "interestBalanceCalculationMethod": "ONLY_PRINCIPAL",
    "interestCalculationMethod": "FLAT",
    "interestChargeFrequency": "ANNUALIZED",
    "interestRate": 0,
    "interestRateReviewCount": 0,
    "interestRateReviewUnit": "DAYS",
    "interestRateSource": "FIXED_INTEREST_RATE",
    "interestSpread": 0,
    "interestType": "SIMPLE_INTEREST",
    "pmtAdjustmentThreshold": {
      "method": "WORKING_DAYS",
      "numberOfDays": 0
    }
  },
  "lastAccountAppraisalDate": "2016-09-06T13:37:50+03:00",
  "lastInterestAppliedDate": "2016-09-06T13:37:50+03:00",
  "lastInterestReviewDate": "2016-09-06T13:37:50+03:00",
  "lastLockedDate": "2016-09-06T13:37:50+03:00",
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "lastSetToArrearsDate": "2016-09-06T13:37:50+03:00",
  "lastTaxRateReviewDate": "2016-09-06T13:37:50+03:00",
  "latePaymentsRecalculationMethod": "OVERDUE_INSTALLMENTS_INCREASE",
  "loanAmount": 0,
  "loanName": "string",
  "lockedAccountTotalDueType": "BALANCE_AMOUNT",
  "lockedOperations": [
    "APPLY_INTEREST"
  ],
  "migrationEventKey": "string",
  "modifyInterestForFirstInstallment": true,
  "notes": "string",
  "originalAccountKey": "string",
  "paymentHolidaysAccruedInterest": 0,
  "paymentMethod": "HORIZONTAL",
  "penaltySettings": {
    "loanPenaltyCalculationMethod": "NONE",
    "penaltyRate": 0
  },
  "plannedInstallmentFees": [
    {
      "amount": 0,
      "applyOnDate": "2016-09-06T13:37:50+03:00",
      "encodedKey": "string",
      "installmentKey": "string",
      "installmentNumber": 0,
      "predefinedFeeKey": "string"
    }
  ],
  "prepaymentSettings": {
    "applyInterestOnPrepaymentMethod": "AUTOMATIC",
    "elementsRecalculationMethod": "PRINCIPAL_EXPECTED_FIXED",
    "ercFreeAllowanceAmount": 0,
    "ercFreeAllowancePercentage": 0,
    "prepaymentRecalculationMethod": "NO_RECALCULATION",
    "principalPaidInstallmentStatus": "PARTIALLY_PAID"
  },
  "principalPaymentSettings": {
    "amount": 0,
    "encodedKey": "string",
    "includeFeesInFloorAmount": true,
    "includeInterestInFloorAmount": true,
    "percentage": 0,
    "principalCeilingValue": 0,
    "principalFloorValue": 0,
    "principalPaymentMethod": "FLAT",
    "totalDueAmountFloor": 0,
    "totalDuePayment": "FLAT"
  },
  "productTypeKey": "string",
  "redrawSettings": {
    "restrictNextDueWithdrawal": true
  },
  "rescheduledAccountKey": "string",
  "scheduleSettings": {
    "amortizationPeriod": 0,
    "billingCycle": {
      "days": [
        0
      ]
    },
    "defaultFirstRepaymentDueDateOffset": 0,
    "fixedDaysOfMonth": [
      0
    ],
    "gracePeriod": 0,
    "gracePeriodType": "NONE",
    "hasCustomSchedule": true,
    "paymentPlan": [
      {
        "amount": 0,
        "encodedKey": "string",
        "toInstallment": 0
      }
    ],
    "periodicPayment": 0,
    "previewSchedule": {
      "numberOfPreviewedInstalments": 0
    },
    "principalRepaymentInterval": 0,
    "repaymentInstallments": 0,
    "repaymentPeriodCount": 0,
    "repaymentPeriodUnit": "DAYS",
    "repaymentScheduleMethod": "NONE",
    "scheduleDueDatesMethod": "INTERVAL",
    "shortMonthHandlingMethod": "LAST_DAY_IN_MONTH"
  },
  "settlementAccountKey": "string",
  "taxRate": 0,
  "terminationDate": "2016-09-06T13:37:50+03:00",
  "tranches": [
    {
      "amount": 0,
      "disbursementDetails": {
        "disbursementTransactionKey": "string",
        "expectedDisbursementDate": "2016-09-06T13:37:50+03:00"
      },
      "encodedKey": "string",
      "fees": [
        {
          "amount": 0,
          "encodedKey": "string",
          "percentage": 0,
          "predefinedFeeEncodedKey": "string"
        }
      ],
      "trancheNumber": 0
    }
  ]
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
201 Created Loan account created. LoanAccountFullDetails
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

undoRefinance (Loan Accounts)

Code samples

# You can also use wget
curl -X POST /loans/{loanAccountId}:undoRefinance \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /loans/{loanAccountId}:undoRefinance HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/loans/{loanAccountId}:undoRefinance',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/loans/{loanAccountId}:undoRefinance',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/loans/{loanAccountId}:undoRefinance', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/loans/{loanAccountId}:undoRefinance', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans/{loanAccountId}:undoRefinance");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/loans/{loanAccountId}:undoRefinance", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /loans/{loanAccountId}:undoRefinance

Undo loan account refinance action

Body parameter

{
  "notes": "string"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
loanAccountId (required) string The ID or encoded key of the loan account. path
body LoanActionDetails Represents information for an action to perform on a loan account. body

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
204 No Content Undo refinance action posted. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan account not found. ErrorResponse

changeState (Loan Accounts)

Code samples

# You can also use wget
curl -X POST /loans/{loanAccountId}:changeState \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /loans/{loanAccountId}:changeState HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/loans/{loanAccountId}:changeState',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/loans/{loanAccountId}:changeState',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/loans/{loanAccountId}:changeState', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/loans/{loanAccountId}:changeState', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans/{loanAccountId}:changeState");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/loans/{loanAccountId}:changeState", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /loans/{loanAccountId}:changeState

Change loan account state

Body parameter

{
  "action": "REQUEST_APPROVAL",
  "notes": "string"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
loanAccountId (required) string The ID or encoded key of the loan account. path
body (required) LoanAccountAction Represents information for an action to perform on a loan account. body

Example responses

200 Response

{
  "accountArrearsSettings": {
    "dateCalculationMethod": "ACCOUNT_FIRST_WENT_TO_ARREARS",
    "encodedKey": "string",
    "monthlyToleranceDay": 0,
    "nonWorkingDaysMethod": "INCLUDED",
    "toleranceCalculationMethod": "ARREARS_TOLERANCE_PERIOD",
    "toleranceFloorAmount": 0,
    "tolerancePercentageOfOutstandingPrincipal": 0,
    "tolerancePeriod": 0
  },
  "accountHolderKey": "string",
  "accountHolderType": "CLIENT",
  "accountState": "PARTIAL_APPLICATION",
  "accountSubState": "PARTIALLY_DISBURSED",
  "accruedInterest": 0,
  "accruedPenalty": 0,
  "activationTransactionKey": "string",
  "adjustTotalDueForInstallmentsWithDifferentInterval": true,
  "allowOffset": true,
  "approvedDate": "2016-09-06T13:37:50+03:00",
  "arrearsTolerancePeriod": 0,
  "assets": [
    {
      "amount": 0,
      "assetName": "string",
      "depositAccountKey": "string",
      "encodedKey": "string",
      "guarantorKey": "string",
      "guarantorType": "CLIENT",
      "originalAmount": 0,
      "originalCurrency": {
        "code": "AED",
        "currencyCode": "string"
      }
    }
  ],
  "assignedBranchKey": "string",
  "assignedCentreKey": "string",
  "assignedUserKey": "string",
  "balances": {
    "feesBalance": 0,
    "feesDue": 0,
    "feesPaid": 0,
    "holdBalance": 0,
    "interestBalance": 0,
    "interestDue": 0,
    "interestFromArrearsBalance": 0,
    "interestFromArrearsDue": 0,
    "interestFromArrearsPaid": 0,
    "interestPaid": 0,
    "penaltyBalance": 0,
    "penaltyDue": 0,
    "penaltyPaid": 0,
    "principalBalance": 0,
    "principalDue": 0,
    "principalPaid": 0,
    "redrawBalance": 0
  },
  "closedDate": "2016-09-06T13:37:50+03:00",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "creditArrangementKey": "string",
  "currency": {
    "code": "AED",
    "currencyCode": "string"
  },
  "daysInArrears": 0,
  "daysLate": 0,
  "disbursementDetails": {
    "disbursementDate": "2016-09-06T13:37:50+03:00",
    "encodedKey": "string",
    "expectedDisbursementDate": "2016-09-06T13:37:50+03:00",
    "fees": [
      {
        "amount": 0,
        "encodedKey": "string",
        "percentage": 0,
        "predefinedFeeEncodedKey": "string"
      }
    ],
    "firstRepaymentDate": "2016-09-06T13:37:50+03:00",
    "transactionDetails": {
      "encodedKey": "string",
      "internalTransfer": true,
      "targetDepositAccountKey": "string",
      "transactionChannelId": "string",
      "transactionChannelKey": "string"
    }
  },
  "encodedKey": "string",
  "feesSettings": {
    "accruedFee": 0,
    "accruedFeeFromArrears": 0,
    "feeRate": 0
  },
  "fundingSources": [
    {
      "amount": 0,
      "assetName": "string",
      "depositAccountKey": "string",
      "encodedKey": "string",
      "guarantorKey": "string",
      "guarantorType": "CLIENT",
      "id": "string",
      "interestCommission": 0,
      "sharePercentage": 0
    }
  ],
  "futurePaymentsAcceptance": "NO_FUTURE_PAYMENTS",
  "guarantors": [
    {
      "amount": 0,
      "assetName": "string",
      "depositAccountKey": "string",
      "encodedKey": "string",
      "guarantorKey": "string",
      "guarantorType": "CLIENT"
    }
  ],
  "id": "string",
  "interestAccruedInBillingCycle": 0,
  "interestCommission": 0,
  "interestFromArrearsAccrued": 0,
  "interestSettings": {
    "accountInterestRateSettings": [
      {
        "encodedKey": "string",
        "indexSourceKey": "string",
        "interestRate": 0,
        "interestRateCeilingValue": 0,
        "interestRateFloorValue": 0,
        "interestRateReviewCount": 0,
        "interestRateReviewUnit": "DAYS",
        "interestRateSource": "FIXED_INTEREST_RATE",
        "interestSpread": 0,
        "validFrom": "2016-09-06T13:37:50+03:00"
      }
    ],
    "accrueInterestAfterMaturity": true,
    "accrueLateInterest": true,
    "effectiveInterestRate": 0,
    "interestApplicationDays": {
      "daysInMonth": [
        0
      ],
      "shortMonthHandlingMethod": "LAST_DAY_IN_MONTH"
    },
    "interestApplicationMethod": "AFTER_DISBURSEMENT",
    "interestBalanceCalculationMethod": "ONLY_PRINCIPAL",
    "interestCalculationMethod": "FLAT",
    "interestChargeFrequency": "ANNUALIZED",
    "interestRate": 0,
    "interestRateReviewCount": 0,
    "interestRateReviewUnit": "DAYS",
    "interestRateSource": "FIXED_INTEREST_RATE",
    "interestSpread": 0,
    "interestType": "SIMPLE_INTEREST",
    "pmtAdjustmentThreshold": {
      "method": "WORKING_DAYS",
      "numberOfDays": 0
    }
  },
  "lastAccountAppraisalDate": "2016-09-06T13:37:50+03:00",
  "lastInterestAppliedDate": "2016-09-06T13:37:50+03:00",
  "lastInterestReviewDate": "2016-09-06T13:37:50+03:00",
  "lastLockedDate": "2016-09-06T13:37:50+03:00",
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "lastSetToArrearsDate": "2016-09-06T13:37:50+03:00",
  "lastTaxRateReviewDate": "2016-09-06T13:37:50+03:00",
  "latePaymentsRecalculationMethod": "OVERDUE_INSTALLMENTS_INCREASE",
  "loanAmount": 0,
  "loanName": "string",
  "lockedAccountTotalDueType": "BALANCE_AMOUNT",
  "lockedOperations": [
    "APPLY_INTEREST"
  ],
  "migrationEventKey": "string",
  "modifyInterestForFirstInstallment": true,
  "notes": "string",
  "originalAccountKey": "string",
  "paymentHolidaysAccruedInterest": 0,
  "paymentMethod": "HORIZONTAL",
  "penaltySettings": {
    "loanPenaltyCalculationMethod": "NONE",
    "penaltyRate": 0
  },
  "plannedInstallmentFees": [
    {
      "amount": 0,
      "applyOnDate": "2016-09-06T13:37:50+03:00",
      "encodedKey": "string",
      "installmentKey": "string",
      "installmentNumber": 0,
      "predefinedFeeKey": "string"
    }
  ],
  "prepaymentSettings": {
    "applyInterestOnPrepaymentMethod": "AUTOMATIC",
    "elementsRecalculationMethod": "PRINCIPAL_EXPECTED_FIXED",
    "ercFreeAllowanceAmount": 0,
    "ercFreeAllowancePercentage": 0,
    "prepaymentRecalculationMethod": "NO_RECALCULATION",
    "principalPaidInstallmentStatus": "PARTIALLY_PAID"
  },
  "principalPaymentSettings": {
    "amount": 0,
    "encodedKey": "string",
    "includeFeesInFloorAmount": true,
    "includeInterestInFloorAmount": true,
    "percentage": 0,
    "principalCeilingValue": 0,
    "principalFloorValue": 0,
    "principalPaymentMethod": "FLAT",
    "totalDueAmountFloor": 0,
    "totalDuePayment": "FLAT"
  },
  "productTypeKey": "string",
  "redrawSettings": {
    "restrictNextDueWithdrawal": true
  },
  "rescheduledAccountKey": "string",
  "scheduleSettings": {
    "amortizationPeriod": 0,
    "billingCycle": {
      "days": [
        0
      ]
    },
    "defaultFirstRepaymentDueDateOffset": 0,
    "fixedDaysOfMonth": [
      0
    ],
    "gracePeriod": 0,
    "gracePeriodType": "NONE",
    "hasCustomSchedule": true,
    "paymentPlan": [
      {
        "amount": 0,
        "encodedKey": "string",
        "toInstallment": 0
      }
    ],
    "periodicPayment": 0,
    "previewSchedule": {
      "numberOfPreviewedInstalments": 0
    },
    "principalRepaymentInterval": 0,
    "repaymentInstallments": 0,
    "repaymentPeriodCount": 0,
    "repaymentPeriodUnit": "DAYS",
    "repaymentScheduleMethod": "NONE",
    "scheduleDueDatesMethod": "INTERVAL",
    "shortMonthHandlingMethod": "LAST_DAY_IN_MONTH"
  },
  "settlementAccountKey": "string",
  "taxRate": 0,
  "terminationDate": "2016-09-06T13:37:50+03:00",
  "tranches": [
    {
      "amount": 0,
      "disbursementDetails": {
        "disbursementTransactionKey": "string",
        "expectedDisbursementDate": "2016-09-06T13:37:50+03:00"
      },
      "encodedKey": "string",
      "fees": [
        {
          "amount": 0,
          "encodedKey": "string",
          "percentage": 0,
          "predefinedFeeEncodedKey": "string"
        }
      ],
      "trancheNumber": 0
    }
  ]
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
200 OK Loan account action posted. LoanAccountFullDetails
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan account not found. ErrorResponse

terminateLoanAccount (Loan Accounts)

Code samples

# You can also use wget
curl -X POST /loans/{loanAccountId}:terminate \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /loans/{loanAccountId}:terminate HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/loans/{loanAccountId}:terminate',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/loans/{loanAccountId}:terminate',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/loans/{loanAccountId}:terminate', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/loans/{loanAccountId}:terminate', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans/{loanAccountId}:terminate");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/loans/{loanAccountId}:terminate", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /loans/{loanAccountId}:terminate

Terminate loan account

Body parameter

{
  "notes": "string",
  "valueDate": "2016-09-06T13:37:50+03:00"
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
loanAccountId (required) string The ID or encoded key of the loan account. path
body TerminateLoanAccountInput Represents information for an action to perform on a loan account. body

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
204 No Content Terminate loan account action posted. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan account not found. ErrorResponse

getVersionsById (Loan Accounts)

Code samples

# You can also use wget
curl -X GET /loans/{loanAccountId}:versions \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /loans/{loanAccountId}:versions HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/loans/{loanAccountId}:versions',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/loans/{loanAccountId}:versions',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/loans/{loanAccountId}:versions', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/loans/{loanAccountId}:versions', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans/{loanAccountId}:versions");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/loans/{loanAccountId}:versions", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /loans/{loanAccountId}:versions

Allows retrieval of a single loan account via id. The result contains details about all the previous versions of the particular account if it was refinanced or rescheduled.

Parameters

Name Type Description In
loanAccountId (required) string The ID or encoded key of the loan account. path
detailsLevel string The level of details to return: FULL means the full details of the object will be returned (custom field values, address, contact info, or any other related objects) and BASIC will return only the first level elements of the object. query

Enumerated Values

Parameter Value
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

[
  {
    "accountArrearsSettings": {
      "dateCalculationMethod": "ACCOUNT_FIRST_WENT_TO_ARREARS",
      "encodedKey": "string",
      "monthlyToleranceDay": 0,
      "nonWorkingDaysMethod": "INCLUDED",
      "toleranceCalculationMethod": "ARREARS_TOLERANCE_PERIOD",
      "toleranceFloorAmount": 0,
      "tolerancePercentageOfOutstandingPrincipal": 0,
      "tolerancePeriod": 0
    },
    "accountHolderKey": "string",
    "accountHolderType": "CLIENT",
    "accountState": "PARTIAL_APPLICATION",
    "accountSubState": "PARTIALLY_DISBURSED",
    "accruedInterest": 0,
    "accruedPenalty": 0,
    "activationTransactionKey": "string",
    "adjustTotalDueForInstallmentsWithDifferentInterval": true,
    "allowOffset": true,
    "approvedDate": "2016-09-06T13:37:50+03:00",
    "arrearsTolerancePeriod": 0,
    "assets": [
      {
        "amount": 0,
        "assetName": "string",
        "depositAccountKey": "string",
        "encodedKey": "string",
        "guarantorKey": "string",
        "guarantorType": "CLIENT",
        "originalAmount": 0,
        "originalCurrency": {
          "code": "AED",
          "currencyCode": "string"
        }
      }
    ],
    "assignedBranchKey": "string",
    "assignedCentreKey": "string",
    "assignedUserKey": "string",
    "balances": {
      "feesBalance": 0,
      "feesDue": 0,
      "feesPaid": 0,
      "holdBalance": 0,
      "interestBalance": 0,
      "interestDue": 0,
      "interestFromArrearsBalance": 0,
      "interestFromArrearsDue": 0,
      "interestFromArrearsPaid": 0,
      "interestPaid": 0,
      "penaltyBalance": 0,
      "penaltyDue": 0,
      "penaltyPaid": 0,
      "principalBalance": 0,
      "principalDue": 0,
      "principalPaid": 0,
      "redrawBalance": 0
    },
    "closedDate": "2016-09-06T13:37:50+03:00",
    "creationDate": "2016-09-06T13:37:50+03:00",
    "creditArrangementKey": "string",
    "currency": {
      "code": "AED",
      "currencyCode": "string"
    },
    "daysInArrears": 0,
    "daysLate": 0,
    "disbursementDetails": {
      "disbursementDate": "2016-09-06T13:37:50+03:00",
      "encodedKey": "string",
      "expectedDisbursementDate": "2016-09-06T13:37:50+03:00",
      "fees": [
        {
          "amount": 0,
          "encodedKey": "string",
          "percentage": 0,
          "predefinedFeeEncodedKey": "string"
        }
      ],
      "firstRepaymentDate": "2016-09-06T13:37:50+03:00",
      "transactionDetails": {
        "encodedKey": "string",
        "internalTransfer": true,
        "targetDepositAccountKey": "string",
        "transactionChannelId": "string",
        "transactionChannelKey": "string"
      }
    },
    "encodedKey": "string",
    "feesSettings": {
      "accruedFee": 0,
      "accruedFeeFromArrears": 0,
      "feeRate": 0
    },
    "fundingSources": [
      {
        "amount": 0,
        "assetName": "string",
        "depositAccountKey": "string",
        "encodedKey": "string",
        "guarantorKey": "string",
        "guarantorType": "CLIENT",
        "id": "string",
        "interestCommission": 0,
        "sharePercentage": 0
      }
    ],
    "futurePaymentsAcceptance": "NO_FUTURE_PAYMENTS",
    "guarantors": [
      {
        "amount": 0,
        "assetName": "string",
        "depositAccountKey": "string",
        "encodedKey": "string",
        "guarantorKey": "string",
        "guarantorType": "CLIENT"
      }
    ],
    "id": "string",
    "interestAccruedInBillingCycle": 0,
    "interestCommission": 0,
    "interestFromArrearsAccrued": 0,
    "interestSettings": {
      "accountInterestRateSettings": [
        {
          "encodedKey": "string",
          "indexSourceKey": "string",
          "interestRate": 0,
          "interestRateCeilingValue": 0,
          "interestRateFloorValue": 0,
          "interestRateReviewCount": 0,
          "interestRateReviewUnit": "DAYS",
          "interestRateSource": "FIXED_INTEREST_RATE",
          "interestSpread": 0,
          "validFrom": "2016-09-06T13:37:50+03:00"
        }
      ],
      "accrueInterestAfterMaturity": true,
      "accrueLateInterest": true,
      "effectiveInterestRate": 0,
      "interestApplicationDays": {
        "daysInMonth": [
          0
        ],
        "shortMonthHandlingMethod": "LAST_DAY_IN_MONTH"
      },
      "interestApplicationMethod": "AFTER_DISBURSEMENT",
      "interestBalanceCalculationMethod": "ONLY_PRINCIPAL",
      "interestCalculationMethod": "FLAT",
      "interestChargeFrequency": "ANNUALIZED",
      "interestRate": 0,
      "interestRateReviewCount": 0,
      "interestRateReviewUnit": "DAYS",
      "interestRateSource": "FIXED_INTEREST_RATE",
      "interestSpread": 0,
      "interestType": "SIMPLE_INTEREST",
      "pmtAdjustmentThreshold": {
        "method": "WORKING_DAYS",
        "numberOfDays": 0
      }
    },
    "lastAccountAppraisalDate": "2016-09-06T13:37:50+03:00",
    "lastInterestAppliedDate": "2016-09-06T13:37:50+03:00",
    "lastInterestReviewDate": "2016-09-06T13:37:50+03:00",
    "lastLockedDate": "2016-09-06T13:37:50+03:00",
    "lastModifiedDate": "2016-09-06T13:37:50+03:00",
    "lastSetToArrearsDate": "2016-09-06T13:37:50+03:00",
    "lastTaxRateReviewDate": "2016-09-06T13:37:50+03:00",
    "latePaymentsRecalculationMethod": "OVERDUE_INSTALLMENTS_INCREASE",
    "loanAmount": 0,
    "loanName": "string",
    "lockedAccountTotalDueType": "BALANCE_AMOUNT",
    "lockedOperations": [
      "APPLY_INTEREST"
    ],
    "migrationEventKey": "string",
    "modifyInterestForFirstInstallment": true,
    "notes": "string",
    "originalAccountKey": "string",
    "paymentHolidaysAccruedInterest": 0,
    "paymentMethod": "HORIZONTAL",
    "penaltySettings": {
      "loanPenaltyCalculationMethod": "NONE",
      "penaltyRate": 0
    },
    "plannedInstallmentFees": [
      {
        "amount": 0,
        "applyOnDate": "2016-09-06T13:37:50+03:00",
        "encodedKey": "string",
        "installmentKey": "string",
        "installmentNumber": 0,
        "predefinedFeeKey": "string"
      }
    ],
    "prepaymentSettings": {
      "applyInterestOnPrepaymentMethod": "AUTOMATIC",
      "elementsRecalculationMethod": "PRINCIPAL_EXPECTED_FIXED",
      "ercFreeAllowanceAmount": 0,
      "ercFreeAllowancePercentage": 0,
      "prepaymentRecalculationMethod": "NO_RECALCULATION",
      "principalPaidInstallmentStatus": "PARTIALLY_PAID"
    },
    "principalPaymentSettings": {
      "amount": 0,
      "encodedKey": "string",
      "includeFeesInFloorAmount": true,
      "includeInterestInFloorAmount": true,
      "percentage": 0,
      "principalCeilingValue": 0,
      "principalFloorValue": 0,
      "principalPaymentMethod": "FLAT",
      "totalDueAmountFloor": 0,
      "totalDuePayment": "FLAT"
    },
    "productTypeKey": "string",
    "redrawSettings": {
      "restrictNextDueWithdrawal": true
    },
    "rescheduledAccountKey": "string",
    "scheduleSettings": {
      "amortizationPeriod": 0,
      "billingCycle": {
        "days": [
          0
        ]
      },
      "defaultFirstRepaymentDueDateOffset": 0,
      "fixedDaysOfMonth": [
        0
      ],
      "gracePeriod": 0,
      "gracePeriodType": "NONE",
      "hasCustomSchedule": true,
      "paymentPlan": [
        {
          "amount": 0,
          "encodedKey": "string",
          "toInstallment": 0
        }
      ],
      "periodicPayment": 0,
      "previewSchedule": {
        "numberOfPreviewedInstalments": 0
      },
      "principalRepaymentInterval": 0,
      "repaymentInstallments": 0,
      "repaymentPeriodCount": 0,
      "repaymentPeriodUnit": "DAYS",
      "repaymentScheduleMethod": "NONE",
      "scheduleDueDatesMethod": "INTERVAL",
      "shortMonthHandlingMethod": "LAST_DAY_IN_MONTH"
    },
    "settlementAccountKey": "string",
    "taxRate": 0,
    "terminationDate": "2016-09-06T13:37:50+03:00",
    "tranches": [
      {
        "amount": 0,
        "disbursementDetails": {
          "disbursementTransactionKey": "string",
          "expectedDisbursementDate": "2016-09-06T13:37:50+03:00"
        },
        "encodedKey": "string",
        "fees": [
          {
            "amount": 0,
            "encodedKey": "string",
            "percentage": 0,
            "predefinedFeeEncodedKey": "string"
          }
        ],
        "trancheNumber": 0
      }
    ]
  }
]

Responses

Status Meaning Description Schema
200 OK Loan account with previous versions returned. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan account not found. ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [LoanAccountFullDetails] [Represents a loan account. A loan account defines the amount that your organization lends to a client. The terms and conditions of a loan account are defined by a loan product. In a loan account, Mambu stores all the information related to disbursements, repayments, interest rates, and withdrawals.] none
Ā» accountArrearsSettings AccountArrearsSettings The account arrears settings, holds the required information for the arrears settings of an account. none
»» dateCalculationMethod string The arrears date calculation method. none
»» encodedKey string The encoded key of the arrears base settings, auto generated, unique. read-only
»» monthlyToleranceDay integer(int32) Defines monthly arrears tolerance day value. none
»» nonWorkingDaysMethod string Shows whether the non working days are taken in consideration or not when applying penaltees/late fees or when setting an account into arrears none
»» toleranceCalculationMethod string Defines the tolerance calculation method none
»» toleranceFloorAmount number The tolerance floor amount. none
»» tolerancePercentageOfOutstandingPrincipal number Defines the arrears tolerance amount. none
»» tolerancePeriod integer(int32) Defines the arrears tolerance period value. none
Ā» accountHolderKey (required) string The encoded key of the account holder. none
Ā» accountHolderType (required) string The type of the account holder. none
Ā» accountState string The state of the loan account. none
Ā» accountSubState string A second state for the loan account. Beside the account state, a second substate is sometimes necessary to provide more information about the exact lifecycle state of a loan account.For example, even if the account state of a loan account is ACTIVE, it can also have a substate of LOCKED. none
Ā» accruedInterest number The amount of interest that has been accrued in the loan account. none
Ā» accruedPenalty number The accrued penalty, represents the amount of penalty that has been accrued in the loan account. none
Ā» activationTransactionKey string The encoded key of the transaction that activated the loan account. none
Ā» adjustTotalDueForInstallmentsWithDifferentInterval boolean Adjust the total due for repayment when the repayment period is different than the repayment frequency read-only
Ā» allowOffset boolean DEPRECATED - Will always be false. none
Ā» approvedDate string(date-time) The date the loan account was approved. none
Ā» arrearsTolerancePeriod integer(int32) The arrears tolerance (period or day of month) depending on the product settings. none
Ā» assets [AssetFullDetails] The list of assets associated with the current loan account. none
»» amount (required) number The amount used by the client for the guaranty none
»» assetName (required) string The name of a value the client guarantees with (populated when the guaranty type is ASSET) none
»» depositAccountKey string The key of the deposit account used by the guarantor (populated when the guaranty type is GUARANTOR). It can be null. none
»» encodedKey string The encoded key of the security, auto generated, unique. read-only
»» guarantorKey string The key of the client/group used as the guarantor. none
»» guarantorType string The type of the guarantor (client/group) none
»» originalAmount number The original amount used by the client for a collateral asset none
»» originalCurrency Currency Represents a currency. To represent a fiat currency, the code value and the currencyCode value must be the ISO-4217 currency code of the fiat currency. To represent a non-fiat currency, the code value must be NON_FIAT and the currencyCode value must be the currency code of the non-fiat currency. none
»»» code string Fiat(ISO-4217) currency code or NON_FIAT for non fiat currencies. none
»»» currencyCode string Currency code for NON_FIAT currency. none
Ā» assignedBranchKey string The key of the branch this loan account is assigned to. The branch is set to unassigned if no branch field is set. none
Ā» assignedCentreKey string The key of the centre this account is assigned to. none
Ā» assignedUserKey string The key of the user this loan account is assigned to. none
Ā» balances Balances The loan account balance details. none
»» feesBalance number The fees balance. Represents the total fees expected to be paid on this account at a given moment. read-only
»» feesDue number The fees due. Representing the total fees due for the account. read-only
»» feesPaid number The fees paid. Represents the total fees paid for the account. read-only
»» holdBalance number The sum of all the authorization hold amounts on this account. read-only
»» interestBalance number Represents the total interest owed by the client (total interest applied for account minus interest paid). read-only
»» interestDue number The interest due. Indicates how much interest it's due for the account at this moment. read-only
»» interestFromArrearsBalance number The interest from arrears balance. Indicates interest from arrears owned by the client, from now on. (total interest from arrears accrued for account - interest from arrears paid). read-only
»» interestFromArrearsDue number The interest from arrears due. Indicates how much interest from arrears it's due for the account at this moment. read-only
»» interestFromArrearsPaid number The interest from arrears paid, indicates total interest from arrears paid into the account. read-only
»» interestPaid number The interest paid, indicates total interest paid into the account. read-only
»» penaltyBalance number The penalty balance. Represents the total penalty expected to be paid on this account at a given moment. read-only
»» penaltyDue number The penalty due. Represents the total penalty amount due for the account. read-only
»» penaltyPaid number The Penalty paid. Represents the total penalty amount paid for the account. read-only
»» principalBalance number The total principal owned by the client, from now on (principal disbursed - principal paid). read-only
»» principalDue number The principal due, indicates how much principal it's due at this moment. read-only
»» principalPaid number The principal paid, holds the value of the total paid into the account. read-only
»» redrawBalance number The total redraw amount owned by the client, from now on. none
Ā» closedDate string(date-time) The date the loan was closed. none
Ā» creationDate string(date-time) The date the loan account was created. none
Ā» creditArrangementKey string The key to the line of credit where this account is registered to. none
Ā» currency Currency Represents a currency. To represent a fiat currency, the code value and the currencyCode value must be the ISO-4217 currency code of the fiat currency. To represent a non-fiat currency, the code value must be NON_FIAT and the currencyCode value must be the currency code of the non-fiat currency. none
Ā» daysInArrears integer(int32) The number of days the loan account is in arrears. read-only
Ā» daysLate integer(int32) The number of days a repayment for the loan account is late. read-only
Ā» disbursementDetails DisbursementDetails The the disbursement details it holds the information related to the disbursement details as disbursement date, first repayment date, disbursement fees. none
»» disbursementDate string(date-time) The activation date, the date when the disbursement actually took place. none
»» encodedKey string The encoded key of the disbursement details, auto generated, unique read-only
»» expectedDisbursementDate string(date-time) The date of the expected disbursement.Stored as Organization Time. none
»» fees [CustomPredefinedFee] List of fees that should be applied at the disbursement time. none
»»» amount number The amount of the custom fee. none
»»» encodedKey string The encoded key of the custom predefined fee, auto generated, unique. read-only
»»» percentage number The percentage of the custom fee. none
»»» predefinedFeeEncodedKey string The encoded key of the predefined fee none
»» firstRepaymentDate string(date-time) The date of the expected first repayment. Stored as Organization Time. none
»» transactionDetails LoanTransactionDetails Represents the loan transaction details. none
»»» encodedKey string The encoded key of the entity, generated, globally unique read-only
»»» internalTransfer boolean Whether the transaction was transferred between loans or deposit accounts none
»»» targetDepositAccountKey string In case of a transaction to a deposit account this represent the deposit account key to which the transaction was made. none
»»» transactionChannelId string The ID of the transaction channel associated with the transaction details. none
»»» transactionChannelKey string The encoded key of the transaction channel associated with the transaction details. none
Ā» encodedKey string The encoded key of the loan account, it is auto generated, and must be unique. read-only
Ā» feesSettings FeesAccountSettings The fee settings, holds all the properties regarding fees for the loan account. none
»» accruedFee number The accrued fee. Represents the accrued fee for the loan account. The fee on loans is accrued on a daily basis, which allows charging the clients only for the days they actually used the loan amount. read-only
»» accruedFeeFromArrears number The accrued fee from arrears. Represents the accrued fee from arrears for the loan account. The fee on loans is accrued on a daily basis, which allows charging the clients only for the days they actually used the loan amount. read-only
»» feeRate number The fee rate. Represents the fee rate for the loan account. The fee on loans is accrued on a daily basis, which allows charging the clients only for the days they actually used the loan amount. none
Ā» fundingSources [InvestorFund] The list of funds associated with the loan account. none
»» amount (required) number The amount used by the client for the guaranty none
»» assetName string The name of a value the client guarantees with (populated when the guaranty type is ASSET) none
»» depositAccountKey string The key of the deposit account used by the guarantor (populated when the guaranty type is GUARANTOR). It can be null. none
»» encodedKey string The encoded key of the entity, generated, globally unique read-only
»» guarantorKey (required) string The key of the client/group used as the guarantor. none
»» guarantorType (required) string The type of the guarantor (client/group) none
»» id string Investor fund unique identifier. All versions of an investor fund will have same id. none
»» interestCommission number The constraint minimum value none
»» sharePercentage number Percentage of loan shares this investor owns none
Ā» futurePaymentsAcceptance string Shows whether the repayment transactions with entry date set in the future are allowed or not for this loan account. none
Ā» guarantors [GuarantorFullDetails] The list of guarantees associated with the loan account. none
»» amount (required) number The amount used by the client for the guaranty none
»» assetName string The name of a value the client guarantees with (populated when the guaranty type is ASSET) none
»» depositAccountKey string The key of the deposit account used by the guarantor (populated when the guaranty type is GUARANTOR). It can be null. none
»» encodedKey string The encoded key of the security, auto generated, unique. read-only
»» guarantorKey (required) string The key of the client/group used as the guarantor. none
»» guarantorType (required) string The type of the guarantor (client/group) none
Ā» id string The ID of the loan account, it can be generated and customized, and must be unique. none
Ā» interestAccruedInBillingCycle number The interest that is accrued in the current billing cycle. read-only
Ā» interestCommission number The value of the interest booked by the organization from the accounts funded by investors. Null if the funds are not enabled. none
Ā» interestFromArrearsAccrued number The amount of interest from arrears that has been accrued in the loan account. read-only
Ā» interestSettings (required) InterestSettings The interest settings, holds all the properties regarding interests for the loan account. none
»» accountInterestRateSettings [AccountInterestRateSettings] Adjustable interest rates settings for loan account none
»»» encodedKey string The encoded key of the interest rate settings, auto generated, unique read-only
»»» indexSourceKey string Index rate source key. none
»»» interestRate number Interest rate value. none
»»» interestRateCeilingValue number Maximum value allowed for index based interest rate. Valid only for index interest rate. none
»»» interestRateFloorValue number Minimum value allowed for index based interest rate. Valid only for index interest rate. none
»»» interestRateReviewCount integer(int32) Interest rate review frequency unit count. Valid only for index interest rate. none
»»» interestRateReviewUnit string Interest rate review frequency measurement unit. Valid only for index interest rate. none
»»» interestRateSource (required) string Interest calculation method: fixed or indexed(interest spread + active organization index interest rate) none
»»» interestSpread number Interest spread value. none
»»» validFrom (required) string(date-time) Date since an interest rate is valid none
»» accrueInterestAfterMaturity boolean The accrue interest after maturity. If the product support this option, specify if the interest should be accrued after the account maturity date. none
»» accrueLateInterest boolean Indicates whether late interest is accrued for this loan account read-only
»» effectiveInterestRate number The effective interest rate. Represents the interest rate for the loan accounts with semi-annually compounding product. none
»» interestApplicationDays DaysInMonth Enumeration for days of month and method of handling shorter months. none
»»» daysInMonth [integer] Specifies the day(s) of the month when the interest application dates should be. Only available if the Interest Application Method is InterestApplicationMethodDTO#FIXED_DAYS_OF_MONTH. Currently only 1 value can be specified. none
»»» shortMonthHandlingMethod string Determines how to handle the short months, if they select a fixed day of month > 28. Will be null if no such date is selected. Only available if the Interest Application Method is InterestApplicationMethodDTO#FIXED_DAYS_OF_MONTH. none
»» interestApplicationMethod string The interest application method. Represents the interest application method that determines whether the interest gets applied on the account's disbursement or on each repayment. none
»» interestBalanceCalculationMethod string The interest balance calculation method. Represents the option which determines the way the balance for the account's interest is computed. none
»» interestCalculationMethod string The interest calculation method. Holds the type of interest calculation method. none
»» interestChargeFrequency string The interest change frequency. Holds the possible values for how often is interest charged on loan or deposit accounts none
»» interestRate number The interest rate. Represents the interest rate for the loan account. The interest on loans is accrued on a daily basis, which allows charging the clients only for the days they actually used the loan amount. none
»» interestRateReviewCount integer(int32) Interest rate update frequency unit count. none
»» interestRateReviewUnit string The interest rate review unit. Defines the interest rate update frequency measurement unit. none
»» interestRateSource string The interest rate source. Represents the interest calculation method: fixed or (interest spread + active organization index interest rate) none
»» interestSpread number Interest to be added to active organization index interest rate in order to find out actual interest rate none
»» interestType string The possible values for how we compute and apply the interest none
»» pmtAdjustmentThreshold PMTAdjustmentThreshold Represents PMT Adjustment threshold settings for loan accounts and loan products. none
»»» method string The method used to calculate the PMT Adjustment threshold. Supported value is CALENDAR_DAYS none
»»» numberOfDays integer(int32) The number of days that trigger a PMT Adjustment. none
Ā» lastAccountAppraisalDate string(date-time) The date the loan account has last been evaluated for interest, principal, fees, and penalties calculations expressed in the organization time format and time zone. none
Ā» lastInterestAppliedDate string(date-time) The date of the last time the loan account had interest applied (stored to interest balance), expressed in the organization time format and time zone. none
Ā» lastInterestReviewDate string(date-time) The date the interest was reviewed last time, stored in the organization time format and time zone. none
Ā» lastLockedDate string(date-time) The date when the loan account was set for the last time in the LOCKED state expressed in the organization time format and time zone. If null, the account is not locked anymore. none
Ā» lastModifiedDate string(date-time) The last date the loan was updated. none
Ā» lastSetToArrearsDate string(date-time) The date when the loan account was set to last standing or null; if never set, it is expressed in your organization time format and time zone. none
Ā» lastTaxRateReviewDate string(date-time) The date the tax rate on the loan account was last checked, expressed in the organization time format and time zone. none
Ā» latePaymentsRecalculationMethod string The overdue payments recalculation method inherited from the loan product on which this loan account is based. none
Ā» loanAmount (required) number The loan amount. none
Ā» loanName string The name of the loan account. none
Ā» lockedAccountTotalDueType string The locked account total due type. none
Ā» lockedOperations [string] A list with operations which are locked when the account is in the AccountState.LOCKED substate. none
Ā» migrationEventKey string The migration event encoded key associated with this loan account. If this account was imported, track which 'migration event' they came from. none
Ā» modifyInterestForFirstInstallment boolean Adjust the interest for the first repayment when the first repayment period is different than the repayment frequency read-only
Ā» notes string The notes about this loan account. none
Ā» originalAccountKey string The key of the original rescheduled or refinanced loan account. none
Ā» paymentHolidaysAccruedInterest number The amount of interest that has been accrued during payment holidays in the loan account. none
Ā» paymentMethod string The interest payment method that determines whether the payments are made horizontally (on the repayments) or vertically (on the loan account). none
Ā» penaltySettings PenaltySettings The penalty settings, holds all the fields regarding penalties none
»» loanPenaltyCalculationMethod string The last penalty calculation method, represents on what amount are the penalties calculated. none
»» penaltyRate number The penalty rate, represents the rate (in percent) which is charged as a penalty. none
Ā» plannedInstallmentFees [PlannedInstallmentFee] The list with manual fees planned on the installments of the loan account. none
»» amount number The amount of the planned fee. none
»» applyOnDate string(date-time) The date when a planned fee should be applied, overriding due date of the installment. It should match the interval of the installment. If it belongs to the first installment, it should be between disbursement date and installment due date. Returned only if its value has been previously set. none
»» encodedKey string The encoded key of the planned installment fee, auto generated, unique. read-only
»» installmentKey string The encoded key of the installment on which the predefined fee is planned. none
»» installmentNumber integer(int32) The number of the installment for which the predefined fee is planned. It is used only in the case when fees are created at the same time as the loan account or during preview schedule, before account creation. In all other cases, this field will be nil and installmentKey will be used to identify an installment. none
»» predefinedFeeKey (required) string The encoded key of the predefined fee which is planned. none
Ā» prepaymentSettings PrepaymentSettings The prepayment settings, holds all prepayment properties. none
»» applyInterestOnPrepaymentMethod string Apply interest on prepayment method copied from loan product on which this account is based. none
»» elementsRecalculationMethod string The elements recalculation method, indicates how the declining balance with equal installments repayments are recalculated. none
»» ercFreeAllowanceAmount number none none
»» ercFreeAllowancePercentage number Early repayment charge fee free allowance in percentage per year none
»» prepaymentRecalculationMethod string Prepayment recalculation method copied from the loan product on which this account is based. none
»» principalPaidInstallmentStatus string Installment status for the case when principal is paid off (copied from loan product). none
Ā» principalPaymentSettings PrincipalPaymentAccountSettings The principal payment account settings, holds the required information for the principal payment process of an account. none
»» amount number Fixed amount for being used for the repayments principal due. none
»» encodedKey string The encoded key of the principal payment base settings, auto generated, unique. read-only
»» includeFeesInFloorAmount boolean Boolean flag, if true, the fees will be included along with the principal in the repayment floor amount, for a revolving credit account none
»» includeInterestInFloorAmount boolean Boolean flag, if true, the interest will be included along with the principal in the repayment floor amount, for a revolving credit account none
»» percentage number Percentage of principal amount used for the repayments principal due. none
»» principalCeilingValue number The maximum principal due amount a repayment made with this settings can have none
»» principalFloorValue number The minimum principal due amount a repayment made with this settings can have none
»» principalPaymentMethod string The method of principal payment for revolving credit. none
»» totalDueAmountFloor number The minimum total due amount a repayment made with this settings can have none
»» totalDuePayment string The method of total due payment for revolving credit none
Ā» productTypeKey (required) string The key for the type of loan product that this loan account is based on. none
Ā» redrawSettings LoanAccountRedrawSettings Represents the redraw settings for a loan account. none
»» restrictNextDueWithdrawal (required) boolean TRUE if withdrawing amounts that reduce the next due instalment repayment is restricted, FALSE otherwise. none
Ā» rescheduledAccountKey string The key pointing to where this loan account was rescheduled or refinanced to. This value is only not null if rescheduled. none
Ā» scheduleSettings (required) ScheduleSettings The schedule settings, holds all schedule properties. none
»» amortizationPeriod integer(int32) The PMT is calculated as the loan would have [amortizationPeriod] installments. none
»» billingCycle BillingCycleDays Defines the billing cycles settings for a loan account none
»»» days [integer] The billing cycle start days in case it is enabled none
»» defaultFirstRepaymentDueDateOffset integer(int32) The default first repayment due date offset, indicates how many days the first repayment due date should be extended(all other due dates from the schedule are relative to first repayment due date - they will also be affected by the offset) none
»» fixedDaysOfMonth [integer] Specifies the days of the month when the repayment due dates should be. Only available if the Repayment Methodology is FIXED_DAYS_OF_MONTH. none
»» gracePeriod (required) integer(int32) The grace period. Represents the grace period for loan repayment - in number of installments. none
»» gracePeriodType string The grace period type. Representing the type of grace period which is possible for a loan account. none
»» hasCustomSchedule boolean Flag used when the repayments schedule for the current account was determined by the user, by editing the due dates or the principal due none
»» paymentPlan [PeriodicPayment] A list of periodic payments for the current loan account. none
»»» amount (required) number The PMT value used in periodic payment none
»»» encodedKey string The encoded key of the periodic payment, auto generated, unique. read-only
»»» toInstallment (required) integer(int32) The installment's position up to which the PMT will be used none
»» periodicPayment number The periodic payment amount for the accounts which have balloon payments or Reduce Number of Installments and Optimized Payments none
»» previewSchedule RevolvingAccountSettings The number of previewed instalments for an account none
»»» numberOfPreviewedInstalments integer(int32) The number of previewed instalments none
»» principalRepaymentInterval integer(int32) The principal repayment interval. Indicates the interval of repayments that the principal has to be paid. none
»» repaymentInstallments integer(int32) The repayment installments. Represents how many installments are required to pay back the loan. none
»» repaymentPeriodCount integer(int32) The repayment period count. Represents how often the loan is to be repaid: stored based on the type repayment option. none
»» repaymentPeriodUnit string The repayment period unit. Represents the frequency of loan repayment. none
»» repaymentScheduleMethod string The repayment schedule method. Represents the method that determines whether the schedule will be fixed all over the loan account's life cycle or will be dynamically recomputed when required. none
»» scheduleDueDatesMethod string The schedule due dates method. Represents the methodology used by this account to compute the due dates of the repayments. none
»» shortMonthHandlingMethod string The short handling method. Determines how to handle the short months, if they select a fixed day of month > 28. Will be null if no such date is selected and also for the Interval methodology. Only available if the Repayment Methodology is FIXED_DAYS_OF_MONTH. none
Ā» settlementAccountKey string The encoded key of the settlement account. none
Ā» taxRate number The tax rate. none
Ā» terminationDate string(date-time) The date this loan account was terminated. none
Ā» tranches [LoanTranche] The list of disbursement tranches available for the loan account. none
»» amount (required) number The amount this tranche has available for disburse none
»» disbursementDetails TrancheDisbursementDetails The disbursement details regarding a loan tranche. none
»»» disbursementTransactionKey string The key of the disbursement transaction logged when this tranche was disbursed. This field will be null until the tranche disbursement none
»»» expectedDisbursementDate string(date-time) The date when this tranche is supposed to be disbursed (as Organization Time) none
»» encodedKey string The encoded key of the transaction details , auto generated, unique. read-only
»» fees [CustomPredefinedFee] Fees that are associated with this tranche none
»» trancheNumber integer(int32) Index indicating the tranche number none

Enumerated Values

Property Value
dateCalculationMethod ACCOUNT_FIRST_WENT_TO_ARREARS
dateCalculationMethod LAST_LATE_REPAYMENT
dateCalculationMethod ACCOUNT_FIRST_BREACHED_MATERIALITY_THRESHOLD
nonWorkingDaysMethod INCLUDED
nonWorkingDaysMethod EXCLUDED
toleranceCalculationMethod ARREARS_TOLERANCE_PERIOD
toleranceCalculationMethod MONTHLY_ARREARS_TOLERANCE_DAY
accountHolderType CLIENT
accountHolderType GROUP
accountState PARTIAL_APPLICATION
accountState PENDING_APPROVAL
accountState APPROVED
accountState ACTIVE
accountState ACTIVE_IN_ARREARS
accountState CLOSED
accountState CLOSED_WRITTEN_OFF
accountState CLOSED_REJECTED
accountSubState PARTIALLY_DISBURSED
accountSubState LOCKED
accountSubState LOCKED_CAPPING
accountSubState REFINANCED
accountSubState RESCHEDULED
accountSubState WITHDRAWN
accountSubState REPAID
accountSubState REJECTED
accountSubState WRITTEN_OFF
accountSubState TERMINATED
guarantorType CLIENT
guarantorType GROUP
code AED
code AFN
code ALL
code AMD
code ANG
code AOA
code ARS
code AUD
code AWG
code AZN
code BAM
code BBD
code BDT
code BGN
code BHD
code BIF
code BMD
code BND
code BOB
code BOV
code BRL
code BSD
code BTN
code BWP
code BYR
code BYN
code BZD
code CAD
code CDF
code CHE
code CHF
code CHW
code CLF
code CLP
code CNY
code COP
code COU
code CRC
code CUC
code CUP
code CVE
code CZK
code DJF
code DKK
code DOP
code DZD
code EGP
code ERN
code ETB
code EUR
code FJD
code FKP
code GBP
code GEL
code GHS
code GIP
code GMD
code GNF
code GTQ
code GYD
code HKD
code HNL
code HRK
code HTG
code HUF
code IDR
code ILS
code INR
code IQD
code IRR
code ISK
code JMD
code JOD
code JPY
code KES
code KGS
code KHR
code KMF
code KPW
code KRW
code KWD
code KYD
code KZT
code LAK
code LBP
code LKR
code LRD
code LSL
code LTL
code LVL
code LYD
code MAD
code MDL
code MGA
code MKD
code MMK
code MNT
code MOP
code MRO
code MRU
code MUR
code MVR
code MWK
code MXN
code MXV
code MYR
code MZN
code NAD
code NGN
code NIO
code NOK
code NPR
code NZD
code OMR
code PAB
code PEN
code PGK
code PHP
code PKR
code PLN
code PYG
code QAR
code RON
code RSD
code RUB
code RWF
code SAR
code SBD
code SCR
code SDG
code SEK
code SGD
code SHP
code SLL
code SOS
code SRD
code STD
code STN
code SVC
code SYP
code SZL
code THB
code TJS
code TMT
code TND
code TOP
code TRY
code TTD
code TWD
code TZS
code UAH
code UGX
code USD
code USN
code UYI
code UYU
code UYW
code UZS
code VED
code VEF
code VES
code VND
code VUV
code WST
code XAG
code XAU
code XAF
code XBA
code XBB
code XBC
code XBD
code XCD
code XDR
code XOF
code XPD
code XPF
code XPT
code XSU
code XTS
code XUA
code XXX
code YER
code ZAR
code ZIG
code ZMK
code ZWL
code ZMW
code SSP
code NON_FIAT
guarantorType CLIENT
guarantorType GROUP
futurePaymentsAcceptance NO_FUTURE_PAYMENTS
futurePaymentsAcceptance ACCEPT_FUTURE_PAYMENTS
futurePaymentsAcceptance ACCEPT_OVERPAYMENTS
guarantorType CLIENT
guarantorType GROUP
interestRateReviewUnit DAYS
interestRateReviewUnit WEEKS
interestRateReviewUnit MONTHS
interestRateSource FIXED_INTEREST_RATE
interestRateSource INDEX_INTEREST_RATE
shortMonthHandlingMethod LAST_DAY_IN_MONTH
shortMonthHandlingMethod FIRST_DAY_OF_NEXT_MONTH
interestApplicationMethod AFTER_DISBURSEMENT
interestApplicationMethod REPAYMENT_DUE_DATE
interestApplicationMethod FIXED_DAYS_OF_MONTH
interestBalanceCalculationMethod ONLY_PRINCIPAL
interestBalanceCalculationMethod PRINCIPAL_AND_INTEREST
interestCalculationMethod FLAT
interestCalculationMethod DECLINING_BALANCE
interestCalculationMethod DECLINING_BALANCE_DISCOUNTED
interestCalculationMethod EQUAL_INSTALLMENTS
interestChargeFrequency ANNUALIZED
interestChargeFrequency EVERY_MONTH
interestChargeFrequency EVERY_FOUR_WEEKS
interestChargeFrequency EVERY_WEEK
interestChargeFrequency EVERY_DAY
interestChargeFrequency EVERY_X_DAYS
interestRateReviewUnit DAYS
interestRateReviewUnit WEEKS
interestRateReviewUnit MONTHS
interestRateSource FIXED_INTEREST_RATE
interestRateSource INDEX_INTEREST_RATE
interestType SIMPLE_INTEREST
interestType CAPITALIZED_INTEREST
interestType COMPOUNDING_INTEREST
method WORKING_DAYS
method CALENDAR_DAYS
latePaymentsRecalculationMethod OVERDUE_INSTALLMENTS_INCREASE
latePaymentsRecalculationMethod LAST_INSTALLMENT_INCREASE
latePaymentsRecalculationMethod NO_RECALCULATION
lockedAccountTotalDueType BALANCE_AMOUNT
lockedAccountTotalDueType DUE_AMOUNT_ON_LATE_INSTALLMENTS
paymentMethod HORIZONTAL
paymentMethod VERTICAL
loanPenaltyCalculationMethod NONE
loanPenaltyCalculationMethod OVERDUE_BALANCE
loanPenaltyCalculationMethod OVERDUE_BALANCE_AND_INTEREST
loanPenaltyCalculationMethod OVERDUE_BALANCE_INTEREST_AND_FEE
loanPenaltyCalculationMethod OUTSTANDING_PRINCIPAL
applyInterestOnPrepaymentMethod AUTOMATIC
applyInterestOnPrepaymentMethod MANUAL
elementsRecalculationMethod PRINCIPAL_EXPECTED_FIXED
elementsRecalculationMethod TOTAL_EXPECTED_FIXED
prepaymentRecalculationMethod NO_RECALCULATION
prepaymentRecalculationMethod RESCHEDULE_REMAINING_REPAYMENTS
prepaymentRecalculationMethod RECALCULATE_SCHEDULE_KEEP_SAME_NUMBER_OF_TERMS
prepaymentRecalculationMethod RECALCULATE_SCHEDULE_KEEP_SAME_PRINCIPAL_AMOUNT
prepaymentRecalculationMethod RECALCULATE_SCHEDULE_KEEP_SAME_TOTAL_REPAYMENT_AMOUNT
prepaymentRecalculationMethod REDUCE_AMOUNT_PER_INSTALLMENT
prepaymentRecalculationMethod REDUCE_NUMBER_OF_INSTALLMENTS
prepaymentRecalculationMethod REDUCE_NUMBER_OF_INSTALLMENTS_NEW
principalPaidInstallmentStatus PARTIALLY_PAID
principalPaidInstallmentStatus PAID
principalPaidInstallmentStatus ORIGINAL_TOTAL_EXPECTED_PAID
principalPaymentMethod FLAT
principalPaymentMethod OUTSTANDING_PRINCIPAL_PERCENTAGE
principalPaymentMethod PRINCIPAL_PERCENTAGE_LAST_DISB
principalPaymentMethod TOTAL_BALANCE_PERCENTAGE
principalPaymentMethod TOTAL_BALANCE_FLAT
principalPaymentMethod TOTAL_PRINCIPAL_PERCENTAGE
totalDuePayment FLAT
totalDuePayment OUTSTANDING_PRINCIPAL_PERCENTAGE
totalDuePayment PRINCIPAL_PERCENTAGE_LAST_DISB
totalDuePayment TOTAL_BALANCE_PERCENTAGE
totalDuePayment TOTAL_BALANCE_FLAT
totalDuePayment TOTAL_PRINCIPAL_PERCENTAGE
gracePeriodType NONE
gracePeriodType PAY_INTEREST_ONLY
gracePeriodType INTEREST_FORGIVENESS
repaymentPeriodUnit DAYS
repaymentPeriodUnit WEEKS
repaymentPeriodUnit MONTHS
repaymentPeriodUnit YEARS
repaymentScheduleMethod NONE
repaymentScheduleMethod FIXED
repaymentScheduleMethod DYNAMIC
scheduleDueDatesMethod INTERVAL
scheduleDueDatesMethod FIXED_DAYS_OF_MONTH
shortMonthHandlingMethod LAST_DAY_IN_MONTH
shortMonthHandlingMethod FIRST_DAY_OF_NEXT_MONTH

getPreviewLoanAccountSchedule (Loan Accounts)

Code samples

# You can also use wget
curl -X POST /loans:previewSchedule \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json'

POST /loans:previewSchedule HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/loans:previewSchedule',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.post '/loans:previewSchedule',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.post('/loans:previewSchedule', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/loans:previewSchedule', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans:previewSchedule");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/loans:previewSchedule", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /loans:previewSchedule

Preview loan account schedule for non-existent loan account

Body parameter

{
  "disbursementDetails": {
    "expectedDisbursementDate": "2016-09-06T13:37:50+03:00",
    "fees": [
      {
        "amount": 0,
        "percentage": 0,
        "predefinedFeeEncodedKey": "string"
      }
    ],
    "firstRepaymentDate": "2016-09-06T13:37:50+03:00"
  },
  "interestCommission": 0,
  "interestSettings": {
    "accountInterestRateSettings": [
      {
        "indexSourceKey": "string",
        "interestRate": 0,
        "interestRateCeilingValue": 0,
        "interestRateFloorValue": 0,
        "interestRateReviewCount": 0,
        "interestRateReviewUnit": "DAYS",
        "interestRateSource": "FIXED_INTEREST_RATE",
        "interestSpread": 0,
        "validFrom": "2016-09-06T13:37:50+03:00"
      }
    ],
    "interestRate": 0,
    "interestSpread": 0
  },
  "loanAmount": 0,
  "plannedInstallmentFees": [
    {
      "amount": 0,
      "applyOnDate": "2016-09-06T13:37:50+03:00",
      "installmentKey": "string",
      "installmentNumber": 0,
      "predefinedFeeKey": "string"
    }
  ],
  "productTypeKey": "string",
  "scheduleSettings": {
    "amortizationPeriod": 0,
    "fixedDaysOfMonth": [
      0
    ],
    "gracePeriod": 0,
    "paymentPlan": [
      {
        "amount": 0,
        "toInstallment": 0
      }
    ],
    "periodicPayment": 0,
    "principalRepaymentInterval": 0,
    "repaymentInstallments": 0,
    "repaymentPeriodCount": 0,
    "repaymentPeriodUnit": "DAYS"
  },
  "topUpAmount": 0,
  "tranches": [
    {
      "amount": 0,
      "disbursementDetails": {
        "disbursementTransactionKey": "string",
        "expectedDisbursementDate": "2016-09-06T13:37:50+03:00"
      },
      "fees": [
        {
          "amount": 0,
          "percentage": 0,
          "predefinedFeeEncodedKey": "string"
        }
      ],
      "trancheNumber": 0
    }
  ]
}

Parameters

Name Type Description In
body (required) PreviewLoanAccountSchedule Loan account parameters for a schedule to be previewed. body

Example responses

200 Response

{
  "currency": {
    "code": "AED",
    "currencyCode": "string"
  },
  "installments": [
    {
      "carryForwardInterestSplit": {
        "amount": 0,
        "tax": 0
      },
      "customSettingDetails": [
        {
          "loanTransactionKey": "string",
          "source": "string",
          "type": "string"
        }
      ],
      "dueDate": "2016-09-06T13:37:50+03:00",
      "encodedKey": "string",
      "expectedClosingBalance": 0,
      "fee": {
        "amount": {
          "due": 0,
          "expected": 0,
          "expectedUnapplied": 0,
          "paid": 0
        },
        "tax": {
          "due": 0,
          "expected": 0,
          "paid": 0
        }
      },
      "feeDetails": [
        {
          "amount": {
            "due": 0,
            "expected": 0,
            "paid": 0,
            "reduced": 0
          },
          "encodedKey": "string",
          "id": "string",
          "name": "string",
          "tax": {
            "due": 0,
            "expected": 0,
            "paid": 0,
            "reduced": 0
          }
        }
      ],
      "fundersInterestDue": 0,
      "interest": {
        "amount": {
          "due": 0,
          "expected": 0,
          "paid": 0
        },
        "tax": {
          "due": 0,
          "expected": 0,
          "paid": 0
        }
      },
      "interestAccrued": 0,
      "isPaymentHoliday": true,
      "lastPaidDate": "2016-09-06T13:37:50+03:00",
      "lastPenaltyAppliedDate": "2016-09-06T13:37:50+03:00",
      "nonScheduledPrincipalBalanceOverpayment": 0,
      "notes": "string",
      "number": "string",
      "organizationCommissionDue": 0,
      "parentAccountKey": "string",
      "penalty": {
        "amount": {
          "due": 0,
          "expected": 0,
          "paid": 0
        },
        "tax": {
          "due": 0,
          "expected": 0,
          "paid": 0
        }
      },
      "principal": {
        "amount": {
          "due": 0,
          "expected": 0,
          "paid": 0
        }
      },
      "repaidDate": "2016-09-06T13:37:50+03:00",
      "state": "PENDING"
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK Loan account schedule preview is ready. LoanAccountSchedule
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

getPdfDocument (Loan Accounts)

Code samples

# You can also use wget
curl -X GET /loans/{loanAccountId}/templates/{templateId}/pdf \
  -H 'Accept: application/vnd.mambu.v2+file'

GET /loans/{loanAccountId}/templates/{templateId}/pdf HTTP/1.1

Accept: application/vnd.mambu.v2+file

var headers = {
  'Accept':'application/vnd.mambu.v2+file'

};

$.ajax({
  url: '/loans/{loanAccountId}/templates/{templateId}/pdf',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+file'
}

result = RestClient.get '/loans/{loanAccountId}/templates/{templateId}/pdf',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+file'
}

r = requests.get('/loans/{loanAccountId}/templates/{templateId}/pdf', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+file',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/loans/{loanAccountId}/templates/{templateId}/pdf', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loans/{loanAccountId}/templates/{templateId}/pdf");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+file"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/loans/{loanAccountId}/templates/{templateId}/pdf", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /loans/{loanAccountId}/templates/{templateId}/pdf

Download loan account document PDF

Parameters

Name Type Description In
loanAccountId (required) string The ID or encoded key of the loan account. path
templateId (required) string The ID of the loan product template. path
startDate string(date) The first date to consider when the document contains a list of transactions. Required when the document contains a transaction history. query
endDate string(date) The last date to consider when the document contains a list of transactions. Required when the document contains a transaction history. query

Example responses

200 Response

Responses

Status Meaning Description Schema
200 OK PDF of the loan account document returned. string
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan account or template not found. ErrorResponse

Response Headers

Status Header Type Format Description
200 Content-Disposition string "The format is - attachment; filename="{fileName}.extension"";

Loan Products

When working with products via API we suggest the following approach:

  1. Create or amend the product using the Mambu UI following the Setting up New Loan Products or Managing Loan Products articles in our User Guide.
  2. Get the current product configuration by making a GET request and saving the response in a JSON file.
  3. Edit the JSON file, including removing any fields where the value will be generated by the system, for example, creationDate, lastModifiedDate and encodedkey.
  4. Use the PUT or POST API endpoints to create or update the product configuration.

We recommend using Git as a version control system to track changes to your product configurations. Using a Git hosting provider such as GitHub or GitLab will allow you to create a robust workflow around your product configuration files including retaining a full history of changes, the ability to collaborate and comment and allow for peer reviews and sign-offs before changes are finalised.

getById (Loan Products)

Code samples

# You can also use wget
curl -X GET /loanproducts/{loanProductId} \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /loanproducts/{loanProductId} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/loanproducts/{loanProductId}',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/loanproducts/{loanProductId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/loanproducts/{loanProductId}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/loanproducts/{loanProductId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loanproducts/{loanProductId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/loanproducts/{loanProductId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /loanproducts/{loanProductId}

Get loan product

Parameters

Name Type Description In
loanProductId (required) string The ID or encoded key of the loan product to be returned. path
detailsLevel string The level of details to return: FULL means the full details of the object will be returned (custom field values, address, contact info, or any other related objects) and BASIC will return only the first level elements of the object. query

Enumerated Values

Parameter Value
detailsLevel BASIC
detailsLevel FULL

Example responses

200 Response

{
  "accountLinkSettings": {
    "enabled": true,
    "linkableDepositProductKey": "string",
    "linkedAccountOptions": [
      "AUTO_LINK_ACCOUNTS"
    ],
    "settlementMethod": "FULL_DUE_AMOUNTS"
  },
  "accountingSettings": {
    "accountingMethod": "NONE",
    "accountingRules": [
      {
        "encodedKey": "string",
        "financialResource": "PORTFOLIO_CONTROL",
        "glAccountKey": "string",
        "transactionChannelKey": "string"
      }
    ],
    "interestAccrualCalculation": "NONE",
    "interestAccruedAccountingMethod": "NONE"
  },
  "adjustInterestForFirstInstallment": true,
  "adjustTotalDueForInstallmentsWithDifferentInterval": true,
  "allowCustomRepaymentAllocation": true,
  "arrearsSettings": {
    "dateCalculationMethod": "ACCOUNT_FIRST_WENT_TO_ARREARS",
    "encodedKey": "string",
    "monthlyToleranceDay": 0,
    "nonWorkingDaysMethod": "INCLUDED",
    "toleranceCalculationMethod": "ARREARS_TOLERANCE_PERIOD",
    "toleranceFloorAmount": 0,
    "tolerancePercentageOfOutstandingPrincipal": {
      "defaultValue": 0,
      "maxValue": 0,
      "minValue": 0
    },
    "tolerancePeriod": {
      "defaultValue": 0,
      "encodedKey": "string",
      "maxValue": 0,
      "minValue": 0
    }
  },
  "availabilitySettings": {
    "availableFor": [
      "INDIVIDUALS"
    ],
    "branchSettings": {
      "availableProductBranches": [
        "string"
      ],
      "forAllBranches": true
    }
  },
  "category": "PERSONAL_LENDING",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "creditArrangementSettings": {
    "creditArrangementRequirement": "OPTIONAL"
  },
  "currency": {
    "code": "AED",
    "currencyCode": "string"
  },
  "encodedKey": "string",
  "feesSettings": {
    "allowArbitraryFees": true,
    "fees": [
      {
        "accountingRules": [
          {
            "encodedKey": "string",
            "financialResource": "PORTFOLIO_CONTROL",
            "glAccountKey": "string",
            "transactionChannelKey": "string"
          }
        ],
        "amortizationSettings": {
          "amortizationProfile": "NONE",
          "encodedKey": "string",
          "feeAmortizationUponRescheduleRefinanceOption": "END_AMORTIZATION_ON_THE_ORIGINAL_ACCOUNT",
          "frequency": "ACCOUNT_INSTALLMENTS_DUE_DATES",
          "intervalCount": 0,
          "intervalType": "PREDEFINED_INTERVALS",
          "periodCount": 0,
          "periodUnit": "DAYS"
        },
        "amount": 0,
        "amountCalculationFunctionName": "string",
        "amountCalculationMethod": "FLAT",
        "applyDateMethod": "MONTHLY_FROM_ACTIVATION",
        "creationDate": "2016-09-06T13:37:50+03:00",
        "defaultFeeRate": 0,
        "encodedKey": "string",
        "feeApplication": "REQUIRED",
        "id": "string",
        "interestBearing": true,
        "lastModifiedDate": "2016-09-06T13:37:50+03:00",
        "name": "string",
        "percentageAmount": 0,
        "scheduleAllocationMethod": "ON_INSTALLMENT",
        "state": "ACTIVE",
        "taxSettings": {
          "taxableCalculationMethod": "DEFAULT"
        },
        "trigger": "MANUAL"
      }
    ]
  },
  "fundingSettings": {
    "enabled": true,
    "funderInterestCommission": {
      "defaultValue": 0,
      "encodedKey": "string",
      "maxValue": 0,
      "minValue": 0
    },
    "funderInterestCommissionAllocationType": "PERCENTAGE_OF_LOAN_FUNDING",
    "lockFundsAtApproval": true,
    "organizationInterestCommission": {
      "defaultValue": 0,
      "encodedKey": "string",
      "maxValue": 0,
      "minValue": 0
    },
    "requiredFunds": 0
  },
  "gracePeriodSettings": {
    "gracePeriod": {
      "defaultValue": 0,
      "encodedKey": "string",
      "maxValue": 0,
      "minValue": 0
    },
    "gracePeriodType": "NONE"
  },
  "id": "string",
  "interestSettings": {
    "accrueLateInterest": true,
    "compoundingFrequency": "DAILY",
    "daysInYear": "ACTUAL_365_FIXED",
    "decoupleInterestFromArrears": true,
    "indexRateSettings": {
      "accrueInterestAfterMaturity": true,
      "allowNegativeInterestRate": true,
      "encodedKey": "string",
      "indexSourceKey": "string",
      "interestChargeFrequency": "ANNUALIZED",
      "interestChargeFrequencyCount": 0,
      "interestRate": {
        "defaultValue": 0,
        "maxValue": 0,
        "minValue": 0
      },
      "interestRateCeilingValue": 0,
      "interestRateFloorValue": 0,
      "interestRateReviewCount": 0,
      "interestRateReviewUnit": "DAYS",
      "interestRateSource": "FIXED_INTEREST_RATE",
      "interestRateTerms": "FIXED",
      "interestRateTiers": [
        {
          "encodedKey": "string",
          "endingBalance": 0,
          "interestRate": 0
        }
      ]
    },
    "interestApplicationDays": {
      "daysInMonth": [
        0
      ],
      "shortMonthHandlingMethod": "LAST_DAY_IN_MONTH"
    },
    "interestApplicationMethod": "AFTER_DISBURSEMENT",
    "interestBalanceCalculationMethod": "ONLY_PRINCIPAL",
    "interestCalculationMethod": "FLAT",
    "interestRateSettings": [
      {
        "encodedKey": "string",
        "indexSourceKey": "string",
        "interestRate": {
          "defaultValue": 0,
          "maxValue": 0,
          "minValue": 0
        },
        "interestRateCeilingValue": 0,
        "interestRateFloorValue": 0,
        "interestRateReviewCount": 0,
        "interestRateReviewUnit": "DAYS",
        "interestRateSource": "FIXED_INTEREST_RATE"
      }
    ],
    "interestType": "SIMPLE_INTEREST",
    "pmtAdjustmentThreshold": {
      "method": "WORKING_DAYS",
      "numberOfDays": 0
    },
    "scheduleInterestDaysCountMethod": "REPAYMENT_PERIODICITY"
  },
  "internalControls": {
    "dormancyPeriodDays": 0,
    "fourEyesPrinciple": {
      "activeForLoanApproval": true
    },
    "lockSettings": {
      "cappingConstraintType": "SOFT_CAP",
      "cappingMethod": "OUTSTANDING_PRINCIPAL_PERCENTAGE",
      "cappingPercentage": 0,
      "lockPeriodDays": 0
    }
  },
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "loanAmountSettings": {
    "loanAmount": {
      "defaultValue": 0,
      "encodedKey": "string",
      "maxValue": 0,
      "minValue": 0
    },
    "trancheSettings": {
      "maxNumberOfTranches": 0
    }
  },
  "name": "string",
  "newAccountSettings": {
    "accountInitialState": "PARTIAL_APPLICATION",
    "idGeneratorType": "INCREMENTAL_NUMBER",
    "idPattern": "string"
  },
  "notes": "string",
  "offsetSettings": {
    "allowOffset": true
  },
  "paymentSettings": {
    "amortizationMethod": "STANDARD_PAYMENTS",
    "latePaymentsRecalculationMethod": "OVERDUE_INSTALLMENTS_INCREASE",
    "paymentMethod": "HORIZONTAL",
    "prepaymentSettings": {
      "applyInterestOnPrepaymentMethod": "AUTOMATIC",
      "elementsRecalculationMethod": "PRINCIPAL_EXPECTED_FIXED",
      "ercFreeAllowance": 0,
      "futurePaymentsAcceptance": "NO_FUTURE_PAYMENTS",
      "prepaymentAcceptance": "ACCEPT_PREPAYMENTS",
      "prepaymentRecalculationMethod": "NO_RECALCULATION",
      "principalPaidInstallmentStatus": "PARTIALLY_PAID"
    },
    "principalPaymentSettings": {
      "amount": {
        "defaultValue": 0,
        "encodedKey": "string",
        "maxValue": 0,
        "minValue": 0
      },
      "defaultPrincipalRepaymentInterval": 0,
      "encodedKey": "string",
      "includeFeesInFloorAmount": true,
      "includeInterestInFloorAmount": true,
      "percentage": {
        "defaultValue": 0,
        "encodedKey": "string",
        "maxValue": 0,
        "minValue": 0
      },
      "principalCeilingValue": 0,
      "principalFloorValue": 0,
      "principalPaymentMethod": "FLAT",
      "totalDueAmountFloor": 0,
      "totalDuePayment": "FLAT"
    },
    "repaymentAllocationOrder": [
      "PRINCIPAL"
    ]
  },
  "penaltySettings": {
    "loanPenaltyCalculationMethod": "NONE",
    "loanPenaltyGracePeriod": 0,
    "penaltyRate": {
      "defaultValue": 0,
      "encodedKey": "string",
      "maxValue": 0,
      "minValue": 0
    }
  },
  "redrawSettings": {
    "allowRedraw": true
  },
  "scheduleSettings": {
    "amortizationPeriod": {
      "defaultValue": 0,
      "maxValue": 0,
      "minValue": 0
    },
    "billingCycles": {
      "enabled": true,
      "startDays": [
        0
      ]
    },
    "defaultRepaymentPeriodCount": 0,
    "firstRepaymentDueDateOffset": {
      "defaultValue": 0,
      "encodedKey": "string",
      "maxValue": 0,
      "minValue": 0
    },
    "fixedDaysOfMonth": [
      0
    ],
    "interestAccrualSince": "DISBURSEMENT",
    "keepInstallmentsEqualIfLongFirstPeriod": true,
    "numInstallments": {
      "defaultValue": 0,
      "encodedKey": "string",
      "maxValue": 0,
      "minValue": 0
    },
    "previewSchedule": {
      "numberOfPreviewedInstalments": 0,
      "previewScheduleEnabled": true
    },
    "repaymentMethod": "AMOUNT",
    "repaymentPeriodUnit": "DAYS",
    "repaymentReschedulingMethod": "NONE",
    "repaymentScheduleEditOptions": [
      "ADJUST_PAYMENT_DATES"
    ],
    "repaymentScheduleMethod": "NONE",
    "roundingSettings": {
      "repaymentCurrencyRounding": "NO_ROUNDING",
      "repaymentElementsRoundingMethod": "NO_ROUNDING",
      "roundingRepaymentScheduleMethod": "NO_ROUNDING"
    },
    "scheduleDueDatesMethod": "INTERVAL",
    "scheduleEditOptionDetails": {
      "paymentHolidaysSettings": {
        "paymentHolidaysLoanTermOption": "EXTEND_LOAN_TERM"
      }
    },
    "shortMonthHandlingMethod": "LAST_DAY_IN_MONTH"
  },
  "securitySettings": {
    "isCollateralEnabled": true,
    "isGuarantorsEnabled": true,
    "requiredGuaranties": 0
  },
  "state": "ACTIVE",
  "taxSettings": {
    "taxCalculationMethod": "INCLUSIVE",
    "taxSourceKey": "string",
    "taxesOnFeesEnabled": true,
    "taxesOnInterestEnabled": true,
    "taxesOnPenaltyEnabled": true
  },
  "templates": [
    {
      "creationDate": "2016-09-06T13:37:50+03:00",
      "encodedKey": "string",
      "lastModifiedDate": "2016-09-06T13:37:50+03:00",
      "name": "string",
      "type": "ACCOUNT"
    }
  ],
  "type": "FIXED_TERM_LOAN",
  "useFeeIncludedInPMT": true
}

Responses

Status Meaning Description Schema
200 OK Loan product returned. LoanProduct
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan product not found. ErrorResponse

update (Loan Products)

Code samples

# You can also use wget
curl -X PUT /loanproducts/{loanProductId} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json'

PUT /loanproducts/{loanProductId} HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/loanproducts/{loanProductId}',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.put '/loanproducts/{loanProductId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.put('/loanproducts/{loanProductId}', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PUT','/loanproducts/{loanProductId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loanproducts/{loanProductId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/loanproducts/{loanProductId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /loanproducts/{loanProductId}

Update loan product

Body parameter

{
  "accountLinkSettings": {
    "enabled": true,
    "linkableDepositProductKey": "string",
    "linkedAccountOptions": [
      "AUTO_LINK_ACCOUNTS"
    ],
    "settlementMethod": "FULL_DUE_AMOUNTS"
  },
  "accountingSettings": {
    "accountingMethod": "NONE",
    "accountingRules": [
      {
        "financialResource": "PORTFOLIO_CONTROL",
        "glAccountKey": "string",
        "transactionChannelKey": "string"
      }
    ],
    "interestAccrualCalculation": "NONE",
    "interestAccruedAccountingMethod": "NONE"
  },
  "adjustInterestForFirstInstallment": true,
  "adjustTotalDueForInstallmentsWithDifferentInterval": true,
  "allowCustomRepaymentAllocation": true,
  "arrearsSettings": {
    "dateCalculationMethod": "ACCOUNT_FIRST_WENT_TO_ARREARS",
    "monthlyToleranceDay": 0,
    "nonWorkingDaysMethod": "INCLUDED",
    "toleranceCalculationMethod": "ARREARS_TOLERANCE_PERIOD",
    "toleranceFloorAmount": 0,
    "tolerancePercentageOfOutstandingPrincipal": {
      "defaultValue": 0,
      "maxValue": 0,
      "minValue": 0
    },
    "tolerancePeriod": {
      "defaultValue": 0,
      "maxValue": 0,
      "minValue": 0
    }
  },
  "availabilitySettings": {
    "availableFor": [
      "INDIVIDUALS"
    ],
    "branchSettings": {
      "availableProductBranches": [
        "string"
      ],
      "forAllBranches": true
    }
  },
  "category": "PERSONAL_LENDING",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "creditArrangementSettings": {
    "creditArrangementRequirement": "OPTIONAL"
  },
  "currency": {
    "code": "AED",
    "currencyCode": "string"
  },
  "feesSettings": {
    "allowArbitraryFees": true,
    "fees": [
      {
        "accountingRules": [
          {
            "financialResource": "PORTFOLIO_CONTROL",
            "glAccountKey": "string",
            "transactionChannelKey": "string"
          }
        ],
        "amortizationSettings": {
          "amortizationProfile": "NONE",
          "feeAmortizationUponRescheduleRefinanceOption": "END_AMORTIZATION_ON_THE_ORIGINAL_ACCOUNT",
          "frequency": "ACCOUNT_INSTALLMENTS_DUE_DATES",
          "intervalCount": 0,
          "intervalType": "PREDEFINED_INTERVALS",
          "periodCount": 0,
          "periodUnit": "DAYS"
        },
        "amount": 0,
        "amountCalculationFunctionName": "string",
        "amountCalculationMethod": "FLAT",
        "applyDateMethod": "MONTHLY_FROM_ACTIVATION",
        "creationDate": "2016-09-06T13:37:50+03:00",
        "defaultFeeRate": 0,
        "feeApplication": "REQUIRED",
        "id": "string",
        "interestBearing": true,
        "lastModifiedDate": "2016-09-06T13:37:50+03:00",
        "name": "string",
        "percentageAmount": 0,
        "scheduleAllocationMethod": "ON_INSTALLMENT",
        "state": "ACTIVE",
        "taxSettings": {
          "taxableCalculationMethod": "DEFAULT"
        },
        "trigger": "MANUAL"
      }
    ]
  },
  "fundingSettings": {
    "enabled": true,
    "funderInterestCommission": {
      "defaultValue": 0,
      "maxValue": 0,
      "minValue": 0
    },
    "funderInterestCommissionAllocationType": "PERCENTAGE_OF_LOAN_FUNDING",
    "lockFundsAtApproval": true,
    "organizationInterestCommission": {
      "defaultValue": 0,
      "maxValue": 0,
      "minValue": 0
    },
    "requiredFunds": 0
  },
  "gracePeriodSettings": {
    "gracePeriod": {
      "defaultValue": 0,
      "maxValue": 0,
      "minValue": 0
    },
    "gracePeriodType": "NONE"
  },
  "id": "string",
  "interestSettings": {
    "accrueLateInterest": true,
    "compoundingFrequency": "DAILY",
    "daysInYear": "ACTUAL_365_FIXED",
    "decoupleInterestFromArrears": true,
    "indexRateSettings": {
      "accrueInterestAfterMaturity": true,
      "allowNegativeInterestRate": true,
      "indexSourceKey": "string",
      "interestChargeFrequency": "ANNUALIZED",
      "interestChargeFrequencyCount": 0,
      "interestRate": {
        "defaultValue": 0,
        "maxValue": 0,
        "minValue": 0
      },
      "interestRateCeilingValue": 0,
      "interestRateFloorValue": 0,
      "interestRateReviewCount": 0,
      "interestRateReviewUnit": "DAYS",
      "interestRateSource": "FIXED_INTEREST_RATE",
      "interestRateTerms": "FIXED",
      "interestRateTiers": [
        {
          "endingBalance": 0,
          "interestRate": 0
        }
      ]
    },
    "interestApplicationDays": {
      "daysInMonth": [
        0
      ],
      "shortMonthHandlingMethod": "LAST_DAY_IN_MONTH"
    },
    "interestApplicationMethod": "AFTER_DISBURSEMENT",
    "interestBalanceCalculationMethod": "ONLY_PRINCIPAL",
    "interestCalculationMethod": "FLAT",
    "interestRateSettings": [
      {
        "indexSourceKey": "string",
        "interestRate": {
          "defaultValue": 0,
          "maxValue": 0,
          "minValue": 0
        },
        "interestRateCeilingValue": 0,
        "interestRateFloorValue": 0,
        "interestRateReviewCount": 0,
        "interestRateReviewUnit": "DAYS",
        "interestRateSource": "FIXED_INTEREST_RATE"
      }
    ],
    "interestType": "SIMPLE_INTEREST",
    "pmtAdjustmentThreshold": {
      "method": "WORKING_DAYS",
      "numberOfDays": 0
    },
    "scheduleInterestDaysCountMethod": "REPAYMENT_PERIODICITY"
  },
  "internalControls": {
    "dormancyPeriodDays": 0,
    "fourEyesPrinciple": {
      "activeForLoanApproval": true
    },
    "lockSettings": {
      "cappingConstraintType": "SOFT_CAP",
      "cappingMethod": "OUTSTANDING_PRINCIPAL_PERCENTAGE",
      "cappingPercentage": 0,
      "lockPeriodDays": 0
    }
  },
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "loanAmountSettings": {
    "loanAmount": {
      "defaultValue": 0,
      "maxValue": 0,
      "minValue": 0
    },
    "trancheSettings": {
      "maxNumberOfTranches": 0
    }
  },
  "name": "string",
  "newAccountSettings": {
    "accountInitialState": "PARTIAL_APPLICATION",
    "idGeneratorType": "INCREMENTAL_NUMBER",
    "idPattern": "string"
  },
  "notes": "string",
  "offsetSettings": {
    "allowOffset": true
  },
  "paymentSettings": {
    "amortizationMethod": "STANDARD_PAYMENTS",
    "latePaymentsRecalculationMethod": "OVERDUE_INSTALLMENTS_INCREASE",
    "paymentMethod": "HORIZONTAL",
    "prepaymentSettings": {
      "applyInterestOnPrepaymentMethod": "AUTOMATIC",
      "elementsRecalculationMethod": "PRINCIPAL_EXPECTED_FIXED",
      "ercFreeAllowance": 0,
      "futurePaymentsAcceptance": "NO_FUTURE_PAYMENTS",
      "prepaymentAcceptance": "ACCEPT_PREPAYMENTS",
      "prepaymentRecalculationMethod": "NO_RECALCULATION",
      "principalPaidInstallmentStatus": "PARTIALLY_PAID"
    },
    "principalPaymentSettings": {
      "amount": {
        "defaultValue": 0,
        "maxValue": 0,
        "minValue": 0
      },
      "defaultPrincipalRepaymentInterval": 0,
      "includeFeesInFloorAmount": true,
      "includeInterestInFloorAmount": true,
      "percentage": {
        "defaultValue": 0,
        "maxValue": 0,
        "minValue": 0
      },
      "principalCeilingValue": 0,
      "principalFloorValue": 0,
      "principalPaymentMethod": "FLAT",
      "totalDueAmountFloor": 0,
      "totalDuePayment": "FLAT"
    },
    "repaymentAllocationOrder": [
      "PRINCIPAL"
    ]
  },
  "penaltySettings": {
    "loanPenaltyCalculationMethod": "NONE",
    "loanPenaltyGracePeriod": 0,
    "penaltyRate": {
      "defaultValue": 0,
      "maxValue": 0,
      "minValue": 0
    }
  },
  "redrawSettings": {
    "allowRedraw": true
  },
  "scheduleSettings": {
    "amortizationPeriod": {
      "defaultValue": 0,
      "maxValue": 0,
      "minValue": 0
    },
    "billingCycles": {
      "enabled": true,
      "startDays": [
        0
      ]
    },
    "defaultRepaymentPeriodCount": 0,
    "firstRepaymentDueDateOffset": {
      "defaultValue": 0,
      "maxValue": 0,
      "minValue": 0
    },
    "fixedDaysOfMonth": [
      0
    ],
    "interestAccrualSince": "DISBURSEMENT",
    "keepInstallmentsEqualIfLongFirstPeriod": true,
    "numInstallments": {
      "defaultValue": 0,
      "maxValue": 0,
      "minValue": 0
    },
    "previewSchedule": {
      "numberOfPreviewedInstalments": 0,
      "previewScheduleEnabled": true
    },
    "repaymentMethod": "AMOUNT",
    "repaymentPeriodUnit": "DAYS",
    "repaymentReschedulingMethod": "NONE",
    "repaymentScheduleEditOptions": [
      "ADJUST_PAYMENT_DATES"
    ],
    "repaymentScheduleMethod": "NONE",
    "roundingSettings": {
      "repaymentCurrencyRounding": "NO_ROUNDING",
      "repaymentElementsRoundingMethod": "NO_ROUNDING",
      "roundingRepaymentScheduleMethod": "NO_ROUNDING"
    },
    "scheduleDueDatesMethod": "INTERVAL",
    "scheduleEditOptionDetails": {
      "paymentHolidaysSettings": {
        "paymentHolidaysLoanTermOption": "EXTEND_LOAN_TERM"
      }
    },
    "shortMonthHandlingMethod": "LAST_DAY_IN_MONTH"
  },
  "securitySettings": {
    "isCollateralEnabled": true,
    "isGuarantorsEnabled": true,
    "requiredGuaranties": 0
  },
  "state": "ACTIVE",
  "taxSettings": {
    "taxCalculationMethod": "INCLUSIVE",
    "taxSourceKey": "string",
    "taxesOnFeesEnabled": true,
    "taxesOnInterestEnabled": true,
    "taxesOnPenaltyEnabled": true
  },
  "templates": [
    {
      "name": "string",
      "type": "ACCOUNT"
    }
  ],
  "type": "FIXED_TERM_LOAN",
  "useFeeIncludedInPMT": true
}

Parameters

Name Type Description In
loanProductId (required) string The ID or encoded key of the loan product to be updated. path
body (required) LoanProduct Loan product to be updated. body

Example responses

200 Response

{
  "accountLinkSettings": {
    "enabled": true,
    "linkableDepositProductKey": "string",
    "linkedAccountOptions": [
      "AUTO_LINK_ACCOUNTS"
    ],
    "settlementMethod": "FULL_DUE_AMOUNTS"
  },
  "accountingSettings": {
    "accountingMethod": "NONE",
    "accountingRules": [
      {
        "encodedKey": "string",
        "financialResource": "PORTFOLIO_CONTROL",
        "glAccountKey": "string",
        "transactionChannelKey": "string"
      }
    ],
    "interestAccrualCalculation": "NONE",
    "interestAccruedAccountingMethod": "NONE"
  },
  "adjustInterestForFirstInstallment": true,
  "adjustTotalDueForInstallmentsWithDifferentInterval": true,
  "allowCustomRepaymentAllocation": true,
  "arrearsSettings": {
    "dateCalculationMethod": "ACCOUNT_FIRST_WENT_TO_ARREARS",
    "encodedKey": "string",
    "monthlyToleranceDay": 0,
    "nonWorkingDaysMethod": "INCLUDED",
    "toleranceCalculationMethod": "ARREARS_TOLERANCE_PERIOD",
    "toleranceFloorAmount": 0,
    "tolerancePercentageOfOutstandingPrincipal": {
      "defaultValue": 0,
      "maxValue": 0,
      "minValue": 0
    },
    "tolerancePeriod": {
      "defaultValue": 0,
      "encodedKey": "string",
      "maxValue": 0,
      "minValue": 0
    }
  },
  "availabilitySettings": {
    "availableFor": [
      "INDIVIDUALS"
    ],
    "branchSettings": {
      "availableProductBranches": [
        "string"
      ],
      "forAllBranches": true
    }
  },
  "category": "PERSONAL_LENDING",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "creditArrangementSettings": {
    "creditArrangementRequirement": "OPTIONAL"
  },
  "currency": {
    "code": "AED",
    "currencyCode": "string"
  },
  "encodedKey": "string",
  "feesSettings": {
    "allowArbitraryFees": true,
    "fees": [
      {
        "accountingRules": [
          {
            "encodedKey": "string",
            "financialResource": "PORTFOLIO_CONTROL",
            "glAccountKey": "string",
            "transactionChannelKey": "string"
          }
        ],
        "amortizationSettings": {
          "amortizationProfile": "NONE",
          "encodedKey": "string",
          "feeAmortizationUponRescheduleRefinanceOption": "END_AMORTIZATION_ON_THE_ORIGINAL_ACCOUNT",
          "frequency": "ACCOUNT_INSTALLMENTS_DUE_DATES",
          "intervalCount": 0,
          "intervalType": "PREDEFINED_INTERVALS",
          "periodCount": 0,
          "periodUnit": "DAYS"
        },
        "amount": 0,
        "amountCalculationFunctionName": "string",
        "amountCalculationMethod": "FLAT",
        "applyDateMethod": "MONTHLY_FROM_ACTIVATION",
        "creationDate": "2016-09-06T13:37:50+03:00",
        "defaultFeeRate": 0,
        "encodedKey": "string",
        "feeApplication": "REQUIRED",
        "id": "string",
        "interestBearing": true,
        "lastModifiedDate": "2016-09-06T13:37:50+03:00",
        "name": "string",
        "percentageAmount": 0,
        "scheduleAllocationMethod": "ON_INSTALLMENT",
        "state": "ACTIVE",
        "taxSettings": {
          "taxableCalculationMethod": "DEFAULT"
        },
        "trigger": "MANUAL"
      }
    ]
  },
  "fundingSettings": {
    "enabled": true,
    "funderInterestCommission": {
      "defaultValue": 0,
      "encodedKey": "string",
      "maxValue": 0,
      "minValue": 0
    },
    "funderInterestCommissionAllocationType": "PERCENTAGE_OF_LOAN_FUNDING",
    "lockFundsAtApproval": true,
    "organizationInterestCommission": {
      "defaultValue": 0,
      "encodedKey": "string",
      "maxValue": 0,
      "minValue": 0
    },
    "requiredFunds": 0
  },
  "gracePeriodSettings": {
    "gracePeriod": {
      "defaultValue": 0,
      "encodedKey": "string",
      "maxValue": 0,
      "minValue": 0
    },
    "gracePeriodType": "NONE"
  },
  "id": "string",
  "interestSettings": {
    "accrueLateInterest": true,
    "compoundingFrequency": "DAILY",
    "daysInYear": "ACTUAL_365_FIXED",
    "decoupleInterestFromArrears": true,
    "indexRateSettings": {
      "accrueInterestAfterMaturity": true,
      "allowNegativeInterestRate": true,
      "encodedKey": "string",
      "indexSourceKey": "string",
      "interestChargeFrequency": "ANNUALIZED",
      "interestChargeFrequencyCount": 0,
      "interestRate": {
        "defaultValue": 0,
        "maxValue": 0,
        "minValue": 0
      },
      "interestRateCeilingValue": 0,
      "interestRateFloorValue": 0,
      "interestRateReviewCount": 0,
      "interestRateReviewUnit": "DAYS",
      "interestRateSource": "FIXED_INTEREST_RATE",
      "interestRateTerms": "FIXED",
      "interestRateTiers": [
        {
          "encodedKey": "string",
          "endingBalance": 0,
          "interestRate": 0
        }
      ]
    },
    "interestApplicationDays": {
      "daysInMonth": [
        0
      ],
      "shortMonthHandlingMethod": "LAST_DAY_IN_MONTH"
    },
    "interestApplicationMethod": "AFTER_DISBURSEMENT",
    "interestBalanceCalculationMethod": "ONLY_PRINCIPAL",
    "interestCalculationMethod": "FLAT",
    "interestRateSettings": [
      {
        "encodedKey": "string",
        "indexSourceKey": "string",
        "interestRate": {
          "defaultValue": 0,
          "maxValue": 0,
          "minValue": 0
        },
        "interestRateCeilingValue": 0,
        "interestRateFloorValue": 0,
        "interestRateReviewCount": 0,
        "interestRateReviewUnit": "DAYS",
        "interestRateSource": "FIXED_INTEREST_RATE"
      }
    ],
    "interestType": "SIMPLE_INTEREST",
    "pmtAdjustmentThreshold": {
      "method": "WORKING_DAYS",
      "numberOfDays": 0
    },
    "scheduleInterestDaysCountMethod": "REPAYMENT_PERIODICITY"
  },
  "internalControls": {
    "dormancyPeriodDays": 0,
    "fourEyesPrinciple": {
      "activeForLoanApproval": true
    },
    "lockSettings": {
      "cappingConstraintType": "SOFT_CAP",
      "cappingMethod": "OUTSTANDING_PRINCIPAL_PERCENTAGE",
      "cappingPercentage": 0,
      "lockPeriodDays": 0
    }
  },
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "loanAmountSettings": {
    "loanAmount": {
      "defaultValue": 0,
      "encodedKey": "string",
      "maxValue": 0,
      "minValue": 0
    },
    "trancheSettings": {
      "maxNumberOfTranches": 0
    }
  },
  "name": "string",
  "newAccountSettings": {
    "accountInitialState": "PARTIAL_APPLICATION",
    "idGeneratorType": "INCREMENTAL_NUMBER",
    "idPattern": "string"
  },
  "notes": "string",
  "offsetSettings": {
    "allowOffset": true
  },
  "paymentSettings": {
    "amortizationMethod": "STANDARD_PAYMENTS",
    "latePaymentsRecalculationMethod": "OVERDUE_INSTALLMENTS_INCREASE",
    "paymentMethod": "HORIZONTAL",
    "prepaymentSettings": {
      "applyInterestOnPrepaymentMethod": "AUTOMATIC",
      "elementsRecalculationMethod": "PRINCIPAL_EXPECTED_FIXED",
      "ercFreeAllowance": 0,
      "futurePaymentsAcceptance": "NO_FUTURE_PAYMENTS",
      "prepaymentAcceptance": "ACCEPT_PREPAYMENTS",
      "prepaymentRecalculationMethod": "NO_RECALCULATION",
      "principalPaidInstallmentStatus": "PARTIALLY_PAID"
    },
    "principalPaymentSettings": {
      "amount": {
        "defaultValue": 0,
        "encodedKey": "string",
        "maxValue": 0,
        "minValue": 0
      },
      "defaultPrincipalRepaymentInterval": 0,
      "encodedKey": "string",
      "includeFeesInFloorAmount": true,
      "includeInterestInFloorAmount": true,
      "percentage": {
        "defaultValue": 0,
        "encodedKey": "string",
        "maxValue": 0,
        "minValue": 0
      },
      "principalCeilingValue": 0,
      "principalFloorValue": 0,
      "principalPaymentMethod": "FLAT",
      "totalDueAmountFloor": 0,
      "totalDuePayment": "FLAT"
    },
    "repaymentAllocationOrder": [
      "PRINCIPAL"
    ]
  },
  "penaltySettings": {
    "loanPenaltyCalculationMethod": "NONE",
    "loanPenaltyGracePeriod": 0,
    "penaltyRate": {
      "defaultValue": 0,
      "encodedKey": "string",
      "maxValue": 0,
      "minValue": 0
    }
  },
  "redrawSettings": {
    "allowRedraw": true
  },
  "scheduleSettings": {
    "amortizationPeriod": {
      "defaultValue": 0,
      "maxValue": 0,
      "minValue": 0
    },
    "billingCycles": {
      "enabled": true,
      "startDays": [
        0
      ]
    },
    "defaultRepaymentPeriodCount": 0,
    "firstRepaymentDueDateOffset": {
      "defaultValue": 0,
      "encodedKey": "string",
      "maxValue": 0,
      "minValue": 0
    },
    "fixedDaysOfMonth": [
      0
    ],
    "interestAccrualSince": "DISBURSEMENT",
    "keepInstallmentsEqualIfLongFirstPeriod": true,
    "numInstallments": {
      "defaultValue": 0,
      "encodedKey": "string",
      "maxValue": 0,
      "minValue": 0
    },
    "previewSchedule": {
      "numberOfPreviewedInstalments": 0,
      "previewScheduleEnabled": true
    },
    "repaymentMethod": "AMOUNT",
    "repaymentPeriodUnit": "DAYS",
    "repaymentReschedulingMethod": "NONE",
    "repaymentScheduleEditOptions": [
      "ADJUST_PAYMENT_DATES"
    ],
    "repaymentScheduleMethod": "NONE",
    "roundingSettings": {
      "repaymentCurrencyRounding": "NO_ROUNDING",
      "repaymentElementsRoundingMethod": "NO_ROUNDING",
      "roundingRepaymentScheduleMethod": "NO_ROUNDING"
    },
    "scheduleDueDatesMethod": "INTERVAL",
    "scheduleEditOptionDetails": {
      "paymentHolidaysSettings": {
        "paymentHolidaysLoanTermOption": "EXTEND_LOAN_TERM"
      }
    },
    "shortMonthHandlingMethod": "LAST_DAY_IN_MONTH"
  },
  "securitySettings": {
    "isCollateralEnabled": true,
    "isGuarantorsEnabled": true,
    "requiredGuaranties": 0
  },
  "state": "ACTIVE",
  "taxSettings": {
    "taxCalculationMethod": "INCLUSIVE",
    "taxSourceKey": "string",
    "taxesOnFeesEnabled": true,
    "taxesOnInterestEnabled": true,
    "taxesOnPenaltyEnabled": true
  },
  "templates": [
    {
      "creationDate": "2016-09-06T13:37:50+03:00",
      "encodedKey": "string",
      "lastModifiedDate": "2016-09-06T13:37:50+03:00",
      "name": "string",
      "type": "ACCOUNT"
    }
  ],
  "type": "FIXED_TERM_LOAN",
  "useFeeIncludedInPMT": true
}

Responses

Status Meaning Description Schema
200 OK Loan product updated. LoanProduct
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan product not found. ErrorResponse

delete (Loan Products)

Code samples

# You can also use wget
curl -X DELETE /loanproducts/{loanProductId} \
  -H 'Accept: application/vnd.mambu.v2+json'

DELETE /loanproducts/{loanProductId} HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/loanproducts/{loanProductId}',
  method: 'delete',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.delete '/loanproducts/{loanProductId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.delete('/loanproducts/{loanProductId}', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('DELETE','/loanproducts/{loanProductId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loanproducts/{loanProductId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "/loanproducts/{loanProductId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /loanproducts/{loanProductId}

Delete loan product

Parameters

Name Type Description In
loanProductId (required) string The ID or encoded key of the loan product to be deleted. path

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
204 No Content Loan product deleted. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan product not found. ErrorResponse

patch (Loan Products)

Code samples

# You can also use wget
curl -X PATCH /loanproducts/{loanProductId} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json'

PATCH /loanproducts/{loanProductId} HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/loanproducts/{loanProductId}',
  method: 'patch',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.patch '/loanproducts/{loanProductId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.patch('/loanproducts/{loanProductId}', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PATCH','/loanproducts/{loanProductId}', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loanproducts/{loanProductId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PATCH");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "/loanproducts/{loanProductId}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PATCH /loanproducts/{loanProductId}

Partially update loan product

Body parameter

[
  {
    "from": "string",
    "op": "ADD",
    "path": "string",
    "value": {}
  }
]

Parameters

Name Type Description In
loanProductId (required) string The ID or encoded key of the loan product to be updated. path
body (required) PatchOperation Patch operations to be applied to a resource. body

Example responses

400 Response

{
  "errors": [
    {
      "errorCode": 0,
      "errorReason": "SUCCESS",
      "errorSource": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
204 No Content Loan product updated. None
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse
404 Not Found Loan product not found. ErrorResponse

getAll (Loan Products)

Code samples

# You can also use wget
curl -X GET /loanproducts \
  -H 'Accept: application/vnd.mambu.v2+json'

GET /loanproducts HTTP/1.1

Accept: application/vnd.mambu.v2+json

var headers = {
  'Accept':'application/vnd.mambu.v2+json'

};

$.ajax({
  url: '/loanproducts',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+json'
}

result = RestClient.get '/loanproducts',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+json'
}

r = requests.get('/loanproducts', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+json',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/loanproducts', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loanproducts");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+json"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/loanproducts", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /loanproducts

Get loan products

Parameters

Name Type Description In
offset integer(int32) Pagination, index to start searching at when retrieving elements, used in combination with limit to paginate results query
limit integer(int32) Pagination, the number of elements to retrieve, used in combination with offset to paginate results query
paginationDetails string Flag specifying whether the pagination details should be provided in response headers. Please note that by default it is disabled (OFF), in order to improve the performance of the APIs query
sortBy string The criteria based on which the records will be sorted. Expected format is , for example, sortBy = field1:ASC,field2:DESC.
Only the following fields can be used: ID, productName, creationDate, lastModifiedDate
Default sorting is done by creationDate:DESC
query

Enumerated Values

Parameter Value
paginationDetails ON
paginationDetails OFF

Example responses

200 Response

[
  {
    "accountLinkSettings": {
      "enabled": true,
      "linkableDepositProductKey": "string",
      "linkedAccountOptions": [
        "AUTO_LINK_ACCOUNTS"
      ],
      "settlementMethod": "FULL_DUE_AMOUNTS"
    },
    "accountingSettings": {
      "accountingMethod": "NONE",
      "accountingRules": [
        {
          "encodedKey": "string",
          "financialResource": "PORTFOLIO_CONTROL",
          "glAccountKey": "string",
          "transactionChannelKey": "string"
        }
      ],
      "interestAccrualCalculation": "NONE",
      "interestAccruedAccountingMethod": "NONE"
    },
    "adjustInterestForFirstInstallment": true,
    "adjustTotalDueForInstallmentsWithDifferentInterval": true,
    "allowCustomRepaymentAllocation": true,
    "arrearsSettings": {
      "dateCalculationMethod": "ACCOUNT_FIRST_WENT_TO_ARREARS",
      "encodedKey": "string",
      "monthlyToleranceDay": 0,
      "nonWorkingDaysMethod": "INCLUDED",
      "toleranceCalculationMethod": "ARREARS_TOLERANCE_PERIOD",
      "toleranceFloorAmount": 0,
      "tolerancePercentageOfOutstandingPrincipal": {
        "defaultValue": 0,
        "maxValue": 0,
        "minValue": 0
      },
      "tolerancePeriod": {
        "defaultValue": 0,
        "encodedKey": "string",
        "maxValue": 0,
        "minValue": 0
      }
    },
    "availabilitySettings": {
      "availableFor": [
        "INDIVIDUALS"
      ],
      "branchSettings": {
        "availableProductBranches": [
          "string"
        ],
        "forAllBranches": true
      }
    },
    "category": "PERSONAL_LENDING",
    "creationDate": "2016-09-06T13:37:50+03:00",
    "creditArrangementSettings": {
      "creditArrangementRequirement": "OPTIONAL"
    },
    "currency": {
      "code": "AED",
      "currencyCode": "string"
    },
    "encodedKey": "string",
    "feesSettings": {
      "allowArbitraryFees": true,
      "fees": [
        {
          "accountingRules": [
            {
              "encodedKey": "string",
              "financialResource": "PORTFOLIO_CONTROL",
              "glAccountKey": "string",
              "transactionChannelKey": "string"
            }
          ],
          "amortizationSettings": {
            "amortizationProfile": "NONE",
            "encodedKey": "string",
            "feeAmortizationUponRescheduleRefinanceOption": "END_AMORTIZATION_ON_THE_ORIGINAL_ACCOUNT",
            "frequency": "ACCOUNT_INSTALLMENTS_DUE_DATES",
            "intervalCount": 0,
            "intervalType": "PREDEFINED_INTERVALS",
            "periodCount": 0,
            "periodUnit": "DAYS"
          },
          "amount": 0,
          "amountCalculationFunctionName": "string",
          "amountCalculationMethod": "FLAT",
          "applyDateMethod": "MONTHLY_FROM_ACTIVATION",
          "creationDate": "2016-09-06T13:37:50+03:00",
          "defaultFeeRate": 0,
          "encodedKey": "string",
          "feeApplication": "REQUIRED",
          "id": "string",
          "interestBearing": true,
          "lastModifiedDate": "2016-09-06T13:37:50+03:00",
          "name": "string",
          "percentageAmount": 0,
          "scheduleAllocationMethod": "ON_INSTALLMENT",
          "state": "ACTIVE",
          "taxSettings": {
            "taxableCalculationMethod": "DEFAULT"
          },
          "trigger": "MANUAL"
        }
      ]
    },
    "fundingSettings": {
      "enabled": true,
      "funderInterestCommission": {
        "defaultValue": 0,
        "encodedKey": "string",
        "maxValue": 0,
        "minValue": 0
      },
      "funderInterestCommissionAllocationType": "PERCENTAGE_OF_LOAN_FUNDING",
      "lockFundsAtApproval": true,
      "organizationInterestCommission": {
        "defaultValue": 0,
        "encodedKey": "string",
        "maxValue": 0,
        "minValue": 0
      },
      "requiredFunds": 0
    },
    "gracePeriodSettings": {
      "gracePeriod": {
        "defaultValue": 0,
        "encodedKey": "string",
        "maxValue": 0,
        "minValue": 0
      },
      "gracePeriodType": "NONE"
    },
    "id": "string",
    "interestSettings": {
      "accrueLateInterest": true,
      "compoundingFrequency": "DAILY",
      "daysInYear": "ACTUAL_365_FIXED",
      "decoupleInterestFromArrears": true,
      "indexRateSettings": {
        "accrueInterestAfterMaturity": true,
        "allowNegativeInterestRate": true,
        "encodedKey": "string",
        "indexSourceKey": "string",
        "interestChargeFrequency": "ANNUALIZED",
        "interestChargeFrequencyCount": 0,
        "interestRate": {
          "defaultValue": 0,
          "maxValue": 0,
          "minValue": 0
        },
        "interestRateCeilingValue": 0,
        "interestRateFloorValue": 0,
        "interestRateReviewCount": 0,
        "interestRateReviewUnit": "DAYS",
        "interestRateSource": "FIXED_INTEREST_RATE",
        "interestRateTerms": "FIXED",
        "interestRateTiers": [
          {
            "encodedKey": "string",
            "endingBalance": 0,
            "interestRate": 0
          }
        ]
      },
      "interestApplicationDays": {
        "daysInMonth": [
          0
        ],
        "shortMonthHandlingMethod": "LAST_DAY_IN_MONTH"
      },
      "interestApplicationMethod": "AFTER_DISBURSEMENT",
      "interestBalanceCalculationMethod": "ONLY_PRINCIPAL",
      "interestCalculationMethod": "FLAT",
      "interestRateSettings": [
        {
          "encodedKey": "string",
          "indexSourceKey": "string",
          "interestRate": {
            "defaultValue": 0,
            "maxValue": 0,
            "minValue": 0
          },
          "interestRateCeilingValue": 0,
          "interestRateFloorValue": 0,
          "interestRateReviewCount": 0,
          "interestRateReviewUnit": "DAYS",
          "interestRateSource": "FIXED_INTEREST_RATE"
        }
      ],
      "interestType": "SIMPLE_INTEREST",
      "pmtAdjustmentThreshold": {
        "method": "WORKING_DAYS",
        "numberOfDays": 0
      },
      "scheduleInterestDaysCountMethod": "REPAYMENT_PERIODICITY"
    },
    "internalControls": {
      "dormancyPeriodDays": 0,
      "fourEyesPrinciple": {
        "activeForLoanApproval": true
      },
      "lockSettings": {
        "cappingConstraintType": "SOFT_CAP",
        "cappingMethod": "OUTSTANDING_PRINCIPAL_PERCENTAGE",
        "cappingPercentage": 0,
        "lockPeriodDays": 0
      }
    },
    "lastModifiedDate": "2016-09-06T13:37:50+03:00",
    "loanAmountSettings": {
      "loanAmount": {
        "defaultValue": 0,
        "encodedKey": "string",
        "maxValue": 0,
        "minValue": 0
      },
      "trancheSettings": {
        "maxNumberOfTranches": 0
      }
    },
    "name": "string",
    "newAccountSettings": {
      "accountInitialState": "PARTIAL_APPLICATION",
      "idGeneratorType": "INCREMENTAL_NUMBER",
      "idPattern": "string"
    },
    "notes": "string",
    "offsetSettings": {
      "allowOffset": true
    },
    "paymentSettings": {
      "amortizationMethod": "STANDARD_PAYMENTS",
      "latePaymentsRecalculationMethod": "OVERDUE_INSTALLMENTS_INCREASE",
      "paymentMethod": "HORIZONTAL",
      "prepaymentSettings": {
        "applyInterestOnPrepaymentMethod": "AUTOMATIC",
        "elementsRecalculationMethod": "PRINCIPAL_EXPECTED_FIXED",
        "ercFreeAllowance": 0,
        "futurePaymentsAcceptance": "NO_FUTURE_PAYMENTS",
        "prepaymentAcceptance": "ACCEPT_PREPAYMENTS",
        "prepaymentRecalculationMethod": "NO_RECALCULATION",
        "principalPaidInstallmentStatus": "PARTIALLY_PAID"
      },
      "principalPaymentSettings": {
        "amount": {
          "defaultValue": 0,
          "encodedKey": "string",
          "maxValue": 0,
          "minValue": 0
        },
        "defaultPrincipalRepaymentInterval": 0,
        "encodedKey": "string",
        "includeFeesInFloorAmount": true,
        "includeInterestInFloorAmount": true,
        "percentage": {
          "defaultValue": 0,
          "encodedKey": "string",
          "maxValue": 0,
          "minValue": 0
        },
        "principalCeilingValue": 0,
        "principalFloorValue": 0,
        "principalPaymentMethod": "FLAT",
        "totalDueAmountFloor": 0,
        "totalDuePayment": "FLAT"
      },
      "repaymentAllocationOrder": [
        "PRINCIPAL"
      ]
    },
    "penaltySettings": {
      "loanPenaltyCalculationMethod": "NONE",
      "loanPenaltyGracePeriod": 0,
      "penaltyRate": {
        "defaultValue": 0,
        "encodedKey": "string",
        "maxValue": 0,
        "minValue": 0
      }
    },
    "redrawSettings": {
      "allowRedraw": true
    },
    "scheduleSettings": {
      "amortizationPeriod": {
        "defaultValue": 0,
        "maxValue": 0,
        "minValue": 0
      },
      "billingCycles": {
        "enabled": true,
        "startDays": [
          0
        ]
      },
      "defaultRepaymentPeriodCount": 0,
      "firstRepaymentDueDateOffset": {
        "defaultValue": 0,
        "encodedKey": "string",
        "maxValue": 0,
        "minValue": 0
      },
      "fixedDaysOfMonth": [
        0
      ],
      "interestAccrualSince": "DISBURSEMENT",
      "keepInstallmentsEqualIfLongFirstPeriod": true,
      "numInstallments": {
        "defaultValue": 0,
        "encodedKey": "string",
        "maxValue": 0,
        "minValue": 0
      },
      "previewSchedule": {
        "numberOfPreviewedInstalments": 0,
        "previewScheduleEnabled": true
      },
      "repaymentMethod": "AMOUNT",
      "repaymentPeriodUnit": "DAYS",
      "repaymentReschedulingMethod": "NONE",
      "repaymentScheduleEditOptions": [
        "ADJUST_PAYMENT_DATES"
      ],
      "repaymentScheduleMethod": "NONE",
      "roundingSettings": {
        "repaymentCurrencyRounding": "NO_ROUNDING",
        "repaymentElementsRoundingMethod": "NO_ROUNDING",
        "roundingRepaymentScheduleMethod": "NO_ROUNDING"
      },
      "scheduleDueDatesMethod": "INTERVAL",
      "scheduleEditOptionDetails": {
        "paymentHolidaysSettings": {
          "paymentHolidaysLoanTermOption": "EXTEND_LOAN_TERM"
        }
      },
      "shortMonthHandlingMethod": "LAST_DAY_IN_MONTH"
    },
    "securitySettings": {
      "isCollateralEnabled": true,
      "isGuarantorsEnabled": true,
      "requiredGuaranties": 0
    },
    "state": "ACTIVE",
    "taxSettings": {
      "taxCalculationMethod": "INCLUSIVE",
      "taxSourceKey": "string",
      "taxesOnFeesEnabled": true,
      "taxesOnInterestEnabled": true,
      "taxesOnPenaltyEnabled": true
    },
    "templates": [
      {
        "creationDate": "2016-09-06T13:37:50+03:00",
        "encodedKey": "string",
        "lastModifiedDate": "2016-09-06T13:37:50+03:00",
        "name": "string",
        "type": "ACCOUNT"
      }
    ],
    "type": "FIXED_TERM_LOAN",
    "useFeeIncludedInPMT": true
  }
]

Responses

Status Meaning Description Schema
200 OK Loan products returned. Inline
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [LoanProduct] [Represents a loan product.] none
Ā» accountLinkSettings AccountLinkSettings Defines the settings for account linking. none
»» enabled (required) boolean Shows whether the loan accounts created using this product can be linked to a savings account. none
»» linkableDepositProductKey string Loan accounts created for this product can only be linked the the savings accounts that use the savings product with this key. If null, the loan accounts for this product can be linked to any savings account. none
»» linkedAccountOptions [string] A set of linked account options. none
»» settlementMethod string Set the option of automated transfer that should be made from linked deposit accounts into loan accounts create from this product. none
Ā» accountingSettings AccountingSettings Accounting settings, defines the accounting settings for the product. none
»» accountingMethod (required) string The calculation method used for accounting. none
»» accountingRules [GLAccountingRule] A list of accounting rules for the product. none
»»» encodedKey string The encoded key of the accounting rule, auto generated, unique. read-only
»»» financialResource (required) string General Ledger Financial Resources used to setup the product accounting rules and determine the credit and debit accounts when logging journal entries none
»»» glAccountKey (required) string The encoded key of the account that is mapped to the financialResource none
»»» transactionChannelKey string The key of the transaction rule that uses this rule none
»» interestAccrualCalculation string The accounting interest calculation option selected for the product. none
»» interestAccruedAccountingMethod string The interval defined for a product when the interest accrues should be maintained. none
Ā» adjustInterestForFirstInstallment boolean TRUE if it is possible to adjust the interest for the first repayment when the first repayment period is different than the repayment frequency, FALSE otherwise. none
Ā» adjustTotalDueForInstallmentsWithDifferentInterval boolean TRUE if it is possible to adjust the total due for the repayment when the repayment period is different than the repayment frequency, FALSE otherwise. none
Ā» allowCustomRepaymentAllocation boolean TRUE if an additional payment may be allocated on the account, ignoring the default repayment allocation order, FALSE otherwise. none
Ā» arrearsSettings ProductArrearsSettings The product arrears settings, shows whether the non working days are taken in consideration or not when applying penalties/late fees or when setting an account into arrears none
»» dateCalculationMethod string The arrears date calculation method. none
»» encodedKey string The encoded key of the arrears base settings, auto generated, unique. read-only
»» monthlyToleranceDay integer(int32) Defines the tolerance monthly date none
»» nonWorkingDaysMethod string Shows whether the non working days are taken in consideration or not when applying penaltees/late fees or when setting an account into arrears none
»» toleranceCalculationMethod string Defines the tolerance calculation method none
»» toleranceFloorAmount number The tolerance floor amount. none
»» tolerancePercentageOfOutstandingPrincipal DecimalInterval Decimal constraints, like min/max/default. none
»»» defaultValue number The default value, will be used in case no other value was filled in by the user. none
»»» maxValue number The maximum value. none
»»» minValue number The minimum value. none
»» tolerancePeriod IntegerIntervalConstraints Decimal integer, like min/max/default. none
»»» defaultValue integer(int32) The default value, will be used in case no other value was filled in by the user. none
»»» encodedKey string The encoded key of the integer constraint, auto generated, unique read-only
»»» maxValue integer(int32) The maximum value. none
»»» minValue integer(int32) The minimum value. none
Ā» availabilitySettings ProductAvailabilitySettings Holds information about product availability. none
»» availableFor [string] Holds the entities this product is available for. i.e Individuals none
»» branchSettings BranchSettings Holds information about branch availability for the product. none
»»» availableProductBranches [string] Holds the encoded keys of the branches this product should be available for. none
»»» forAllBranches boolean Indicates if this product should be available for all branches none
Ā» category string The category of the loan product. none
Ā» creationDate string(date-time) The date the loan product was created. none
Ā» creditArrangementSettings (required) CreditArrangementSettings The funding settings, holds the settings regarding the funding for the loan product. none
»» creditArrangementRequirement string Shows whether accounts created after this product can/should be part of a line of credit. none
Ā» currency Currency Represents a currency. To represent a fiat currency, the code value and the currencyCode value must be the ISO-4217 currency code of the fiat currency. To represent a non-fiat currency, the code value must be NON_FIAT and the currencyCode value must be the currency code of the non-fiat currency. none
»» code string Fiat(ISO-4217) currency code or NON_FIAT for non fiat currencies. none
»» currencyCode string Currency code for NON_FIAT currency. none
Ā» encodedKey string The encoded key of the loan product, it is auto generated, and unique. read-only
Ā» feesSettings FeesSettings Defines fees settings for the product. none
»» allowArbitraryFees boolean Only if true users will be able to apply fees, for current object, of type 'Other'; these fees can have any amount. none
»» fees [PredefinedFee] List of all fees that can be applied for accounts of this loan product. none
»»» accountingRules [GLAccountingRule] A list of accounting rules defined for this fee. If null, product default rules are selected. none
»»» amortizationSettings PeriodIntervalSettings The settings for defining period intervals. none
»»»» amortizationProfile string Type of amortization profile used for fee none
»»»» encodedKey string The encoded key of the period interval settings, auto generated, unique. read-only
»»»» feeAmortizationUponRescheduleRefinanceOption string Flag for signaling if fee amortization should be continued or finished at account reschedule/refinance none
»»»» frequency string Frequency settings of the fee amortization none
»»»» intervalCount integer(int32) Total number of intervals none
»»»» intervalType string Defines the options for an interval none
»»»» periodCount integer(int32) Period count used in conjunction with periodUnit to determine the next date of the interval none
»»»» periodUnit string Amortization unit to determine the interval between amortizations none
»»» amount number The amount of the fee none
»»» amountCalculationFunctionName string Mambu Function name used for the fee calculation none
»»» amountCalculationMethod string The amount from which the fee is calculated using percentageAmount none
»»» applyDateMethod string Shows when a fee should be applied; to be used with monthly deposit fees none
»»» creationDate string(date-time) Shows the creation date of the fee none
»»» defaultFeeRate number The rate of the fee applied to parentSource none
»»» encodedKey string The encoded key of the predefined fee, auto generated, unique read-only
»»» feeApplication (required) string The type of fee application when disbursement is applied none
»»» id string The id of the fee none
»»» interestBearing boolean Indication if the fee bears interest none
»»» lastModifiedDate string(date-time) Shows the last modified date of the fee none
»»» name string The name of the fee none
»»» percentageAmount number The amount of the fee in percents applied to percentSource none
»»» scheduleAllocationMethod string Method to allocate a fee to installments on the schedule none
»»» state (required) string Indicates the state of the fee none
»»» taxSettings FeeTaxSettings Tax settings for a specific Predefined fee that overrides the tax settings of Loan Product none
»»»» taxableCalculationMethod string Marks a specific fee as non-taxable (taxes are not calculated for it).Feature is in the Early Stage. To be enabled by request. none
»»» trigger (required) string Shows the event that will trigger a fee none
Ā» fundingSettings FundingSettings The funding settings, holds the settings regarding the funding for the loan product. none
»» enabled boolean Indicates whether the product has the investor funds enabled or not. none
»» funderInterestCommission DecimalConstraints Decimal constraints, like min/max/default. none
»»» defaultValue number The default value, will be used in case no other value was filled in by the user. none
»»» encodedKey string The encoded key of the decimal constraint, auto generated, unique read-only
»»» maxValue number The maximum value. none
»»» minValue number The minimum value. none
»» funderInterestCommissionAllocationType string Define how the Interest is allocated to the investors(if the investors can define their own percentages for their own contribution to the loan, or if all of them are using the same percentage). none
»» lockFundsAtApproval boolean Shows whether investor funds are locked or not at the loan account's approval. none
»» organizationInterestCommission DecimalConstraints Decimal constraints, like min/max/default. none
»» requiredFunds number The required investor funds percentage, for opening an account with external funding. If null, the investor funds are not enabled. none
Ā» gracePeriodSettings GracePeriodSettings The funding settings, holds the settings regarding the funding for the loan product. none
»» gracePeriod IntegerIntervalConstraints Decimal integer, like min/max/default. none
»» gracePeriodType string The grace period type. Representing the type of grace period which is possible for a loan account. none
Ā» id (required) string The ID of the loan product, can be generated and customized, and must be unique. none
Ā» interestSettings ProductInterestSettings The interest settings, defines constraints regarding interest that will be used on the loan account crated based on this product. none
»» accrueLateInterest boolean Whether late interest should be accrued, applied and paid none
»» compoundingFrequency string The frequency on which the accrued interest will be added to the principal for interest calculation. It is used only for InterestType.COMPOUNDING_INTEREST none
»» daysInYear (required) string The days in year that should be used for loan calculations. none
»» decoupleInterestFromArrears boolean Whether interest from arrears is decoupled from regular interest. (Only accepted or returned if the feature is enabled.) none
»» indexRateSettings InterestProductSettings The interest settings, defines constraints regarding interest that will be used on the loan account created based on this product. none
»»» accrueInterestAfterMaturity boolean If the product supports this option, specify if the interest should be accrued after the account maturity date none
»»» allowNegativeInterestRate boolean Indicator whether the loan product allows negative values for interest rate or interest spread none
»»» encodedKey string The encoded key of the interest rate tier, auto generated, unique read-only
»»» indexSourceKey string Index rate source key. none
»»» interestChargeFrequency string The interval used for determining how often is interest charged none
»»» interestChargeFrequencyCount integer(int32) the count of units to apply over the interval none
»»» interestRate DecimalInterval Decimal constraints, like min/max/default. none
»»» interestRateCeilingValue number Interest spread + index interest rate can't be more than this amount (valid only for index interest rate products). none
»»» interestRateFloorValue number Interest spread + index interest rate can't be less than this amount (valid only for index interest rate products). none
»»» interestRateReviewCount integer(int32) Interest rate review frequency unit count none
»»» interestRateReviewUnit string Interest rate review frequency measurement unit none
»»» interestRateSource string Interest calculation method: fixed or (interest spread + active organization index interest rate) none
»»» interestRateTerms string The option for how is the interest rate determined when being accrued for an account none
»»» interestRateTiers [InterestRateTier] The list of interest rate tiers available for the current settings instance none
»»»» encodedKey string The encoded key of the interest rate tier, auto generated, unique read-only
»»»» endingBalance number The top-limit value for the account balance in order to determine if this tier is used or not none
»»»» interestRate (required) number The rate used for computing the interest for an account which has the balance less than the ending balance none
»» interestApplicationDays DaysInMonth Enumeration for days of month and method of handling shorter months. none
»»» daysInMonth [integer] Specifies the day(s) of the month when the interest application dates should be. Only available if the Interest Application Method is InterestApplicationMethodDTO#FIXED_DAYS_OF_MONTH. Currently only 1 value can be specified. none
»»» shortMonthHandlingMethod string Determines how to handle the short months, if they select a fixed day of month > 28. Will be null if no such date is selected. Only available if the Interest Application Method is InterestApplicationMethodDTO#FIXED_DAYS_OF_MONTH. none
»» interestApplicationMethod string The interest application method. Represents the interest application method that determines whether the interest gets applied on the account's disbursement or on each repayment. none
»» interestBalanceCalculationMethod string The interest balance calculation method. Represents the option which determines the way the balance for the account's interest is computed. none
»» interestCalculationMethod (required) string The interest calculation method. Holds the type of interest calculation method. none
»» interestRateSettings [ProductInterestRateSettings] Adjustable interest rates settings none
»»» encodedKey string The encoded key of the interest rate settings, auto generated, unique read-only
»»» indexSourceKey string Index rate source key. none
»»» interestRate DecimalInterval Decimal constraints, like min/max/default. none
»»» interestRateCeilingValue number Maximum value allowed for index based interest rate. Valid only for index interest rate. none
»»» interestRateFloorValue number Minimum value allowed for index based interest rate. Valid only for index interest rate. none
»»» interestRateReviewCount integer(int32) Interest rate review frequency unit count. Valid only for index interest rate. none
»»» interestRateReviewUnit string Interest rate review frequency measurement unit. Valid only for index interest rate. none
»»» interestRateSource (required) string Interest calculation method: fixed or indexed(interest spread + active organization index interest rate) none
»» interestType string The possible values for how we compute and apply the interest none
»» pmtAdjustmentThreshold PMTAdjustmentThreshold Represents PMT Adjustment threshold settings for loan accounts and loan products. none
»»» method string The method used to calculate the PMT Adjustment threshold. Supported value is CALENDAR_DAYS none
»»» numberOfDays integer(int32) The number of days that trigger a PMT Adjustment. none
»» scheduleInterestDaysCountMethod (required) string Shows whether all the installments should compute the interest based on the actual number of days or based on the defined repayment periodicity. none
Ā» internalControls InternalControls Constraints and automated actions and that will be applied on the accounts. none
»» dormancyPeriodDays integer(int32) Specifies the number of days for an account to be fully paid in order to auto close it. none
»» fourEyesPrinciple FourEyesPrinciple Settings for Four Eyes Principle none
»»» activeForLoanApproval boolean Requires separate users to create and approve loan accounts none
»» lockSettings LockSettings Settings applied when transitioning accounts to Locked state none
»»» cappingConstraintType string Specifies constraint types for capping charges. none
»»» cappingMethod string Specifies how principal will be used when calculating capping charges. none
»»» cappingPercentage number Specifies the percentage of principal that cannot be exceeded by the sum of interest, fees and penalty balances. none
»»» lockPeriodDays integer(int32) Specifies the number of days for in which the account will be locked if it stays in arrears. none
Ā» lastModifiedDate string(date-time) The last date the loan product was updated. none
Ā» loanAmountSettings LoanAmountSettings The amount settings, holds all amount properties. none
»» loanAmount AmountDecimalConstraints Decimal constraints, like min/max/default. none
»»» defaultValue number The default value, will be used in case no other value was filled in by the user. none
»»» encodedKey string The encoded key of the decimal constraint, auto generated, unique read-only
»»» maxValue number The maximum value. none
»»» minValue number The minimum value. none
»» trancheSettings TrancheSettings The tranche settings, indicates the settings regarding tranches in case the product is configured to support tranches. none
»»» maxNumberOfTranches integer(int32) The number of tranches supported by the loan product none
Ā» name (required) string The name of the loan product. none
Ā» newAccountSettings NewAccountSettings The new account settings, defines the settings and constraints used by new loan account created based on this product. none
»» accountInitialState (required) string The initial state of the account when is created. none
»» idGeneratorType (required) string The type of generator used for IDs creation. none
»» idPattern (required) string The pattern that will be used for ID validation (as referred to as an input mask). none
Ā» notes string The notes or description of the loan product. none
Ā» offsetSettings OffsetSettings The offset settings, holds information about offset. none
»» allowOffset boolean Indicates whether the product supports offset none
Ā» paymentSettings PaymentSettings Defines the payment settings for the loan product and for loans crated based on this product. none
»» amortizationMethod string Payments Method used by loan accounts for repayments schedule generation. none
»» latePaymentsRecalculationMethod (required) string Recalculate the schedule when late payments are posted on dynamic Equal Installments loans. none
»» paymentMethod (required) string The payment method. Represents the interest payment method that determines whether the payments are made Horizontally (on the Repayments) or Vertically (on the Loan Account) none
»» prepaymentSettings ProductPrepaymentSettings Defines the prepayment settings for the product none
»»» applyInterestOnPrepaymentMethod string Whether the interest on prepayment is applied manual or automatic. none
»»» elementsRecalculationMethod string The elements recalculation method, indicates how the declining balance with equal installments repayments are recalculated none
»»» ercFreeAllowance number ERC free allowance in percentage none
»»» futurePaymentsAcceptance (required) string Shows whether the future payments are allowed or not for this product (repayment transactions with entry date set in the future) none
»»» prepaymentAcceptance string Shows whether the pre-payments are allowed or not for this product. none
»»» prepaymentRecalculationMethod string Prepayment recalculation method copied from the loan product on which this account is based none
»»» principalPaidInstallmentStatus string Installment status for the case when principal is paid off (copied from loan product) none
»» principalPaymentSettings PrincipalPaymentProductSettings Defines the principal payment settings constraints for the loans that will be created based on this product. none
»»» amount AmountDecimalConstraints Decimal constraints, like min/max/default. none
»»» defaultPrincipalRepaymentInterval integer(int32) How many repayments the principal has to be paid none
»»» encodedKey string The encoded key of the settings, auto generated, unique read-only
»»» includeFeesInFloorAmount boolean If true, the fees will be included along with the principal in the repayment floor amount, for a revolving credit account none
»»» includeInterestInFloorAmount boolean If true, the interest will be included along with the principal in the repayment floor amount, for a revolving credit account none
»»» percentage DecimalConstraints Decimal constraints, like min/max/default. none
»»» principalCeilingValue number The maximum principal due amount a repayment made with this settings can have none
»»» principalFloorValue number The minimum principal due amount a repayment made with this settings can have none
»»» principalPaymentMethod string The method of principal payment for revolving credit none
»»» totalDueAmountFloor number The minimum total due amount a repayment made with this settings can have none
»»» totalDuePayment string The method of total due payment for revolving credit none
»» repaymentAllocationOrder (required) [string] A list of basic repayment allocation elements such as the principal, interest & fees. none
Ā» penaltySettings ProductPenaltySettings Defines the penalty settings for the product that will be used by the loan accounts based on this product none
»» loanPenaltyCalculationMethod (required) string The penalty calculation method none
»» loanPenaltyGracePeriod integer(int32) Number of days to wait before applying the loan penalty amounts none
»» penaltyRate DecimalConstraints Decimal constraints, like min/max/default. none
Ā» redrawSettings ProductRedrawSettings The redraw settings for the product. none
»» allowRedraw (required) boolean Indicates whether the product support redraw (prepayments which are stored at loan account level as a Redrawable balance) none
Ā» scheduleSettings LoanProductScheduleSettings Defines the settings and constraints for schedule for the loans that are created based on this product. none
»» amortizationPeriod ProductAmortizationPeriod It holds information about the loan product amortization period. The PMT is calculated as the loan would have [amortisationPeriod] instalments none
»»» defaultValue integer(int32) default value none
»»» maxValue integer(int32) max value none
»»» minValue integer(int32) min value none
»» billingCycles BillingCyclesProductSettings Defines the billing cycles settings for revolving credit products none
»»» enabled boolean The billing cycle status if it is enabled or disabled none
»»» startDays [integer] The billing cycle start days in case it is enabled none
»» defaultRepaymentPeriodCount integer(int32) Interval Repayment Methodology Settings. none
»» firstRepaymentDueDateOffset IntegerIntervalConstraints Decimal integer, like min/max/default. none
»» fixedDaysOfMonth [integer] Specifies the days of the month when the repayment due dates should be. Only available if the Repayment Methodology is ScheduleDueDatesMethodDTO#FIXED_DAYS_OF_MONTH. none
»» interestAccrualSince string Represents the moment the interest will start getting accrued. none
»» keepInstallmentsEqualIfLongFirstPeriod boolean For optimized payments only, indicates whether the installments should remain equal when the first period is long none
»» numInstallments IntegerIntervalConstraints Decimal integer, like min/max/default. none
»» previewSchedule PreviewScheduleSettings Defines the Preview Schedule settings for revolving products none
»»» numberOfPreviewedInstalments integer(int32) Number of Previewed Instalments. none
»»» previewScheduleEnabled boolean Preview Schedule status. none
»» repaymentMethod string The repayment method value none
»» repaymentPeriodUnit string The frequency of the loan repayment. none
»» repaymentReschedulingMethod (required) string The repayment rescheduling method used in calculations. none
»» repaymentScheduleEditOptions [string] Shows the properties from the repayment schedule can be edited. none
»» repaymentScheduleMethod (required) string The repayment schedule method. Represents the method that determines whether the schedule will be fixed all over the loan account's life cycle or will be dynamically recomputed when required. none
»» roundingSettings RoundingSettings Defines the rounding settings used in the loan computation. none
»»» repaymentCurrencyRounding (required) string Specifies the repayment currency rounding method. none
»»» repaymentElementsRoundingMethod (required) string Determines how the repayment currency rounding is handled on each element from the schedule. none
»»» roundingRepaymentScheduleMethod (required) string Specifies the rounding repayment schedule method. none
»» scheduleDueDatesMethod (required) string The methodology used by this product to compute the due dates of the repayments. none
»» scheduleEditOptionDetails RepaymentScheduleEditOptionDetails Holds Repayments Schedule Editing options none
»»» paymentHolidaysSettings PaymentHolidaysSettings Holds Payment Holidays Settings none
»»»» paymentHolidaysLoanTermOption string payment holiday option none
»» shortMonthHandlingMethod string Determines how to handle the short months, if they select a fixed day of month > 28. Will be null if no such date is selected and also for the Interval methodology. Only available if the Schedule Due Dates Method is ScheduleDueDatesMethodDTO#FIXED_DAYS_OF_MONTHs. none
Ā» securitySettings SecuritySettings The settings and constraints for securities. none
»» isCollateralEnabled boolean Shows whether collateral (assets or other goods) are accepted in order to reach required securities percentage from loan amount, as defined in this product. none
»» isGuarantorsEnabled boolean Shows whether guarantors (other clients) are accepted in order to reach the required securities percentage from loan amount, as defined in this product. none
»» requiredGuaranties number The securities percentage from loan amount that is needed in order for this account to be approved. Null if the securities are not required. none
Ā» state string The current state of the loan product. none
Ā» taxSettings TaxSettings Tax settings, defines some settings for taxes on the loan product none
»» taxCalculationMethod string Shows whether the tax is added on top of the target amount or not. none
»» taxSourceKey string The tax source from where the loan account taxes will be updated. none
»» taxesOnFeesEnabled boolean Shows whether taxes on fees are enabled for this product or not. none
»» taxesOnInterestEnabled boolean Shows whether taxes on interest are enabled for this product or not. none
»» taxesOnPenaltyEnabled boolean Shows whether taxes on penalties are enabled for this product or not. none
Ā» templates [DocumentTemplate] The template documents of the loan product. none
»» creationDate string(date-time) The creation date of the document read-only
»» encodedKey string The document encodedKey read-only
»» lastModifiedDate string(date-time) The last modified date of the document read-only
»» name string The name the document none
»» type string The type of the template none
Ā» type (required) string The type of the loan product. none
Ā» useFeeIncludedInPMT boolean TRUE if Fee should be part of PMT calculation, FALSE otherwise. none

Enumerated Values

Property Value
settlementMethod FULL_DUE_AMOUNTS
settlementMethod PARTIAL_DUE_AMOUNTS
settlementMethod NO_AUTOMATED_TRANSFERS
accountingMethod NONE
accountingMethod CASH
accountingMethod ACCRUAL
financialResource PORTFOLIO_CONTROL
financialResource FUND_SOURCE
financialResource WRITE_OFF_EXPENSE
financialResource INTEREST_INCOME
financialResource PAYMENT_HOLIDAY_INTEREST_INCOME
financialResource TAXES_PAYABLE
financialResource FEE_INCOME
financialResource PENALTY_INCOME
financialResource NEGATIVE_INTEREST_PAYABLE_RECEIVABLE
financialResource NEGATIVE_INTEREST_PAYABLE
financialResource INTEREST_RECEIVABLE
financialResource PAYMENT_HOLIDAY_INTEREST_RECEIVABLE
financialResource FEE_RECEIVABLE
financialResource PENALTY_RECEIVABLE
financialResource TAXES_RECEIVABLE
financialResource DEFERRED_INTERESTS_INCOME
financialResource DEFERRED_FEE_INCOME
financialResource DEFERRED_TAXES
financialResource DEPOSIT_REFERENCE
financialResource SAVINGS_CONTROL
financialResource INTEREST_EXPENSE
financialResource INTEREST_PAYABLE
financialResource NEGATIVE_INTEREST_INCOME
financialResource NEGATIVE_INTEREST_RECEIVABLE
financialResource OVERDRAFT_PORTFOLIO_CONTROL
financialResource OVERDRAFT_INTEREST_INCOME
financialResource OVERDRAFT_WRITE_OFF_EXPENSE
financialResource OVERDRAFT_INTEREST_RECEIVABLE
financialResource INTER_BRANCH_TRANSFER
financialResource INTEREST_FROM_ARREARS_INCOME
financialResource INTEREST_FROM_ARREARS_RECEIVABLE
financialResource INTEREST_FROM_ARREARS_WRITE_OFF_EXPENSE
financialResource PROFIT_EXPENSE
financialResource PROFIT_PAYABLE
interestAccrualCalculation NONE
interestAccrualCalculation AGGREGATED_AMOUNT
interestAccrualCalculation BREAKDOWN_PER_ACCOUNT
interestAccruedAccountingMethod NONE
interestAccruedAccountingMethod DAILY
interestAccruedAccountingMethod END_OF_MONTH
dateCalculationMethod ACCOUNT_FIRST_WENT_TO_ARREARS
dateCalculationMethod LAST_LATE_REPAYMENT
dateCalculationMethod ACCOUNT_FIRST_BREACHED_MATERIALITY_THRESHOLD
nonWorkingDaysMethod INCLUDED
nonWorkingDaysMethod EXCLUDED
toleranceCalculationMethod ARREARS_TOLERANCE_PERIOD
toleranceCalculationMethod MONTHLY_ARREARS_TOLERANCE_DAY
category PERSONAL_LENDING
category PURCHASE_FINANCING
category RETAIL_MORTGAGES
category SME_LENDING
category COMMERCIAL
category UNCATEGORIZED
creditArrangementRequirement OPTIONAL
creditArrangementRequirement REQUIRED
creditArrangementRequirement NOT_REQUIRED
code AED
code AFN
code ALL
code AMD
code ANG
code AOA
code ARS
code AUD
code AWG
code AZN
code BAM
code BBD
code BDT
code BGN
code BHD
code BIF
code BMD
code BND
code BOB
code BOV
code BRL
code BSD
code BTN
code BWP
code BYR
code BYN
code BZD
code CAD
code CDF
code CHE
code CHF
code CHW
code CLF
code CLP
code CNY
code COP
code COU
code CRC
code CUC
code CUP
code CVE
code CZK
code DJF
code DKK
code DOP
code DZD
code EGP
code ERN
code ETB
code EUR
code FJD
code FKP
code GBP
code GEL
code GHS
code GIP
code GMD
code GNF
code GTQ
code GYD
code HKD
code HNL
code HRK
code HTG
code HUF
code IDR
code ILS
code INR
code IQD
code IRR
code ISK
code JMD
code JOD
code JPY
code KES
code KGS
code KHR
code KMF
code KPW
code KRW
code KWD
code KYD
code KZT
code LAK
code LBP
code LKR
code LRD
code LSL
code LTL
code LVL
code LYD
code MAD
code MDL
code MGA
code MKD
code MMK
code MNT
code MOP
code MRO
code MRU
code MUR
code MVR
code MWK
code MXN
code MXV
code MYR
code MZN
code NAD
code NGN
code NIO
code NOK
code NPR
code NZD
code OMR
code PAB
code PEN
code PGK
code PHP
code PKR
code PLN
code PYG
code QAR
code RON
code RSD
code RUB
code RWF
code SAR
code SBD
code SCR
code SDG
code SEK
code SGD
code SHP
code SLL
code SOS
code SRD
code STD
code STN
code SVC
code SYP
code SZL
code THB
code TJS
code TMT
code TND
code TOP
code TRY
code TTD
code TWD
code TZS
code UAH
code UGX
code USD
code USN
code UYI
code UYU
code UYW
code UZS
code VED
code VEF
code VES
code VND
code VUV
code WST
code XAG
code XAU
code XAF
code XBA
code XBB
code XBC
code XBD
code XCD
code XDR
code XOF
code XPD
code XPF
code XPT
code XSU
code XTS
code XUA
code XXX
code YER
code ZAR
code ZIG
code ZMK
code ZWL
code ZMW
code SSP
code NON_FIAT
amortizationProfile NONE
amortizationProfile SUM_OF_YEARS_DIGITS
amortizationProfile STRAIGHT_LINE
amortizationProfile EFFECTIVE_INTEREST_RATE
feeAmortizationUponRescheduleRefinanceOption END_AMORTIZATION_ON_THE_ORIGINAL_ACCOUNT
feeAmortizationUponRescheduleRefinanceOption CONTINUE_AMORTIZATION_ON_THE_RESCHEDULED_REFINANCED_ACCOUNT
frequency ACCOUNT_INSTALLMENTS_DUE_DATES
frequency ACCOUNT_INSTALLMENTS_DUE_DATES_DAILY_BOOKING
frequency CUSTOM_INTERVAL
intervalType PREDEFINED_INTERVALS
intervalType FULL_TERM
periodUnit DAYS
periodUnit WEEKS
periodUnit MONTHS
periodUnit YEARS
amountCalculationMethod FLAT
amountCalculationMethod LOAN_AMOUNT_PERCENTAGE
amountCalculationMethod REPAYMENT_PRINCIPAL_AMOUNT_PERCENTAGE
amountCalculationMethod LOAN_AMOUNT_PERCENTAGE_NUMBER_OF_INSTALLMENTS
amountCalculationMethod FLAT_NUMBER_OF_INSTALLMENTS
amountCalculationMethod IOF_PERCENTAGE_OF_DISBURSED_AMOUNT
amountCalculationMethod IOF_PERCENTAGE_OF_INSTALLMENT_PRINCIPAL
amountCalculationMethod IOF_PERCENTAGE_OF_LATE_INSTALLMENT_PRINCIPAL
amountCalculationMethod MAMBU_FUNCTION
amountCalculationMethod FEE_RATE_ON_OUTSTANDING_PRINCIPAL
applyDateMethod MONTHLY_FROM_ACTIVATION
applyDateMethod FIRST_OF_EVERY_MONTH
feeApplication REQUIRED
feeApplication OPTIONAL
scheduleAllocationMethod ON_INSTALLMENT
scheduleAllocationMethod NO_ALLOCATION
state ACTIVE
state INACTIVE
taxableCalculationMethod DEFAULT
taxableCalculationMethod NON_TAXABLE
taxableCalculationMethod CUSTOM_TAX
trigger MANUAL
trigger MANUAL_PLANNED
trigger DISBURSEMENT
trigger CAPITALIZED_DISBURSEMENT
trigger UPFRONT_DISBURSEMENT
trigger LATE_REPAYMENT
trigger PAYMENT_DUE
trigger PAYMENT_DUE_APPLIED_ON_DUE_DATES
trigger ARBITRARY
trigger IOF
trigger EARLY_REPAYMENT_CHARGE
trigger FEE_INCLUDED_IN_PMT
funderInterestCommissionAllocationType PERCENTAGE_OF_LOAN_FUNDING
funderInterestCommissionAllocationType FIXED_INTEREST_COMMISSIONS
gracePeriodType NONE
gracePeriodType PAY_INTEREST_ONLY
gracePeriodType INTEREST_FORGIVENESS
compoundingFrequency DAILY
compoundingFrequency SEMI_ANNUALLY
daysInYear ACTUAL_365_FIXED
daysInYear ACTUAL_364
daysInYear ACTUAL_360
daysInYear ACTUAL_ACTUAL_ISDA
daysInYear E30_360
daysInYear BUS_252
daysInYear E30_42_365
interestChargeFrequency ANNUALIZED
interestChargeFrequency EVERY_MONTH
interestChargeFrequency EVERY_FOUR_WEEKS
interestChargeFrequency EVERY_WEEK
interestChargeFrequency EVERY_DAY
interestChargeFrequency EVERY_X_DAYS
interestRateReviewUnit DAYS
interestRateReviewUnit WEEKS
interestRateReviewUnit MONTHS
interestRateSource FIXED_INTEREST_RATE
interestRateSource INDEX_INTEREST_RATE
interestRateTerms FIXED
interestRateTerms TIERED
interestRateTerms TIERED_PERIOD
interestRateTerms TIERED_BAND
shortMonthHandlingMethod LAST_DAY_IN_MONTH
shortMonthHandlingMethod FIRST_DAY_OF_NEXT_MONTH
interestApplicationMethod AFTER_DISBURSEMENT
interestApplicationMethod REPAYMENT_DUE_DATE
interestApplicationMethod FIXED_DAYS_OF_MONTH
interestBalanceCalculationMethod ONLY_PRINCIPAL
interestBalanceCalculationMethod PRINCIPAL_AND_INTEREST
interestCalculationMethod FLAT
interestCalculationMethod DECLINING_BALANCE
interestCalculationMethod DECLINING_BALANCE_DISCOUNTED
interestCalculationMethod EQUAL_INSTALLMENTS
interestRateReviewUnit DAYS
interestRateReviewUnit WEEKS
interestRateReviewUnit MONTHS
interestRateSource FIXED_INTEREST_RATE
interestRateSource INDEX_INTEREST_RATE
interestType SIMPLE_INTEREST
interestType CAPITALIZED_INTEREST
interestType COMPOUNDING_INTEREST
method WORKING_DAYS
method CALENDAR_DAYS
scheduleInterestDaysCountMethod REPAYMENT_PERIODICITY
scheduleInterestDaysCountMethod ACTUAL_DAYS_COUNT
cappingConstraintType SOFT_CAP
cappingConstraintType HARD_CAP
cappingMethod OUTSTANDING_PRINCIPAL_PERCENTAGE
cappingMethod ORIGINAL_PRINCIPAL_PERCENTAGE
accountInitialState PARTIAL_APPLICATION
accountInitialState PENDING_APPROVAL
accountInitialState APPROVED
accountInitialState ACTIVE
accountInitialState ACTIVE_IN_ARREARS
accountInitialState CLOSED
accountInitialState CLOSED_WRITTEN_OFF
accountInitialState CLOSED_REJECTED
idGeneratorType INCREMENTAL_NUMBER
idGeneratorType RANDOM_PATTERN
amortizationMethod STANDARD_PAYMENTS
amortizationMethod BALLOON_PAYMENTS
amortizationMethod OPTIMIZED_PAYMENTS
amortizationMethod PAYMENT_PLAN
latePaymentsRecalculationMethod OVERDUE_INSTALLMENTS_INCREASE
latePaymentsRecalculationMethod LAST_INSTALLMENT_INCREASE
latePaymentsRecalculationMethod NO_RECALCULATION
paymentMethod HORIZONTAL
paymentMethod VERTICAL
applyInterestOnPrepaymentMethod AUTOMATIC
applyInterestOnPrepaymentMethod MANUAL
elementsRecalculationMethod PRINCIPAL_EXPECTED_FIXED
elementsRecalculationMethod TOTAL_EXPECTED_FIXED
futurePaymentsAcceptance NO_FUTURE_PAYMENTS
futurePaymentsAcceptance ACCEPT_FUTURE_PAYMENTS
futurePaymentsAcceptance ACCEPT_OVERPAYMENTS
prepaymentAcceptance ACCEPT_PREPAYMENTS
prepaymentAcceptance NO_PREPAYMENTS
prepaymentRecalculationMethod NO_RECALCULATION
prepaymentRecalculationMethod RESCHEDULE_REMAINING_REPAYMENTS
prepaymentRecalculationMethod RECALCULATE_SCHEDULE_KEEP_SAME_NUMBER_OF_TERMS
prepaymentRecalculationMethod RECALCULATE_SCHEDULE_KEEP_SAME_PRINCIPAL_AMOUNT
prepaymentRecalculationMethod RECALCULATE_SCHEDULE_KEEP_SAME_TOTAL_REPAYMENT_AMOUNT
prepaymentRecalculationMethod REDUCE_AMOUNT_PER_INSTALLMENT
prepaymentRecalculationMethod REDUCE_NUMBER_OF_INSTALLMENTS
prepaymentRecalculationMethod REDUCE_NUMBER_OF_INSTALLMENTS_NEW
principalPaidInstallmentStatus PARTIALLY_PAID
principalPaidInstallmentStatus PAID
principalPaidInstallmentStatus ORIGINAL_TOTAL_EXPECTED_PAID
principalPaymentMethod FLAT
principalPaymentMethod OUTSTANDING_PRINCIPAL_PERCENTAGE
principalPaymentMethod PRINCIPAL_PERCENTAGE_LAST_DISB
principalPaymentMethod TOTAL_BALANCE_PERCENTAGE
principalPaymentMethod TOTAL_BALANCE_FLAT
principalPaymentMethod TOTAL_PRINCIPAL_PERCENTAGE
totalDuePayment FLAT
totalDuePayment OUTSTANDING_PRINCIPAL_PERCENTAGE
totalDuePayment PRINCIPAL_PERCENTAGE_LAST_DISB
totalDuePayment TOTAL_BALANCE_PERCENTAGE
totalDuePayment TOTAL_BALANCE_FLAT
totalDuePayment TOTAL_PRINCIPAL_PERCENTAGE
loanPenaltyCalculationMethod NONE
loanPenaltyCalculationMethod OVERDUE_BALANCE
loanPenaltyCalculationMethod OVERDUE_BALANCE_AND_INTEREST
loanPenaltyCalculationMethod OVERDUE_BALANCE_INTEREST_AND_FEE
loanPenaltyCalculationMethod OUTSTANDING_PRINCIPAL
interestAccrualSince DISBURSEMENT
interestAccrualSince DUE_DATE
repaymentMethod AMOUNT
repaymentMethod INSTALLMENTS
repaymentPeriodUnit DAYS
repaymentPeriodUnit WEEKS
repaymentPeriodUnit MONTHS
repaymentPeriodUnit YEARS
repaymentReschedulingMethod NONE
repaymentReschedulingMethod NEXT_WORKING_DAY
repaymentReschedulingMethod PREVIOUS_WORKING_DAY
repaymentReschedulingMethod EXTEND_SCHEDULE
repaymentScheduleMethod NONE
repaymentScheduleMethod FIXED
repaymentScheduleMethod DYNAMIC
repaymentCurrencyRounding NO_ROUNDING
repaymentCurrencyRounding ROUND_TO_NEAREST_WHOLE_UNIT
repaymentCurrencyRounding ROUND_UP_TO_NEAREST_WHOLE_UNIT
repaymentElementsRoundingMethod NO_ROUNDING
repaymentElementsRoundingMethod ROUND_ALL
repaymentElementsRoundingMethod PAYMENT_DUE
roundingRepaymentScheduleMethod NO_ROUNDING
roundingRepaymentScheduleMethod ROUND_REMAINDER_INTO_LAST_REPAYMENT
roundingRepaymentScheduleMethod ROUND_PRINCIPAL_AND_INTEREST_REMAINDER_INTO_LAST_REPAYMENT
scheduleDueDatesMethod INTERVAL
scheduleDueDatesMethod FIXED_DAYS_OF_MONTH
paymentHolidaysLoanTermOption EXTEND_LOAN_TERM
paymentHolidaysLoanTermOption KEEP_THE_SAME_LOAN_TERM
shortMonthHandlingMethod LAST_DAY_IN_MONTH
shortMonthHandlingMethod FIRST_DAY_OF_NEXT_MONTH
state ACTIVE
state INACTIVE
taxCalculationMethod INCLUSIVE
taxCalculationMethod EXCLUSIVE
type ACCOUNT
type TRANSACTION
type ACCOUNT_WITH_TRANSACTIONS
type FIXED_TERM_LOAN
type DYNAMIC_TERM_LOAN
type INTEREST_FREE_LOAN
type TRANCHED_LOAN
type REVOLVING_CREDIT
type INTEREST_ONLY_EQUAL_INSTALLMENTS
type DYNAMIC_MORTGAGE

Response Headers

Status Header Type Format Description
200 Items-Limit integer int32 Pagination details, the requested page size
200 Items-Offset integer int32 Pagination details, the index of the first returned item
200 Items-Total integer int32 Pagination details, the total available items

create (Loan Products)

Code samples

# You can also use wget
curl -X POST /loanproducts \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/vnd.mambu.v2+json' \
  -H 'Idempotency-Key: string'

POST /loanproducts HTTP/1.1

Content-Type: application/json
Accept: application/vnd.mambu.v2+json
Idempotency-Key: string

var headers = {
  'Content-Type':'application/json',
  'Accept':'application/vnd.mambu.v2+json',
  'Idempotency-Key':'string'

};

$.ajax({
  url: '/loanproducts',
  method: 'post',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/vnd.mambu.v2+json',
  'Idempotency-Key' => 'string'
}

result = RestClient.post '/loanproducts',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/vnd.mambu.v2+json',
  'Idempotency-Key': 'string'
}

r = requests.post('/loanproducts', params={

}, headers = headers)

print r.json()

 'application/json',
    'Accept' => 'application/vnd.mambu.v2+json',
    'Idempotency-Key' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('POST','/loanproducts', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/loanproducts");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/vnd.mambu.v2+json"},
        "Idempotency-Key": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "/loanproducts", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /loanproducts

Create loan product

Body parameter

{
  "accountLinkSettings": {
    "enabled": true,
    "linkableDepositProductKey": "string",
    "linkedAccountOptions": [
      "AUTO_LINK_ACCOUNTS"
    ],
    "settlementMethod": "FULL_DUE_AMOUNTS"
  },
  "accountingSettings": {
    "accountingMethod": "NONE",
    "accountingRules": [
      {
        "financialResource": "PORTFOLIO_CONTROL",
        "glAccountKey": "string",
        "transactionChannelKey": "string"
      }
    ],
    "interestAccrualCalculation": "NONE",
    "interestAccruedAccountingMethod": "NONE"
  },
  "adjustInterestForFirstInstallment": true,
  "adjustTotalDueForInstallmentsWithDifferentInterval": true,
  "allowCustomRepaymentAllocation": true,
  "arrearsSettings": {
    "dateCalculationMethod": "ACCOUNT_FIRST_WENT_TO_ARREARS",
    "monthlyToleranceDay": 0,
    "nonWorkingDaysMethod": "INCLUDED",
    "toleranceCalculationMethod": "ARREARS_TOLERANCE_PERIOD",
    "toleranceFloorAmount": 0,
    "tolerancePercentageOfOutstandingPrincipal": {
      "defaultValue": 0,
      "maxValue": 0,
      "minValue": 0
    },
    "tolerancePeriod": {
      "defaultValue": 0,
      "maxValue": 0,
      "minValue": 0
    }
  },
  "availabilitySettings": {
    "availableFor": [
      "INDIVIDUALS"
    ],
    "branchSettings": {
      "availableProductBranches": [
        "string"
      ],
      "forAllBranches": true
    }
  },
  "category": "PERSONAL_LENDING",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "creditArrangementSettings": {
    "creditArrangementRequirement": "OPTIONAL"
  },
  "currency": {
    "code": "AED",
    "currencyCode": "string"
  },
  "feesSettings": {
    "allowArbitraryFees": true,
    "fees": [
      {
        "accountingRules": [
          {
            "financialResource": "PORTFOLIO_CONTROL",
            "glAccountKey": "string",
            "transactionChannelKey": "string"
          }
        ],
        "amortizationSettings": {
          "amortizationProfile": "NONE",
          "feeAmortizationUponRescheduleRefinanceOption": "END_AMORTIZATION_ON_THE_ORIGINAL_ACCOUNT",
          "frequency": "ACCOUNT_INSTALLMENTS_DUE_DATES",
          "intervalCount": 0,
          "intervalType": "PREDEFINED_INTERVALS",
          "periodCount": 0,
          "periodUnit": "DAYS"
        },
        "amount": 0,
        "amountCalculationFunctionName": "string",
        "amountCalculationMethod": "FLAT",
        "applyDateMethod": "MONTHLY_FROM_ACTIVATION",
        "creationDate": "2016-09-06T13:37:50+03:00",
        "defaultFeeRate": 0,
        "feeApplication": "REQUIRED",
        "id": "string",
        "interestBearing": true,
        "lastModifiedDate": "2016-09-06T13:37:50+03:00",
        "name": "string",
        "percentageAmount": 0,
        "scheduleAllocationMethod": "ON_INSTALLMENT",
        "state": "ACTIVE",
        "taxSettings": {
          "taxableCalculationMethod": "DEFAULT"
        },
        "trigger": "MANUAL"
      }
    ]
  },
  "fundingSettings": {
    "enabled": true,
    "funderInterestCommission": {
      "defaultValue": 0,
      "maxValue": 0,
      "minValue": 0
    },
    "funderInterestCommissionAllocationType": "PERCENTAGE_OF_LOAN_FUNDING",
    "lockFundsAtApproval": true,
    "organizationInterestCommission": {
      "defaultValue": 0,
      "maxValue": 0,
      "minValue": 0
    },
    "requiredFunds": 0
  },
  "gracePeriodSettings": {
    "gracePeriod": {
      "defaultValue": 0,
      "maxValue": 0,
      "minValue": 0
    },
    "gracePeriodType": "NONE"
  },
  "id": "string",
  "interestSettings": {
    "accrueLateInterest": true,
    "compoundingFrequency": "DAILY",
    "daysInYear": "ACTUAL_365_FIXED",
    "decoupleInterestFromArrears": true,
    "indexRateSettings": {
      "accrueInterestAfterMaturity": true,
      "allowNegativeInterestRate": true,
      "indexSourceKey": "string",
      "interestChargeFrequency": "ANNUALIZED",
      "interestChargeFrequencyCount": 0,
      "interestRate": {
        "defaultValue": 0,
        "maxValue": 0,
        "minValue": 0
      },
      "interestRateCeilingValue": 0,
      "interestRateFloorValue": 0,
      "interestRateReviewCount": 0,
      "interestRateReviewUnit": "DAYS",
      "interestRateSource": "FIXED_INTEREST_RATE",
      "interestRateTerms": "FIXED",
      "interestRateTiers": [
        {
          "endingBalance": 0,
          "interestRate": 0
        }
      ]
    },
    "interestApplicationDays": {
      "daysInMonth": [
        0
      ],
      "shortMonthHandlingMethod": "LAST_DAY_IN_MONTH"
    },
    "interestApplicationMethod": "AFTER_DISBURSEMENT",
    "interestBalanceCalculationMethod": "ONLY_PRINCIPAL",
    "interestCalculationMethod": "FLAT",
    "interestRateSettings": [
      {
        "indexSourceKey": "string",
        "interestRate": {
          "defaultValue": 0,
          "maxValue": 0,
          "minValue": 0
        },
        "interestRateCeilingValue": 0,
        "interestRateFloorValue": 0,
        "interestRateReviewCount": 0,
        "interestRateReviewUnit": "DAYS",
        "interestRateSource": "FIXED_INTEREST_RATE"
      }
    ],
    "interestType": "SIMPLE_INTEREST",
    "pmtAdjustmentThreshold": {
      "method": "WORKING_DAYS",
      "numberOfDays": 0
    },
    "scheduleInterestDaysCountMethod": "REPAYMENT_PERIODICITY"
  },
  "internalControls": {
    "dormancyPeriodDays": 0,
    "fourEyesPrinciple": {
      "activeForLoanApproval": true
    },
    "lockSettings": {
      "cappingConstraintType": "SOFT_CAP",
      "cappingMethod": "OUTSTANDING_PRINCIPAL_PERCENTAGE",
      "cappingPercentage": 0,
      "lockPeriodDays": 0
    }
  },
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "loanAmountSettings": {
    "loanAmount": {
      "defaultValue": 0,
      "maxValue": 0,
      "minValue": 0
    },
    "trancheSettings": {
      "maxNumberOfTranches": 0
    }
  },
  "name": "string",
  "newAccountSettings": {
    "accountInitialState": "PARTIAL_APPLICATION",
    "idGeneratorType": "INCREMENTAL_NUMBER",
    "idPattern": "string"
  },
  "notes": "string",
  "offsetSettings": {
    "allowOffset": true
  },
  "paymentSettings": {
    "amortizationMethod": "STANDARD_PAYMENTS",
    "latePaymentsRecalculationMethod": "OVERDUE_INSTALLMENTS_INCREASE",
    "paymentMethod": "HORIZONTAL",
    "prepaymentSettings": {
      "applyInterestOnPrepaymentMethod": "AUTOMATIC",
      "elementsRecalculationMethod": "PRINCIPAL_EXPECTED_FIXED",
      "ercFreeAllowance": 0,
      "futurePaymentsAcceptance": "NO_FUTURE_PAYMENTS",
      "prepaymentAcceptance": "ACCEPT_PREPAYMENTS",
      "prepaymentRecalculationMethod": "NO_RECALCULATION",
      "principalPaidInstallmentStatus": "PARTIALLY_PAID"
    },
    "principalPaymentSettings": {
      "amount": {
        "defaultValue": 0,
        "maxValue": 0,
        "minValue": 0
      },
      "defaultPrincipalRepaymentInterval": 0,
      "includeFeesInFloorAmount": true,
      "includeInterestInFloorAmount": true,
      "percentage": {
        "defaultValue": 0,
        "maxValue": 0,
        "minValue": 0
      },
      "principalCeilingValue": 0,
      "principalFloorValue": 0,
      "principalPaymentMethod": "FLAT",
      "totalDueAmountFloor": 0,
      "totalDuePayment": "FLAT"
    },
    "repaymentAllocationOrder": [
      "PRINCIPAL"
    ]
  },
  "penaltySettings": {
    "loanPenaltyCalculationMethod": "NONE",
    "loanPenaltyGracePeriod": 0,
    "penaltyRate": {
      "defaultValue": 0,
      "maxValue": 0,
      "minValue": 0
    }
  },
  "redrawSettings": {
    "allowRedraw": true
  },
  "scheduleSettings": {
    "amortizationPeriod": {
      "defaultValue": 0,
      "maxValue": 0,
      "minValue": 0
    },
    "billingCycles": {
      "enabled": true,
      "startDays": [
        0
      ]
    },
    "defaultRepaymentPeriodCount": 0,
    "firstRepaymentDueDateOffset": {
      "defaultValue": 0,
      "maxValue": 0,
      "minValue": 0
    },
    "fixedDaysOfMonth": [
      0
    ],
    "interestAccrualSince": "DISBURSEMENT",
    "keepInstallmentsEqualIfLongFirstPeriod": true,
    "numInstallments": {
      "defaultValue": 0,
      "maxValue": 0,
      "minValue": 0
    },
    "previewSchedule": {
      "numberOfPreviewedInstalments": 0,
      "previewScheduleEnabled": true
    },
    "repaymentMethod": "AMOUNT",
    "repaymentPeriodUnit": "DAYS",
    "repaymentReschedulingMethod": "NONE",
    "repaymentScheduleEditOptions": [
      "ADJUST_PAYMENT_DATES"
    ],
    "repaymentScheduleMethod": "NONE",
    "roundingSettings": {
      "repaymentCurrencyRounding": "NO_ROUNDING",
      "repaymentElementsRoundingMethod": "NO_ROUNDING",
      "roundingRepaymentScheduleMethod": "NO_ROUNDING"
    },
    "scheduleDueDatesMethod": "INTERVAL",
    "scheduleEditOptionDetails": {
      "paymentHolidaysSettings": {
        "paymentHolidaysLoanTermOption": "EXTEND_LOAN_TERM"
      }
    },
    "shortMonthHandlingMethod": "LAST_DAY_IN_MONTH"
  },
  "securitySettings": {
    "isCollateralEnabled": true,
    "isGuarantorsEnabled": true,
    "requiredGuaranties": 0
  },
  "state": "ACTIVE",
  "taxSettings": {
    "taxCalculationMethod": "INCLUSIVE",
    "taxSourceKey": "string",
    "taxesOnFeesEnabled": true,
    "taxesOnInterestEnabled": true,
    "taxesOnPenaltyEnabled": true
  },
  "templates": [
    {
      "name": "string",
      "type": "ACCOUNT"
    }
  ],
  "type": "FIXED_TERM_LOAN",
  "useFeeIncludedInPMT": true
}

Parameters

Name Type Description In
Idempotency-Key string Key that can be used to support idempotency on this POST. Must be a valid UUID(version 4 is recommended) string and can only be used with the exact same request. Can be used in retry mechanisms to prevent double posting. header
body (required) LoanProduct Loan product to be created. body

Example responses

201 Response

{
  "accountLinkSettings": {
    "enabled": true,
    "linkableDepositProductKey": "string",
    "linkedAccountOptions": [
      "AUTO_LINK_ACCOUNTS"
    ],
    "settlementMethod": "FULL_DUE_AMOUNTS"
  },
  "accountingSettings": {
    "accountingMethod": "NONE",
    "accountingRules": [
      {
        "encodedKey": "string",
        "financialResource": "PORTFOLIO_CONTROL",
        "glAccountKey": "string",
        "transactionChannelKey": "string"
      }
    ],
    "interestAccrualCalculation": "NONE",
    "interestAccruedAccountingMethod": "NONE"
  },
  "adjustInterestForFirstInstallment": true,
  "adjustTotalDueForInstallmentsWithDifferentInterval": true,
  "allowCustomRepaymentAllocation": true,
  "arrearsSettings": {
    "dateCalculationMethod": "ACCOUNT_FIRST_WENT_TO_ARREARS",
    "encodedKey": "string",
    "monthlyToleranceDay": 0,
    "nonWorkingDaysMethod": "INCLUDED",
    "toleranceCalculationMethod": "ARREARS_TOLERANCE_PERIOD",
    "toleranceFloorAmount": 0,
    "tolerancePercentageOfOutstandingPrincipal": {
      "defaultValue": 0,
      "maxValue": 0,
      "minValue": 0
    },
    "tolerancePeriod": {
      "defaultValue": 0,
      "encodedKey": "string",
      "maxValue": 0,
      "minValue": 0
    }
  },
  "availabilitySettings": {
    "availableFor": [
      "INDIVIDUALS"
    ],
    "branchSettings": {
      "availableProductBranches": [
        "string"
      ],
      "forAllBranches": true
    }
  },
  "category": "PERSONAL_LENDING",
  "creationDate": "2016-09-06T13:37:50+03:00",
  "creditArrangementSettings": {
    "creditArrangementRequirement": "OPTIONAL"
  },
  "currency": {
    "code": "AED",
    "currencyCode": "string"
  },
  "encodedKey": "string",
  "feesSettings": {
    "allowArbitraryFees": true,
    "fees": [
      {
        "accountingRules": [
          {
            "encodedKey": "string",
            "financialResource": "PORTFOLIO_CONTROL",
            "glAccountKey": "string",
            "transactionChannelKey": "string"
          }
        ],
        "amortizationSettings": {
          "amortizationProfile": "NONE",
          "encodedKey": "string",
          "feeAmortizationUponRescheduleRefinanceOption": "END_AMORTIZATION_ON_THE_ORIGINAL_ACCOUNT",
          "frequency": "ACCOUNT_INSTALLMENTS_DUE_DATES",
          "intervalCount": 0,
          "intervalType": "PREDEFINED_INTERVALS",
          "periodCount": 0,
          "periodUnit": "DAYS"
        },
        "amount": 0,
        "amountCalculationFunctionName": "string",
        "amountCalculationMethod": "FLAT",
        "applyDateMethod": "MONTHLY_FROM_ACTIVATION",
        "creationDate": "2016-09-06T13:37:50+03:00",
        "defaultFeeRate": 0,
        "encodedKey": "string",
        "feeApplication": "REQUIRED",
        "id": "string",
        "interestBearing": true,
        "lastModifiedDate": "2016-09-06T13:37:50+03:00",
        "name": "string",
        "percentageAmount": 0,
        "scheduleAllocationMethod": "ON_INSTALLMENT",
        "state": "ACTIVE",
        "taxSettings": {
          "taxableCalculationMethod": "DEFAULT"
        },
        "trigger": "MANUAL"
      }
    ]
  },
  "fundingSettings": {
    "enabled": true,
    "funderInterestCommission": {
      "defaultValue": 0,
      "encodedKey": "string",
      "maxValue": 0,
      "minValue": 0
    },
    "funderInterestCommissionAllocationType": "PERCENTAGE_OF_LOAN_FUNDING",
    "lockFundsAtApproval": true,
    "organizationInterestCommission": {
      "defaultValue": 0,
      "encodedKey": "string",
      "maxValue": 0,
      "minValue": 0
    },
    "requiredFunds": 0
  },
  "gracePeriodSettings": {
    "gracePeriod": {
      "defaultValue": 0,
      "encodedKey": "string",
      "maxValue": 0,
      "minValue": 0
    },
    "gracePeriodType": "NONE"
  },
  "id": "string",
  "interestSettings": {
    "accrueLateInterest": true,
    "compoundingFrequency": "DAILY",
    "daysInYear": "ACTUAL_365_FIXED",
    "decoupleInterestFromArrears": true,
    "indexRateSettings": {
      "accrueInterestAfterMaturity": true,
      "allowNegativeInterestRate": true,
      "encodedKey": "string",
      "indexSourceKey": "string",
      "interestChargeFrequency": "ANNUALIZED",
      "interestChargeFrequencyCount": 0,
      "interestRate": {
        "defaultValue": 0,
        "maxValue": 0,
        "minValue": 0
      },
      "interestRateCeilingValue": 0,
      "interestRateFloorValue": 0,
      "interestRateReviewCount": 0,
      "interestRateReviewUnit": "DAYS",
      "interestRateSource": "FIXED_INTEREST_RATE",
      "interestRateTerms": "FIXED",
      "interestRateTiers": [
        {
          "encodedKey": "string",
          "endingBalance": 0,
          "interestRate": 0
        }
      ]
    },
    "interestApplicationDays": {
      "daysInMonth": [
        0
      ],
      "shortMonthHandlingMethod": "LAST_DAY_IN_MONTH"
    },
    "interestApplicationMethod": "AFTER_DISBURSEMENT",
    "interestBalanceCalculationMethod": "ONLY_PRINCIPAL",
    "interestCalculationMethod": "FLAT",
    "interestRateSettings": [
      {
        "encodedKey": "string",
        "indexSourceKey": "string",
        "interestRate": {
          "defaultValue": 0,
          "maxValue": 0,
          "minValue": 0
        },
        "interestRateCeilingValue": 0,
        "interestRateFloorValue": 0,
        "interestRateReviewCount": 0,
        "interestRateReviewUnit": "DAYS",
        "interestRateSource": "FIXED_INTEREST_RATE"
      }
    ],
    "interestType": "SIMPLE_INTEREST",
    "pmtAdjustmentThreshold": {
      "method": "WORKING_DAYS",
      "numberOfDays": 0
    },
    "scheduleInterestDaysCountMethod": "REPAYMENT_PERIODICITY"
  },
  "internalControls": {
    "dormancyPeriodDays": 0,
    "fourEyesPrinciple": {
      "activeForLoanApproval": true
    },
    "lockSettings": {
      "cappingConstraintType": "SOFT_CAP",
      "cappingMethod": "OUTSTANDING_PRINCIPAL_PERCENTAGE",
      "cappingPercentage": 0,
      "lockPeriodDays": 0
    }
  },
  "lastModifiedDate": "2016-09-06T13:37:50+03:00",
  "loanAmountSettings": {
    "loanAmount": {
      "defaultValue": 0,
      "encodedKey": "string",
      "maxValue": 0,
      "minValue": 0
    },
    "trancheSettings": {
      "maxNumberOfTranches": 0
    }
  },
  "name": "string",
  "newAccountSettings": {
    "accountInitialState": "PARTIAL_APPLICATION",
    "idGeneratorType": "INCREMENTAL_NUMBER",
    "idPattern": "string"
  },
  "notes": "string",
  "offsetSettings": {
    "allowOffset": true
  },
  "paymentSettings": {
    "amortizationMethod": "STANDARD_PAYMENTS",
    "latePaymentsRecalculationMethod": "OVERDUE_INSTALLMENTS_INCREASE",
    "paymentMethod": "HORIZONTAL",
    "prepaymentSettings": {
      "applyInterestOnPrepaymentMethod": "AUTOMATIC",
      "elementsRecalculationMethod": "PRINCIPAL_EXPECTED_FIXED",
      "ercFreeAllowance": 0,
      "futurePaymentsAcceptance": "NO_FUTURE_PAYMENTS",
      "prepaymentAcceptance": "ACCEPT_PREPAYMENTS",
      "prepaymentRecalculationMethod": "NO_RECALCULATION",
      "principalPaidInstallmentStatus": "PARTIALLY_PAID"
    },
    "principalPaymentSettings": {
      "amount": {
        "defaultValue": 0,
        "encodedKey": "string",
        "maxValue": 0,
        "minValue": 0
      },
      "defaultPrincipalRepaymentInterval": 0,
      "encodedKey": "string",
      "includeFeesInFloorAmount": true,
      "includeInterestInFloorAmount": true,
      "percentage": {
        "defaultValue": 0,
        "encodedKey": "string",
        "maxValue": 0,
        "minValue": 0
      },
      "principalCeilingValue": 0,
      "principalFloorValue": 0,
      "principalPaymentMethod": "FLAT",
      "totalDueAmountFloor": 0,
      "totalDuePayment": "FLAT"
    },
    "repaymentAllocationOrder": [
      "PRINCIPAL"
    ]
  },
  "penaltySettings": {
    "loanPenaltyCalculationMethod": "NONE",
    "loanPenaltyGracePeriod": 0,
    "penaltyRate": {
      "defaultValue": 0,
      "encodedKey": "string",
      "maxValue": 0,
      "minValue": 0
    }
  },
  "redrawSettings": {
    "allowRedraw": true
  },
  "scheduleSettings": {
    "amortizationPeriod": {
      "defaultValue": 0,
      "maxValue": 0,
      "minValue": 0
    },
    "billingCycles": {
      "enabled": true,
      "startDays": [
        0
      ]
    },
    "defaultRepaymentPeriodCount": 0,
    "firstRepaymentDueDateOffset": {
      "defaultValue": 0,
      "encodedKey": "string",
      "maxValue": 0,
      "minValue": 0
    },
    "fixedDaysOfMonth": [
      0
    ],
    "interestAccrualSince": "DISBURSEMENT",
    "keepInstallmentsEqualIfLongFirstPeriod": true,
    "numInstallments": {
      "defaultValue": 0,
      "encodedKey": "string",
      "maxValue": 0,
      "minValue": 0
    },
    "previewSchedule": {
      "numberOfPreviewedInstalments": 0,
      "previewScheduleEnabled": true
    },
    "repaymentMethod": "AMOUNT",
    "repaymentPeriodUnit": "DAYS",
    "repaymentReschedulingMethod": "NONE",
    "repaymentScheduleEditOptions": [
      "ADJUST_PAYMENT_DATES"
    ],
    "repaymentScheduleMethod": "NONE",
    "roundingSettings": {
      "repaymentCurrencyRounding": "NO_ROUNDING",
      "repaymentElementsRoundingMethod": "NO_ROUNDING",
      "roundingRepaymentScheduleMethod": "NO_ROUNDING"
    },
    "scheduleDueDatesMethod": "INTERVAL",
    "scheduleEditOptionDetails": {
      "paymentHolidaysSettings": {
        "paymentHolidaysLoanTermOption": "EXTEND_LOAN_TERM"
      }
    },
    "shortMonthHandlingMethod": "LAST_DAY_IN_MONTH"
  },
  "securitySettings": {
    "isCollateralEnabled": true,
    "isGuarantorsEnabled": true,
    "requiredGuaranties": 0
  },
  "state": "ACTIVE",
  "taxSettings": {
    "taxCalculationMethod": "INCLUSIVE",
    "taxSourceKey": "string",
    "taxesOnFeesEnabled": true,
    "taxesOnInterestEnabled": true,
    "taxesOnPenaltyEnabled": true
  },
  "templates": [
    {
      "creationDate": "2016-09-06T13:37:50+03:00",
      "encodedKey": "string",
      "lastModifiedDate": "2016-09-06T13:37:50+03:00",
      "name": "string",
      "type": "ACCOUNT"
    }
  ],
  "type": "FIXED_TERM_LOAN",
  "useFeeIncludedInPMT": true
}

Responses

Status Meaning Description Schema
102 Processing Your idempotent request was already submitted and is currently being processed, try again later. None
201 Created Loan product created. LoanProduct
400 Bad Request A validation error occurred ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

Loan Products Configuration

Retrieve and update the configuration for loan products.

A loan product allows you to set up, in advance, the parameters for a type of loan that you wish to offer. Loan products are flexible and highly customizable templates for creating individual loans. For more information about this resource, see Loan Products Configuration in our User Guide.

Your user or API consumer must have the View Manage Configuration As Code (GET_MANAGE_CONFIGURATION_AS_CODE) and/or Update Manage Configuration As Code (PUT_MANAGE_CONFIGURATION_AS_CODE) permissions to make GET and/or PUT requests to these configuration as code (CasC) endpoints. For more information about CasC, seeĀ Configuration as Code Overview.

get (Loan Products Configuration)

Code samples

# You can also use wget
curl -X GET /configuration/loanproducts.yaml \
  -H 'Accept: application/vnd.mambu.v2+yaml'

GET /configuration/loanproducts.yaml HTTP/1.1

Accept: application/vnd.mambu.v2+yaml

var headers = {
  'Accept':'application/vnd.mambu.v2+yaml'

};

$.ajax({
  url: '/configuration/loanproducts.yaml',
  method: 'get',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/vnd.mambu.v2+yaml'
}

result = RestClient.get '/configuration/loanproducts.yaml',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/vnd.mambu.v2+yaml'
}

r = requests.get('/configuration/loanproducts.yaml', params={

}, headers = headers)

print r.json()

 'application/vnd.mambu.v2+yaml',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('GET','/configuration/loanproducts.yaml', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/configuration/loanproducts.yaml");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/vnd.mambu.v2+yaml"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "/configuration/loanproducts.yaml", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /configuration/loanproducts.yaml

Allows you to get or update the loan products configuration.

Parameters

Name Type Description In
type array[string] The product type of the loan products to be returned. If the parameter is absent, all the loan products will be returned. query

Enumerated Values

Parameter Value
type FIXED_TERM_LOAN
type DYNAMIC_TERM_LOAN
type INTEREST_FREE_LOAN
type TRANCHED_LOAN
type REVOLVING_CREDIT
type INTEREST_ONLY_EQUAL_INSTALLMENTS
type DYNAMIC_MORTGAGE

Example responses

var-loanproducts-config-get-200

400 Response

401 invalid credentials

{
    "errors": [
        {
            "errorCode": 2,
            "errorSource": "credentials",
            "errorReason": "INVALID_CREDENTIALS"
        }
    ]
}

403 forbidden

{
    "errors": [
        {
            "errorCode": 15,
            "errorSource": "not authorized",
            "errorReason": "INVALID_PERMISSIONS"
        }
    ]
}

Responses

Status Meaning Description Schema
200 OK Loan products configuration returned. LoanProductsConfiguration
400 Bad Request A validation error occurred. ErrorResponse
401 Unauthorized Unauthorized ErrorResponse
403 Forbidden Forbidden ErrorResponse

update (Loan Products Configuration)

Code samples

# You can also use wget
curl -X PUT /configuration/loanproducts.yaml \
  -H 'Content-Type: application/yaml' \
  -H 'Accept: application/vnd.mambu.v2+yaml' \
  -H 'X-Mambu-Async: true' \
  -H 'X-Mambu-Callback: string'

PUT /configuration/loanproducts.yaml HTTP/1.1

Content-Type: application/yaml
Accept: application/vnd.mambu.v2+yaml
X-Mambu-Async: true
X-Mambu-Callback: string

var headers = {
  'Content-Type':'application/yaml',
  'Accept':'application/vnd.mambu.v2+yaml',
  'X-Mambu-Async':'true',
  'X-Mambu-Callback':'string'

};

$.ajax({
  url: '/configuration/loanproducts.yaml',
  method: 'put',

  headers: headers,
  success: function(data) {
    console.log(JSON.stringify(data));
  }
})

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/yaml',
  'Accept' => 'application/vnd.mambu.v2+yaml',
  'X-Mambu-Async' => 'true',
  'X-Mambu-Callback' => 'string'
}

result = RestClient.put '/configuration/loanproducts.yaml',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/yaml',
  'Accept': 'application/vnd.mambu.v2+yaml',
  'X-Mambu-Async': 'true',
  'X-Mambu-Callback': 'string'
}

r = requests.put('/configuration/loanproducts.yaml', params={

}, headers = headers)

print r.json()

 'application/yaml',
    'Accept' => 'application/vnd.mambu.v2+yaml',
    'X-Mambu-Async' => 'true',
    'X-Mambu-Callback' => 'string',
    
    );

$client = new \GuzzleHttp\Client();

// Define array of request body.
$request_body = array();

try {
    $response = $client->request('PUT','/configuration/loanproducts.yaml', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("/configuration/loanproducts.yaml");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/yaml"},
        "Accept": []string{"application/vnd.mambu.v2+yaml"},
        "X-Mambu-Async": []string{"true"},
        "X-Mambu-Callback": []string{"string"},
        
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "/configuration/loanproducts.yaml", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /configuration/loanproducts.yaml

Update loan products configuration

Body parameter

An example of a loan products configuration

---
id: "6354"
name: "house_mortgage"
notes: "loan product secured by a property that the loan applicant already owns"
type: "DYNAMIC_TERM_LOAN"
category: "COMMERCIAL"
state: "INACTIVE"
loanAmountSettings:
  loanAmount:
    minValue: 1
    maxValue: 100
    defaultValue: 10
  trancheSettings:
    maxNumberOfTranches: 1
scheduleSettings:
  repaymentScheduleMethod: "FIXED"
  scheduleDueDatesMethod: "FIXED_DAYS_OF_MONTH"
  defaultRepaymentPeriodCount: 4
  repaymentPeriodUnit: "MONTHS"
  fixedDaysOfMonth:
  - 2
  - 4
  shortMonthHandlingMethod: "LAST_DAY_IN_MONTH"
  roundingSettings:
    roundingRepaymentScheduleMethod: "NO_ROUNDING"
    repaymentCurrencyRounding: "ROUND_TO_NEAREST_WHOLE_UNIT"
    repaymentElementsRoundingMethod: "ROUND_ALL"
  numInstallments:
    defaultValue: 77
    maxValue: 7
  firstRepaymentDueDateOffset:
    defaultValue: 77
    maxValue: 7
  repaymentScheduleEditOptions:
  - "ADJUST_NUMBER_OF_INSTALLMENTS"
  - "ADJUST_FEE_PAYMENT_SCHEDULE"
  repaymentReschedulingMethod: "NEXT_WORKING_DAY"
  billingCycles:
    enabled: true
    startDays:
    - 9
    - 5
    - 7
  previewSchedule:
    previewScheduleEnabled: true
    numberOfPreviewedInstalments: 3
paymentSettings:
  paymentMethod: "VERTICAL"
  amortizationMethod: "OPTIMIZED_PAYMENTS"
  prepaymentSettings:
    prepaymentRecalculationMethod: "RECALCULATE_SCHEDULE_KEEP_SAME_NUMBER_OF_TERMS"
    elementsRecalculationMethod: "PRINCIPAL_EXPECTED_FIXED"
    prepaymentAcceptance: "ACCEPT_PREPAYMENTS"
    futurePaymentsAcceptance: "ACCEPT_FUTURE_PAYMENTS"
    applyInterestOnPrepaymentMethod: "AUTOMATIC"
    principalPaidInstallmentStatus: "PARTIALLY_PAID"
  latePaymentsRecalculationMethod: "LAST_INSTALLMENT_INCREASE"
  repaymentAllocationOrder:
  - "FEE"
  - "PRINCIPAL"
  principalPaymentSettings:
    amount:
      minValue: 1
      maxValue: 100
      defaultValue: 10
    percentage:
      minValue: 1
      maxValue: 100
      defaultValue: 10
    principalPaymentMethod: "OUTSTANDING_PRINCIPAL_PERCENTAGE"
    totalDuePayment: "OUTSTANDING_PRINCIPAL_PERCENTAGE"
    defaultPrincipalRepaymentInterval: 6
    principalCeilingValue: 5
    principalFloorValue: 3
    totalDueAmountFloor: 2
    includeFeesInFloorAmount: true
gracePeriodSettings:
  gracePeriod:
    defaultValue: 77
    maxValue: 7
  gracePeriodType: "NONE"
newAccountSettings:
  idGeneratorType: "RANDOM_PATTERN"
  idPattern: "@@@###"
  accountInitialState: "PENDING_APPROVAL"
interestSettings:
  interestApplicationMethod: "REPAYMENT_DUE_DATE"
  interestBalanceCalculationMethod: "PRINCIPAL_AND_INTEREST"
  interestCalculationMethod: "DECLINING_BALANCE"
  daysInYear: "ACTUAL_ACTUAL_ISDA"
  scheduleInterestDaysCountMethod: "REPAYMENT_PERIODICITY"
  interestType: "SIMPLE_INTEREST"
  indexRateSettings:
    indexSourceId: "index source id"
    interestRate:
      minValue: 1
      maxValue: 100
      defaultValue: 10
    interestRateSource: "FIXED_INTEREST_RATE"
    interestRateTerms: "TIERED"
    interestChargeFrequency: "EVERY_DAY"
    interestRateReviewUnit: "MONTHS"
    interestRateReviewCount: 6
    interestChargeFrequencyCount: 9
    accrueInterestAfterMaturity: true
    interestRateCeilingValue: 34
    interestRateFloorValue: 12
    allowNegativeInterestRate: true
    interestRateTiers:
    - endingBalance: 17
      interestRate: 45
    - endingBalance: 17
      interestRate: 45
  accrueLateInterest: true
  compoundingFrequency: "DAILY"
  interestRateSettings:
  - interestRateSource: "INDEX_INTEREST_RATE"
    indexSourceId: "index rate source id"
    interestRate:
      minValue: 1
      maxValue: 100
      defaultValue: 10
    interestRateCeilingValue: 45
    interestRateFloorValue: 87
    interestRateReviewCount: 7
    interestRateReviewUnit: "DAYS"
  - interestRateSource: "INDEX_INTEREST_RATE"
    indexSourceId: "index rate source id"
    interestRate:
      minValue: 1
      maxValue: 100
      defaultValue: 10
    interestRateCeilingValue: 45
    interestRateFloorValue: 87
    interestRateReviewCount: 7
    interestRateReviewUnit: "DAYS"
penaltySettings:
  penaltyRate:
    minValue: 1
    maxValue: 100
    defaultValue: 10
  loanPenaltyCalculationMethod: "OUTSTANDING_PRINCIPAL"
  loanPenaltyGracePeriod: 4
arrearsSettings:
  toleranceCalculationMethod: "ARREARS_TOLERANCE_PERIOD"
  dateCalculationMethod: "ACCOUNT_FIRST_WENT_TO_ARREARS"
  nonWorkingDaysMethod: "EXCLUDED"
  toleranceFloorAmount: 45
  tolerancePeriod:
    defaultValue: 77
    maxValue: 7
  tolerancePercentageOfOutstandingPrincipal:
    minValue: 1
    maxValue: 100
    defaultValue: 10
  monthlyToleranceDay: 4
feesSettings:
  allowArbitraryFees: true