Api ошибка 101

Some Background

REST APIs use the Status-Line part of an HTTP response message to inform clients of their request’s overarching result.
RFC 2616 defines the Status-Line syntax as shown below:

Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF

A great amount of applications are using Restful APIs that are based on the HTTP protocol for connecting their clients. In all the calls, the server and the endpoint at the client both return a call status to the client which can be in the form of:

  • The success of API call.
  • Failure of API call.

In both the cases, it is necessary to let the client know so that they can proceed to the next step. In the case of a successful API call they can proceed to the next call or whatever their intent was in the first place but in the case of latter they will be forced to modify their call so that the failed call can be recovered.

RestCase

To enable the best user experience for your customer, it is necessary on the part of the developers to make excellent error messages that can help their client to know what they want to do with the information they get. An excellent error message is precise and lets the user know about the nature of the error so that they can figure their way out of it.

A good error message also allows the developers to get their way out of the failed call.

Next step is to know what error messages to integrate into your framework so that the clients on the end point and the developers at the server are constantly made aware of the situation which they are in. in order to do so, the rule of thumb is to keep the error messages to a minimum and only incorporate those error messages which are helpful.

HTTP defines over 40 standard status codes that can be used to convey the results of a client’s request. The status codes are divided into the five categories presented here:

  • 1xx: Informational — Communicates transfer protocol-level information
  • 2xx: Success -Indicates that the client’s request was accepted successfully.
  • 3xx: Redirection — Indicates that the client must take some additional action in order to complete their request.
  • 4xx: Client Error — This category of error status codes points the finger at clients.
  • 5xx: Server Error — The server takes responsibility for these error status codes.

HTTP & REST

If you would ask me 5 years ago about HTTP Status codes I would guess that the talk is about web sites, status 404 meaning that some page was not found and etc. But today when someone asks me about HTTP Status codes, it is 99.9% refers to REST API web services development. I have lots of experience in both areas (Website development, REST API web services development) and it is sometimes hard to come to a conclusion about what and how use the errors in REST APIs.

There are some cases where this status code is always returned, even if there was an error that occurred. Some believe that returning status codes other than 200 is not good as the client did reach your REST API and got response.

Proper use of the status codes will help with your REST API management and REST API workflow management.

If for example the user asked for “account” and that account was not found there are 2 options to use for returning an error to the user:

  • Return 200 OK Status and in the body return a json containing explanation that the account was not found.

  • Return 404 not found status.
    The first solution opens up a question whether the user should work a bit harder to parse the json received and to see whether that json contains error or not.

  • There is also a third solution: Return 400 Error — Client Error. I will explain a bit later why this is my favorite solution.

It is understandable that for the user it is easier to check the status code of 404 without any parsing work to do.

I my opinion this solution is actually miss-use of the HTTP protocol

We did reach the REST API, we did got response from the REST API, what happens if the users misspells the URL of the REST API – he will get the 404 status but that is returned not by the REST API itself.

I think that these solutions should be interesting to explore and to see the benefits of one versus the other.

There is also one more solution that is basically my favorite – this one is a combination of the first two solutions, he is also gives better Restful API services automatic testing support because only several status codes are returned, I will try to explain about it.

Error handling Overview

Error responses should include a common HTTP status code, message for the developer, message for the end-user (when appropriate), internal error code (corresponding to some specific internally determined ID), links where developers can find more info. For example:

‘{ «status» : 400,
«developerMessage» : «Verbose, plain language description of the problem. Provide developers suggestions about how to solve their problems here»,
«userMessage» : «This is a message that can be passed along to end-users, if needed.»,
«errorCode» : «444444»,
«moreInfo» : «http://www.example.gov/developer/path/to/help/for/444444,
http://tests.org/node/444444»,
}’

How to think about errors in a pragmatic way with REST?
Apigee’s blog post that talks about this issue compares 3 top API providers.

REST API Error Codes

Facebook

No matter what happens on a Facebook request, you get back the 200 status code — everything is OK. Many error messages also push down into the HTTP response. Here they also throw an #803 error but with no information about what #803 is or how to react to it.

Twilio

Twilio does a great job aligning errors with HTTP status codes. Like Facebook, they provide a more granular error message but with a link that takes you to the documentation. Community commenting and discussion on the documentation helps to build a body of information and adds context for developers experiencing these errors.

SimpleGeo

Provides error codes but with no additional value in the payload.

Error Handling — Best Practises

First of all: Use HTTP status codes! but don’t overuse them.
Use HTTP status codes and try to map them cleanly to relevant standard-based codes.
There are over 70 HTTP status codes. However, most developers don’t have all 70 memorized. So if you choose status codes that are not very common you will force application developers away from building their apps and over to wikipedia to figure out what you’re trying to tell them.

Therefore, most API providers use a small subset.
For example, the Google GData API uses only 10 status codes, Netflix uses 9, and Digg, only 8.

REST API Status Codes Subset

How many status codes should you use for your API?

When you boil it down, there are really only 3 outcomes in the interaction between an app and an API:

  • Everything worked
  • The application did something wrong
  • The API did something wrong

Start by using the following 3 codes. If you need more, add them. But you shouldn’t go beyond 8.

  • 200 — OK
  • 400 — Bad Request
  • 500 — Internal Server Error

Please keep in mind the following rules when using these status codes:

200 (OK) must not be used to communicate errors in the response body

Always make proper use of the HTTP response status codes as specified by the rules in this section. In particular, a REST API must not be compromised in an effort to accommodate less sophisticated HTTP clients.

400 (Bad Request) may be used to indicate nonspecific failure

400 is the generic client-side error status, used when no other 4xx error code is appropriate. For errors in the 4xx category, the response body may contain a document describing the client’s error (unless the request method was HEAD).

500 (Internal Server Error) should be used to indicate API malfunction 500 is the generic REST API error response.

Most web frameworks automatically respond with this response status code whenever they execute some request handler code that raises an exception. A 500 error is never the client’s fault and therefore it is reasonable for the client to retry the exact same request that triggered this response, and hope to get a different response.

If you’re not comfortable reducing all your error conditions to these 3, try adding some more but do not go beyond 8:

  • 401 — Unauthorized
  • 403 — Forbidden
  • 404 — Not Found

Please keep in mind the following rules when using these status codes:

A 401 error response indicates that the client tried to operate on a protected resource without providing the proper authorization. It may have provided the wrong credentials or none at all.

403 (Forbidden) should be used to forbid access regardless of authorization state

A 403 error response indicates that the client’s request is formed correctly, but the REST API refuses to honor it. A 403 response is not a case of insufficient client credentials; that would be 401 (“Unauthorized”). REST APIs use 403 to enforce application-level permissions. For example, a client may be authorized to interact with some, but not all of a REST API’s resources. If the client attempts a resource interaction that is outside of its permitted scope, the REST API should respond with 403.

404 (Not Found) must be used when a client’s URI cannot be mapped to a resource

The 404 error status code indicates that the REST API can’t map the client’s URI to a resource.

RestCase

Conclusion

I believe that the best solution to handle errors in a REST API web services is the third option, in short:
Use three simple, common response codes indicating (1) success, (2) failure due to client-side problem, (3) failure due to server-side problem:

  • 200 — OK
  • 400 — Bad Request (Client Error) — A json with error \ more details should return to the client.
  • 401 — Unauthorized
  • 500 — Internal Server Error — A json with an error should return to the client only when there is no security risk by doing that.

I think that this solution can also ease the client to handle only these 4 status codes and when getting either 400 or 500 code he should take the response message and parse it in order to see what is the problem exactly and on the other hand the REST API service is simple enough.

The decision of choosing which error messages to incorporate and which to leave is based on sheer insight and intuition. For example: if an app and API only has three outcomes which are; everything worked, the application did not work properly and API did not respond properly then you are only concerned with three error codes. By putting in unnecessary codes, you will only distract the users and force them to consult Google, Wikipedia and other websites.

Most important thing in the case of an error code is that it should be descriptive and it should offer two outputs:

  • A plain descriptive sentence explaining the situation in the most precise manner.
  • An ‘if-then’ situation where the user knows what to do with the error message once it is returned in an API call.

The error message returned in the result of the API call should be very descriptive and verbal. A code is preferred by the client who is well versed in the programming and web language but in the case of most clients they find it hard to get the code.

As I stated before, 404 is a bit problematic status when talking about Restful APIs. Does this status means that the resource was not found? or that there is not mapping to the requested resource? Everyone can decide what to use and where :)

REST APIs use the Status-Line part of an HTTP response message to inform clients of their request’s overarching result. RFC 2616 defines the Status-Line syntax as shown below:

Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF

HTTP defines these standard status codes that can be used to convey the results of a client’s request. The status codes are divided into five categories.

  • 1xx: Informational – Communicates transfer protocol-level information.
  • 2xx: Success – Indicates that the client’s request was accepted successfully.
  • 3xx: Redirection – Indicates that the client must take some additional action in order to complete their request.
  • 4xx: Client Error – This category of error status codes points the finger at clients.
  • 5xx: Server Error – The server takes responsibility for these error status codes.

1xx Status Codes [Informational]

Status Code

Description

100 Continue

An interim response. Indicates to the client that the initial part of the request has been received and has not yet been rejected by the server. The client SHOULD continue by sending the remainder of the request or, if the request has already been completed, ignore this response. The server MUST send a final response after the request has been completed.

101 Switching Protocol

Sent in response to an Upgrade request header from the client, and indicates the protocol the server is switching to.

102 Processing (WebDAV)

Indicates that the server has received and is processing the request, but no response is available yet.

103 Early Hints

Primarily intended to be used with the Link header. It suggests the user agent start preloading the resources while the server prepares a final response.

2xx Status Codes [Success]

Status Code

Description

200 OK

Indicates that the request has succeeded.

201 Created

Indicates that the request has succeeded and a new resource has been created as a result.

202 Accepted

Indicates that the request has been received but not completed yet. It is typically used in log running requests and batch processing.

203 Non-Authoritative Information

Indicates that the returned metainformation in the entity-header is not the definitive set as available from the origin server, but is gathered from a local or a third-party copy. The set presented MAY be a subset or superset of the original version.

204 No Content

The server has fulfilled the request but does not need to return a response body. The server may return the updated meta information.

205 Reset Content

Indicates the client to reset the document which sent this request.

206 Partial Content

It is used when the Range header is sent from the client to request only part of a resource.

207 Multi-Status (WebDAV)

An indicator to a client that multiple operations happened, and that the status for each operation can be found in the body of the response.

208 Already Reported (WebDAV)

Allows a client to tell the server that the same resource (with the same binding) was mentioned earlier. It never appears as a true HTTP response code in the status line, and only appears in bodies.

226 IM Used

The server has fulfilled a GET request for the resource, and the response is a representation of the result of one or more instance-manipulations applied to the current instance.

3xx Status Codes [Redirection]

Status Code

Description

300 Multiple Choices

The request has more than one possible response. The user-agent or user should choose one of them.

301 Moved Permanently

The URL of the requested resource has been changed permanently. The new URL is given by the Location header field in the response. This response is cacheable unless indicated otherwise.

302 Found

The URL of the requested resource has been changed temporarily. The new URL is given by the Location field in the response. This response is only cacheable if indicated by a Cache-Control or Expires header field.

303 See Other

The response can be found under a different URI and SHOULD be retrieved using a GET method on that resource.

304 Not Modified

Indicates the client that the response has not been modified, so the client can continue to use the same cached version of the response.

305 Use Proxy (Deprecated)

Indicates that a requested response must be accessed by a proxy.

306 (Unused)

It is a reserved status code and is not used anymore.

307 Temporary Redirect

Indicates the client to get the requested resource at another URI with same method that was used in the prior request. It is similar to 302 Found with one exception that the same HTTP method will be used that was used in the prior request.

308 Permanent Redirect (experimental)

Indicates that the resource is now permanently located at another URI, specified by the Location header. It is similar to 301 Moved Permanently with one exception that the same HTTP method will be used that was used in the prior request.

4xx Status Codes (Client Error)

Status Code

Description

400 Bad Request

The request could not be understood by the server due to incorrect syntax. The client SHOULD NOT repeat the request without modifications.

401 Unauthorized

Indicates that the request requires user authentication information. The client MAY repeat the request with a suitable Authorization header field

402 Payment Required (Experimental)

Reserved for future use. It is aimed for using in the digital payment systems.

403 Forbidden

Unauthorized request. The client does not have access rights to the content. Unlike 401, the client’s identity is known to the server.

404 Not Found

The server can not find the requested resource.

405 Method Not Allowed

The request HTTP method is known by the server but has been disabled and cannot be used for that resource.

406 Not Acceptable

The server doesn’t find any content that conforms to the criteria given by the user agent in the Accept header sent in the request.

407 Proxy Authentication Required

Indicates that the client must first authenticate itself with the proxy.

408 Request Timeout

Indicates that the server did not receive a complete request from the client within the server’s allotted timeout period.

409 Conflict

The request could not be completed due to a conflict with the current state of the resource.

410 Gone

The requested resource is no longer available at the server.

411 Length Required

The server refuses to accept the request without a defined Content- Length. The client MAY repeat the request if it adds a valid Content-Length header field.

412 Precondition Failed

The client has indicated preconditions in its headers which the server does not meet.

413 Request Entity Too Large

Request entity is larger than limits defined by server.

414 Request-URI Too Long

The URI requested by the client is longer than the server can interpret.

415 Unsupported Media Type

The media-type in Content-type of the request is not supported by the server.

416 Requested Range Not Satisfiable

The range specified by the Range header field in the request can’t be fulfilled.

417 Expectation Failed

The expectation indicated by the Expect request header field can’t be met by the server.

418 I’m a teapot (RFC 2324)

It was defined as April’s lool joke and is not expected to be implemented by actual HTTP servers. (RFC 2324)

420 Enhance Your Calm (Twitter)

Returned by the Twitter Search and Trends API when the client is being rate limited.

422 Unprocessable Entity (WebDAV)

The server understands the content type and syntax of the request entity, but still server is unable to process the request for some reason.

423 Locked (WebDAV)

The resource that is being accessed is locked.

424 Failed Dependency (WebDAV)

The request failed due to failure of a previous request.

425 Too Early (WebDAV)

Indicates that the server is unwilling to risk processing a request that might be replayed.

426 Upgrade Required

The server refuses to perform the request. The server will process the request after the client upgrades to a different protocol.

428 Precondition Required

The origin server requires the request to be conditional.

429 Too Many Requests

The user has sent too many requests in a given amount of time (“rate limiting”).

431 Request Header Fields Too Large

The server is unwilling to process the request because its header fields are too large.

444 No Response (Nginx)

The Nginx server returns no information to the client and closes the connection.

449 Retry With (Microsoft)

The request should be retried after performing the appropriate action.

450 Blocked by Windows Parental Controls (Microsoft)

Windows Parental Controls are turned on and are blocking access to the given webpage.

451 Unavailable For Legal Reasons

The user-agent requested a resource that cannot legally be provided.

499 Client Closed Request (Nginx)

The connection is closed by the client while HTTP server is processing its request, making the server unable to send the HTTP header back.

5xx Status Codes (Server Error)

Status Code

Description

500 Internal Server Error

The server encountered an unexpected condition that prevented it from fulfilling the request.

501 Not Implemented

The HTTP method is not supported by the server and cannot be handled.

502 Bad Gateway

The server got an invalid response while working as a gateway to get the response needed to handle the request.

503 Service Unavailable

The server is not ready to handle the request.

504 Gateway Timeout

The server is acting as a gateway and cannot get a response in time for a request.

505 HTTP Version Not Supported (Experimental)

The HTTP version used in the request is not supported by the server.

506 Variant Also Negotiates (Experimental)

Indicates that the server has an internal configuration error: the chosen variant resource is configured to engage in transparent content negotiation itself, and is therefore not a proper endpoint in the negotiation process.

507 Insufficient Storage (WebDAV)

The method could not be performed on the resource because the server is unable to store the representation needed to successfully complete the request.

508 Loop Detected (WebDAV)

The server detected an infinite loop while processing the request.

510 Not Extended

Further extensions to the request are required for the server to fulfill it.

511 Network Authentication Required

Indicates that the client needs to authenticate to gain network access.

6. REST Specific HTTP Status Codes

200 (OK)

It indicates that the REST API successfully carried out whatever action the client requested and that no more specific code in the 2xx series is appropriate.

Unlike the 204 status code, a 200 response should include a response body. The information returned with the response is dependent on the method used in the request, for example:

  • GET an entity corresponding to the requested resource is sent in the response;
  • HEAD the entity-header fields corresponding to the requested resource are sent in the response without any message-body;
  • POST an entity describing or containing the result of the action;
  • TRACE an entity containing the request message as received by the end server.

201 (Created)

A REST API responds with the 201 status code whenever a resource is created inside a collection. There may also be times when a new resource is created as a result of some controller action, in which case 201 would also be an appropriate response.

The newly created resource can be referenced by the URI(s) returned in the entity of the response, with the most specific URI for the resource given by a Location header field.

The origin server MUST create the resource before returning the 201 status code. If the action cannot be carried out immediately, the server SHOULD respond with a 202 (Accepted) response instead.

202 (Accepted)

A 202 response is typically used for actions that take a long while to process. It indicates that the request has been accepted for processing, but the processing has not been completed. The request might or might not be eventually acted upon, or even maybe disallowed when processing occurs.

Its purpose is to allow a server to accept a request for some other process (perhaps a batch-oriented process that is only run once per day) without requiring that the user agent’s connection to the server persist until the process is completed.

The entity returned with this response SHOULD include an indication of the request’s current status and either a pointer to a status monitor (job queue location) or some estimate of when the user can expect the request to be fulfilled.

204 (No Content)

The 204 status code is usually sent out in response to a PUT, POST, or DELETE request when the REST API declines to send back any status message or representation in the response message’s body.

An API may also send 204 in conjunction with a GET request to indicate that the requested resource exists, but has no state representation to include in the body.

If the client is a user agent, it SHOULD NOT change its document view from that which caused the request to be sent. This response is primarily intended to allow input for actions to take place without causing a change to the user agent’s active document view. However, any new or updated metainformation SHOULD be applied to the document currently in the user agent’s dynamic view.

The 204 response MUST NOT include a message-body and thus is always terminated by the first empty line after the header fields.

301 (Moved Permanently)

The 301 status code indicates that the REST API’s resource model has been significantly redesigned, and a new permanent URI has been assigned to the client’s requested resource. The REST API should specify the new URI in the response’s Location header, and all future requests should be directed to the given URI.

You will hardly use this response code in your API as you can always use the API versioning for the new API while retaining the old one.

302 (Found)

The HTTP response status code 302 Found is a common way of performing URL redirection. An HTTP response with this status code will additionally provide a URL in the Location header field. The user agent (e.g., a web browser) is invited by a response with this code to make a second. Otherwise identical, request to the new URL specified in the location field.

Many web browsers implemented this code in a manner that violated this standard, changing the request type of the new request to GET, regardless of the type employed in the original request (e.g., POST). RFC 1945 and RFC 2068 specify that the client is not allowed to change the method on the redirected request. The status codes 303 and 307 have been added for servers that wish to make unambiguously clear which kind of reaction is expected of the client.

303 (See Other)

A 303 response indicates that a controller resource has finished its work, but instead of sending a potentially unwanted response body, it sends the client the URI of a response resource. The response can be the URI of the temporary status message, or the URI to some already existing, more permanent, resource.

Generally speaking, the 303 status code allows a REST API to send a reference to a resource without forcing the client to download its state. Instead, the client may send a GET request to the value of the Location header.

The 303 response MUST NOT be cached, but the response to the second (redirected) request might be cacheable.

304 (Not Modified)

This status code is similar to 204 (“No Content”) in that the response body must be empty. The critical distinction is that 204 is used when there is nothing to send in the body, whereas 304 is used when the resource has not been modified since the version specified by the request headers If-Modified-Since or If-None-Match.

In such a case, there is no need to retransmit the resource since the client still has a previously-downloaded copy.

Using this saves bandwidth and reprocessing on both the server and client, as only the header data must be sent and received in comparison to the entirety of the page being re-processed by the server, then sent again using more bandwidth of the server and client.

307 (Temporary Redirect)

A 307 response indicates that the REST API is not going to process the client’s request. Instead, the client should resubmit the request to the URI specified by the response message’s Location header. However, future requests should still use the original URI.

A REST API can use this status code to assign a temporary URI to the client’s requested resource. For example, a 307 response can be used to shift a client request over to another host.

The temporary URI SHOULD be given by the Location field in the response. Unless the request method was HEAD, the entity of the response SHOULD contain a short hypertext note with a hyperlink to the new URI(s). If the 307 status code is received in response to a request other than GET or HEAD, the user agent MUST NOT automatically redirect the request unless it can be confirmed by the user, since this might change the conditions under which the request was issued.

400 (Bad Request)

400 is the generic client-side error status, used when no other 4xx error code is appropriate. Errors can be like malformed request syntax, invalid request message parameters, or deceptive request routing etc.

The client SHOULD NOT repeat the request without modifications.

401 (Unauthorized)

A 401 error response indicates that the client tried to operate on a protected resource without providing the proper authorization. It may have provided the wrong credentials or none at all. The response must include a WWW-Authenticate header field containing a challenge applicable to the requested resource.

The client MAY repeat the request with a suitable Authorization header field. If the request already included Authorization credentials, then the 401 response indicates that authorization has been refused for those credentials. If the 401 response contains the same challenge as the prior response, and the user agent has already attempted authentication at least once, then the user SHOULD be presented the entity that was given in the response, since that entity might include relevant diagnostic information.

403 (Forbidden)

A 403 error response indicates that the client’s request is formed correctly, but the REST API refuses to honor it, i.e., the user does not have the necessary permissions for the resource. A 403 response is not a case of insufficient client credentials; that would be 401 (“Unauthorized”).

Authentication will not help, and the request SHOULD NOT be repeated. Unlike a 401 Unauthorized response, authenticating will make no difference.

404 (Not Found)

The 404 error status code indicates that the REST API can’t map the client’s URI to a resource but may be available in the future. Subsequent requests by the client are permissible.

No indication is given of whether the condition is temporary or permanent. The 410 (Gone) status code SHOULD be used if the server knows, through some internally configurable mechanism, that an old resource is permanently unavailable and has no forwarding address. This status code is commonly used when the server does not wish to reveal exactly why the request has been refused, or when no other response is applicable.

405 (Method Not Allowed)

The API responds with a 405 error to indicate that the client tried to use an HTTP method that the resource does not allow. For instance, a read-only resource could support only GET and HEAD, while a controller resource might allow GET and POST, but not PUT or DELETE.

A 405 response must include the Allow header, which lists the HTTP methods that the resource supports. For example:

Allow: GET, POST

406 (Not Acceptable)

The 406 error response indicates that the API is not able to generate any of the client’s preferred media types, as indicated by the Accept request header. For example, a client request for data formatted as application/xml will receive a 406 response if the API is only willing to format data as application/json.

If the response could be unacceptable, a user agent SHOULD temporarily stop receipt of more data and query the user for a decision on further actions.

412 (Precondition Failed)

The 412 error response indicates that the client specified one or more preconditions in its request headers, effectively telling the REST API to carry out its request only if certain conditions were met. A 412 response indicates that those conditions were not met, so instead of carrying out the request, the API sends this status code.

415 (Unsupported Media Type)

The 415 error response indicates that the API is not able to process the client’s supplied media type, as indicated by the Content-Type request header. For example, a client request including data formatted as application/xml will receive a 415 response if the API is only willing to process data formatted as application/json.

For example, the client uploads an image as image/svg+xml, but the server requires that images use a different format.

500 (Internal Server Error)

500 is the generic REST API error response. Most web frameworks automatically respond with this response status code whenever they execute some request handler code that raises an exception.

A 500 error is never the client’s fault, and therefore, it is reasonable for the client to retry the same request that triggered this response and hope to get a different response.

The API response is the generic error message, given when an unexpected condition was encountered and no more specific message is suitable.

501 (Not Implemented)

The server either does not recognize the request method, or it cannot fulfill the request. Usually, this implies future availability (e.g., a new feature of a web-service API).

References :

https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml

Sponsor: Do you build complex software systems? See how NServiceBus makes it easier to design, build, and manage software systems that use message queues to achieve loose coupling. Get started for free.

How do you tell your API Consumers explicitly if there are errors or problems with their request? Everyone creating HTTP APIs seems to implement error responses differently. Wouldn’t it be great if HTTP API Errors had a standard? Well, there is! It’s called Problem Details (https://tools.ietf.org/html/rfc7807)

YouTube

Check out my YouTube channel where I post all kinds of content that accompanies my posts including this video showing everything that is in this post.

If you’re creating a RESTful HTTP API, Status Codes can be a good way to indicate to the client if a request was successful or not. The most common usage is 200 range status codes indicate a successful response and using 400 range indicate a client errors.

However, in most client error situations, how do you tell the client specifically what was wrong? Sure an HTTP 400 status code tells the client that there’s an issue, but what exactly is the issue?

Different Responses

Here are two made-up examples that were inspired by 2 different APIs that I’ve recently consumed. Both indicate there a client error, however, they both do this in very different ways.

This first example is using a Status Code of 400 Bad Request, which is good. They provide a response body that has a Message member which is human readable. There is also a documentation member which is a URI, I assume to give the developer more info on why it occurred.

Here’s another example but very different response.

This response has an HTTP 200 OK. Which is interesting, to say the least. Instead, to indicate success or failure, they include in the response body a success member was a Boolean. There is an error object which is useful because it contains an info member, which is human readable. But what’s really nice is the code and type members which appear to be machine-readable. Meaning we can read their documentation, and write the appropriate code to handle when we receive an error with code=101, then we might want to show our end-user some specific message or possibly perform some other type of action.

Commonality

So what do these 2 different HTTP APIs have in common when it comes to providing the client with error information?

Nothing.

They are both providing widely different response body’s and using HTTP status codes completely differently.

This means that every time you’re consuming an HTTP API, you have to write 100% custom code to handle the various ways that errors are returned.

At the bare minimum, it would be nice if there was a consistent and standard way to define the human-readable error message. In one of the responses, this was called “message”, in the other, it was “error.info“.

Wouldn’t it be great if there was a standard for providing error info to your clients? There is! It’s called Problem Details (RFC7807)

   HTTP [RFC7230] status codes are sometimes not sufficient to convey
   enough information about an error to be helpful.  While humans behind
   Web browsers can be informed about the nature of the problem with an
   HTML [W3C.REC-html5-20141028] response body, non-human consumers of
   so-called "HTTP APIs" are usually not.

   This specification defines simple JSON [RFC7159] and XML
   [W3C.REC-xml-20081126] document formats to suit this purpose.  They
   are designed to be reused by HTTP APIs, which can identify distinct
   "problem types" specific to their needs.

   Thus, API clients can be informed of both the high-level error class
   (using the status code) and the finer-grained details of the problem
   (using one of these formats).

Here’s an example using Problem Details for the first example defined above.

Problem Details

type“: URI or relative path that defines what the problem is. In a similar way, as the first example had a “documentation” member, this is the intent of this member as well. It’s to allow the developer to understand the exact meaning of this error. However, this is meant to also be machine-readable. Meaning this URI should be stable and always represent the same error. This way we can write our client code to handle this specific type of error how we see fit. It’s acting in a similar way as an error code or error key.

title“: A short human-readable message of the problem type. It should NOT change from occurrence to occurrence.

status“: The status member represents the same HTTP status code.

detail“: Human-readable explanation of the exact issue that occurred. This can differ from occurrence to occurrence.

instance“: A URI that represents the specific occurrence of the problem.

Here’s another example using Problem Details from the second example above.

Problem Details

Type & Extensions

In the example above, traceId is an extension. You can add any members you want to extend the response object. This allows you to provide more details to your clients when errors occur.

This is important because if you use the type member, which is the primary way you identify what the problem is, then you can provide more extension members based on the type you return.

In other words, in your HTTP API documentation, you can specify a problem type by its URI, and let the developer know there will be certain other extension members available to them for that specific problem.

Multiple Problems

As with everything, nothing is perfect. Problem Details has no explicit way of defining multiple problems in a single response. You can achieve this by defining a specific type, which indicates there will be a problems member which will be an array of the normal problem details members. Just as I described above to leverage bot the type and extensions together.

ASP.NET Core

If you’re using ASP.NET Core, you can use Problem Details today in your Controllers. Simply call the Problem() which returns an IActionResult.

If you don’t have thin controllers and have business logic outside of your controllers, then you can use Hellang.Middleware.ProblemDetails by Kristian Hellang which is a middleware that maps exceptions to problem details.

Source Code

Developer-level members of my CodeOpinion YouTube channel get access to the full source for any working demo application that I post on my blog or YouTube. Check out the membership for more info.

  • Smarter Single Page Application with a REST API
  • Decomposing CRUD to a Task Based UI
  • Building a Self Descriptive HTTP API in ASP.NET Core

Follow @CodeOpinion on Twitter

001

Authentication failed

Authentication details are incorrect.

 

007

IP lockdown violation

You have locked down the API instance to a specific IP address but attempted to send from an IP address different to the one you have set.

You can edit the setting to include your new server’s IP address or remove the IP lockdown completely within Developers’ Central’s API settings.

100

Data malformed

The JSON/XML data submitted is invalid.

Check that the syntax of your request has been formulated correctly and resubmit.

101

Invalid or missing parameters

One or more parameters are missing or invalid.

 

102

Invalid user data header

The format of the user data header is incorrect.

Ensure valid UDH data is being passed to the API.

105

Invalid destination address

The destination address you are attempting to send to is invalid.

Check that the number of the handset that you are attempting to send a message to is valid. The number should be in an international format, without a ‘ 00’ prefix or leading ‘+’ symbol OR begin with a ‘0’ if the default country prefix is enabled on your API.

106

Invalid source address

The specified sender address is incorrect.

The address that the message is sent ‘from’ has been specified incorrectly. If you are using a Sender ID as your source address, ensure that it has been registered within your online Developers’ Central account.

108

Invalid or missing API ID

The API ID is either incorrect or has not been included in the API call.

Include the correct API product ID in your query. You can check the ID that is associated with your API by logging into your Developers’ Central account.

109

Missing message ID

This may refer to either a client message ID or API message ID – for example, when using the ‘stop message’ command.

 

113

Maximum message parts exceeded

The text component of the message is greater than the permitted 160 characters (70 Unicode characters). View the concatenation page for help in resolving this issue.

Set concat equal to 1,2,3-N to overcome this by splitting the content across multiple messages. View concatenation information.

114

Cannot route message

This implies that the gateway is not currently routing messages to this network prefix. Please email support@clickatell.com with the mobile number in question.

 

116

Invalid unicode data

The format of the Unicode data entered is incorrect.

Ensure that the Unicode format is correct and resubmit your query.

120

clientMessageId contains space(s)

Your specified client message ID contains a space. Space characters in client message IDs are not currently supported.

The delivery time must be entered in minutes up to a maximum of 7 days.

121

Destination mobile number blocked

This number is not allowed to receive messages from us and has been put on our blocked list.

 

122

Destination mobile opted out

The user has opted out and is no longer subscribed to your service.

 

123

Invalid Sender ID

The sender ID is not valid or has not been approved.

A sender ID needs to be registered and approved before it can be successfully used in message sending.

128

Number delisted

This number has been delisted and cannot receive our messages.

 

130

Maximum MT limit exceeded until <UNIX TIMESTAMP>

This error is returned when an account has exceeded the maximum number of MT messages that can be sent daily or monthly. You can send messages again on the date indicated by the UNIX TIMESTAMP.

 

160

HTTP method is not supported on this resource

An unsupported HTTP method has been performed on the resource. Example: HTTP POST on the Coverage resource.

The response MUST include a Content-Type header that contains a valid method for the requested resource.

161

Resource does not exist

You are attempting to access a REST API resource that does not exist.

 

165

Invalid or no version header specified

The expected header that specifies version was either not found or is invalid.

Before continuing, make sure that the correct version is included in the submitted header. The header to use is X-Version: 1

166

Invalid accept header specified

The optional header that specifies acceptable content does not contain an allowed value.

 

167

Invalid or no content-type specified

The expected header that specifies content-type content was either not found or did not contain an allowed value.

Before continuing, make sure that an allowed value is included in the submitted content-type header. The allowable content-type header values are ‘application/json’ or application/xml’.

250

Destination address is on DNC list – Do not contact receiver

DNC lookup for the destination address result shows that the receiver should not be contacted.

Use the “bypass_dnc_check” (this name varies for APIs) request parameter to bypass the DNC check.

301

No credit left

Insufficient credits.

Log in to your Developers’ Central account and purchase additional credits.

901

Internal error – please retry

An error occurred on our platforms.

Please retry submitting the message. This should be exceptionally rare.

These response codes provide a more detailed description of any problems which may have occurred with an API call including incorrect parameters or actions which violate the business logic of the system, such as illegal state changes, invalid amounts or dates, and so forth.

Please Note

The response codes listed below cover both Mambu API v1 and v2

Generic Response Codes (1 — 60)

Response Code Description
0 SUCCESS The request was successful
1 INVALID_BASIC_AUTHORIZATION The application ID or application key are not configured properly
2 INVALID_CREDENTIALS The username and password provided was invalid
3 INVALID_API_OPERATION The API URI is incorrect
4 INVALID_PARAMETERS A required parameter for this API operation is invalid or has not been provided
5 METHOD_NOT_IMPLEMENTED The HTTP method for this operation is not implemented.  For example, the API operation has only been defined for HTTP GET request and an HTTP Post request was called
6 INTERNAL_ERROR An unknown Mambu exception was thrown
7 API_NOT_AUTHORIZED Caller is not authorized to make user of the API service. Check your Keys in the API Portal
8 USER_TRANSACTION_LIMIT_EXCEEDED The API was not properly configured for monitoring
9 API_CONFIGURATION_ERROR The API account is not authorized to make transactions (deposits, disbursals, etc) of this size
10 INVALID_TENANT_ID No tenant to answer this API call was found
11 INVALID_PAGINATION_OFFSET_VALUE The pagination offset value was not a proper Integer value
12 OUT_OF_BOUNDS_PAGINATION_OFFSET_VALUE The pagination offset value was smaller than 0
13 INVALID_PAGINATION_LIMIT_VALUE The pagination limit value was not a proper Integer value
14 OUT_OF_BOUNDS_PAGINATION_LIMIT_VALUE The pagination limit value was smaller than 0 or bigger than its upper limit
15 INVALID_PERMISSIONS The user is missing permissions to complete an operation
16 INVALID_IP_ADDRESS This IP address is not authorized for API access
17 INACTIVE_USER User account is not active and cannot be used
18 NO_API_ACCESS User doesn’t have API access permissions
19 FEATURE_DISABLED
20 MAX_FILE_SIZE_EXCEEDED The file size is larger than 5242880 bytes
21 MAX_FILENAME_LENGTH_EXCEEDED The file name size, including the path, is larger than 256 characters
22 UNSUPPORTED_CHARACTER_ENCODING The file has an unsupported character encoding. The character encoding must be supported by java
23 INVALID_API_PROTOCOL The request was done through an invalid protocol. Mambu API’s always use HTTPS
24 EXCESSIVE_INVALID_REQUESTS The account is temporarily disabled due to excessive incorrect logins and must be unlocked by an administrator. For instructions on how to re-enable the account, please see: Managing Users and Permissions
25 INCONSISTENT_IDENTIFIER_WITH_JSON When the identifier does not match with the encoded key or ID from the JSON object
26 INVALID_JSON_SYNTAX When the JSON parsing fails. Some cases that can cause this error: invalid JSON syntax, invalid enum values, invalid data type for value, etc
27 PARAMETER_NOT_ALLOWED A parameter in the API call is not allowed in this context
28 START_DATE_AFTER_END_DATE When the API parameter start date is after API parameter end date
29 OBJECT_NOT_FOUND When no object is found for the given identifier
30 MISSING_ENTITY_JSON When the required entity JSON object is missing
31 MISSING_REQUIRED_PARAMETER A required parameter is missing from input
33 UNSUPPORTED_PAGINATION
34 NOT_AVAILABLE_FOR_API_V1
60 BLOCKING_OPERATION_IN_PROGRESS When operation cannot be performed due to another pending operation that locked shared resources
61 QUERY_TIMEOUT_EXCEPTION

Loan Accounts (97 — 199)

Response Code Description
97 NON_REVERSIBLE_WRITE_OFF When the loan account cannot reverse the write-off transaction
98 NON_WEEKLY_LOAN_REPAYMENTS When the entity, which is reassigned to a centre with a different centre meeting day, has a loan account with non-weekly repayments
99 INCONSISTENT_LINKED_ACCOUNT When the linked account is not consistent with the current loan
100 INVALID_LOAN_ACCOUNT_ID The loan account specified does not exist
101 INVALID_AMOUNT The amount parameter is 0, not an integer, or otherwise invalid
102 INVALID_DATE The date parameter is not properly formatted. Must follow the ISO standard such as: yyyy-MM-dd
103 INVALID_NOTES The notes parameter is not valid
104 INVALID_TRANSACTION_TYPE_ID When the provided ID or key for the transaction channel is invalid
105 INVALID_ACCOUNT_STATE One of the accounts involved in the call is in an invalid state. This can occur for example when posting transactions to or from accounts in non-active statuses or when posting transactions that trigger bulk reversals to or from another account in non-active status
106 INVALID_FEE The account is in an invalid state for the given operation
107 LOAN_PRODUCT_MISMATCH The account parameters don’t match the loan product parameters
108 INVALID_FIELD_FOR_TRANSACTION_TYPE When a field is given as a parameter, but the transaction type does not allow it
109 INACTIVE_TRANSACTION_TYPE When trying to make a transaction using an inactive transaction channel
110 EXCESS_REPAYMENT_ERROR The repayment amount exceed the loan balance
111 TRANSACTION_LOGGED_AFTER_NOT_DISBURSED_TRANCHE When a transaction is logged after a non disbursed tranche
112 UNDEFINED_ACCOUNT_FOR_FINANCIAL_RESOURCE_ERROR The account specified for the financial resource is not defined
113 INVALID_ACCOUNT_FOR_JOURNAL_ENTRY_ERROR The account specified for the journal entry is invalid
114 MISSING_LOAN_ID The loan account identifier has not been specified
115 MAXIMUM_EXPOSURE_EXCEEDED when the maximum exposure is exceeded for a client
116 INVALID_STATE_TRANSITION An invalid loan account state transition
117 NUMBER_OF_LOANS_EXCEED When the number of loans for an organization is exceeded
118 INVALID_FIRST_REPAYMENT_DUE_DATE When the first repayment due date it’s not valid
119 INVALID_REPAYMENT_DUE_DAY When repayment date is not the same as assigned centre’s meeting day
120 INVALID_INTEREST_RATE An invalid interest rate is being used as a parameter
121 INVALID_INSTALLMENTS An invalid number of installments rate is being used as a parameter
122 MISSING_LINKED_ACCOUNT
123 PREPAYMENT_NOT_ALLOWED_ERROR When a pre-payment it’s trying to be posted and it’s not allowed at loan product level
124 REPAYMENT_DATE_IN_THE_FUTURE_ERROR When the specified repayment date it’s set in future
125 INVALID_DISBURSEMENT_DATE When the specified disbursement date is invalid
126 INVALID_ACCOUNT_STATE_FOR_RESCHEDULE When the account’s state doesn’t allow a reschedule
127 ORIGINAL_ACCOUNT_HAS_FUNDS When trying to reschedule a loan which has funds
128 INVALID_ACCOUNT_STATE_FOR_REPAYMENTS When the account’s state doesn’t allow a repayment to be entered
129 DISBURSEMENT_FEES_EXCEED_LOAN_AMOUNT When the total of disbursement fees exceeds the loan amount
130 INTEREST_CANNOT_BE_APPLIED When the interest cannot be applied in the account, because either the account it’s not active, either there’s no interest to be applied, either it’s a flat fixed account and the interest has already been applied
131 ENTRY_DATE_BEFORE_OTHER_TRANSACTIONS Another balance transaction has already been logged before this entry date and must be undone for this one to be backdated
132 INCONSISTENT_SCHEDULE_PRINCIPAL_DUE_WITH_LOAN_AMOUNT When the total principal expected from the repayment schedule doesn’t match the loan amount (no rounding was selected)
133 ACCOUNT_HAS_NO_ACCRUED_INTEREST When trying to apply the accrued interest and the account has no accrued interest
134 INTEREST_ALREADY_APPLIED_ON_DISBURSEMENT_ACCOUNT When trying to apply interest for an account with Interest application method ‘On Disbursement’. In this case the interest was already applied
135 INCONSISTENT_WITH_FIXED_DAYS_OF_MONTH When first repayment date doesn’t match the loan product Fixed days of month Payment interval method settings
136 NEGATIVE_PRINCIPAL_FOR_INSTALLMENT When after the calculation of a repayments schedule, one of its repayments contains a negative principal
137 INVALID_TAX_RATE When the tax rate for an account that has taxes enabled does not exist
138 INSUFFICIENT_GUARANTEES When the loan account doesn’t have the required guaranties percentage
139 MISSING_REPAYMENT_PERIOD_COUNT When the repayment period count is missing for a loan with a repayment method set to Interval
140 MISSING_REPAYMENT_INTERVAL When the repayment interval is missing for a loan with repayment method set to Interval
141 FUTURE_PAYMENT_NOT_ALLOWED_ERROR When a future payment is trying to be posted and it’s not allowed at loan product level
142 DISBURSEMENT_WITH_ZERO_LOAN_AMOUNT_NOT_ALLOWED when a loan have zero loan amount and no cAPItalized fees, it can’t be disbursed
143 ACCOUNT_ALREADY_LOCKED When trying to lock an account that is already in a LOCK state
144 ACCOUNT_ALREADY_UNLOCKED When trying to unlock an account that is not in a LOCK state
145 LOAN_AMOUNT_DECIMALS_NOT_ALLOWED_WITH_ROUNDING When trying to give an amount to a loan account that has rounding enabled
146 RESCHEDULED_LOAN When the deletion is not allowed on the account, because it has been rescheduled
147 REFINANCED_LOAN When the deletion is not allowed on the account, because it has been refinanced
148 TRANSACTION_IDENTIFIER_ALREADY_USED When the posted transaction identifier has already been used; it already exists in the data store
149 INVALID_ID When identifier for a posted transaction is only spaces or empty space
150 FAILED_TO_GENERATE_IDENTIFIER When the account identifier failed to be generated due to internal concurrency issue
151 INCONSISTENT_ACCOUNT_ID_WITH_ACCOUNT_HOLDER_TYPE when trying to fetch an account for a client using a group ID or vice-versa
152 INVALID_ASSET_NAME When trying to store an account with guarantees of type asset and asset name is null
153 GUARANTOR_KEY_NOT_ALLOWED When trying to store an account with guarantees of type asset, guarantor key should be empty
154 GUARANTOR_SAVINGS_KEY_NOT_ALLOWED When trying to store an account with guarantees of type asset, deposit account key should be empty
155 INVALID_GUARANTOR_KEY When trying to store an account with guarantees of type guarantor and guarantor key is empty
156 INVALID_SAVINGS_ACCOUNT_KEY When trying to store an account with guarantees of type guarantor and deposit account key is empty
157 INVALID_GUARANTOR_STATE When trying to store an account with guarantees of type guarantor and guarantor’s state is not ACTIVE or INACTIVE
158 DUPLICATED_GUARANTOR_WITHOUT_SAVINGS_ACCOUNT When trying to store an account with guarantees the guarantor can guaranty only once without an account
159 DUPLICATED_SAVINGS_ACCOUNT When trying to store an account with guarantees the guarantor cannot guaranty with the same account twice
160 INSUFFICIENT_SAVINGS_ACCOUNT_BALANCE When the amount guaranteed in a given guaranty is not covered by the deposit account’s balance (if one existing)
161 INVALID_SAVINGS_ACCOUNT_STATE When a deposit account used for a guarantee is not in ACTIVE, ACTIVE_IN_ARREARS, MATURED or LOCKED state
162 DUPLICATED_ASSET When a guarantor guarantees twice with the same asset
163 GUARANTOR_ASSET_NAME_NOT_ALLOWED When trying to store an account with guarantees of type guarantor, asset name should be empty
164 TRANSACTION_NOT_FOUND When trying to undo the disbursement of a not found transaction
165 INVALID_TRANSACTION_TYPE When trying to undo the disbursement of a transaction and its type is invalid
166 UNREVERSED_TRANSACTION_LOGGED_AFTER_CURRENT_ONE When trying to post a transaction but there has already been a different transaction posted after it, which cannot be reversed by bulk correction
167 INVALID_GUARANTOR_PERMISSION When trying to store a guarantee for a guarantor that does not have permissions to guarantee
168 INVALID_CLIENT_ROLE_PERMISSION_FOR_OPENING_ACCOUNTS When trying to create a loan account for a client that does not have permissions for opening accounts. The permission can be granted from Client Type from administration
169 MISSING_PENALTY_RATE When the product requires penalties but the account doesn’t have a penalty rate specified (or the product doesn’t have a default penalty rate)
170 INVALID_REPAYMENT_NUMBER When the specified repayment number can’t be found in the schedule
171 MISSING_REPAYMENT_NUMBER When the repayment number is mandatory but wasn’t specified
172 INVALID_REPAYMENT_STATE When the state if the given repayment is not valid for the action
173 CENTRE_MEETING_DAY_IN_NON_WORKING_DAY When a centre meeting day is set in a non-working day and the due date of the repayment has to be moved
174 ARBITRARY_FEE_NOT_ALLOWED When an arbitrary fee is posted, but the product settings does not allow it
175 INVALID_REPAYMENT_ID When the repayment posted does not belong to the account
176 ACCOUNT_BALANCE_OUTSIDE_CONSTRAINTS When the account balance after applying the updates (principal balance, interest balance, etc) is negative or greater than the original balance
177 EDITING_DATE_NOT_IN_CENTER_MEETING_DAY When editing a schedule for a loan account which has center meeting day, and the new edited value is not on the same day of week
178 EDITING_DUE_DATES_NOT_ALLOWED When the product has interest application method ON_REPAYMENT and the repayment was fully paid or partially paid or the repayment had interest already applied, the due date of that repayment cannot be modified
179 EDITING_REPAYMENTS_NOT_ALLOWED When the loan product does not allow editing the repayment schedule
180 INTEREST_BALANCE_CANT_BE_EDITED_AT_SPECIFIED_DATE When the user can’t edit the interest from a specific repayment cannot be modified. For example when INTEREST DUE REDUCED is reversed and the user could reapply it on some other repayment
181 INVALID_DUE_DATE When a due date of the schedule is not valid. For example: the due date of a repayment is before the due date of the previous repayment
182 NEGATIVE_BALANCE When a balance (principal balance, interest balance, etc) for a repayment is negative
183 NON_POSITIVE_TOTAL_BALANCE When the total balance for a repayment is not strictly positive
184 PARAMS_INCONSISTENT_WITH_PRODUCT_RULES When the parameter from API call is inconsistent with product info (>max, <min, etc)
185 INVALID_GRACE_PERIOD When grace period provided in API call is invalid (null, negative etc.)
186 INVALID_ANTICIPATED_DISBURSEMENT When anticipated disbursement provided in API call is invalid (null, wrong date format etc.)
187 INVALID_REPAYMENT_FREQUENCY When repayment period count or repayment period unit provided in API call is invalid (null, wrong value etc.)
188 INVALID_PRINCIPAL_REPAYMENT_INVERVAL When principal repayment interval provided in API call is invalid (null, wrong value etc.)
189 INVALID_PRODUCT_STATE When the product is in an invalid state for the given operation
190 BALLOON_PAYMENTS_NOT_ALLOWED_BY_PRODUCT When a periodic payment amount is provided, but the product doesn’t allow balloon payments
191 MANDATORY_PERIODIC_PAYMENT When a periodic payment amount is not provided, but the product offers balloon payments
192 PERIODIC_PAYMENT_GREATER_THAN_LOAN_AMOUNT When the periodic payment amount is greater than the account’s whole loan amount
193 MISSING_INTEREST_RATE_SPREAD_ON_PRODUCT When trying to preview a schedule for a loan product that has interest rate source equal to index interest rate and the product does not have a default interest spread defined
194 FIRST_REPAYMENT_DATE_BEFORE_EXPECTED_DISBURSEMENT_DATE The first repayment cannot be before the expected disbursement date
195 INVALID_PENALTY_RATE The penalty rate is not correct. The rate is either NULL when a number is expected, or not within the allowed product constraints
196 CANNOT_EDIT_SOLIDARITY_LOANS The account belongs to a solidarity group and cannot be edited
197 INVALID_INTEREST_SPREAD The interest spread is invalid (null, not within constraints or used when the interest rate source is FIXED_INTEREST_RATE)
198 INVALID_PERIODIC_PAYMENT The periodic payment is not valid. The account does not use balloon payments
199 UNKNOWN_LOAN_ACCOUNT_ERROR An error has occurred processing the loan account

Groups (200 — 210)

Response Code Description
200 MISSING_GROUP_ID The group identifier has not been specified
201 INVALID_GROUP_ID No group with the given identifier exists
202 INVALID_FULL_DETAILS The fullDetails parameter is not valid
203 INVALID_INDICATORS The indicator specified is not valid
204 GROUP_NOT_FOUND When no group is found for a given identifier
205 INVALID_PARAMATERS_FOR_PRODUCT When the loan or deposit parameters are not valid for the given product
206 INVALID_USER_WHO_APPROVED_THE_LOAN_CANNOT_DISBURSE_IT When the two man rule is enabled, the user who approved the loan cannot disburse it
207 INVALID_GROUP_SIZE The group size is outside of organization’s constraints
208 MULTIPLE_GROUP_MEMBERSHIP The group has clients that are already in the group and multiple membership is not allowed
209 INVALID_GROUP_ROLE_NAME_KEY No group role name with the key provided
210 GROUP_ROLE_CLIENT_NOT_GROUP_MEMBER The client ID provided for the role is not a group member

Transactions and Till Balances (211 — 249)

Response Code Description
211 TRANSACTION_ALREADY_REVERSED When trying to reverse a transaction which is already reversed
212 INVALID_TRANSACTION_ID When trying to do an action on a transaction and the given ID is invalid
213 TRANSACTION_ID_AND_ACCOUNT_MISMATCH When trying to do an action on a transaction for a given account and the transaction doesn’t belong to that account
214 TRANSACTION_CREATED_DURING_IMPORT When trying to reverse a deposit transaction created during import. The imported transactions cannot be reversed
215 TRANSACTION_LOGGED_FOR_CLOSED_TILL When a loan or deposit transaction was logged during the lifetime of a (now) closed till and an attempt is made to revert or delete the transaction
216 TILL_BALANCE_ABOVE_MAX When the balance of the till goes above the defined maximum limit
217 TILL_BALANCE_UNDER_MIN When the balance of the till goes under minimum limit
218 TRANSACTION_MADE_FROM_A_TRANSFER When a deposit transaction is trying to be reversed, but it was made via transfer
219 TRANSACTION_MADE_FROM_A_DISBURSEMENT When a deposit transaction is trying to be reversed, but it was made via a Disbursement transaction
220 DEPOSIT_ACCOUNT_HAS_MATURITY_DATE_SET Deposit cannot be reverted for active fixed deposits accounts that have a maturity date set
221 BALANCE_IS_NULL When a deposit transaction is trying to be reversed but the balance is null
222 GUARANTOR_NOT_ALLOWED_BY_PRODUCT When trying to create a loan account with guarantor for a product that doesn’t allow guarantors
223 COLLATERAL_NOT_ALLOWED_BY_PRODUCT When trying to create a loan account with collateral for a product that doesn’t allow collateral guarantees
224 CANNOT_CHANGE_TILL_BALANCE When trying to change a till’s vault amount and the data is invalid
225 DEDUCTED_FEES_TOTAL_MORE_THAN_LOAN_AMOUNT When trying to store a loan account and the total of deducted provided fees is more than the loan amount
226 NO_CAPITALIZED_DISBURSEMENT_FESS_WHEN_ZERO_LOAN_AMOUNT When trying to store a loan account with loan amount zero and the developer does not provides any cAPItalized fee
227 DISBURSE_TO_SAVINGS_NOT_AVALAIBLE_WITH_INVESTOR_FUNDS Disburse to deposit is not available when there are investor funds set on the account
228 TRANSACTION_CHANNEL_IS_MANDATORY When trying to store a loan account with required transaction channel and the developer does not provides a transaction channel
229 TRANSACTION_CHANNEL_NOT_AVAILABLE_WHEN_DISBURSE_TO_SAVINGS When trying to store a loan account and the developer provides a transaction channel and a deposit account key
230 GUARANTOR_CANNOT_BE_DELETED When trying to delete a guarantor
231 CUSTOM_AMOUNT_IS_MANDATORY When trying to store a loan account and the developer provides fees that require custom amount and the user does not specify it
232 INVALID_TRANSACTION_CHANNEL When trying to store a loan account with required transaction channel and the developer provides an invalid transaction channel
233 MISSING_FEE When trying to store a loan account and the developer provides custom fees that don’t have the predefined fee specified
234 INCONSISTENT_ACCOUNT_FEE_WITH_PRODUCT_FEE When trying to store a loan account and the developer provides fees which are not defined in the loan product
235 INCONSISTENT_DISBUSEMENT_DETAILS_WITH_ACCOUNT When trying to store a loan account and the developer provides the expected disbursement date or/and first repayment date twice (at account level and at disbursement details level) but different
236 MISSING_TRANSACTION_CHANNEL_KEY When trying to store a loan account and the developer does not provides the transaction channel ID or encoded key
237 TRANSACTION_DETAILS_NOT_AVAILABLE_FOR_PRODUCT When trying to store a loan account and the developer provides transaction details for a loan product type for which the transaction details are not available
238 FEES_NOT_AVAILABLE_FOR_PRODUCT When trying to store a loan account and the developer provides predefined fees for a loan product type for which the predefined fees are not available to select for a loan account
239 EXPECTED_DISBURSEMENT_DATE_NOT_AVAILABLE_FOR_PRODUCT When trying to store a loan account and the developer provides the expected disbursement date for a loan product type for which the expected disbursement date is not available to select for a loan account
240 FIRST_REPAYMENT_DATE_NOT_AVAILABLE_FOR_PRODUCT When trying to store a loan account and the developer provides the first repayment date for a loan product type for which the first repayment date is not available to select for a loan account
241 LOAN_PRODUCT_PREPAYMENT_OPTIONS_MISMATCH
242 INVALID_LAST_REPAYMENT_DUE_DATE_CHANGE_BECAUSE_ACCOUNT_HAS_FULL_TERM_FEE_APPLIED
243 INVALID_HOLIDAY_SETUP
244 REDRAW_DISABLED When trying to make redraw operations on an account with redraw disabled
245 INSUFFICIENT_REDRAW_BALANCE
246 INVALID_FEES_DETAILS
247 PRODUCT_DOES_NOT_ALLOW_WITHDRAWAL_TRANSACTIONS WITHDRAWAL_REDRAW transaction type is not allowed for given account product type
248 `EXCESS_PAYMENT_MADE_AMOUNT PAYMENT_MADE`
249 PRODUCT_DOES_NOT_ALLOW_PAYMENT_MADE_TRANSACTIONS PAYMENT_MADE transaction type is not allowed for given account product type

Disbursement with Fees (250 — 299)

Response Code Description
250 MISSING_FEE_KEY When trying to disburse a loan account and the developer provides fees that don’t have an encoded key
251 INVALID_FEE_KEY When trying to disburse a loan account with given fees but the fee encoded key is not valid or it’s not available for the loan account product
252 INCONSISTENT_FEE_AMOUNT_WITH_PRODUCT_FEE When trying to disburse a loan account with given fees and the developer provides at
253 FEE_AMOUNT_MUST_BE_STRICTLY_POSITIVE When trying to disburse a loan account with given fees and the provided amount is not strictly positive
254 REQUIRED_FEE_MISSING When trying to disburse a loan account with given fees and the developer does not provide all required fees defined in the loan product
255 FEE_NOT_ACTIVE When trying to disburse a loan account with given fees and the developer provides fees that are inactive
256 FEE_NOT_ALLOWED When trying to disburse a loan account and the developer provides a fee that is not a disbursement fee, or when trying to edit fee due on schedule but the schedule does not allow it
257 INCONSISTENT_FIRST_REPAYMENT_DATE_WITH_PRODUCT_OFFSET When trying to compute the schedule but the first repayment date is not between defined offset in the loan product
258 MISSING_ORIGINAL_TRANSACTION_ID When trying to reverse a transaction but the original transaction ID is not present in the API call parameters/JSON
260 REPAYMENT_WAS_FULLY_PAID When attempting to edit the due date for a repayment that was already fully paid
261 REPAYMENT_HAS_INTEREST_APPLIED Interest applied transactions are logged after the repayment date. You will need to revert them before entering the repayment, so that the interest is calculated based on the new amounts
262 DUE_DATE_BEFORE_ACCOUNTING_CLOSURE When editing a repayment due date and there is a GL accounting closure after the due date
263 DUE_DATE_BEFORE_LOGGED_TRANSACTION When editing a repayment due date and the account has a transaction logged after the due date
264 INVALID_PARENT_ACCOUNT_KEY When the parent account key provided for a custom-made repayment is not the same as the one for the actual account
265 AUTOMATICALLY_ADDED_INSTALLEMENTS_ARE_NOT_EDITABLE For fixed accounts using the «apply interest after maturity» option, a new installment is added when interest is applied after the maturity date. This installment is not editable
266 PURE_GRACE_INSTALLMENT_ARE_NOT_EDITABLE Pure grace installments are not editable
267 CUSTOM_PAYMENT_NOT_ALLOWED_BY_PRODUCT When a custom payment repayment is made, but the product settings do not allow this
268 SAME_CUSTOM_PAYMENT_AMOUNT_TYPE_USED_MULTIPLE_TIMES When a custom payment amount type is used more than once
269 CUSTOM_PAYMENT_AMOUNT_DIFFERENT_THAN_TOTAL_PAYMENT_AMOUNT When a custom payment repayment is made and the sum of the custom payment amounts is different than the repayment total amount
271 ARREARS_TOLERANCE_PERIOD_OUTSIDE_CONSTRAINTS When storing arrears tolerance period for loan account that is outside loan product constraints
272 NEGATIVE_ARREARS_TOLERANCE_PERIOD When storing an arrears tolerance period for loan account that is a negative number
273 REQUIRED_ARREARS_TOLERANCE_PERIOD_MISSING When storing an arrears tolerance period for loan account and the loan product doesn’t have a default tolerance period defined
274 DUE_DATE_BEFORE_FEE_AMORTIZATION When editing a repayment due date and there is a fee amortization after the due date
275 MAX_CLIENT_LIMIT_REACHED When the maximum number of clients has been reached for a tenant
276 PENALTY_METHOD_NOT_ALLOWED_BY_PRODUCT When the penalty method is not allowed by product settings
277 CANNOT_REVERSE_TECHNICAL_OVERDRAFT When a transaction cannot be reversed due to existing technical overdraft
278 INSUFFICIENT_BALANCE When transactions cannot be reversed because the ending available balance would become negative
279 INVALID_PRODUCT_TYPE When using a loan type other than revolving credit. Returns the error message: "errorSource": "Operation is not allowed for the product type: {*product_loan_type*}«
280 DUPLICATE_DISBURSEMENT_FEE
282 NO_DUE_AMOUNT_TO_BE_PAID Redraw repayment is not available when the account has no due amount to be paid
299 UNKNOWN_GROUP_ERROR An error has occurred processing the group

Clients (300-399)

Response Code Description
300 MISSING_CLIENT_ID The client identifier has not been specified
301 INVALID_CLIENT_ID The client identifier is invalid
302 INVALID_CLIENT_KEY
303 INVALID_PICTURE_KEY When the key of the picture is not valid
304 INVALID_SIGNATURE_KEY When the key of the signature is not valid
305 INVALID_CLIENT_STATE When the client/group state does not allow to be a guarantor or have a loan/deposit account
306 INVALID_CLIENT_ROLE_KEY When trying to store a client and the role key is invalid
307 INCONSISTENT_CLIENT_ROLE_WITH_CLIENT_TYPE When trying to store a client role of type GROUP for a client
308 INVALID_DEPENDENT_CUSTOM_FIELD_VALUE When trying to store dependent custom field values with inconsistency with their parent custom field value
309 INVALID_BIRTH_DATE When birth date is required by internal controls but the value was missing from input
310 DUPLICATE_CLIENT When a duplicate client is found
311 INVALID_CLIENT_STATE_TYPE When attaching a client and the state provided is invalid
312 INVALID_CLIENT_STATE_TRANSITION When trying to change the state of a client but the change cannot be done
313 CLIENT_IS_MEMBER_OF_A_GROUP When trying to reject or undo approve a client which is part of a group
314 CLIENT_IS_GUARANTOR When trying to change the state of a client which is guarantor and the action is not permitted
315 CLIENT_HAS_ACCOUNTS When trying to exit a client which has accounts which aren’t closed
316 CLIENT_ID_ALREADY_IN_USE
317 GROUP_ID_ALREADY_IN_USE
318 GROUP_HAS_ACCOUNTS
319 MISSING_CLIENT_BASIC_DETAILS
320 EMAIL_ADDRESS_SIZE_INVALID
399 UNKNOWN_CLIENT_ERROR An error has occurred processing the client

Loan/Deposit accounts (400 — 599)

Response Code Description
400 INVALID_SAVINGS_ACCOUNT_ID No deposit account with the given identifier exists
401 BALANCE_BELOW_ZERO The API operation would result in a balance below zero
402 MISSING_SAVINGS_ID The specified deposit account is not valid
403 BACKDATE_BEFORE_ACTIVATION Operations shouldn’t be backdated before the activation date of a deposit account
404 BACKDATE_BEFORE_OTHER_OPERATION Operations shouldn’t be backdated before other existing date
405 BACKDATE_SET_IN_THE_FUTURE When the operation is backdated in the future
406 INVALID_DEPOSIT_AMOUNT When the amount value is not between minimum opening balance and maximum opening balance values
407 INVALID_DEPOSIT_ACCOUNT_STATE When the deposit does not have the valid state for this operation (Active or Approved)
408 LOCKED_SAVINGS_AMOUNT When the deposit amount cannot be decreased below the locked amount by withdraw or transfer
409 SAVINGS_PRODUCT_MISMATCH When the deposit account has parameters different to those defined in the deposit product
410 SAVINGS_ACCOUNT_INVALID When the accountType is missing while creating a new deposit account
411 ACCOUNT_ID_ALREADY_IN_USE The account ID must be unique.
412 PRODUCT_DOESNT_ALLOW_WITHHOLDING_TAXES The product does not support withholding taxes
413 INVALID_WITHHOLDING_TAX_SOURCE_TYPE The key is a valid index rate encoded key but not a withholding tax source key
414 INVALID_INTEREST_CHARGE_FREQUENCY When the received deposit account has an Interest Charge Frequency Method different than the product’s
415 INVALID_INTEREST_CHARGE_FREQUENCY_COUNT When the received deposit account has an Interest Charge Frequency Count different than the product’s, or the Interest Charge Frequency Method doesn’t support this field
416 INVALID_SAVINGS_ACCOUNT_STATE_TRANSITION When the deposit account state does not allow the account state transition
417 MAXIMUM_WITHDRAWAL_AMOUNT_EXCEEDED When the withdrawal value is grater than the maximum withdrawal constraint defined in the deposit product or at deposit account level
418 MAXIMUM_OVERDRAFT_LIMIT_EXCEEDED When the overdraft value is greater than the maximum overdraft limit constraint defined in the deposit product
419 OVERDRAFT_NOT_ALLOWED When a patch for overdraft field is executed on a deposit account with Overdraft disabled
420 MISSING_INTEREST_RATE_FROM_SAVINGS_PRODUCT When creating loan account with auto-create settlement account but the deposit product is missing the default interest rate
421 POSITIVE_SECURED_AMOUNT When there is amount to be recovered from investment made in loan accounts
422 MINIMUM_OPENING_BALANCE_ACHIEVED When trying to make a deposit on a fixed account but the minimum opening balance is already achieved
423 ACCOUNT_HAS_TRANSACTIONS When trying to delete an account that already has logged transactions
424 INVALID_OVERDRAFT_INTEREST_CHARGE_FREQUENCY When the received deposit account has an Overdraft Interest Charge Frequency Method different than the product’s
425 INVALID_OVERDRAFT_INTEREST_CHARGE_FREQUENCY_COUNT When the received deposit account has an Overdraft Interest Charge Frequency Count different than the product’s, or the Overdraft Interest Charge Frequency Method doesn’t support this field
426 RECOMMENDED_DEPOSIT_AMOUNT_INVALID
427 MISSING_TYPE_PARAMETER When the ‘type’ parameter is missing from the request
428 INVALID_DEPOSIT_ACCOUNT_ID When an invalid deposit/savings ID is provided
429 PRODUCT_SPECIFIES_OVERDRAFT_ALLOWED When a deposit account that does not allow overdraft is created, but the corresponding deposit product allows overdraft. In this case, to achieve the desired behavior, the overdraft limit can be set to 0 instead
430 PRODUCT_SPECIFIES_OVERDRAFT_NOT_ALLOWED When a deposit account that allows overdraft is created, but the corresponding deposit product doesn’t allow overdraft
431 CURRENT_ACCOUNT_PRODUCT_DISABLED When the Current Account Mambu Feature is disabled
432 FIXED_DEPOSIT_PRODUCT_DISABLED When the Fixed Deposit Mambu Feature is disabled
433 COLLATERAL_FEATURE_DISABLED When the Collateral Mambu Feature is disabled
434 CREDIT_OFFICER_DISABLED When the Credit Officer Mambu Feature is disabled
435 DATA_EXPORT_DISABLED When the Data Export Mambu Feature is disabled
436 MAX_WITHDRAWAL_CANNOT_BE_NEGATIVE When a given maxWithdrawalAmount is negative
437 MAX_WITHDRAWAL_CANNOT_BE_ZERO When a given maxWithdrawalAmount is zero
438 WITHHOLDING_TAXES_DISABLED When the Withholding taxes Mambu Feature is disabled
439 FUNDING_SOURCE_DISABLED When the Funding Source Mambu Feature is disabled
440 RESET_DATA_DISABLED When the Reset Data Mambu Feature is disabled
441 SOLIDARITY_GROUP_DISABLED When the Solidarity Group Mambu Feature is disabled
442 SAVINGS_PLAN_DISABLED When the Savings Plan Mambu Feature is disabled
443 SAVINGS_ACCOUNT_DISABLED When the Savings Account Mambu Feature is disabled
444 REVOLVING_CREDIT_DISABLED When the Revolving Credit Mambu Feature is disabled
445 INDICATORS_DISABLED When the Indicators Mambu Feature is disabled
446 FIXED_TERM_LOAN_DISABLED When the Fixed Term Loan Mambu Feature is disabled
447 FLAT_INTEREST_DISABLED When the Fixed Flat Interest Method Mambu Feature is disabled
448 EFFECTIVE_INTEREST_RATE_DISABLED When the Effective Interest Rate Mambu Feature is disabled
449 RISK_REPORTING_DISABLED When the Risk Reporting Mambu Feature is disabled
450 WITHDRAWAL_PAST_OVERDRAFT_CONSTRAINTS When trying to transfer money between accounts and the withdrawal has insufficient balance to complete the operation
451 INTEREST_FREE_LOAN_DISABLED When the Interest Free Loan Mambu Feature is disabled
452 MISSING_DEPOSIT_ID When calling GET for funded loan accounts, the error means that the ID of the deposit account was not provided
460 INVALID_REVOLVING_SETTINGS
499 UNKNOWN_SAVINGS_ACCOUNT_ERROR An internal error has occurred when accessing the deposit account
500 TRANSFER_CANT_BE_MADE When the transfer between a deposit of the client and loan of the same client or to another deposit account is not possible
501 CANNOT_MAKE_TRANSFER_TO_SOURCE_ACCOUNT When a transfer is trying to be made and the source and the target accounts are the same
502 INVALID_TARGET_ACCOUNTING_STATE When a transfer is trying to be made, but the accounting state (activated/deactivated) is not the same for the source and target account
503 INVALID_TARGET_ACCOUNTING_CURRENCY
504 TRANSFER_AMOUNT_IS_NOT_POSITIVE When the amount that wants to be transferred is negative
505 INVALID_PRODUCT_ID The loan or deposit product ID cannot be found
508 TRANSFER_AS_POSTDATED_PAYMENT When the amount that wants to be transferred is going to be posted as a future payment on the loan account
509 UNDEFINED_EXCHANGE_RATE_FOR_CURRENCY When no exchange rate (buy or sell) has been found for a currency and a transaction should have use it
510 INVALID_PRODUCT_KEY When the key of the product is not valid
511 CANNOT_MAKE_TRANSFER_TO_FUNDED_ACCOUNTS_WITH_ACCOUNTING_ENABLED When trying to make a transfer to a loan account with investor funds and accounting enabled
512 LINKED_ACCOUNT_DELETION_ERROR When trying to delete an account that is currently linked to another account
513 ACCOUNT_HAS_REMAINING_BALANCE When trying to close an account that has non-zero balance
514 CANNOT_MAKE_TRANSFER_TO_LOCKED_ACCOUNTS When trying to make a transfer to a locked account
515 CANNOT_DISBURSE_LOCKED_ACCOUNTS When trying to disburse a locked loan account
516 DISBURSEMENT_DATE_AFTER_LAST_REPAYMENT_DUE_DATE When trying to disburse a loan account after the due date of its last repayment
517 INTEREST_RATE_NOT_AVAILABLE_FOR_INDEXED_RATES Sending an interest rate although the interest rate source is an index interest rate
518 INTEREST_SPREAD_NOT_AVAILABLE_FOR_FIXED_RATES Sending an interest spread value while the interest rate source is a fixed interest rate
519 TRANCHES_EXPECTED_DISBURSMENT_DATES_NOT_ORDERED When the tranches expected disbursement dates are not ascending ordered
520 TRANCHES_NOT_ALLOWED When he tranches are not allowed for this type of product
521 TRANCHES_NOT_DEFINED When tranches are used for this product, but they are not specified. Also returned if a call attempts to remove all tranches from a loan, since at least one tranche must be defined for this loan type
522 MORE_TRANCHES_THAN_ALLOWED When the number of tranches provided exceed the product threshold
523 TOTAL_TRANCHES_AMOUNT_MORE_THAN_LOAN_AMOUNT When total tranches amount does not match the loan amount
524 TOTAL_AMOUNT_NOT_EQUAL_WITH_LOAN_AMOUNT When tranches amount not equal with the loan amount
525 TRANCHE_AMOUNT_SHOULD_BE_STRICT_POSITIVE When tranches amounts should be strict positive
526 INVALID_TRANCHE_KEY When the user imputed a tranche with an invalid encoded key
527 CANNOT_MODIFY_DISBURSED_TRANCHE When trying to delete or edit an already disbursed tranche
528 DISBURSEMENT_DATE_BEFORE_NOT_REVERSED_TRANSACTION When the disbursement date is before a non reversed transaction
529 CANNOT_MODIFY_TRANCHES_ON_RESCHEDULED_REFINANCED_ACCOUNTS When trying to modify the tranches on a loan account which was rescheduled or refinanced
530 ALL_TRANCHES_ALREADY_DISBURSED When trying to disburse a loan account with tranches and there are no more tranches to be disbursed
531 TRANCHES_CANNOT_BE_EDITED When tranches cannot be edited at this endpoint
532 INTEREST_RATE_SHOULD_BE_ZERO_OR_EMPTY When the interest rate is present for an interest-free loan
533 INTEREST_SPREAD_SHOULD_BE_ZERO_OR_EMPTY When the interest spread is present for an interest-free loan
534 INCONSISTENT_DATE_WITH_NEXT_TRANCHE When the provided disbursement date doesn’t match with the next tranche expected disbursement date
535 INTEREST_RATE_CANNOT_BE_EDITED_FOR_TIERED_INTEREST_RATES When an attempt is made to edit the interest rate and the account has tiered interest rates
536 INTEREST_SPREAD_CANNOT_BE_EDITED_FOR_TIERED_INTEREST_RATES When an attempt is made to edit the interest spread and the account has tiered interest rates
537 INVALID_INTEREST_RATE_TIERS When an account is posted with interest rate tiers different than the ones from the product
538 INVALID_OVERDRAFT_INTEREST_RATE_TIERS When an account is posted with overdraft interest rate tiers different than the ones from the product
540 PAY_OFF_INVALID_INTEREST_PAID
541 PAY_OFF_INVALID_FEES_PAID
542 PAY_OFF_INVALID_PENALTY_PAID
543 INTEREST_TYPE_NOT_ALLOWED The selected interest type is not available for the product you are trying to create, check compatible interest methods in the table here
544 MISSING_CONTRACT Contract, contract account or account key of contract account is not found

Accounting (600 — 649)

Response Code Description
600 INVALID_GL_ACCOUNT_ID When attempting to access a general ledger account with an invalid ID
601 INVALID_GL_ACCOUNT_TYPE Unknown GL account type. Must be one of the following: Asset, Liability, Equity, Income, Expense
602 JOURNAL_ENTRY_BEFORE_CLOSURE Operations shouldn’t be backdated after the books were closed for their assigned branch
603 DEBITS_DO_NOT_MATCH_CREDITS The debits amount entered for a journal entry don’t match the credit amounts entered for it
604 INVALID_JOURNAL_ENTRY_DATE The date to log the journal entry does not exist or set in the future
605 GL_ACCOUNT_IS_HEADER The journal entry’s target general ledger account has Header usage
606 GL_ACCOUNT_DOES_NOT_SUPPORT_MANUALLY_ENTRIES The journal entry’s target general ledger account does not support manually entries
607 NO_INTER_BRANCH_GL_ACCOUNT No inter-branch general ledger account is defined. In this case changing the branch for active accounts with accounting enabled is not allowed
608 INVALID_JOURNAL_TRANSACTION_ID The journal entry’s transaction ID is invalid: empty or exceeds 32 characters
609 DUPLICATE_JOURNAL_TRANSACTION_ID The journal entry’s transaction ID is already in use
610 INVALID_ACCOUNTING_DATE_ORDER When the ‘from’ date is after the ‘to’ date
611 INVALID_ACCOUNTING_DATE_RANGE When the given dates exceed an admitted range
612 JOURNAL_ENTRY_DATE_IN_THE_FUTURE The date to log the journal entry is set in the future
613 JOURNAL_ENTRY_DATE_IN_THE_PAST_BEFORE_THE_ALLOWED_LIMIT The date to log the journal entry is set before the minimum (earliest) allowed
614 INVALID_BOOKING_DATE The booking date (entry date for JE) is invalid
615 BOOKING_DATE_BEFORE_VALUE_DATE The booking date (entry date for JE) is after value date (entry date for the transaction)
616 FROM_CURRENCY_NOT_DEFINED
617 FROM_CURRENCY_IS_NOT_BASE_CURRENCY
618 FROM_CURRENCY_DOES_NOT_EXIST
621 CURRENCY_SHOULD_BE_DIFFERENT_THEN_ORGANISATION_BASE_CURRENCY
622 START_DATE_SHOULD_BE_AFTER_LAST_ACCOUNTING_RATE
623 RATE_SHOULD_BE_POSITIVE
624 FUTURE_START_DATE_NOT_ALLOWED
625 ACCOUNTING_IN_MULTICURRENCY_SHOULD_BE_ENABLED
626 GL_JOURNAL_ENTRIES_USING_PREV_ACCOUNTING_RATE_SHOULD_NOT_EXISTS
627 ACCOUNTING_REPORT_NOT_FOUND The accounting report you are trying to get was not found. Check the report ID and try again

Currency (650 — 699)

Response Code Description
650 INVALID_CURRENCY_CODE When the code for the currency does not meet the ISO 4217 currency code standards
651 CURRENCY_NOT_MATCHING When trying to link two accounts (deposit to loan, guaranty to loan etc) but the currencies are different
652 ACCOUNT_CURRENCY_NOT_MATCH When trying to add an account to a line of credit but it has a different currency than the one of the line of credit
653 MISSING_CURRENCY When trying to post a deposit account for a product with multiple currencies but there is no currency provided for account
654 INVALID_EXCHANGE_RATE_VALUE When POSTing a sell/buy rate with a non-positive value
655 START_DATE_BEFORE_LAST_RATE_DATE When POSTing a start date for new exchange rate that is before the last date the exchange rate was edited
656 BUY_RATE_GREATER_THAN_SELL_RATE
657 RATE_NOT_SET
658 RATE_TO_SAME_CURRENCY
659 DATE_BEFORE_LAST_RATE_DATE
660 START_DATE_IN_FUTURE
661 DATE_ON_LAST_RATE_DATE
662 DELETE_BASE_CURRENCY
663 CURRENCY_ASSOCIATED_WITH_TRANSACTION
664 CURRENCY_USED_IN_PRODUCT_OR_GL_ACCOUNT
665 UNDEFINED_ACCOUNTING_RATE_FOR_CURRENCY
666 ACCOUNTING_TRANSACTION_CHANNEL_CURRENCY_MISMATCH
667 ACCOUNTING_CURRENCIES_NOT_MATCHING

Users (700 — 799)

Response Code Description
700 INVALID_USER_NAME The user name is invalid
701 INVALID_USER_ID The provided ID does not belong to any user
702 INVALID_CREDIT_OFFICER_KEY When the key of the credit officer is not valid
703 INCONSISTENT_CREDIT_OFFICER_WITH_BRANCH When the given credit officer is not assigned to the given branch
704 MISSING_CREDIT_OFFICER_KEY When the key of the credit officer is required but not provided
705 MISSING_BRANCH_KEY When the key of the branch is required but not provided
706 MISSING_CENTRE_KEY When the key of the centre is required but not provided
707 INVALID_USER_ROLE_KEY When the provided key of the user role is invalid
708 USER_IS_LOCKED When the user that makes the API request for creating another user is locked
709 INVALID_PASSWORD When the password is invalid (it doesn’t respect the security standard defined in the application)
710 EMAIL_ADDRESS_ALREADY_REGISTERED_WITH_ANOTHER_USER When email is already taken by another user
711 EMAIL_ADDRESS_FORMAT_IS_INVALID When email address is invalid
712 USERNAME_ALREADY_EXISTS When the user name is already in Mambu
713 MAX_USER_LIMIT_REACHED When the tenant has reached the limit on user creation
714 CANNOT_MANAGE_USER_BRANCH When a non admin user cannot manage the assigned branch of the user
715 NOT_ENOUGH_PRIVILDGES_FOR_CHANGING_USER_SETTINGS When a non administrator is attempting to create another user but he doesn’t have specific rights on that setting (Eg. if he cannot manage all branches, etc)
716 ONLY_ONE_ROLE_ALLOWED When a non administrator user selected more than one role
717 INVALID_TRANSACTION_LIMIT_TYPE When creating a user with an unrecognized transaction limit type
718 NOT_ENOUGH_PRIVILEDGES_TO_CREATE_ADMIN_USER When a regular user tries to create an administrator user. This is not allowed
719 CANNOT_HAVE_NEGATIVE_TRANSACTION_LIMITS When creating a user with transaction limits and the amount provided are negative or zero
720 INVALID_VALUE_FOR_MANAGED_BRANCHES When creating a user with inconsistent value for managed branches with can manage all branches property
721 CANNOT_HAVE_ADMIN_WITHOUT_FULL_BRANCHES_ACCESS When creating an administrator user without can manage all branches set
722 CANNOT_HAVE_OFFICER_ADMIN_WITHOUT_MANAGE_OTHER_ENTITIES_ACCESS When creating an officer administrator user with manage other credit officers entities unset
723 INCONSISTENT_CAN_MANAGE_BRANCHES_WITH_CAN_MANAGE_ENTITIES When creating a user but with the value for can manage other branches and other entities inconsistent
724 MISSING_EMAIL_ADDRESS When the email address is not provided
725 MISSING_MOBILE_PHONE When the mobile phone number is not provided
726 CANNOT_UPDATE_INACTIVE_OR_LOCKED_USERS
727 ROLE_AND_ACCESS_MISMATCH
728 MISSING_ACCESS_RIGHTS
729 PHONE_NUMBER_IS_MISSING
730 TWO_FACTOR_AUTHENTICATION_NOT_AVAILABLE
731 USERNAME_CANNOT_BE_CHANGED
732 INVALID_ACCESS_RIGHTS
733 MISSING_ASSIGNED_BRANCH
734 CANNOT_DELETE_LAST_USER
735 CANNOT_DEACTIVATE_LAST_USER
736 CANNOT_HAVE_ADMIN_WITHOUT_MAMBU_ACCESS
737 CANNOT_UPDATE_FEDERATED_USER
738 CANNOT_UPDATE_SUPPORT_USER
739 CANNOT_CHANGE_ROLE_FOR_FEDERATED_USER
740 CANNOT_LOCK_USER_FROM_API
741 CANNOT_DELETE_SUPPORT_USER_BY_REGULAR_USER
742 CANNOT_DELETE_ADMIN_USER
743 CANNOT_DELETE_USER_WITH_PERFORMED_ACTIVITIES
744 CANNOT_DELETE_SELF
745 CANNOT_DEACTIVATE_SELF
746 CANNOT_UPDATE_DELIVERY_USER
747 CANNOT_DELETE_DELIVERY_USER_BY_REGULAR_USER

Branches (800 — 849)

Response Code Description
800 INVALID_BRANCH_ID The branch identifier is invalid
801 INVALID_BRANCH_KEY When the key of the branch is not valid
802 INVALID_MANAGED_BRANCH_ID When the managed branch ID is invalid
803 BRANCH_IS_NOT_ACTIVE When the given branch is inactive, so it cannot be used to create new entities

Centres (850 — 899)

Response Code Description
850 INVALID_CENTRE_KEY When the key of the centre is not valid
851 INVALID_CENTRE_ID When the centre identifier is invalid
852 INCONSISTENT_CENTRE_WITH_BRANCH When the given centre is not assigned to the given branch
853 CENTRE_IS_NOT_ACTIVE When the centre is inactive (assignment of client/group cannot be done on inactive centre)

Custom Information (900 — 949)

Response Code Description
901 INCONSISTENT_VALUE_WITH_CUSTOM_FIELD_TYPE When the value provided for a custom field does not match the custom field type (example given string instead of number)
902 REQUIRED_CUSTOM_FIELD_MISSING When the required custom field is missing
903 INVALID_CUSTOM_FIELD_ID When the given ID for a Custom Field is null or is not set for any entity
904 MAX_CUSTOM_FIELD_VALUE_LENGTH_EXCEEDED When the given value for a Custom Field has a length which exceeds the maximum allowed limit
905 INVALID_CUSTOM_FIELD_ENTITY_KEY When a loan or deposit account custom field is assigned to another product than the one for which the account was made
906 VIEW_TYPE_NOT_MATCHING_RESOURCE When a request is made on a resource like /loans, but the requested view type is CLIENT
907 VIEW_NOT_ACCESSIBLE_FOR_USER When a request is made for a custom view, but the current user doesn’t have access for it
908 CUSTOM_FIELD_DEACTIVATED When trying to add a custom field value for a deactivated custom field
909 CUSTOM_FIELD_REQUIRED When trying to delete a custom field value for a required custom field
910 CUSTOM_FIELD_NOT_AVAILABLE_FOR_ENTITY when a new custom field value was provided for a custom field that is not available for that client type
911 INVALID_CUSTOM_FIELD_LINKED_ENTITY_KEY When trying to store a linked custom field but the linked entity key provided is invalid
912 DEPENDENT_CUSTOM_FIELD_VALUE_REQUIRED When trying to store a value for a custom field that has dependencies but the dependent custom field has no values at the moment for this entity
913 INCONSISTENT_VALUE_WITH_SET_TYPE When posting a grouped custom field value but the set is not grouped
914 GROUPED_INDEXES_NOT_CONSECUTIVE When posting a grouped custom field value and the indexes are not consecutive within the posted custom field values
915 TO_MANY_VALUES_FOR_SAME_GROUPED_CUSTOM_FIELD When posting grouped custom fields values and there are many same custom fields within the same set
916 INVALID_CUSTOM_FIELD_GROUP_INDEX When posting grouped custom fields values without the property customFieldSetGroupIndex or invalid group index numeric value
917 INCONSISTENT_CUSTOM_FIELD_VALUE_WITH_PATTERN When posting a free text custom field with a value that doesn’t match with the expected pattern
918 DUPLICATE_CUSTOM_FIELD_VALUES When posting duplicate values for same custom field
919 CUSTOM_FIELD_SET_CHANGE_NOT_ALLOWED When changing the field set of a custom field is not possible
920 CUSTOM_FIELD_SET_NULL When trying to save a custom field but it’s set is null
921 CUSTOM_FIELD_USAGE_CHANGE_NOT_ALLOWED When trying to change a custom field usage and it’s not allowed
922 DATATYPE_OR_TYPE_CHANGED When changing the type or the data type of a custom field is not allowed
923 CUSTOM_FIELD_NAME_NOT_UNIQUE When trying to save a custom field but the name already exists
924 ENCODED_KEY_MUST_BE_EMPTY_ON_CREATE When the encoded key is provided for create operations
925 CUSTOM_FIELDS_NEED_CHANNEL_PROVIDED When trying to post a transaction with custom field but not specify the channel
926 DUPLICATE_UNIQUE_VALUE When the user provided a value for a unique custom field that already exists
927 REFERRED_IN_CUSTOM_FIELD When the entity is about to be deleted but it is referred to in a custom field as value
928 TRANSACTION_TYPE_NOT_ACCEPTING_CUSTOM_FIELDS When trying to get a custom field for a transaction whose type doesn’t accept custom fields
929 INVALID_CUSTOM_FIELD_KEY When the user provides a custom field key that does not match the db value
930 BUILT_IN_CUSTOM_FIELD_CHANGE_NOT_ALLOWED When trying to change the values of a built-in custom field from the API

ID Documents (950 — 1000)

Response Code Description
950 INVALID_ID_DOCUMENT When the data set for a Identification Document is not valid (for example, missing ID or type)
951 REQUIRED_ID_DOCUMENT_MISSING When a required Identification Document is missing
952 ADDING_OTHER_ID_DOCUMENTS_IS_DISABLED When posting another ID, but this is disabled by the administrator
953 INVALID_ID_DOCUMENT_TEMPLATE_KEY When the identification document template key does not exist or is invalid
969 DOCUMENT_CANNOT_BE_DELETED
970 INVALID_DOCUMENT_ID When the given ID for a Document is null or is not set for any account
971 INVALID_FILE_EXTENSION When uploading a document if the file extension is not present or the document has more than one extension
972 FILE_EXTENSION_NOT_ALLOWED When uploading a document if the file extension is not present in the extensions white list
973 INCONSISTENT_EXTENSION_WITH_FILE_CONTENT When the file extension is inconsistent with the file metadata. For example: the file is JPG, but the extension in file name is PDF
974 MALWARE_CONTENT_DETECTED When our anti-virus finds that the file has malware content.
Please note that obfuscated PDF files will be rejected, since we cannot scan them for malware
975 INVALID_FILENAME When the file name is invalid (for example, when it contains invalid characters, such as «&»)
976 NO_PROFILE_PICTURE_SET When the profile picture is not set on the client account
977 NO_PROFILE_SIGNATURE_SET When the profile signature is not set on the client account
978 HAS_DOCUMENT_ATTACHED When trying to delete an entity that has a document attached
979 UNSUPPORTED_IMAGE_TYPE When the profile picture format is not supported
980 INVALID_TASK_ID When the given ID for a task is null or not set
981 INVALID_TASK_STATE_AND_COMPLETION_DATE When the task is in COMPLETED state without completion date or in OPEN state with completion date
982 INVALID_TASK_FIELD_CHANGE When the user of the API tries to alter the ID of the task
983 INVALID_TASK_STATUS When the task status supplied by the user is not a valid one (OVERDUE, COMPLETED, OPEN)
984 INVALID_TASK_TITLE_LENGTH When the task title exceeds the maximum length
985 HAS_TASK_ATTACHED When trying to delete an entity that has a task attached
986 EDITING_VIEW_TYPE_NOT_ALLOWED When attempting to edit the type of a view, this being an illegal change
987 INVALID_CUSTOM_FIELD_SET_ID Invalid custom field set key or ID
988 TRANSACTION_LINKED_TO_A_REPAYMENT When a payment due fee applied on due dates linked to a repayment transaction is trying to be reversed
989 ANTIVIRUS_NOT_AVAILABLE

Activities (1000 — 1049)

Response Code Description
1000 MISSING_FROM_DATE When getting activities and the from date is missing
1001 MISSING_TO_DATE When getting activities and the from date is missing
1002 MAXIMUM_ONE_FILTER_ALLOWED When getting activities and more than one filter specified (such as clientID and branchID altogether)

Tills (1100 — 1149)

Response Code Description
1100 TILL_BALANCE_OUTSIDE_CONSTRAINTS When the till balance goes outside the minimum / maximum constraints that are defined while opening a new till
1101 TRANSACTION_IS_NOT_WITHIN_CHANNEL_CONSTRAINTS When the amount, type or product, etc. associated with the transaction are not within the constraints defined at transaction channel level

Addresses (1150 — 1199)

Response Code Description
1150 INVALID_ADDRESS When the address does not contain correct data (for example, line1 is too long)
1151 CLIENT_ROLE_DOES_NOT_ALLOW_ADDRESS The default address fields are disabled for the client type. The default address can be enabled from Administration > General > Client Types
1152 ADDRESS_CHANGE_NOT_ALLOWED For clients/groups when at one point the client role allowed address but the new client role does not allow any. Cannot be changed if the client role does not allow addresses/
1153 INVALID_ADDRESS_LINE1 Must be less than 256 characters.
1154 INVALID_ADDRESS_LINE2 Must be less than 256 characters.
1155 INVALID_CITY
1156 INVALID_REGION
1157 INVALID_POSTCODE
1158 INVALID_COUNTRY

Data Import (1200 — 1249)

Response Code Description
1200 DATA_IMPORT_IN_PROGRESS When an illegal operation is performed during a data import in progress
1201 DATABASE_BACKUP_IN_PROGRESS When triggering a database backup but one is already in progress
1202 DATABASE_BACKUP_NOT_FOUND When downloading a backup but there is no backup file
1203 CLIENT_IN_MIGRATION When trying to delete a client that is pending migration process
1204 INVALID_NUMBER_OF_SHEETS When the number of sheets for an imported document is not correct
1205 UNDEFINED_SHEET When the imported document contains an undefined sheet or requires a sheet
1206 WRONG_SHEET_POSITION When the order of the sheets in the imported document is not correct
1207 INVALID_NUMBER_OF_COLUMNS_FOR_SHEET When the number of columns for a sheet part of the imported document is not correct.
1208 UNDEFINED_COLUMN When the imported document contains an undefined column in one of its sheets or requires a column.
1209 WRONG_COLUMN_POSITION When the assignment constraints are not respected (default value when nothing specific can be extracted).

Assignment (1250- 1299)

Response Code Description
1250 INVALID_ASSIGNMENT When trying to delete a client that is pending migration process

Index and Tax Rate (1300 — 1349)

Response Code Description
1300 INVALID_INDEX_RATE_SOURCE_ID The key specified is not a valid index rate encoded key
1301 START_DATE_BEFORE_LAST_INDEX_REVIEWD_DATE The start date is before the last index review date
1302 INVALID_START_DATE The start date is not unique within the same source
1303 NO_INDEX_RATE_AVAILABLE When there is no index rate available at the specified date
1304 NO_TAX_RATE_AVAILABLE When there is no tax rate available at the specified date
1305 INVALID_INDEX_RATE_SOURCE
1306 INDEX_RATE_SOURCE_IN_USE
1307 NON_TAXABLE_FEE_NOT_ALLOWED
1308 INVALID_INDEX_RATE_ID
1309 DUPLICATE_INDEX_RATE_ID
1310 DUPLICATE_INDEX_RATE_SOURCE_ID

Group Key (1350 — 1399)

Response Code Description
1350 INCONSISTENT_GROUP_MEMBER_PARENT_KEY The group member parent key is not the same with the group encoded key
1351 INCONSISTENT_GROUP_MEMBER_ENCODED_KEY The group member encoded key is not contained in the stored group members
1352 INCONSISTENT_GROUP_ROLE_PARENT_KEY The group role parent key is not the same with the group encoded key
1353 INCONSISTENT_GROUP_ROLE_ENCODED_KEY The group role encoded key is not contained in the stored group roles

Lines of Credit (1400 — 1449)

Response Code Description
1400 PRODUCT_LINE_OF_CREDIT_AFFILIATION_CONSTRAINT_MISMATCH When the product requires a line of credit and the account is not part of a line of credit OR the product doesn’t allow a line of credit, but the account has a line of credit set
1401 DISBURSEMENT_DATE_BEFORE_LINE_OF_CREDIT_START_DATE When the loan disbursement (or expected disbursement) date is before the line of credit start date
1402 MATURITY_DATE_AFTER_LINE_OF_CREDIT_END_DATE When the loan last repayment date is after the line of credit expiration date
1403 LINE_OF_CREDIT_AMOUNT_EXCEEDED When the maximum line of credit amount would be exceeded if the account joined the line of credit
1404 LINE_OF_CREDIT_REQUIRED_EXCEPTION The product requires the account to be part of a credit arrangement
1405 OVERDRAFT_EXPIRY_DATE_AFTER_LINE_OF_CREDIT_END_DATE The overdraft expiry date cannot be after the line of credit end date
1406 CANNOT_CREATE_ACCOUNT_WITH_LINE_OF_CREDIT When a loan or deposit account is created with a line of credit key set in the JSON
1407 LINE_OF_CREDIT_REQUIRES_OVERDRAFT_MAX_LIMIT The overdraft maximum limit is required because the account is part of the line of credit and in a consuming state
1408 LINE_OF_CREDIT_REQUIRES_OVERDRAFT_EXPIRY_DATE The overdraft expiry date is required because the account is part of a Line of Credit and in a consuming state
1409 INVALID_LINE_OF_CREDIT_ID The ID or the encoded key used for getting a line of credit is invalid
1410 ACCOUNT_ALREADY_ON_LINE_OF_CREDIT When trying to add an account to a line of credit, but the account already has a line of credit defined
1411 INCONSISTENT_LINE_OF_CREDIT_CLIENT_WITH_ACCOUNT_OWNER When the key of the line of credit is not the same as the holder key of the account
1412 ACCOUNT_IS_NOT_PART_OF_LINE_OF_CREDIT When trying to delete an account but it is not part of the line of credit mentioned in the URL
1413 INVALID_LINE_OF_CREDIT_STATE When trying to add accounts on a line of credit but the the state of the line is invalid
1414 HAS_LINE_OF_CREDIT When trying to remove item that has line of credit
1415 LINE_OF_CREDIT_ID_ALREDY_IN_USE When when trying to store a line of credit with an ID that is already taken
1416 EXPIRE_DATE_BEFORE_START_DATE When trying to store a line of credit with an expiration date before the start date
1417 INVALID_CLIENT_ROLE_PERMISSION_FOR_OPENING_LINES_OF_CREDIT When trying to store a line of credit, but the client type does not allow opening line of credits
1418 MISSING_LINE_OF_CREDIT_START_DATE When trying to store a line of credit with a missing start date
1419 MISSING_LINE_OF_CREDIT_EXPIRE_DATE When trying to store a line of credit with a missing expire date
1420 MISSING_LINE_OF_CREDIT_AMOUNT When trying to store a line of credit with a missing amount
1421 LINE_OF_CREDIT_AMOUNT_NOT_STRICTLY_POSITIVE When trying to store a line of credit with an amount that is not strictly positive

Account Holder (1450 — 1499)

Response Code Description
1489 INVALID_ACCOUNT_HOLDER_ID
1490 MISSING_ACCOUNT_HOLDER_KEY When trying to store an entity and the account holder key is not defined
1491 MISSING_ACCOUNT_HOLDER_TYPE When trying to store an entity and the account holder type is not defined
1492 ACCOUNT_HOLDER_NOT_FOUND When trying to store an entity and the account holder is not found in system
1499 INVALID_ACCOUNT_HOLDER_STATE The account holder is in an invalid state for the given operation

Organization (1500 — 1599)

Response Code Description
1500 NO_ORGANIZATION_ICON When trying to fetch organization branding icon and there is no picture set for this case
1501 NO_ORGANIZATION_LOGO When trying to fetch organization branding logo and there is no picture set for this case
Response Code Description
1600 MISSING_TEXT The required text for the object is missing
1601 MAX_TEXT_LENGTH_EXCEEDED The maximum allowed size for the text in the parameter was reached

Revolving Credit (1900 — 1999)

Response Code Description
1901 NUM_INSTALLMENTS_NOT_AVAILABLE_FOR_REVOLVING_CREDIT When repaymentInstallments is specified but not available for revolving credit
1902 PRINCIPAL_PAYMENT_INCONSISTENT_WITH_PRODUCT When principal payment settings from the account are inconsistent with the product
1903 SCHEDULE_PREVIEW_NOT_AVAILABLE_FOR_REVOLVING_CREDIT When revolving credit account doesn’t have a schedule
1904 AMOUNT_MORE_THAN_CURRENT_AVAILABLE_AMOUNT When the disbursement amount is greater than the approved loan amount
1905 INCONSISTENT_WITH_CENTRE_MEETING_DAY When the custom schedule due dates are not in the centre meeting day
1906 FIELD_IS_NOT_EDITABLE When the custom schedule fields cannot be adjusted
1907 RESCHEDULED_REPAYMENT_BEFORE_DISBURSEMENT_DATE When the first repayment date was moved to before the disbursement date because of a non-working day

2000 — 2049

Response Code Description
2001 FIELD_NOT_ALLOWED The client provided a field that is not allowed
2002 OPERATION_NOT_ALLOWED_ON_FIELD Client provided a patch operation that is restricted for that field
2018 INVALID_FUND_ENCODED_KEY When trying to post a loan account with fund which contains invalid guarantor key
2019 INVESTORS_TOTAL_AMOUNT_MORE_THAN_LOAN_AMOUNT When total funds amount is more than the loan account amount
2020 INVALID_FUND_ID When the ID or the key used for an investor fund action is invalid
2021 INACTIVE_FUND_ID When an action is performed on an inactive fund

Sell funding source investment (2050 — 2099)

Response Code Description
2050 INVALID_FUNDED_ACCOUNT_STATE Sell operation is done for a funded account in an invalid state (for example, the loan ispending or closed)
2051 FUND_SELL_WITH_NO_PURCHASES When sell action is performed with no purchases
2052 FUND_OVERSELL Sell operation was attempted for an amount larger than the sold loan fraction
2053 INVALID_SELLER_FUND_AMOUNT Seller’s fund amount is not positive
2054 INVALID_SELLER_FUND_STATE Seller’s fund state is not active
2055 INVALID_SELLER_FUNDING_ACCOUNT Seller’s funding account is not valid
2056 INVALID_INVESTMENT_PERCENTAGES_FOR_AMOUNTS Percentages determined by amounts are not valid
2057 FUND_SELF_SELL The fund buyer deposit account cannot be the same as the fund to sell owner deposit account
2061 INVALID_BUYER_FUNDING_ACCOUNT Buyer’s funding account key doesn’t correspond to a proper funding deposit account owned by buyer
2062 DUPLICATE_BUYER_FUNDING_ACCOUNT Buyer’s funding account key is found more than once in the list of buyers
2063 INVALID_BUYER_FUND_AMOUNT Buyer’s bought amount is invalid: negative, zero, or not a number
2064 INVALID_FUND_PURCHASE_PRICE Buy price is not the same as the buyer’s bought amount
2065 INSUFFICIENT_BUYER_FUNDING_ACCOUNT_FUNDS Buyer’s funding account key doesn’t have sufficient funds for buy action
2099 INVALID_FILTER_VALUES Values are invalid for the type of the data field specified

2100

Response Code Description
2100 INVALID_FILTER_SELECTION When the value of filter selection is not a valid data field or custom field key when searching on the fly
2101 INVALID_FILTER_ELEMENT When the value of filter element is not valid or supported and is not applicable for the type of the data field
2102 INVALID_FILTER_VALUE When invalid value for the type of the data field
2103 INVALID_FILTER_SECOND_VALUE When invalid second value — second value not provided when using BETWEEN filter element or provided but not for a between filter
2104 TOO_MANY_FILTERS_PROVIDED When more filters are provided than the maximum supported number
2105 INVALID_FILTER_DATA_ITEM_TYPE When the value of dataItemType property is not recognized (not a valid value)
2106 INSUFFICIENT_FUNDS_ACCOUNT_BALANCE When there is not enough deposit balance to be used as fund
2107 INSUFFICIENT_FUNDS_TOTAL_AMOUNT When the the total amount of the funds is not enough
2108 FUNDS_NOT_ALLOWED When trying to post a loan account with funds, but the product don’t accept investors
2109 FUNDING_AMOUNT_MUST_BE_STRICTLY_POSITIVE When trying to post a loan account with fund which contains negative or zero amount
2110 FUNDER_INTEREST_COMMISSION_CONSTRAINTS_VALIDATION When trying to post a funding source with interest commission outside of boundaries
2111 MISSING_FUNDER_INTEREST_COMMISSION When trying to post a funding source with missing interest commission for a fixed interest commission product type
2112 LOAN_ACCOUNT_NOT_FUNDED_BY_SAVINGS_ACCOUNT When the loan account should be funded by an investor’s deposit account, but it is not
2113 INVALID_INTEREST_RATE_AGAINST_INTEREST_COMMISSION When trying to post a loan account with funds and the account interest rate is less than the fund interest commission
2114 INVALID_SAVINGS_ACCOUNT_TYPE_FOR_FUNDING When trying to post a loan account with funds and the deposit account for funding is not an investor account
2115 DUPLICATED_SAVINGS_ACCOUNT_FOR_FUNDING When trying to post a loan account with investor fund and investors have the same deposit account key
2116 INVALID_FIXED_DAYS_OF_MONTH When trying to post a loan account with invalid fixed days of month, like duplicated days or day number greater than 31
2117 INVALID_SORTING_COLUMN When trying to post a search using on the fly search and the given sorting column is null, empty or invalid
2118 COLUMN_NOT_SORTABLE When trying to post a search using on the fly search and the column is not sortable (DataField.FilteringCapabilities = FilteringCapabilities.UNFILTERABLE)
2119 INVALID_SORTING_ORDER When trying to post a search using on the fly search and the given sorting order is null, empty or invalid (not in SortingOrder enum)
2120 ACCOUNT_TYPE_DOES_NOT_ALLOW_FIELD When trying to change a field for an account that does not allow that field
2121 INVALID_GUARANTY_ENCODED_KEY When trying to edit the guaranty of a loan account and an invalid guaranty key is encountered
2122 INVALID_GUARANTY_TYPE When trying to edit the type of a guaranty (guarantor/asset/investor) with an invalid value
2123 INVALID_GUARANTOR_TYPE When trying to edit the type of a guarantor (client/group) with an invalid value
2124 GUARANTY_KEY_TYPE_MISMATCH When the guaranty key is not of the mentioned type
2125 LOAN_ACCOUNT_NOT_FUNDED_BY_DEPOSIT_ACCOUNT When calling GET for funded loan accounts, the error means that the loan account you are trying to get is not funded by a deposit account

2200

Response Code Description
2200 INVALID_TEMPLATE_ID When the template ID provided is not valid
2201 INVALID_TEMPLATE_TYPE When the type of the template provided to be processed through API doesn’t match with the context
2202 MISSING_FIXED_DAYS_OF_MONTH When the fixed days of month are missing
2203 FIXED_DAYS_OF_MONTH_NOT_ALLOWED When the fixed day of month are provided but the product does not allow them
2204 REPAYMENT_FREQUENCY_NOT_ALLOWED When the repayment frequency is provided but the product does not allow it
2205 REPAYMENT_PERIOD_COUNT_NOT_ALLOWED When the repayment period count is provided but the product does not allow it
2206 APPLIED_INTEREST_BALANCE_CANNOT_BE_REALLOCATED When the user tries to update the interest balance across repayments, between a repayment with interest applied and one without
2207 INVALID_NEW_TOTAL_LOAN_AMOUNT When trying to reschedule a loan account without any write off transaction, and the loan amount of the new account isn’t equal with original account principal balance
2208 NEGATIVE_WRITE_OFF_AMOUNT When trying to reschedule or refinance a loan account and a write off transaction is requested, but a negative amount is provided
2209 CAPITALIZED_AMOUNTS_NOT_ALLOWED_DUE_TO_DIFFERENT_ACCOUNTING When trying to reschedule or refinance a loan account with cAPItalized amounts to a new product that has a different accounting methodology than the current one
2210 TOP_UP_AMOUNT_IS_MANDATORY When trying to refinance a loan account but not provide the top up amount
2211 RESTRUCTURE_DETAILS_ARE_MANDATORY When trying to refinance a loan account and restructure details aren’t provided
2212 NEGATIVE_TOP_UP_AMOUNT When trying to refinance a loan account and the top up amount provided is negative
2213 WRITE_OFF_AMOUNT_MORE_THAN_BALANCE_AMOUNT
2214 CANNOT_REFINANCE_REVOLVING_CREDIT_LOAN When trying to refinance a revolving credit loan
2215 POSITIVE_CAPITALIZED_AMOUNTS_FOR_LOAN_FUNDED_NOT_ALLOWED When rescheduling a loan with investor funds and positive cAPItalized amounts are defined
2216 WRITE_OFF_AMOUNT_FOR_LOAN_FUNDED_DIFFERENT_BY_BALANCE_AMOUNT When trying to reschedule a loan account with investor funds and the write off outstanding balance amount is different than the current balance amount(interest/fees/penalty)
2217 CURRENCY_NOT_AVAILABLE_FOR_PRODUCT When trying to create a deposit account with a currency which is not available for the desired product type
2218 CURRENCY_NOT_EDITABLE When trying to edit the currency of a deposit account but it is linked to a loan account
2219 TELLER_CANNOT_POST_TRANSACTION_IN_MULTI_CURRENCY When trying to post a transaction as teller in a currency different than the base one
2220 NOT_ENOUGH_PRINCIPAL_TO_CONTINUE_FEE_AMORTIZATION When trying to reschedule/refinance a loan account and the transferred principal is less or equal than the remaining fee amount to amortize
2221 MISSING_TEMPLATE_KEY
2240 TELLER_CANNOT_POST_TRANSACTION_WITHOUT_OPENED_TILL

Principal Payment Settings (2300 — 2399)

Response Code Description
2300 SETTINGS_ONLY_AVAILABLE_FOR_REVOLVING_CREDIT_ACCOUNTS When the loan account is not of revolving credit type but it does have any principal payment settings
2301 INCONSISTENT_FLAT_AMOUNT_WITH_PRODUCT_CONSTRAINTS When the loan product’s settings constraints don’t match the account’s flat principal payment amount
2302 INCONSISTENT_PERCENTANGE_WITH_PRODUCT_CONSTRAINTS When the loan product’s settings constraints don’t match the account’s outstanding principal payment percentage
2303 AMOUNT_REQUIRED_FOR_FLAT_PRINCIPAL_PAYMENT_METHOD When the account’s flat principal payment amount is null but mandatory
2304 PERCENTAGE_REQUIRED_FOR_PRINCIPAL_PAYMENT_PERCENTAGE_METHOD When the account’s principal payment percentage is null but mandatory
2305 AMOUNT_ONLY_AVAILABLE_FOR_FLAT_PRINCIPAL_PAYMENT_METHOD When the account’s flat principal payment amount is set but unavailable
2306 PERCENTAGE_ONLY_AVAILABLE_FOR_OUTSTANDING_PRINCIPAL_PERCENTAGE_METHOD When the account’s principal payment percentage is set but unavailable
2307 INVALID_PRINCIPAL_PAYMENT_FLAT_AMOUNT_WITH_DECIMALS When the account’s flat principal payment amount is not valid with regards to the decimals settings
2308 INVALID_PRINCIPAL_PAYMENT_PERCENTAGE_VALUE When the account’s principal payment percentage value is not a valid percentage value
2309 CANT_EDIT_LOCKED_OPERATIONS_IN_LOCKED_CAPPING_STATE When the locked operations are edited and the account is in locked capping state
2310 CANT_UNLOCK_WHEN_INCOME_BALANCE_IS_OVER_PRINCIPAL_CAPPING_CONSTRAINTS Error code for the case when the income balance(interest + fee + penalties) is over the principal capping constrains set on the product, the unlock is not allowed
2311 CANNOT_BULK_REVERSE_INTERNAL_TRANSFER_REPAYMENT When trying to reverse an internal transfer repayment as part of a bulk reversal operation
2312 CANNOT_BULK_REAPPLY_TRANSACTION_BECAUSE_LOCKED_TRANSACTIONS_LOGGED_AFTER_IT When as part of a bulk reversal operation, a transaction is re-applied after a interest, fees or penalty locked transaction
2313 CANNOT_BULK_REAPPLY_POSTDATED_REPAYMENTS When as part of a bulk reversal operation, a postdated repayment is re-applied
2314 CANNOT_BULK_REVERSE_ACTIVATION_TRANSACTION Transaction cannot be backdated before the disbursement of a loan account
2315 CLOSURE_DATE_AFTER_MAX_ALLOWED_UNDO_CLOSURE_PERIOD When the undo closure date is after account closure date + maximum allowed undo closure days
2316 CLOSURE_DATE_BEFORE_GL_ACCOUNT_CLOSURE When there is a GL Accounts closure logged after the loan account closure date
2317 MISSING_ORGANIZATION_INTEREST_COMMISSION When there is product without having default value set for organization interest commission and this value is not specified in the API call
2318 INSUFFICIENT_TRANSACTION_AMOUNT When there isn’t enough amount in the account to reverse the transaction
2319 CANNOT_REVERSE_INTEREST_ON_DISBURSEMENT When there are transaction to be adjusted for an account having the interest applied on disbursement, which isn’t allowed
2320 TRANSACTION_TYPE_IS_IRREVERSIBLE The transaction we’re attempting to adjust has a type that does not allow adjustments
2321 INTEREST_APPLIED_WITH_NULL_AMOUNT The transaction is an interest applied and has null amount
2322 CANNOT_REVERSE_OFFSET_DEPOSIT_TRANSACTION When trying to reverse a transaction for a linked offset deposit
2323 CANNOT_LOCK_CAPPING_ACCOUNT_INVALID_ACCOUNT_ID Can’t lock (capping) account because the account’s ID is invalid
2324 CANNOT_LOCK_CAPPING_ACCOUNT_INVALID_ACCOUNT_STATE_FOR_LOCK Can’t lock (capping) account because the account’s state is not valid for locking
2325 INCOME_BALANCE_CONSTRAINTS_EXCEEDED Income balance constraints would be exceeded if income transaction would be applied
2326 CANNOT_BULK_REVERSE_LOAN_FRACTION_SOLD Loan fraction sold cannot be directly bulk reversed
2327 LATE_FEE_TRANSACTIONS_LOGGED_AFTER_REPAYMENT_TO_REAPPLY_ON_FIXED_ACCOUNT When there are late fee transactions logged after a repayment transaction to reapply on a fixed loan account
2328 FEE_CANNOT_BE_POSTED_ON_RECOMPUTED_SCHEDULE When a late fee cannot be re applied on recomputed schedule after
2329 INVALID_ORGANIZATION_INTEREST_COMMISSION When organization interest commission does not represent a valid numeric value or does not comply with product security settings
2330 ACCOUNT_ALREADY_LOCKED When trying to lock an already locked account
2331 CANNOT_BULK_ADJUST_ACTIVATION_TRANSACTION Cannot bulk-adjust the activation transaction for a loan account
2332 PAYMENT_DUE_FEE_APPLIED_ON_DUE_DATES_TRANSACTIONS_LOGGED_AFTER_REPAYMENT_TO_REAPPLY_ON_FIXED_ACCOUNT
2333 REALLOCATION_CAN_BE_DONE_ONLY_ON_FUTURE_REPAYMENTS
2334 REALLOCATION_NOT_ALLOWED_ON_GRACE_INSTALLMENTS
2335 INVALID_PRINCIPAL_PAYMENT_METHOD
2340 REPAYMENT_VALUE_CHANGE_NOT_ALLOWED

2400

Response Code Description
2400 INTEREST_RATE_CHANGED_TRANSACTION_NOT_ALLOWED The LoanTransactionType.INTEREST_RATE_CHANGED transaction can’t be applied
2401 INTEREST_RATE_CHANGED_TRANSACTION_NOT_ALLOWED_FOR_LOAN_PRODUCT_TYPE The LoanTransactionType INTEREST_RATE_CHANGED transaction can only be applied for revolving credit products
2402 INSTALLMENT_WITH_INTEREST_APPLIED_CANNOT_BE_EDITED When the custom schedule has interest applied and an edit was tried
2403 UNABLE_TO_DETERMINE_DELETED_REPAYMENTS When the we cannot properly identify the deleted repayments
2404 PAID_OR_PURE_GRACE_INSTALLMENT_CANNOT_BE_DELETED When a pure grace installment or a paid installment was deleted
2405 NON_CUSTOM_MADE_INTALLMENT_CANNOT_BE_DELETED_FOR_REVOLVING_CREDIT_ACCOUNT When a non custom-made installment is deleted for a revolving credit account
2406 INVALID_NUMBER_OF_INSTALLMENTS When the number of installments is not within the product constraints
2407 INVALID_PRINCIPAL_AMOUNT_WITH_DECIMALS When a principal amount is not valid with regarding to the decimals settings
2408 INCONSISTENT_WITH_LINE_OF_CREDIT_VALID_UNTIL_DATE When the due date (of repayment) is after the Line of Credit valid until date
2409 DUE_DATES_NOT_UNIQUE When there are multiple installments with the same due date (edit repayment schedule)
2410 NON_ZERO_PRINCIPAL_REPAYMENT_CANNOT_BE_DELETED When a delete for a repayment that has not non zero principal due was tried
2411 NON_DYNAMIC_ACCOUNT_REPAYMENT_DELETION_NOT_ALLOWED When there is a a delete for a repayment for non dynamic account (not allowed)
2412 INVALID_LOAN_ACCOUNT_STATE_FOR_FUNDS_EDIT When the loan account state is invalid for the case when the investor funds are edited
2413 ENTRY_DATE_AFTER_MATURITY_DATE_WITH_LATE_FEES_AND_BULK_REVERSAL When the interest is applied after account maturity date and there are late fees and also it trigger a bulk reverse and re-apply of transactions
2414 DIFFERENT_ACCOUNTING_STATE_BETWEEN_INVOLVED_PRODUCTS When the deposit product has different accounting states
2415 ACCOUNT_ALREADY_LINKED When the account is already linked with the provided deposit account
2416 PRODUCT_DOES_NOT_ALLOW_LINKING When the product does not allow linking of settlement accounts
2417 UNLINKABLE_SAVINGS_PRODUCT When the deposit product is not accepted by the loan product for linking
2418 INVALID_SAVINGS_ACCOUNT_HOLDER When the linking should be done only between account under same account holder
2419 LINK_BETWEEN_ACCOUNTS_DOES_NOT_EXIST When a link between the loan account and the deposit account does not exist
2420 NON_NATIVE_GRACE_INSTALLMENT_CANNOT_BE_EDITED When a non-native grace installment was edited
2421 NON_NATIVE_GRACE_INSTALLMENT_CANNOT_BE_DELETED When a non-native grace installment was deleted
2422 INSUFFICIENT_ACCOUNT_BALANCE When the account balance is insufficient for the given operation
2423 INVALID_SAVINGS_ACCOUNT_TYPE When the deposit account type is invalid for the given operation
2424 MATURITY_PERIOD_ALREADY_STARTED When the maturity date period is already started on the account
2425 LOAN_PRODUCT_PRINCIPAL_PAID_INSTALLMENT_STATUS_MISMATCH Principal paid installment status from loan account doesn’t match the one from loan product
2426 CANNOT_DELETE_LINK_FOR_ACTIVATED_OFFSET_LOAN A link cannot be deleted for an offset loan account that was activated
2427 INVALID_LANGUAGE When the provided language is invalid(null or something else, the error source will provide the detailed reason)
2428 INVALID_LINKED_SETTLEMENT_ACCOUNT_KEYS When the list with the provided linked settlement account keys on a deposit account is invalid
2429 SAVINGS_ACCOUNT_ALREADY_LINKED When the settlement account is already linked to loan accounts from different branches
2430 INSTALLMENT_WITH_PENALTY_APPLIED_CANNOT_BE_EDITED When the custom schedule has penalty applied and an edit was tried
2431 INSTALLMENT_DUE_DATE_MOVED_BEFORE_LAST_PENALTY_APPLIED_DATE When the custom due date was moved before penalty applied
2432 MATURITY_PERIOD_NOT_STARTED When the maturity date period is not yet started on the account
2433 INVALID_AMOUNT_WITH_DECIMALS
2434 PAYMENT_HOLIDAY_INVALID_INSTALLMENT_STATE
2436 PAYMENT_HOLIDAYS_ARE_NOT_ALLOWED_FOR_INSTALLMENTS_THAT_ALREADY_HAVE_PAYMENT_HOLIDAYS
2437 PAYMENT_HOLIDAYS_ARE_NOT_ALLOWED_FOR_INSTALLMENTS_THAT_HAVE_INTEREST_APPLIED
2438 PAYMENT_HOLIDAYS_ARE_NOT_ALLOWED_FOR_INSTALLMENTS_THAT_HAVE_FEE_APPLIED
2439 PAYMENT_HOLIDAYS_ARE_NOT_ALLOWED_FOR_INSTALLMENTS_THAT_HAVE_PENALTY_APPLIED
2440 RESEND_FAILED_NOTIFICATION_FAILED When trying to resend a failed notification and it fails (due to different causes: invalid encoded key of notification message or other various reasons, incorrect notification configuration)
2441 TRY_TO_RESEND_NON_FAILED_NOTIFICATION When trying to resend a non failed notification
2442 DUPLICATED_NOTIFICATION_ENCODED_KEY When trying to resend a list of notification message encoded keys and at least one key is duplicated
2443 MAXIMUM_NUMBER_OF_NOTIFICATIONS_TO_RESEND_EXCEEDED When the maximum number of failed notifications to resend exceeds the set Mambu property
2444 DUE_DATES_NOT_IN_ASCENDING_ORDER When the generated schedule doesn’t have the due dates in ascending order. This can happen due to first repayment settings, as offset and repayment rescheduling options
2445 ACCOUNT_PRODUCT_BRANCH_AVAILABILITY_MISMATCH Mismatch between the account’s assigned branch key and the branches for which the product is available
2446 CLIENT_HAS_ACTIVE_ACCOUNTS_WITH_PRODUCT_BRANCH_AVAILABILITY_MISMATCH In case a change to a client’s (or group) assigned branch is done and that client(group) has active accounts that are unavailable for the new assigned branch
2447 PRODUCT_HAS_ASSOCIATED_ACCOUNTS The product has associated accounts
2448 MAX_NUMBER_OF_FILTERS_REACHED When the number of filters exceeds the maximum allowed
2449 MAX_NUMBER_OF_COLUMNS_REACHED When the number of columns exceeds the maximum allowed
2450 USAGE_RIGHTS_ROLE_NOT_AVAILABLE When the custom view is tried to be stored with a usage rights not available for it
2452 CURRENCY_NOT_DEFINED When the deposit product doesn’t have a currency defined
2453 BASE_CURRENCY_CANNOT_BE_REMOVED When the deposit product is linked to a loan product, then the base currency cannot be removed from it
2454 CURRENCY_IN_USE_CANNOT_BE_REMOVED When the currency is in use by other deposit product, then it cannot be removed
2455 CURRENCY_DOES_NOT_EXIST When the specified currency code was not found (via API)
2492 PAYMENT_HOLIDAYS_ADJUSTMENT_IS_NOT_ALLOWED_FOR_ACCOUNTS_WITH_PAYMENT_DUE_FEE_APPLIED_ON_DUE_DATES
2493 ACCOUNT_HAS_NO_PAYMENT_HOLIDAYS_ACCRUED_INTEREST
2494 ACCOUNT_HAS_LESS_PAYMENT_HOLIDAY_ACCRUED_INTEREST_THAN_THE_PROVIDED_AMOUNT_TO_APPLY
2495 PAYMENT_HOLIDAYS_ADJUSTMENT_IS_NOT_ALLOWED_FOR_INSTALLMENTS_WITHOUT_PAYMENT_HOLIDAYS
2496 PAYMENT_HOLIDAYS_ADJUSTMENT_IS_NOT_ALLOWED_FOR_INSTALLMENTS_THAT_HAVE_REPAYMENTS_POSTED
2497 PAYMENT_HOLIDAYS_ADJUSTMENT_IS_NOT_ALLOWED_FOR_INSTALLMENTS_THAT_HAVE_INTEREST_APPLIED
2498 PAYMENT_HOLIDAYS_ADJUSTMENT_IS_NOT_ALLOWED_FOR_INSTALLMENTS_THAT_HAVE_FEE_APPLIED
2499 PAYMENT_HOLIDAYS_ADJUSTMENT_IS_NOT_ALLOWED_FOR_INSTALLMENTS_THAT_HAVE_PENALTY_APPLIED

Credit arrangement (return codes used in API V2.0) (2456 — 2499)

Response Code Description
2456 INVALID_CREDIT_ARRANGEMENT_ID When the ID or the key used for getting a credit arrangement is invalid
2457 INVALID_CREDIT_ARRANGEMENT_STATE When trying to create a credit arrangement and the state does not match internal controls
2458 CREDIT_ARRANGEMENT_ID_ALREADY_IN_USE When trying to store a credit arrangement with an ID that is already taken
2459 INVALID_CLIENT_ROLE_PERMISSION_FOR_OPENING_CREDIT_ARRANGEMENTS When trying to store a credit arrangement, but the client type does not allow opening credit arrangements
2460 CREDIT_ARRANGEMENT_AMOUNT_NOT_STRICTLY_POSITIVE When trying to store a credit arrangement with an amount that is not strictly positive
2461 PRODUCT_CREDIT_ARRANGEMENT_AFFILIATION_CONSTRAINT_MISMATCH When the product requires a credit arrangement and the account is not part of a credit arrangement or the account doesn’t allow a credit arrangement, but the account has a credit arrangement set
2462 ACCOUNT_ALREADY_ON_CREDIT_ARRANGEMENT When trying to add an account to a credit arrangement, but the account already has a credit arrangement defined
2463 INCONSISTENT_CREDIT_ARRANGEMENT_CLIENT_WITH_ACCOUNT_OWNER When the key of the credit arrangement is not the same as the holder key of the account
2464 CREDIT_ARRANGEMENT_REQUIRES_OVERDRAFT_EXPIRE_DATE when overdraft expire date is required because the account is part of a credit arrangement and in a consuming state
2465 CREDIT_ARRANGEMENT_REQUIRES_OVERDRAFT_MAX_LIMIT When overdraft maximum limit is required because the account is part of a credit arrangement and in a consuming state
2466 CREDIT_ARRANGEMENT_AMOUNT_EXCEEDED When the maximum credit arrangement amount would be exceeded if the account would join the credit arrangement
2467 MATURITY_DATE_AFTER_CREDIT_ARRANGEMENT_END_DATE When the loan last repayment date is after the credit arrangement expire date
2468 OVERDRAFT_EXPIRY_DATE_AFTER_CREDIT_ARRANGEMENT_END_DATE When the overdraft expiry date is after the credit arrangement expire date
2469 DISBURSEMENT_DATE_BEFORE_CREDIT_ARRANGEMENT_START_DATE When the loan disbursement (or expected disbursement) date is before the credit arrangement start date
2470 CREDIT_ARRANGEMENT_REQUIRED_EXCEPTION When the product requires a credit arrangement but the account is not part of a credit arrangement
2471 ACCOUNT_IS_NOT_PART_OF_CREDIT_ARRANGEMENT When trying to delete an account but it is not part of the credit arrangement mentioned in the URL
2472 CREDIT_ARRANGEMENT_ILLEGAL_PARAMETER_MODIFICATION When trying to modify some credit arrangement parameters, but due to credit arrangement state the modification is not permitted
2473 CREDIT_ARRANGEMENT_HAS_NON_CLOSED_ACCOUNTS When trying to close a credit arrangement that has non closed accounts
2474 BASE_CURRENCY_NOT_UNIQUE When adding a default currency but there is already a default in the system
2475 CURRENCY_SYMBOL_LENGTH_OUTSIDE_CONSTRAINTS When a currency symbol is outside its length constraints
2476 INEXISTING_CURRENCY_SYMBOL When no currency symbol is specified
2480 INVALID_TO_INSTALLMENT_POSITION When the installment value for a periodic payment is an invalid value (should be positive integer)
2481 INVALID_PMT_VALUE When the PMT value for a periodic payment is invalid (should be zero or positive amount)
2482 PAYMENT_PLAN_NOT_AVAILABLE When the payment plan is not available for the loan account
2483 AT_LEAST_ONE_PERIODIC_PAYMENT_PLAN_MANDATORY When at least one periodic payment should be defined in a payment plan
2484 SUM_OF_PERIODIC_PAYMENTS_LESS_OR_EQUAL_WITH_LOAN_AMOUNT When the sum of periodic payments defined in payment plan is less than or equal to the loan amount
2485 PAYMENT_PLAN_ENTRIES_NOT_ORDERED When the periodic payments of a payment plan are not in ascending order (starting position is greater than ending position for a periodic payment)
2486 INTEREST_RATE_COMPUTATION_ERROR When the interest rate cannot be computed based on a payment plan
2487 INVALID_PERIODIC_PAYMENT_ENCODED_KEY When an update is done on a non existing payment plan entry
2488 DUPLICATED_PERIODIC_PAYMENT_ENCODED_KEY When a payment plan update contains duplicate encoded keys
2489 INVALID_INTEREST_CHARGE_FREQUENCY_METHOD_MUST_BE_NULL InterestChargeFrequency is invalid (should be null for Fixed payment plan product)
2490 INVALID_DAYS_IN_YEARS_METHOD_MUST_BE_NULL DaysInYears is invalid (should be null for Fixed payment plan product)

2500

Response Code Description
2500 PRODUCT_ID_ALREADY_IN_USE When the product ID is already in use
2501 INVALID_ROUNDING_REPAYMENT_CURRENCY_FOR_PRODUCT(2501), When rounding repayment currency is inconsistent with the product options
2502 INVALID_COMMUNICATION_MESSAGE_ENCODED_KEY When the provided encoded key for the communication message is invalid
2503 INVALID_EMAIL_SUBJECT When the email is sent without a valid subject
2504 CANNOT_ADJUST_OFFSET_DEPOSIT_TRANSACTION When trying to adjust a transaction for a linked offset deposit
2505 CURRENCY_CANNOT_BE_CHANGED
2506 ONLY_ORGANISATION_BASE_CURRENCY_IS_ALLOWED

2600

Response Code Description
2600 SDK_CLIENT_COULD_NOT_BE_GENERATED When something went wrong while generating the SDK client and the client could be generated
2601 SDK_CLIENT_LANGUAGES_COULD_NOT_BE_OBTAINED When something went wrong while trying to obtain the available languages for SDK client generation
2602 MAXIMUM_NUMBER_OF_COMMUNICATION_MESSAGES_TO_RESEND_EXCEEDED When the maximum number of failed communication messages to resend exceeds the set Mambu property
2604 RESEND_FAILED_COMMUNICATON_FAILED When trying to resend a failed communication and it fails (due to different causes: invalid encoded key of the communication message or other various reasons such as incorrect communication message configuration)
2605 DUPLICATE_ENCODED_KEY When trying to resend a list of communication messages and at least one encoded key is duplicated
2606 MESSAGE_STATE_MUST_BE_FAILED When trying to resend a non failed communication
2607 NO_MESSAGE_FOUND When no message was found in a list of message encoded keys
2608 MESSAGE_NOT_FOUND When the message was not found for that specific encoded key
2609 MISSING_ENCODED_KEY When the message to be resend doesn’t have the encoded key specified
2610 URL_CONTAINS_QUOTES WebHook URLs cannot contain quotes
2611 MISSING_RECIPIENT The message recipient is missing when required
2612 RECIPIENT_NOT_ALLOWED The message recipient is set but not allowed
2613 INVALID_CLIENT_RECIPIENT The client recipient is not valid
2614 INVALID_CREDIT_OFFICER_RECIPIENT The credit officer recipient is not valid
2615 INVALID_GROUP_ROLE_RECIPIENT The group role recipient is not valid
2616 INVALID_CUSTOM_FIELD_RECIPIENT The custom field recipient is not valid
2617 INVALID_EVENT The event of the template used for this message is not valid
2618 INVALID_TARGET The target of the template used for this message is not valid
2619 INVALID_PLACEHOLDER A placeholder from the template is not allowed
2620 INVALID_FIELD_LENGTH When the name or subject has invalid length
2621 INVALID_WEBHOOK_REQUEST_TYPE WebHook request type is not valid
2622 URL_CONTAINS_INVALID_PLACEHOLDERS WebHook URLs cannot contain specific placeholder, like Repayment schedule placeholder
2623 UNABLE_TO_RECALCULATE_SCHEDULE When the schedule recalculate fails
2624 UNABLE_TO_APPRAISE_LOAN_ACCOUNT When the appraisal of the loan account fails
2625 TRANSACTION_MADE_BY_A_DISBURSEMENT_FEE Transaction is an up-front disbursement fee type that cannot be individually reversed
2626 INVALID_TARGET_ACCOUNT_TYPE When the target account is a term deposit (fixed deposit or savings plan)
2627 NEGATIVE_TARGET_ACCOUNT_BALANCE When the target account has negative balance. Disbursements cannot be transferred to overdraft accounts (can’t pay an overdraft with another loan)
2628 ZERO_DISBURSE_AMOUNT When an account is trying to be disbursed to a deposit account but with a zero amount
2629 INVESTOR_FUNDED_LOAN_ACCOUNT When an account is trying to be disbursed with external investor funds in a deposit account
2630 INVALID_TARGET_ACCOUNT_HOLDER_KEY When the account holder of target account is not the same with the one from the loan account (disbursements can only be transferred from a client’s loan to one of its deposits)
2631 TRANSFER_NOTES_LENGTH_EXCEEDS_MAXIMUM_SIZE When transfer notes are longer than the maximum allowed size
2632 CANNOT_MAKE_TRANSFER_FOR_FOREIGN_CURRENCY_IF_ACCOUNTING_ENABLED When the user tries to make a transfer between two deposit accounts and the source account has accounting enabled and a foreign currency

Cards (2700 — 2799)

Response Code Description
2700 CARD_REFERENCE_TOKEN_FORMAT_INVALID When the card reference format is invalid (null or too long)
2701 CARD_REFERENCE_TOKEN_ALREADY_IN_USE This card token is already in use with another current or revolving credit account and cannot be used
2702 CARD_REFERENCE_HAS_ASSOCIATED_HOLDS_OR_TRANSACTIONS When the card reference has associated authorization holds or card transactions upon deleting
2703 CARD_REFERENCE_NOT_FOUND When the card reference token not found in database
2704 DUPLICATE_AUTHORIZATION_HOLD When an authorization hold with the same card token and external reference ID already exists
2705 DUPLICATE_CARD_TRANSACTION When a card transaction with the same card token and external reference ID already exists
2706 AVAILABLE_BALANCE_BELOW_ZERO When the available balance drops below zero (becomes negative)
2707 AUTHORIZATION_HOLD_NOT_FOUND When the authorization hold was not found in database
2708 INVALID_AUTHORIZATION_HOLD_STATE When the operation is denied for authorization hold state
2709 CARD_TRANSACTION_CANNOT_BE_ADJUSTED If a transaction is card-originated, this cannot be reversed. If a reversal is intended, please consult our Support Page
2710 TECHNICAL_OVERDRAFT_IS_NOT_ALLOWED_FOR_PRODUCT
2711 CARD_TRANSACTION_NOT_FOUND No original card transaction was found for: {cardReferenceToken=card1}, {externalReferenceId=ft2}
2712 CARD_TRANSACTION_MAX_REVERSAL_AMOUNT_EXCEEDED The amount exceeds transaction maximum available amount for reversal: {max available amount for reversal}
2713 CARDS_FEATURE_DISABLED The action cannot be completed until the cards features is enabled for your Mambu tenant

2800

Response Code Description
2801 PRODUCT_MUST_BE_ACTIVE When updating an account with an inactive product
2802 TARGET_AMOUNT_IS_NEGATIVE When deposit account target amount is negative
2803 MAX_WITHDRAWAL_AMOUNT_OUTSIDE_CONSTRAINTS When maximum withdrawal amount does not match product
2804 ACCOUNT_HOLDER_KEY_INVALID The account holder key specified is not valid
2805 ACCOUNT_HOLDER_TYPE_INVALID The account holder type specified is not valid
2806 INVALID_WITHHOLDING_TAX_SOURCE_KEY The withholding tax source key is not a valid index rate of type Withholding Tax
2807 INTEREST_RATE_OUTSIDE_CONSTRAINTS The interest rate does not match product constraints
2808 INVALID_INTEREST_PAYMENT_POINT When the account has null interest payment point or different than the one from the product
2809 INVALID_INTEREST_PAYMENT_DATES When the account interest payment dates don’t match the ones from the product
2810 REQUIRED_OVERDRAFT_INTEREST_RATE When the overdraft interest spread is required due to product settings
2811 REQUIRED_OVERDRAFT_EXPIRY_DATE When the overdraft expiry date is required due to product settings
2812 REQUIRED_OVERDRAFT_LIMIT When overdraft limit is required due to product settings
2813 DEPOSIT_ACCOUNT_FIELD_NOT_EDITABLE When a field on deposit account cannot be edited
2814 DEPOSIT_PRODUCT_MISMATCH When a field on deposit account does not match the product settings
2815 ACCOUNT_TYPE_DOES_NOT_ALLOW_RECOMMENDED_DEPOSIT_AMOUNT When account type does not allow recommended deposit amount
2816 ACCOUNT_TYPE_DOES_NOT_ALLOW_MAX_WITHDRAWAL_AMOUNT When account type does not allow maximum withdrawal amount
2817 ACCOUNT_TYPE_DOES_NOT_ALLOW_TARGET_AMOUNT When account type does not allow target amount
2818 REQUIRED_INTEREST_RATE When the interest rate is required due to product settings
2819 INTEREST_RATE_SHOULD_BE_NULL When interest rate should be null
2820 OVERDRAFT_INTEREST_RATE_SHOULD_BE_NULL When overdraft interest rate should be null
2821 OVERDRAFT_INTEREST_SPREAD_SHOULD_BE_NULL When overdraft interest spread should be null
2822 INVALID_ACCOUNT_TYPE When account type is invalid
2823 INVALID_ACCOUNT_KEY When account key is invalid

3000

Response Code Description
3000 INVALID_AMORTIZATION_PROFILE Amortization profile for the fee is not valid
3001 AMORTIZATION_PROFILE_NOT_ALLOWED Amortization profile is not allowed by product settings
3002 INVALID_AMORTIZATION_FREQUENCY Amortization frequency for the fee is not valid
3003 INVALID_AMORTIZATION_FREQUENCY_CUSTOM_INTERVAL_PERIOD_COUNT Amortization frequency custom interval period count for the fee is not valid
3004 INVALID_AMORTIZATION_SETTINGS Amortization settings not valid or missing
3005 AMORTIZATION_FREQUENCY_CUSTOM_INTERVAL_TOTAL_STEPS_NOT_ALLOWED Amortization frequency custom interval total steps for the fee is not allowed
3006 AMORTIZATION_FREQUENCY_CUSTOM_INTERVAL_PERIOD_UNIT_NOT_ALLOWED Amortization frequency custom interval period unit for the fee is not valid
3007 AMORTIZATION_FREQUENCY_CUSTOM_INTERVAL_PERIOD_COUNT_NOT_ALLOWED Amortization frequency custom interval period count for the fee is not valid
3008 INVALID_AMORTIZATION_FREQUENCY_CUSTOM_INTERVAL_TOTAL_STEPS Amortization frequency custom interval total steps for the fee is not valid
3009 INVALID_AMORTIZATION_FREQUENCY_CUSTOM_INTERVAL_PERIOD_UNIT Amortization frequency custom interval period unit for the fee is not allowed
3010 AMORTIZATION_SETTINGS_NOT_ALLOWED Amortization settings not allowed (for example, for product type)
3011 INVALID_INTEREST_RATE_TERMS When interest rate terms is invalid
3012 TRANSACTION_DISBURSEMENT_DATE_DOES_NOT_MATCH_WITH_TRANCH_EXPECTED_DATE When the disbursement date provided doesn’t match with the next tranch to disburse expected disbursement date

3100 Transaction Channels

Response Code Description
3100 DUPLICATE_TRANSACTION_CHANNEL_NAME The provided name for transaction channel already exists
3101 DUPLICATE_TRANSACTION_CHANNEL_ID The provided ID for transaction channel already exists
3102 TRANSACTION_CHANNEL_ID_CONTAINS_SPACES The provided ID contains white spaces
3103 INVALID_TRANSACTION_CHANNEL_LOAN_CONSTRAINTS When trying to store a channel with invalid loan constraints
3104 INVALID_TRANSACTION_CHANNEL_SAVINGS_CONSTRAINTS When trying to store a channel with invalid deposit constraints
3105 INVALID_TRANSACTION_CHANNEL_ACCOUNT_USAGE When trying to store a channel with an account usage different than of type DETAIL
3106 CANNOT_DELETE_DEFAULT_TRANSACTION_CHANNEL The default transaction channel should not get deleted
3107 TRANSACTION_CHANNEL_IN_USE Used transaction channels should not get deleted
3108 TRANSACTION_CHANNEL_CANNOT_BE_DEACTIVATED Thrown when trying to deactivate a transaction channel that should not be deactivated

3200

Response Code Description
3202 INCONSISTENT_TRANSACTION_USER_KEY_WITH_ACCOUNT_USER When user assigned on the transaction is different than the user making the request
3203 INCONSISTENCY_BETWEEN_CHANNEL_KEY_AND_ID When the provided key of the transaction channel and the ID does not match the same transaction channel
3204 INCONSISTENT_TRANSACTION_PRODUCT_KEY_WITH_ACCOUNT_PRODUCT When the provided product key on transaction is not consistent (equal) to the product key assigned on the account

3300

Response Code Description
3300 DUPLICATE_ID When trying to store an entity and the ID is already taken by other entity
3301 DUPLICATE_NAME When trying to store an entity and the name already exists
3303 ID_CONTAINS_SPACES The ID used in store operation contains spaces and it shouldn’t
3304 INVALID_EXTERNAL_ID The external ID from transactions is invalid
3305 EXTERNAL_ID_ALREADY_EXISTS Another transaction of the same financial source already has this external ID
3311 INVALID_ASSIGNMENT_FROM_NO_MEETING_DAY When trying to assign an entity which is not assigned to a centre or is assigned to a centre without meeting day, to a centre with a meeting day in place
3312 HOLDER_HAS_ACCOUNTS_IN_DIFFERENT_BRANCH_WITH_CENTRE_OR_CREDITOFFICER_MISMATCH Account Holder has accounts in different branches for which the centre or the credit officer does not belong
3320 ACCOUNT_ALREADY_DISBURSED The available amount has been reduced to below the amount already disbursed (the available amount is negative), and further disbursements will not be possible
3321 ACCOUNT_APPROVED_AMOUNT_HAS_BEEN_EXCEEDED
3322 USER_WHO_CREATED_OR_EDITED_THE_LOAN_ACCOUNT_CANNOT_APPROVE_IT
3323 FOUR_EYES_PRINCIPLE_DISABLED_ON_GENERAL_SETTINGS

3400

Response Code Description
3400 AMORTIZATION_FREQUENCY_INTERVAL_TYPE_NOT_ALLOWED Amortization interval type not allowed
3401 AMORTIZATION_FREQUENCY_INTERVAL_COUNT_NOT_ALLOWED Amortization interval count not allowed
3402 INVALID_AMORTIZATION_FREQUENCY_INTERVAL_TYPE Amortization frequency interval type for the fee is not valid
3403 INVALID_AMORTIZATION_FREQUENCY_PREDEFINED_INTERVALS_UNIT Amortization frequency predefined intervals unit for the fee is not valid
3404 NON_POSITIVE_DEFAULT_INTEREST_RATE When the default interest rate is not positive
3405 NON_POSITIVE_MIN_INTEREST_RATE When the minimum interest rate is not positive
3406 NON_POSITIVE_MAX_INTEREST_RATE When the maximum interest rate is not positive
3407 INVALID_INTEREST_RATE_MIN_MAX_DEFAULT_TUPLE When the tuple minimum maximum default for interest rate is not valid
3408 DEFAULT_MIN_MAX_NOT_AVAILABLE When the minimum maximum default values for interest rate are not available
3409 INTEREST_RATE_TERMS_ARE_READONLY When the interest rate terms are not available
3410 INTEREST_CALCULATION_BALANCE_METHOD_READONLY Interest calculation balance method is read-only
3411 INTERNAL_TRANSFER_CANNOT_USE_CUSTOM_FIELDS Internal transfer transactions don’t have a transaction channel and thus can’t have custom fields
3412 INCONSISTENT_FEE_CALCULATION_METHOD_WITH_INCLUDE_FEE_IN_FLOOR_AMOUNT_OPTION_ENABLED When the loan product doesn’t support repayment principal amount percentage on fess with include fees in floor amount option enabled
3413 INCONSISTENT_FEE_CALCULATION_METHOD_WITH_TOTAL_BALANCE_OPTION_ENABLED When the loan product doesn’t support repayment principal amount percentage on fess with total balance percentage option
3414 INCONSISTENT_LATE_REPAYMENT_FEE_TRIGGER_WITH_TOTAL_BALANCE_OPTION_ENABLED When the loan product doesn’t support late fess with total balance percentage option
3415 INACTIVE_ACCOUNT_BRANCH Can store loan accounts only assigned to an active branch
3416 INCONSISTENT_ACCOUNT_BRANCH_ASSOCIATION_CENTRE_OR_CREDITOFFICER_MISMATCH When the other assignments on centre or credit officer become inconsistent due to branch association
3417 INVALID_ACCOUNT_BRANCH_ASSIGNMENT_DUE_CENTRE_MEETING_DAY_MISMATCH Only for fixed accounts, when a loan account’s branch which is not assigned to a centre or is assigned to a centre without meeting day is tried to be assigned to a centre with a meeting day
3418 CANNOT_CHANGE_LOAN_GROUP_BRANCH_FOR_A_SOLIDARITY_GROUP When changing the branch while creating or editing a loan group for a solidarity group
3419 CANNOT_CHANGE_LOAN_ACCOUNT_BRANCH_WHEN_RESHEDULE_REFINANCE When trying to change the branch when reschedule or refinance a loan account
3420 INVALID_FEE_APPLICATION When the loan product’s fee application is not valid
3421 INVALID_FEE_AMORTIZATION_UPON_RESCHEDULE_REFINANCE_OPTION When the loan product’s fee amortization upon reschedule/refinance option is not valid
3422 FEE_AMORTIZATION_UPON_RESCHEDULE_REFINANCE_OPTION_IS_MANDATORY When the loan product’s continue fee amortization value is mandatory for the fee
3424 NOT_ADJUSTED_TRANSACTION_LOGGED_AFTER_CURRENT_ONE When a transaction that is not adjusted is logged after the current one
3425 CANNOT_ADJUST_INTEREST_ON_DISBURSEMENT When an interest on disbursement cannot be adjusted
3426 TRANSACTION_TYPE_DOES_NOT_ALLOW_ADJUSTMENT When the type of transaction does not allow adjustment
3427 TRANSACTION_ALREADY_ADJUSTED When trying to adjust a transaction that has already been adjusted
3423 FEE_TRIGGER_NOT_ALLOWED When the fee trigger is not allowed for product setup
3428 PAYMENT_DUE_FEES_ON_DUE_DATES_TRIGGER_NOT_ALLOWED Payment due fees on due dates trigger is not allowed for current product setup
3429 EDITING_PAYMENT_DUE_FEES_APPLIED_ON_DUE_DATES_NOT_ALLOWED When editing payment due fees applied on due dates (for do not allow Payment Due Fee Applied on Due Dates reallocation at Edit Schedule)
3430 DEPOSIT_INTEREST_FEATURE_DISABLED Interest fields cannot be set when DEPOSIT_INTEREST feature is disabled

3500 Federated Authentication

Response Code Description
3500 CANNOT_CREATE_NEW_USER_IN_FEDERATED_CONTEXT When you try to create a new user, and federated authentication is enabled

3600

Response Code Description
3600 EMPTY_CUSTOM_FIELD_ID Custom field ID is empty
3610 ACCOUNT_ALREADY_CLOSED Account closed
3611 INVALID_GUARANTEE_TYPE Guarantee type is invalid
3612 ORIGINAL_ACCOUNT_NOT_FOUND No original account found that reschedules this one
3613 INVALID_ORIGINAL_ACCOUNT_STATE The original account is not in Closed Rescheduled/Refinanced state
3614 INCONSISTENT_AMORTIZATION_ACCOUNTING_SETUP The original account has a fee with amortization and cannot be Rescheduled/Refinanced into another product
3615 PAYMENT_DUE_FEES_ON_DUE_DATES_NOT_ALLOWED_AT_RESCHEDULE_REFINANCE The original loan product or new selected product has payment due fees on due dates defined and loan account cannot be Rescheduled/Refinanced
3616 TAXES_ON_PRODUCT_NOT_ALLOWED
3617 TAX_CALCULATION_METHOD_NOT_ALLOWED
3618 TAXES_NOT_EDITABLE
3620 CANNOT_APPLY_REPAYMENT_ON_ZERO_BALANCE_ACCOUNT When the account has zero balance no repayments can be applied
3621 LOCKED_BALANCE_NOT_ALLOWED When locked balance is set and should not be modified
3622 INEXISTING_TOLERANCE_CALCULATION_METHOD When arrears tolerance calculation method is not present
3623 ARREARS_TOLERANCE_DAY_OUTSIDE_CONSTRAINTS When arrears tolerance calculation method is not present
3624 INCONSISTENT_ARREARS_TOLERANCE_VALUES_WITH_ARREARS_TOLERANCE_METHOD When the arrears tolerance calculation method and the arrears tolerance parameters do not match
3629 SAVINGS_PRODUCT_DOES_NOT_ALLOW_OFFSET_LINKING A loan account cannot be linked to a deposit account that does not not allow offset linking. Check that the deposit account ID is correct or that the deposit product offers this functionality
3630 INVALID_SETTLEMENT_ACCOUNT_KEY When a settlement account key is invalid
3631 INVALID_SETTLEMENT_ACCOUNT_STATE When a deposit account state is not valid for linking
3632 INVALID_DATA_MIGRATION_EVENT_KEY When there is no data migration event available for given identifier
3633 ANOTHER_TASK_IN_PROGRESS When there is another background task in progress
3634 INVALID_DATA_IMPORT_TASK_KEY When there is no data import task available for given identifier
3640 DEPOSIT_ACCOUNT_LINKED_TO_LOAN_ACCOUNTS_ON_DIFFERENT_BRANCHES When a deposit account is linked to another loan accounts which are on different branches
3641 SAVINGS_ACCOUNT_LINKED_TO_LOAN_ACCOUNTS_ON_DIFFERENT_BRANCHES When a savings account is linked to another loan accounts which are on different branches
3642 INVALID_DEPOSIT_ACCOUNT_HOLDER The linking should be done only between account under same account holder
3643 UNLINKABLE_DEPOSIT_PRODUCT The deposit product is not accepted by the loan product for linking
3644 INEXISTING_DATE_CALCULATION_METHOD When no date calculation method was specified
3645 INEXISTING_NON_WORKING_DAYS_METHOD When no non-working days method was specified
3650 MESSAGE_SENDING_ERROR When an error occurred while trying to send the background task message to the messaging system
3651 CONNECTION_CLOSING_ERROR When an error occurred while trying to close the connection with the messaging system
3652 CONSUMER_SERVICE_STARTING_ERROR Validation error for the case when starting message consumer service and it is already started
3653 CONSUMER_SERVICE_ALREADY_STARTED When an error occurred while trying to send the background task message to the messaging system
3654 CONSUMER_UNSUBSCRIPTION_FAILED When an error occurred while trying to un-subscribe from the queue
3655 CONSUMER_SUBSCRIPTION_FAILED When an error occurred while trying to subscribe the queue
3660 INVALID_SUPPORT_ROLE_ASSOCIATION The support role cannot be assigned to an admin or teller
3661 INVALID_SUPPORT_ROLE_NAME The support role name cannot be changed
3662 INVALID_SUPPORT_ROLE_USER_RIGHTS The user rights for the support role cannot be changed
3663 INVALID_SUPPORT_ROLE_PERMISSIONS The permissions for the support role must be view only

3700

Response Code Description
3700 LOAN_ACCOUNT_FIELD_NOT_EDITABLE When a field on loan account cannot be edited
3701 INCOMPATIBLE_ARREARS_TOLERANCE_METHOD_AND_PRODUCT_TYPE When the chosen product type is incompatible with the chosen arrears tolerance method
3710 TRANSACTION_CHANNEL_NOT_ALLOWED_WHEN_DISBURSE_TO_DEPOSIT When trying to disburse a loan account to a deposit account and the transaction channel key/id is provided
3720 INVALID_TARGET_ACCOUNT_STATE_FOR_DEPOSIT When the target account state doesn’t allow deposit
3730 FEE_AMOUNT_ALREADY_DEFINED_IN_PRODUCT Fee amount cannot be specified because it is already defined on product
3732 MANDATORY_FEE_AMOUNT The provided fee’s amount is mandatory
3740 INVALID_SORTING_SELECTION When value of sorting selection is not a valid data field or custom field ID when searching on the fly
3741 BLACKLISTED_CLIENT_NOT_EDITABLE When attempting to update a blacklisted client
3742 INVALID_STRING_VALUE When attempting to update a field with unsupported characters
3743 NOTIFICATION_STATE_IS_REQUIRED Notification state is required
3744 NOTIFICATION_EVENT_MESSAGE_IS_REQUIRED Notification event message is required
3750 INSTALLMENT_NUMBER_MANDATORY_FOR_FIXED_ACCOUNTS Installment number is mandatory for fixed loan accounts
3759 CLIENT_ID_ANONYMIZATION_ERROR When there was an error while anonymizing client ID
3751 INSTALLMENT_NUMBER_NOT_ALLOWED_FOR_DYNAMIC_ACCOUNTS Installment number is not allowed for dynamic accounts
3752 INVALID_INSTALLMENT_NUMBER Installment number is outside constraints
3753 CANNOT_APPLY_FEE_ON_PAID_INSTALLMENT When attempting to apply a fee on a paid installment
3754 MANDATORY_ACCOUNT_HOLDER_TYPE The account holder type must be specified
3760 CLIENT_DOES_NOT_HAVE_EXITED_STATE When trying to anonymize a client which doesn’t have EXITED state
3761 UNSUBSCRIBE_CLIENT_FROM_NOTIFICATIONS_ERROR When there was an error while unsubscribing client from notifications (when deleting client notification requests)
3762 CLIENT_PERSONAL_INFORMATION_ANONYMIZATION_ERROR When there was an error while anonymizing client personal data
3763 CLIENT_LOAN_ACCOUNTS_ANONYMIZATION_ERROR When there was an error while anonymizing client loan accounts
3764 CLIENT_SAVINGS_ACCOUNTS_ANONYMIZATION_ERROR When there was an error while anonymizing client deposit accounts
3765 CLIENT_LINES_OF_CREDIT_ANONYMIZATION_ERROR When there was an error while anonymizing client lines of credit
3766 CLIENT_GUARANTEES_ANONYMIZATION_ERROR When there was an error while anonymizing client guarantees
3767 CLIENT_NOTIFICATION_MESSAGES_ANONYMIZATION_ERROR When there was an error while anonymizing client notification messages
3768 CLIENT_ASSOCIATED_TASKS_ANONYMIZATION_ERROR When there was an error while anonymizing client associated tasks
3780 INVALID_API_KEY When the API key found in request header is not valid
3781 API_KEY_REFRESH_ERROR When the API key found in request header is not valid
3782 FILE_NOT_FOUND When downloading a file that doesn’t exist on remote storage
3783 UPLOADED_FILE_NOT_FOUND When the uploaded file is not found
3784 MISSING_CLIENT_ROLE When during a GET Client Role call, the provided client is not associated with a Client Role
3785 BACKGROUND_PROCESS_STATE_IS_REQUIRED
3786 BACKGROUND_PROCESS_STATE_CANNOT_BE_IN_PROGRESS
3790 NOT_ALLOWED_TO_CREATE_REOPEN_ACCOUNTS_<br>WITH_RECALCULATE_SCHEDULE_KEEP_SAME_TOTAL_REPAYMENT_AMOUNT Return code for the case when an user tries to create or reopen an account with Recalculate the Schedule, Keep the Same Total Repayment Amount prepayment recalculation method
3791 NOT_ALLOWED_TO_CREATE_REOPEN_ACCOUNTS_WITH_DEPRECATED_REDUCE_NUMBER_OF_INSTALLMENTS
3792 NOT_ALLOWED_TO_REOPEN_REVOLVING_ACCOUNTS_WITHOUT_KEEP_EMPTY_INSTALLMENTS_SCHEDULE
3800 FEATURE_NOT_ENABLED
3810 AUTOMATIC_END_OF_DAY_PROCESSING
3820 ACCOUNT_NOT_ACTIVE
3821 DUPLICATE_ENTRY_FOR_CUSTOM_FIELD_VALUE
3822 ACCOUNT_ACTIVATION_FAILED
3830 INSUFFICIENT_AVAILABLE_AMOUNT_FOR_AUTHORIZATION_HOLD_ON_LOANS
3840 INVALID_MCC_EXPIRATION_ENTRY The daysToExpiration value for the default authorization hold must be positive and must not be more than 36,525
3841 MCC_ALREADY_EXISTS
3842 MCC_EXPIRATION_ENTRY_NOT_FOUND
3843 PRODUCT_DISBURSEMENT_FEES_PREVENT_CARD_ATTACHMENT
3844 INTEREST_CALCULATION_BALANCE_METHOD_NOT_ALLOWED
3900 INVALID_API_CONSUMER_USERNAME
3910 YAML_PROCESSING_FAILED
3920 CARD_TRANSACTION_REVERSAL_CANNOT_BE_ADJUSTED
3930 DUPLICATE_CUSTOM_FIELD_SELECTION_ID
3940 INVALID_CREDIT_DEBIT_INDICATOR_FOR_OPERATION
3950 ASYNC_TRANSACTION_IN_PROGRESS

4900

Response Code Description
4900 BLANK_INSTITUTION_NAME The institution name cannot be blank
4901 INSTITUTION_NAME_LENGTH The institution name must not exceed 256 characters
4902 BLANK_DECIMAL_SEPARATOR The decimal separator must not be blank
4903 INVALID_DECIMAL_SEPARATOR The value of the decimal separator must be either POINT or COMMA
4904 BLANK_DATE The local date format must not be blank
4905 INVALID_DATE_FORMAT The local date format must use the appropriate ISO 8601 characters
4906 HAS_INVALID_DATE_CHARACTER An invalid character was found in the local date format. The local date format must use the appropriate ISO 8601 characters
4907 MISSING_REQUIRED_DATE_CHARACTER The local date format must use the appropriate ISO 8601 characters
4908 BLANK_DATE_TIME The local date time format must not be blank
4909 INVALID_DATE_TIME_FORMAT The local date time format must use the appropriate ISO 8601 characters
4910 HAS_INVALID_DATE_TIME_CHARACTER An invalid character was found in the local date time format. The local date time format must use the appropriate ISO 8601 characters
4911 MISSING_REQUIRED_DATE_TIME_CHARACTER The local date time format must use the appropriate ISO 8601 characters
4950 INVALID_TERMINATION_DATE
4951 LOAN_ACCOUNT_ALREADY_FULLY_PAID
4952 TERMINATE_LOAN_ACCOUNT_FEATURE_DISABLED
4953 LATE_REPAYMENT_FEES_PRODUCT_NOT_ALLOWED
4954 LOAN_ACCOUNT_SCHEDULE_EDITING_NOT_ALLOWED
4955 AGGREGATOR_INSTALLMENT_ALREADY_HAS_CUSTOM_DUE_DATE
4956 TERMINATED_ACCOUNT_DOES_NOT_ALLOW_EDITING_AGGREGATOR_INSTALLMENT
4957 INVALID_SETUP_OF_LOAN_ACCOUNT_TO_TERMINATE
4958 LOAN_ACCOUNT_TERMINATION_AFTER_LAST_INSTALLMENT_DUE_DATE

5000

Response Code Description
5014 ROLE_ID_ALREADY_IN_USE
5015 INVALID_CHARACTERS_IN_ROLE_ID
5016 ROLE_NAME_ALREADY_IN_USE
5017 REMOVED_ADMIN_FOR_CURRENT_USER
5018 ADDED_ADMIN_FOR_CURRENT_USER
5019 REMOVED_MAMBU_ACCESS_RIGHT_FOR_CURRENT_USER
5020 MISSING_REQUIRED_BRANCH
5021 A_TELLER_CAN_SEE_ONLY_ONE_BRANCH
5022 CANNOT_REMOVE_TELLER_PROPERTY
5023 CANNOT_CHANGE_BRANCH_ASSIGNMENT
5024 CANNOT_DELETE_TELLER
5025 A_TELLER_CANNOT_BE_ADMINISTRATOR
5026 CREDIT_OFFICER_PROPERTY_REMOVED
5027 CREDIT_OFFICER_PROPERTY_REMOVED_FROM_ROLE
5028 USER_BRANCH_CHANGE
5029 USER_DEACTIVATED
5030 USER_DELETED
5031 SUPPORT_ROLE_CANNOT_BE_ASSIGNED_TO_AN_ADMINISTRATOR
5032 SUPPORT_ROLE_CANNOT_BE_ASSIGNED_TO_A_TELLER
5033 SUPPORT_ROLE_CANNOT_BE_ASSIGNED_TO_A_REGULAR_USER
5034 SUPPORT_ROLE_NAME_CANNOT_BE_CHANGED It is not possible to change the name of the Support role
5035 SUPPORT_ROLE_USER_RIGHTS_CANNOT_BE_CHANGED It is not possible to change Support role user rights
5036 SUPPORT_ROLE_PERMISSIONS_MUST_BE_VIEW_ONLY It is only possible to assign view only permissions to the Support role
5037 INVALID_ROLE_NAME The role name is a required field for a role
5038 ROLES_CONFIGURATION_EMPTY The roles configuration cannot be empty
5039 INVALID_ROLE_ID The role ID is a required field for a role
5040 ROLE_IN_USE It is not possible to delete a role that is currently assigned to a user
5041 SUPPORT_ROLE_CANNOT_BE_DELETED It is not possible to delete the Support role
5042 NULL_OR_EMPTY_ID
5043 MISSING_ROLE_NAME
5044 DELIVERY_ROLE_CANNOT_BE_DELETED
5045 DELIVERY_ROLE_NAME_CANNOT_BE_CHANGED
5046 DELIVERY_ROLE_USER_RIGHTS_CANNOT_BE_CHANGED
5047 DELIVERY_ROLE_CANNOT_BE_ASSIGNED_TO_A_REGULAR_USER
5048 DELIVERY_ROLE_CANNOT_BE_ASSIGNED_TO_AN_ADMINISTRATOR
5049 DELIVERY_ROLE_CANNOT_BE_ASSIGNED_TO_A_TELLER

6000

Response Code Description
6000 HYBRID_GROUP_NOT_AVAILABLE_FOR_DBEI_CAPITALIZED_INTEREST Loans with Declining Balance (Equal Installments) and CAPItalized Interest are not available for Hybrid (solidarity) groups, only forIndividuals and forPureGroups. Set the forHybridGroups to false
6001 HYBRID_GROUP_NOT_AVAILABLE_WHEN_REDRAW_ENABLED Loan products with a Redraw facility are not available for Hybrid (solidarity) groups. Set the forHybridGroups to false
6002 PRODUCT_LINKING_NOT_AVAILABLE_WHEN_REDRAW_ENABLED Product linking is not available when the Redraw facility has been enabled
6003 FUNDING_SOURCES_NOT_AVAILABLE_WHEN_REDRAW_ENABLED Loan accounts with a Redraw facility cannot be financed by a p2p funding source
6004 TAXES_NOT_AVAILABLE_WHEN_REDRAW_ENABLED It is not possible to apply taxes to an account with a redraw facility enabled. Set taxesOnInterestEnabled, taxesOnFeesEnabledand taxesOnPenaltyEnabled to false or remove them from your request
6005 REDRAW_AND_OFFSET_SETTINGS_ENABLED_SIMULTANEOUSLY A loan account can only have either the redraw or offset facility enabled, not both
6006 HYBRID_GROUP_NOT_AVAILABLE_FOR_OFFSET_LOAN Products with offset enabled are not available for hybrid (solidarity) groups
6007 INCONSISTENT_OFFSET_SETTINGS_WITH_PRODUCT_TYPE Offset settings are not available for the specified product type
6008 INCONSISTENT_OFFSET_SETTINGS_WITH_OFFSET_FEATURE Offset settings are not available when offset feature is disabled
6009 PRODUCT_LINKING_IS_MANDATORY_WHEN_OFFSET_ENABLED Offset settings are enabled and product linking is not defined
6010 LINKED_DEPOSIT_PRODUCT_DOES_NOT_ALLOW_OFFSET Linked deposit product doesn’t allow offset
6011 LINKED_DEPOSIT_PRODUCT_DOES_NOT_EXIST Linked deposit product doesn’t exist
6012 FUNDING_SOURCES_NOT_AVAILABLE_WHEN_OFFSET_ENABLED Funding sources are not supported when offset is enabled
6013 TAXES_NOT_AVAILABLE_WHEN_OFFSET_ENABLED Taxes are not supported when offset is enabled
6014 ACCOUNT_HAS_POSITIVE_OR_ZERO_BALANCE
6015 ACCOUNT_DOES_NOT_ALLOW_OVERDRAFT
6016 INVALID_NOTES_LENGTH
6017 WITHDRAWAL_AMOUNT_GREATER_THAN_DUE_AMOUNT This error can appear if Withdrawal Redraw Limitation has been enabled for a loan account with Redraw Balance enabled and the account holder attempts to withdraw an amount which will bring their total redraw balance to less than the amount due for the next monthly repayment
6018 FEE_AMORTIZATION_FREQUENCY_CANNOT_BE_CHANGED
6019 FEE_AMORTIZATION_PROFILE_IS_NOT_PROVIDED
6020 WITHDRAWAL_AMOUNT_GREATER_THAN_DUE_AMOUNT
6021 WITHDRAWAL_COVERING_LATE_REPAYMENTS_NOT_ALLOWED_WITHOUT_REDRAW_REPAYMENT
6022 OFFSET_NOT_ALLOWED_FOR_PRODUCT_IN_FOREIGN_CURRENCY
6030 INTEREST_RATE_CHANGED_TRANSACTION_NOT_ALLOWED_FOR_DEPOSIT_PRODUCT_SETTINGS
6031 BLOCKED_BALANCE_SHOULD_BE_ZERO_OR_NULL
6033 INTEREST_RATE_CHANGED_NOT_ALLOWED_INTEREST_APPLIANCE_TRANSACTIONS_AFTER_VALUE_DATE
6100 FORWARD_AVAILABLE_BALANCE_SHOULD_BE_ZERO_OR_NULL

7000

Response Code Description
7000 CUSTOM_FIELD_DEFAULT_SET_CANNOT_BE_MORE_THAN_ONE There cannot be more than one default custom field set
7001 CUSTOM_FIELD_DEFAULT_SET_ID_CANNOT_BE_CHANGED The ID of a default custom field set cannot be changed
7002 CUSTOM_FIELD_DEFAULT_SET_NAME_CANNOT_BE_CHANGED The name of a default custom field set cannot be changed
7003 CUSTOM_FIELD_DEFAULT_DESCRIPTION_CANNOT_BE_CHANGED The description of a default custom field set cannot be changed
7004 CUSTOM_FIELD_DEFAULT_SET_TYPE_CANNOT_BE_CHANGED The type of a default custom field set cannot be changed
7005 CUSTOM_FIELD_SET_BLANK_ID The ID for a custom field set must not be blank
7006 CUSTOM_FIELD_SET_INVALID_ID_LENGTH The ID of a custom field set must not exceed 32 characters
7007 CUSTOM_FIELD_SET_INVALID_ID_FORMAT The ID of a custom field set must contain only characters that are alpha-numeric, dash, or underscore
7008 CUSTOM_FIELD_SET_MISSING_ID_PREFIX The ID of a custom field set must begin with an underscore _ which is the custom Mambu prefix
7009 CUSTOM_FIELD_SET_DUPLICATE_ID The ID of a custom field set must be unique
7010 CUSTOM_FIELD_SET_ID_RESERVED_KEYWORD
7011 CUSTOM_FIELD_SET_BLANK_NAME The name of a custom field set must not be blank
7012 CUSTOM_FIELD_SET_NAME_LENGTH The name of a custom field set must not exceed 32 characters
7013 CUSTOM_FIELD_SET_DUPLICATE_NAME The name of a custom field set must be unique
7014 CUSTOM_FIELD_SET_TYPE_REQUIRED The type of a custom field set must not be null, it must be SINGLE or GROUPED
7015 CUSTOM_FIELD_SET_TYPE_CANNOT_BE_CHANGED The type of a custom field set cannot be changed because the custom field set has at least one custom field defined
7016 CUSTOM_FIELD_SET_AVAILABLE_FOR_REQUIRED The availableFor field is required for a custom field set
7017 CUSTOM_FIELD_SET_AVAILABLE_FOR_CANNOT_BE_CHANGED The availableFor field of a custom field set cannot be changed
7018 CUSTOM_FIELD_BLANK_ID The ID of a custom field must not be blank
7019 CUSTOM_FIELD_INVALID_ID_LENGTH The ID of a custom field must not exceed 32 characters
7020 CUSTOM_FIELD_INVALID_ID_FORMAT The ID of a custom field must contain only characters that are alpha-numeric, dash, or underscore
7021 CUSTOM_FIELD_DUPLICATE_ID The ID of a custom field must be unique
7022 CUSTOM_FIELD_BLANK_NAME The name of a custom field must not be blank
7023 CUSTOM_FIELD_NAME_LENGTH The displayName length of a custom field must not exceed 256 characters
7024 CUSTOM_FIELD_DUPLICATE_NAME The displayName of a custom field must be unique
7025 CUSTOM_FIELD_DEPENDENT_INVALID_TYPE_FOR_FIELD_WITH_DEPENDENT_FIELD A field that has a dependent field must be of type SELECTION
7026 CUSTOM_FIELD_DEPENDENT_FIELD_DOES_NOT_EXIST_IN_SET The dependent field ID must exists in the custom field set. A dependent field ID that does not exist in the custom field set was found
7027 CUSTOM_FIELD_DEPENDENT_INVALID_TYPE_FOR_THE_DEPENDENT_FIELD The dependent field defined by the dependent field ID must be of type SELECTION
7028 CUSTOM_FIELD_SELECTIONS_OPTION_CANNOT_BE_DELETED The selection option cannot be deleted because it is in use
7029 CUSTOM_FIELD_SELECTIONS_FOR_SELECTION_ID_PRESENT_BUT_NO_DEPENDENT_FIELD The forSelectionId field should only be specified when the selection custom field has a dependent field ID defined
7030 CUSTOM_FIELD_SELECTIONS_DEPENDENT_FIELD_PRESENT_BUT_FOR_SELECTION_IS_MISSING The forSelectionId field does not have an ID specified
7031 CUSTOM_FIELD_SELECTIONS_FOR_SELECTION_ID_COULD_NOT_BE_FOUND
_IN_THE_DEPENDENT_FIELD
The ID specified in the forSelectionId field of a dependent custom field could not be found in the parent custom field
7032 CUSTOM_FIELD_SELECTIONS_DUPLICATED_SELECTION_IDS The ID of a selection option of a selection custom field must be unique
7033 CUSTOM_FIELD_SELECTIONS_SELECTION_ID_SHOULD_NOT_BE_EMPTY The ID of a selection option of a selection custom field cannot be empty
7034 CUSTOM_FIELD_SELECTIONS_SELECTION_ID_CONTAINS_INVALID_CHARACTERS [THIS ERROR DOESN’T TELL YOU WHAT THE RIGHT ERRORS ARE!]
7035 CUSTOM_FIELD_SELECTIONS_INVALID_SCORE_NUMBER An invalid score number was provided. The score must be a number with a maximum 19 digits
7036 CUSTOM_FIELD_SELECTIONS_DEPENDENT_FIELD_OPTIONS_NOT_COVERED Options in the parent field are not covered in the dependent field
7037 CUSTOM_FIELD_SELECTIONS_DUPLICATE_OPTION_VALUES The value of a selection option of a selection custom field must be unique. A duplicate was found
7038 CUSTOM_FIELD_SELECTIONS_VALUE_CANNOT_BE_EMPTY The value of a selection option of a selection custom field cannot be empty
7039 CUSTOM_FIELD_SELECTIONS_CIRCULAR_DEPENDENCY
7040 CUSTOM_FIELD_SELECTION_OPTIONS_ARE_REQUIRED Selection options are required for a selection custom field
7041 CUSTOM_FIELD_ACCESS_RIGHTS_INVALID_ROLE_ID A role ID was provided in editRights or viewRights for a role that does not exist
7042 CUSTOM_FIELD_SUPPORT_ROLE_INVALID_RIGHTS The Mambu support role cannot have edit rights
7043 CUSTOM_FIELD_BLANK_ROLE_ID The role ID is required and cannot be blank. At least one role ID defined for viewRights or editRights that is blank
7044 CUSTOM_FIELD_USAGE_BLANK_ID The usage ID is required and cannot be blank. At least one usage field that has a blank or missing ID
7045 CUSTOM_FIELD_USAGE_ID_NOT_FOUND The usage ID must exist
7046 CUSTOM_FIELD_INVALID_USAGE_FOR_RECORD_TYPE If a custom field is required, it must be default as well. At least one invalid usage defined
7047 CUSTOM_FIELD_INVALID_USAGE_FOR_FIELD There is an invalid usage configuration. If a custom field is required, it must be default as well
7048 CUSTOM_FIELD_USAGE_FOR_RECORD_TYPE_NOT_ALLOWED This custom field type doesn’t support defining the usage for different record types, you must define the usage for the custom field as a whole. This is either because the availableForAll field is set to true or because the custom field type is not one of the types that allows for defining the usage per record type. The types that allow defining usage per record type are CLIENT, GROUP, LOAN_ACCOUNT, DEPOSIT_ACCOUNT DEPOSIT_PRODUCT, TRANSACTION_CHANNEL and TRANSACTION_TYPE
7049 CUSTOM_FIELD_USAGE_FOR_RECORD_TYPE_REQUIRED If a custom field is required then you must define usage settings. If you want to define the same usage settings and make the custom field available for all record types, you must set only the usage on the custom field level, via the default and required fields, and it will apply for all available records types. If you want to define different usage settings for each record type, then only the list of record types and their settings must be provided. The custom field will be available with the given settings only for the records specified in the list by ID. These settings are mutually exclusive and cannot be set at the same time
7050 CUSTOM_FIELD_SELECTION_USAGE_NOT_ALLOWED For selection custom fields that are a dependent fields, the usage is inherited from the parent field and the usage field must not be defined
7051 CUSTOM_FIELD_SELECTION_REQUIRED_NOT_ALLOWED For selection custom fields that are a dependent fields, the usage is inherited from the parent field and the required field must not be defined
7052 CUSTOM_FIELD_SELECTION_DEFAULT_NOT_ALLOWED For selection custom fields that are a dependent fields, the usage is inherited from the parent field and the default field must not be defined
7053 CUSTOM_FIELD_BLANK_TYPE The type of a custom field must not be blank
7054 CUSTOM_FIELD_TYPE_CHANGED The type of a custom field cannot be changed
7055 CUSTOM_FIELD_VALIDATION_RULES_NOT_ALLOWED Validation rules can be defined only for string custom fields
7056 CUSTOM_FIELD_VALIDATION_RULES_DUPLICATE_VALUES
7057 CUSTOM_FIELD_STATE_REQUIRED Custom field state cannot be null. It must be either ACTIVE or INACTIVE
7058 CUSTOM_FIELD_DISPLAY_SETTINGS_REQUIRED The displaySettings of a custom field are required and cannot be blank
7059 CUSTOM_FIELD_DESCRIPTION_LENGTH_EXCEEDED The description length of a custom field must not exceed 256 characters
7060 CUSTOM_FIELD_SIZE_REQUIRED The fieldSize of a custom field is required and cannot be blank
7061 CUSTOM_FIELD_SET_BUILT_IN_USAGE
7062 CUSTOM_FIELD_DUPLICATE_USAGE_ID The IDs defined in the usage of a custom field must be unique
7063 CUSTOM_FIELD_DUPLICATE_ROLE_ID Role IDs defined in the viewRights and editRights of a custom field must be unique
7064 CUSTOM_FIELD_ACCESS_RIGHTS_REQUIRED The viewRights and editRights of a custom field are required and cannot be null
7065 CUSTOM_FIELD_ACCESS_RIGHTS_ROLES_REQUIRED If allUsers is set to false then the roles for viewRights or editRights are required and cannot be null
7066 CUSTOM_FIELD_ACCESS_RIGHTS_ALL_USERS_REQUIRED The allUsers field for viewRights and editRights is required and cannot be null
7067 CUSTOM_FIELD_ACCESS_RIGHTS_ALL_USERS_FALSE_WHEN_ROLES_SPECIFIED The allUsers for viewRights or editRights should be false when some roles are specified in the roles field
7068 CUSTOM_FIELD_SELECTION_OPTIONS_NULL A selection option in a selection custom field cannot be null. At least one null entry was detected
7069 CUSTOM_FIELD_AVAILABLE_OPTIONS_NULL An available option in a selection custom field cannot be null. At least one null entry was detected
7070 CUSTOM_FIELD_NULL_USAGE A usage entry cannot be null. At least one null entry was detected
7071 CUSTOM_FIELD_SET_NULL_FIELD A custom field set cannot be null. At least one null entry was detected
7072 CUSTOM_FIELDS_CONFIGURATION_EMPTY The custom field configuration cannot be empty
7073 CUSTOM_FIELD_SET_NULL_ENTRY Custom field sets cannot have null entries. At least one null entry was detected
7074 CONFIGURATION_AS_CODE_UPDATE_IN_PROGRESS
7075 CUSTOM_FIELD_RESERVED_ID
7099 CONFIGURATION_AS_CODE_FEATURE_DISABLED
7100 PREPAYMENT_RECALCULATION_METHOD_ON_REPAYMENT_NOT_ALLOWED_FOR_LOAN_ACCOUNT Loan account does not allow to choose prepayment recalculation method at repayment time, the repayment method is generally set at the product level
7101 PREPAYMENT_RECALCULATION_METHOD_ON_REPAYMENT_NOT_SUPPORTED
7102 CONFLICT_BETWEEN_EDIT_SCHEDULE_OPERATIONS_AND_ATTEMPTED_PREPAYMENT_RECALCULATION_METHOD
7103 CONFLICT_BETWEEN_PREPAYMENT_RECALCULATION_METHOD_FROM_TRANSACTIONS_AND_NEW_SCHEDULE_EDIT
7104 EDITING_INSTALLMENTS_DUE_BEFORE_LAST_PAID_INSTALLMENT_IS_NOT_ALLOWED
7200 INVALID_INSTALLMENT_KEY
7201 INVALID_REPAYMENT_AMOUNT_FOR_SPECIFIC_INSTALLMENT
7202 SPECIFIC_INSTALLMENT_REPAYMENTS_NOT_ALLOWED_IF_GENERIC_REPAYMENTS_EXIST
7203 GENERIC_REPAYMENTS_NOT_ALLOWED_IF_SPECIFIC_INSTALLMENT_REPAYMENTS_EXIST
7204 INSTALLMENT_ALREADY_PAID
7205 PREPAYMENT_RECALCULATION_METHOD_NOT_SUPPORTED
7206 ONLY_IOI_METHOD_SUPPORTED
7207 ACCRUE_LATE_INTEREST_NOT_SUPPORTED
7208 ONLY_PARTIALLY_PAID_STATUS_SUPPORTED
7209 ONLY_NO_PENALTY_PRODUCTS_SUPPORTED
7210 ACCOUNT_IS_LOCKED
7211 ONLY_STANDARD_PAYMENTS_SUPPORTED
7212 ARBITRARY_FEES_NOT_SUPPORTED
7213 TAXES_ON_INTEREST_NOT_SUPPORTED
7214 REPAYMENT_DUE_DATE_DUPLICATED
7215 TAXES_ON_FEE_NOT_SUPPORTED
7216 CHANGING_NO_OF_POSITIVE_PRINCIPAL_INSTALLMENTS_NOT_ALLOWED
7217 INSTALLMENTS_ADJUSTMENT_DETAILS_NOT_EXPECTED When adjusting a transaction, installments adjustment details are expected only when the transaction type is either Fee Due Reduced or Penalty Due Reduced and product type is Fixed Term
7218 INSTALLMENTS_ADJUSTMENT_DETAILS_NOT_EXPECTED_BULK Installments adjustment details are not expected when adjustment affects multiple transactions
7219 INSTALLMENTS_ADJUSTMENT_DETAILS_MISSING When adjusting a transaction, installments adjustment details must be present in request body for Fixed Term loan product type and Fee / Penalty Due Reduced transaction type
7220 INSTALLMENT_KEY_NOT_FOUND When adjusting a transaction of type Fee / Penalty Due Reduced, for Fixed Term product type and the installment encoded key from input request body is invalid
7221 INSTALLMENT_KEY_DUPLICATED When adjusting a transaction of type Fee / Penalty Due Reduced, for Fixed Term product type and the installment encoded key appears multiple times in input request body
7222 INSTALLMENT_STATE_NOT_ALLOWED When adjusting a transaction of type Fee / Penalty Due Reduced, for Fixed Term product type and the installment received in the input request body is not in one of the editable states (PARTIALLY_PAID, LATE, PENDING)
7302 S3_REGION_NOT_FOUND
7400 DUPLICATE_BLOCK_ID A block fund is already specified with the ID specified on the deposit account
7401 INVALID_BLOCK_FUND_STATE When trying to execute an action over a block fund with an invalid state
7402 BLOCK_FUND_DOES_NOT_EXIST When trying to execute an action over a block fund that does not exist
7250 NOT_ALLOWED_FOR_CURRENT_ACCOUNT_TYPE
7251 NOT_ALLOWED_BEFORE_ACTIVATION_DATE
7252 NOT_ALLOWED_BEFORE_OR_DURING_PAID_INSTALLMENT
7301 GET_NOTIFICATION_MESSAGE_UPDATE_FAILURE
7500 INVALID_TRANSACTION_CHANNEL_ID
7501 INVALID_ACCOUNTING_METHOD
7502 MISSING_RULE
7503 NOT_REQUIRED_RULE
7504 HEADER_ACCOUNT_NOT_ALLOWED
7505 INVALID_GLACCOUNT_TYPE
7506 RULE_WITHOUT_GLACCOUNT
7507 INVALID_INTEREST_ACCRUED_METHOD
7508 GLACCOUNTS_ARE_NOT_IN_ORGANIZATION_OR_PRODUCT_CURRENCY
7509 INCONSISTENT_GLACCOUNTS_CURRENCY_SETUP
7510 INCONSISTENT_FEE_GLACCOUNTS_CURRENCY_SETUP
7511 INVALID_GL_ACCOUNT_CURRENCY
7512 CANNOT_EDIT_GL_ACCOUNT_CURRENCY_AS_ACCOUNT_IS_IN_USE
7513 FOREIGN_CURRENCY_IS_NOT_ALLOWED
7514 INEXISTING_GLACCOUNT
7515 GLACCOUNTS_ARE_NOT_IN_PRODUCT_CURRENCY
7550 CHANGE_ARREARS_SETTINGS_NOT_ALLOWED_FOR_PRODUCT_TOLERANCE_CALCULATION_METHOD
7600 BULK_API_REQUEST_SIZE_LIMIT_REACHED
7700 INVALID_BULK_PROCESS_KEY
7701 POSITIVE_AMOUNT_REQUIRED
7702 ID_NOT_UNIQUE
7703 ENCODED_KEY_NOT_FOUND
7800 CHANGE_MONTHLY_REPAYMENT_DAY_NOT_ALLOWED_FOR_ACCOUNTS_WITH_CUSTOM_SCHEDULE
7801 CHANGE_MONTHLY_REPAYMENT_DAY_ALLOWED_ONLY_FOR_ACCOUNTS_WITH_A_SINGLE_FIXED_DAY_OF_MONTH
7820 INVALID_INTEREST_ROUNDING_VERSION
7830 FEE_NOT_AVAILABLE_FOR_PRODUCT
7900 MAXIMUM_DEPOSIT_BALANCE_EXCEEDED
7901 MAXIMUM_DEPOSIT_BALANCE_FEATURE_DISABLED
7902 MAX_DEPOSIT_BALANCE_NOT_AVAILABLE_FOR_INVESTOR_ACCOUNTS

8000

Response Code Description
8000 INTEREST_ACCRUAL_BREAKDOWN_INTERNAL_ERROR
8001 INTEREST_ACCRUAL_BREAKDOWN_BAD_REQUEST
8500 BRANCHES_CONFIGURATION_EMPTY The branches configuration in the request body must not be empty
8501 NULL_BRANCH_ENTRY Branches must not be null. At least one null entry was detected
8502 BRANCH_NAME_LENGTH The name of the branch must not exceed 256 characters. The error will provide the ID of the branch
8503 BLANK_BRANCH_NAME The name of the branch must not be blank. The error will provide the ID of the branch
8504 BRANCH_ID_LENGTH The ID of the branch must not exceed 32 characters. The error will provide the ID of the branch
8505 BLANK_BRANCH_ID The ID of the branch must not be blank. The error will provide the index of the branch
8506 DUPLICATE_BRANCH_ID The ID of the branch must be unique. The error will provide the ID of the branch
8507 BRANCH_EMAIL_FORMAT The email of the branch is not in the correct format. A valid email address consists of an email prefix before the @ sign and an email domain after the sign. The email prefix must not exceed 64 characters. The email domain must not exceed 63 characters. The error will provide the ID of the branch
8508 BRANCH_EMAIL_LENGTH The length of the email address of the branch must not exceed 256 characters. The error will provide the ID of the branch
8509 BRANCH_PHONE_LENGTH The phone number of the branch must not exceed 256 characters. The error will provide the ID of the branch
8510 ADDRESS_FIELD_LENGTH The address field of the branch must not exceed 256 characters. The error will provide the ID of the branch
8511 BLANK_HOLIDAY_ID The ID of the holiday must not be blank. The error will provide the index of the holiday and the ID of the branch
8512 INVALID_HOLIDAY_ID The ID of the holiday must be within the range of 1 and 2,147,483,647. The error will provide the ID of the holiday and the ID of the branch
8513 DUPLICATE_HOLIDAY_ID The ID of the holiday must be unique. The error will provide the ID of the branch and the ID of the holiday
8514 BLANK_HOLIDAY_NAME The name of the holiday must not be blank. The error will provide the ID of the branch and the ID of the holiday
8515 HOLIDAY_NAME_LENGTH The name of the holiday must not exceed 256 characters. The error will provide the ID of the branch and the ID of the holiday
8516 HOLIDAY_DAY_OF_MONTH_ERROR The dayOfMonth of the holiday must not be blank and must be between 1 and 31. The error will provide the ID of the branch and the ID of the holiday
8517 HOLIDAY_MONTH_OF_YEAR_ERROR The monthOfYear of the holiday must not be blank and must be between 1 and 12. The error will provide the ID of the branch and the ID of the holiday
8518 HOLIDAY_YEAR_ERROR The year of the holiday must not be blank and must be between 1900 and 9999. The error will provide the ID of the branch and the ID of the holiday
8519 HOLIDAY_VALID_DATE_ERROR The combination of the dayOfMonth, monthOfYear, or year of the holiday is not a valid date. The error will provide the ID of the branch and the ID of the holiday
8520 CANNOT_DEACTIVATE_BRANCH The branch cannot be deactivated because it has active centres. The error will provide the ID of the branch
8700 CENTRE_CONFIGURATION_EMPTY The centre configuration in the request body must not be empty
8701 CENTRE_ID_LENGTH The ID of the centre must not exceed 32 characters. The error will provide the ID of the centre
8702 BLANK_CENTRE_ID The ID of the centre must not be blank. The error will provide the index of the centre
8703 DUPLICATE_CENTRE_ID The ID of the centre must be unique. The error will provide the ID of the centre
8704 CENTRE_NAME_LENGTH The name of the centre must not exceed 256 characters. The error will provide the ID of the centre
8705 BLANK_CENTRE_NAME The name of the centre must not be blank. The error will provide the ID of the centre
8706 INVALID_CENTRE_MEETING_DAY The meeting day of the centre cannot be a non-working day of the organization. The error will provide the ID of the centre
8707 BLANK_CENTRE_BRANCH_ID The branch ID of the centre must not be blank. The error will provide the ID of the centre
8708 BRANCH_IS_INACTIVE The assignedBranchId value of the centre must not be that of an inactive branch. The error will provide the ID of the centre
8709 BRANCH_DOES_NOT_EXIST The assignedBranchId value of the centre must be that of an existing branch. The error will provide the ID of the centre
8710 CENTRE_STATE_BLANK The state of the centre must not be blank. The error will provide the ID of the centre
8712 NULL_CENTRE_ENTRY Centres cannot be null. At least one null entry was detected

8800 — 9039 Deposit product configuration

Response Code Description
8800 DEPOSIT_PRODUCT_CONFIGURATION_EMPTY The deposit products configuration cannot be empty
8801 BLANK_DEPOSIT_PRODUCT_NAME The deposit product name cannot be null or empty
8802 BLANK_DEPOSIT_PRODUCT_ID The deposit product ID cannot be null or empty
8803 DEPOSIT_PRODUCT_ID_LENGTH The deposit product ID length must not exceed 32 characters
8804 DEPOSIT_PRODUCT_DUPLICATE_ID The deposit product ID must be unique.
8805 DEPOSIT_PRODUCT_CONFIGURATION_NULL_ENTRY Deposit products cannot be null. At least one null entry was detected
8806 DEPOSIT_PRODUCT_NAME_LENGTH The deposit product name length must not exceed 255 characters
8807 BLANK_DEPOSIT_PRODUCT_TYPE The deposit product type cannot be null or empty
8810 BLANK_DEPOSIT_PRODUCT_NEW_ACCOUNT_SETTINGS The new account settings of a deposit product cannot be null
8811 BLANK_DEPOSIT_PRODUCT_ID_PATTERN The ID pattern of a deposit product cannot be null
8812 DEPOSIT_PRODUCT_ID_PATTERN_LENGTH The deposit product ID pattern length must not exceed 32 characters
8813 DEPOSIT_PRODUCT_INVALID_ID_PATTERN_FORMAT If the idGeneratorType is INCREMENTAL_NUMBER, then the deposit product ID pattern must be a whole positive number
8814 DEPOSIT_PRODUCT_INVALID_ID_PATTERN_NUMBER If the idGeneratorType is set to INCREMENTAL_NUMBER, then the value of the idPattern must be between 0 and 2000000000
8815 BLANK_DEPOSIT_PRODUCT_ID_GENERATOR_TYPE The ID generator type cannot be null
8820 DEPOSIT_PRODUCT_AVAILABILITY_SETTINGS_BLANK The availability settings of a deposit product cannot be blank
8821 DEPOSIT_PRODUCT_BRANCH_AVAILABILITY_SETTINGS_BLANK The branch availability settings of a deposit product cannot be blank
8822 DEPOSIT_PRODUCT_AVAILABILITY_ALL_BRANCHES_BLANK The allBranches flag cannot be blank
8823 DEPOSIT_PRODUCT_AVAILABILITY_BRANCH_DOES_NOT_EXIST The branches listed in the branches array in the branchSettings of a deposit product must already exist
8824 DEPOSIT_PRODUCT_AVAILABILITY_ALL_BRANCHES_FALSE If the allBranches flag is set to false, then there should be branch IDs defined in the branches array
8825 DEPOSIT_PRODUCT_AVAILABILITY_ALL_BRANCHES_TRUE If the allBranches flag is set to true, then there should be no branch IDs defined in the branches array
8826 DEPOSIT_PRODUCT_AVAILABILITY_DUPLICATE_BRANCH The branch IDs defined in the branches array must be unique. Duplicate entries in the branches list
8827 DEPOSIT_PRODUCT_AVAILABILITY_INACTIVE_BRANCH The branches listed in the branches array must be active. The branches list contains an inactive branch
8828 DEPOSIT_PRODUCT_AVAILABILITY_FOR_INDIVIDUALS_BLANK The forIndividuals flag cannot be blank
8829 DEPOSIT_PRODUCT_AVAILABILITY_FOR_GROUPS_BLANK The forGroups flag cannot be blank
8835 DEPOSIT_PRODUCT_CURRENCY_NOT_DEFINED The currencies listed in the currencies list must be defined for your tenant
8836 BLANK_DEPOSIT_PRODUCT_CURRENCY The currency settings of a deposit product cannot be null
8837 DEPOSIT_PRODUCT_MULTIPLE_CURRENCIES_NOT_ALLOWED If you have the disableMultipleCurrenciesForDepositProducts feature enabled, then you cannot define more than one currency for a deposit product. In the currencies array under currencySettings, you must only have one currency defined
8840DEPOSIT_PRODUCT_INVALID_MATURITY_MIN_MAX When defining the maturitySettings, the minValue must not be greater than the maxValue
8841 DEPOSIT_PRODUCT_INVALID_WITHHOLDING_TAX_ENABLED If withholdingTaxEnabled is set to true, the paidIntoAccount value in the interestSettings of a deposit product must also be set to true
8842 DEPOSIT_PRODUCT_NEGATIVE_TERM_LENGTH The values for the maturity period cannot be negative
8843 DEPOSIT_PRODUCT_FIELD_NOT_EDITABLE You are trying to edit a field in the deposit product which cannot be edited because at least one deposit account already exists for this deposit product. Refer to the errorSource to determine which field cannot be changed
8850 DEPOSIT_PRODUCT_INTERNAL_CONTROL_DORMANCY_RANGE The deposit product dormancy period must be between [0,2000000000]
8851 DEPOSIT_PRODUCT_INTERNAL_CONTROL_RECOMMENDED_AMOUNT_RANGE The deposit product recommended deposit amount must be between [0,1999999973982208]
8852 DEPOSIT_PRODUCT_INTERNAL_CONTROL_MAX_WITHDRAWAL_AMOUNT_RANGE The deposit product maximum withdrawal amount must be between [0,1999999973982208]
8853 DEPOSIT_PRODUCT_INTERNAL_CONTROL_INVALID_OPENING_BALANCE The deposit product internal controls opening balance default value is not in the interval [minVal, maxVal]
8854 DEPOSIT_PRODUCT_INTERNAL_CONTROL_ALLOW_OFFSET_NOT_AVAILABLE If the type of a deposit product is set to INVESTOR_ACCOUNT, the allowOffset value must be set to false in the internalControlsSetting object
8860 DEPOSIT_PRODUCT_INTEREST_SETTINGS_NEGATIVE_FREQUENCY The deposit product interestChargeFrequencyCount cannot be negative
8861 DEPOSIT_PRODUCT_INTEREST_SETTINGS_DAYS_IN_YEAR_METHOD_NOT_ALLOWED An invalid value was provided for the daysInYear field of a deposit product
8862 DEPOSIT_PRODUCT_INTEREST_SETTINGS_EMPTY_DAYS_IN_YEAR If the paidIntoAccount in the interestSettings of a deposit product is set to true, then the deposit product interest settings daysInYear method cannot be null
8863 DEPOSIT_PRODUCT_INTEREST_SETTINGS_NEGATIVE_DEFAULT_INTEREST_RATE The default interest rate in the deposit product interest settings cannot be negative
8864 DEPOSIT_PRODUCT_INTEREST_SETTINGS_INVALID_INTEREST_RATE_MIN_MAX_DEFAULT_TUPLE The default interest rate value in the deposit product interest settings is not in the interval [minVal, maxVal]. This may also be because the minimum value is great than the maximum value
8865 DEPOSIT_PRODUCT_INTEREST_SETTINGS_NEGATIVE_MAX_INTEREST_RATE The maximum interest rate in the deposit product interest settings cannot be negative
8866 DEPOSIT_PRODUCT_INTEREST_SETTINGS_NEGATIVE_MIN_INTEREST_RATE The minimum interest rate in the deposit product interest settings cannot be negative
8867 DEPOSIT_PRODUCT_INTEREST_SETTINGS_DEFAULT_MIN_MAX_NOT_AVAILABLE Given the interest rate settings of a deposit product, it is not possible to define the default, minimum, and maximum value of the interest rate
8868 DEPOSIT_PRODUCT_INTEREST_SETTINGS_INDEX_INTEREST_RATE_NOT_AVAILABLE The interestRateSource can be set to INDEX_INTEREST_RATE, only if the interestRateTerms are set to FIXED
8869 DEPOSIT_PRODUCT_INTEREST_SETTINGS_EMPTY_INDEX_RATE_SOURCE_KEY The index rate source key in the deposit product interest settings cannot be empty
8870 DEPOSIT_PRODUCT_INTEREST_SETTINGS_MANDATORY_NEGATIVE_INTEREST_RATE The allowNegativeInterestRate must be set to true in the deposit product interest settings for index interest rates
8871 DEPOSIT_PRODUCT_INTEREST_SETTINGS_INTEREST_RATE_MANDATORY_REVIEW_UNIT The interest rate review unit in the deposit product interest settings cannot be null
8872 DEPOSIT_PRODUCT_INTEREST_SETTINGS_INTEREST_RATE_MANDATORY_REVIEW_COUNT The interest rate review count in the deposit product interest settings cannot be null
8873 DEPOSIT_PRODUCT_INTEREST_SETTINGS_INVALID_INTEREST_REVIEW_COUNT The interest rate review count in the deposit product interest settings cannot be negative
8874 DEPOSIT_PRODUCT_INTEREST_SETTINGS_INDEX_RATE_FOR_REGULAR_INTEREST_FEATURE_DISABLED
8875 DEPOSIT_PRODUCT_INTEREST_SETTINGS_READONLY_INTEREST_RATE_TERMS The deposit product interest settings interest rate terms are read-only
8876 DEPOSIT_PRODUCT_INTEREST_SETTINGS_INDEXED_INTEREST_RATE_SOURCE_DEFINED_FOR_FIXED_INTEREST_RATE_SOURCE The deposit product interest settings index source key, review count, and review unit must be null for fixed interest rate
8877 DEPOSIT_PRODUCT_INTEREST_SETTINGS_INVALID_MAXIMUM_BALANCE_VALUE The maximum balance in the deposit product interest settings cannot be negative
8878 DEPOSIT_PRODUCT_INTEREST_SETTINGS_MAXIMUM_BALANCE_NOT_AVAILABLE The deposit product interest settings maximum balance is not available for the interest calculation balance and interest rate terms combination
8879 DEPOSIT_PRODUCT_INTEREST_SETTINGS_INTEREST_CALCULATION_BALANCE_METHOD_NOT_ALLOWED The interest calculation balance method in the deposit product interest settings cannot be changed
8880 DEPOSIT_PRODUCT_INTEREST_SETTINGS_TIERED_BAND_NOT_AVAILABLE_FOR_INTEREST
8881 DEPOSIT_PRODUCT_INTEREST_SETTINGS_TIERS_NOT_AVAILABLE
8882 DEPOSIT_PRODUCT_INTEREST_SETTINGS_EMPTY_TIERS The tiers in the deposit product interest settings cannot be empty if the interestRateTerms are set to TIERED, TIERED_BAND, or TIERED_PERIOD
8883 DEPOSIT_PRODUCT_INTEREST_SETTINGS_TIER_ENDING_DAY_NOT_AVAILABLE
8884 DEPOSIT_PRODUCT_INTEREST_SETTINGS_TIER_NEGATIVE_ENDING_BALANCE The tier ending balance in the deposit product interest settings must be a positive number
8885 DEPOSIT_PRODUCT_INTEREST_SETTINGS_TIER_ENDING_BALANCE_NOT_AVAILABLE
8886 DEPOSIT_PRODUCT_INTEREST_SETTINGS_TIER_NEGATIVE_INTEREST_RATE The tier interest rate in the deposit product interest settings must be a positive number
8887 DEPOSIT_PRODUCT_INTEREST_SETTINGS_TIER_DOES_NOT_ALLOW_NEGATIVE_INTEREST_RATE
8888 DEPOSIT_PRODUCT_INTEREST_SETTINGS_TIER_NEGATIVE_ENDING_DAY The tier ending day in the deposit product interest settings must be a positive number
8889 DEPOSIT_PRODUCT_INTEREST_SETTINGS_NEGATIVE_INTEREST_RATE_NOT_ENABLED
8890 DEPOSIT_PRODUCT_INTEREST_SETTINGS_NEGATIVE_INTEREST_RATE_MAMBU_NOT_ENABLED
8891 DEPOSIT_PRODUCT_INTEREST_SETTINGS_CANNOT_DISABLE_NEGATIVE_INTEREST_RATE The deposit product interest settings negative interest rate feature cannot be disabled
8992 DEPOSIT_PRODUCT_INTEREST_SETTINGS_NEGATIVE_INTEREST_RATE_NOT_ALLOWED_FOR_INTEREST_RATE_TERM The negative interest rate in the deposit product interest settings is not allowed for the defined value in the interestRateTerms
8893 DEPOSIT_PRODUCT_INTEREST_SETTINGS_PRODUCT_TYPE_NOT_ALLOWS_NEGATIVE_INTEREST_RATE
8994 DEPOSIT_PRODUCT_INTEREST_SETTINGS_NOT_ALLOWED_WITHHOLDING_TAXES_AND_NEGATIVE_INTEREST_RATE The deposit product interest settings cannot have withholdingTaxEnabled set to true when allowNegativeInterestRate is set to true
8995 DEPOSIT_PRODUCT_INTEREST_SETTINGS_WITHHOLDING_TAX_NOT_AVAILABLE_INTEREST_TIERED_BAND If the interestRateTerms are set to TIERED_BAND, then the withholdingTaxEnabled must be false
8996 DEPOSIT_PRODUCT_INTEREST_SETTINGS_INTEREST_RATE_SETTINGS_NOT_ALLOWED If paidIntoAccount in the interest settings of a deposit product is set to false, then the interestRateSettings cannot be defined for that deposit product
8997 DEPOSIT_PRODUCT_INTEREST_SETTINGS_INVALID_DAYS_IN_YEAR_METHOD The days in year method in the deposit product interest settings is not supported for this type of account
8998 DEPOSIT_PRODUCT_INTEREST_SETTINGS_INVALID_INDEX_RATE_SOURCE_KEY The index rate source key in the deposit product interest settings must already exist
8999 DEPOSIT_PRODUCT_INTEREST_SETTINGS_ENDING_DAY_LESS_THAN_STARTING_DAY The deposit product interest rate tier ending day must be greater than the starting day of the previous tier
9000 DEPOSIT_PRODUCT_INTEREST_SETTINGS_ENDING_BALANCE_LESS_THAN_STARTING_BALANCE The deposit product interest rate tier balance must be greater than the balance of the previous tier
9001 SAVINGS_FEE_INCOMPATIBLE_INPUT The fee name is required. If the trigger of a fee is MANUAL, an applyDateMethod value must not be defined. An invalid monthly fee apply date was found in the configuration
9002 ARBITRARY_SAVINGS_FEE_NOT_ALLOWED
9003 SAVINGS_FEE_BLANK_ID The fee ID in the feeSettings cannot be blank
9004 CANNOT_DELETE_SAVINGS_FEE A fee that is used in a transaction cannot be deleted
9005 INTEREST_ACCRUED_METHOD_INVALID The account interest accrued method is not permitted. If the accountingMethod is set to CASH, then the interestAccruedAccountingMethod must be set to NONE
9006 INVALID_INTEREST_ACCRUAL_CALCULATION
9007 ACCOUNTING_RULE_WITHOUT_GLACCOUNT Every accounting rule in the accounting settings must have a GL account code defined for a GL account that exists
9008 HEADER_GL_ACCOUNT_NOT_ALLOWED
9009 DISABLED_DEPOSIT_INTEREST_FEATURE
9010 NOT_REQUIRED_ACCOUNTING_RULE An extra accounting rule was defined that is not required for the selected accounting method
9011 INVALID_RULE_GLACCOUNT_TYPE An invalid GL account type was defined for an accounting rule
9012 INVALID_GLACCOUNT_CURRENCY The GL account defined in an accounting rule is not in an organization or product allowed currency
9013 INCONSISTENT_CURRENCY_SETUP_FOR_GLACCOUNTS The GL accounts from accounting setup cannot be in multiple currencies
9014 INCONSISTENT_CURRENCY_SETUP_ON_FEE_GLACCOUNTS The GL accounts from fees accounting setup cannot be different from accounting rules setup
9015 MISSING_ACCOUNTING_RULE A required accounting rule is missing from the configuration
9016 ACCOUNTING_ACTIONS_NOT_FULLY_DEFINED
9017 ACCOUNTING_RULE_CURRENCY_NOT_DEFINED
9018 GL_RULE_CURRENCY_NOT_DEFINED The GL account defined in an accounting rule does not have a currency
9019 DEPOSIT_PRODUCT_OVERDRAFT_NEGATIVE_MAX_LIMIT The deposit product overdraft settings maximum limit cannot be negative
9020 DEPOSIT_PRODUCT_OVERDRAFT_EMPTY_MAX_LIMIT The deposit product overdraft settings maximum limit cannot be null
9021 DEPOSIT_PRODUCT_OVERDRAFT_ALLOW_TECHNICAL_OVERDRAFT_CANNOT_BE_DISABLED
9022 DEPOSIT_PRODUCT_OVERDRAFT_EMPTY_INTEREST_SETTINGS The deposit product overdraft interest rate settings cannot be null
9023 DEPOSIT_PRODUCT_OVERDRAFT_NEGATIVE_MIN_INTEREST_RATE The minimum interest rate in the deposit product overdraft settings cannot be negative
9024 DEPOSIT_PRODUCT_OVERDRAFT_NEGATIVE_MAX_INTEREST_RATE The maximum interest rate in the deposit product overdraft settings cannot be negative.
9025 DEPOSIT_PRODUCT_OVERDRAFT_INVALID_INTEREST_RATE_MIN_MAX_DEFAULT_TUPLE The deposit product overdraft settings default value is not in the interval [minVal, maxVal]
9026 DEPOSIT_PRODUCT_OVERDRAFT_EMPTY_INDEX_RATE The index source key in the deposit product overdraft settings cannot be empty
9027 DEPOSIT_PRODUCT_OVERDRAFT_EMPTY_INTEREST_REVIEW_UNIT The interest rate review unit in the deposit product overdraft settings cannot be null
9028 DEPOSIT_PRODUCT_OVERDRAFT_NEGATIVE_INTEREST_REVIEW_COUNT The interest rate review count in the deposit product overdraft settings cannot be null
9029 DEPOSIT_PRODUCT_OVERDRAFT_EMPTY_DAYS_IN_YEAR The deposit product overdraft settings days in year cannot be null
9030 DEPOSIT_PRODUCT_OVERDRAFT_INVALID_DAYS_IN_YEAR_VALUE The deposit product overdraft settings days in year method is not valid
9031 DEPOSIT_PRODUCT_OVERDRAFT_TIERED_BAND_NOT_AVAILABLE The interestRateTerms cannot be set to TIERED_BAND in the deposit product overdraft settings
9032 DEPOSIT_PRODUCT_OVERDRAFT_TIERED_PERIOD_NOT_AVAILABLE The interestRateTerms cannot be set to TIERED_PERIOD in the deposit product overdraft settings
9033 UPDATE_DEPOSIT_PRODUCTS_ERROR There was an error when updating the deposits product
9034 DEPOSIT_PRODUCT_INTEREST_RATE_SETTINGS_NOT_ALLOWED_FOR_PRODUCT_WITH_CRYPTOCURRENCIES The deposit product interest rate settings are not allowed for product with cryptocurrencies
9035 DEPOSIT_PRODUCT_OVERDRAFT_INTEREST_RATE_SETTINGS_NOT_ALLOWED_FOR_PRODUCT_WITH_CRYPTOCURRENCIES The deposit product overdraft interest rate settings are not allowed for product with cryptocurrencies
9036 DEPOSIT_PRODUCT_INTEREST_RATE_SETTINGS_NOT_ALLOWED_FOR_PRODUCT_WITH_NON_TRADITIONAL_CURRENCIES The deposit product interest rate settings are not allowed for product with non-traditional currencies
9037 DEPOSIT_PRODUCT_OVERDRAFT_INTEREST_RATE_SETTINGS_NOT_ALLOWED_FOR_PRODUCT_WITH_NON_TRADITIONAL_CURRENCIES The deposit product overdraft interest rate settings are not allowed for product with non-traditional currencies
9038 DEPOSIT_PRODUCT_OVERDRAFT_INDEX_RATE_AVAILABLE_ONLY_FOR_FIXED_TERMS The deposit product overdraft settings index interest rate is only available if the interestRateTerms are set to FIXED
9039 DEPOSIT_PRODUCT_HAS_ASSOCIATED_LOAN_PRODUCTS

9000 — 9602

Response Code Description
9001 INVALID_CUSTOM_FILTER_CONSTRAINT_OPERATOR
9002 EMPTY_CUSTOM_FILTER_CONSTRAINT_VALUE
9003 INVALID_CUSTOM_FILTER_CONSTRAINT_VALUE
9004 INVALID_CUSTOM_FILTER_CONSTRAINT_OPERATOR_USAGE
9005 EMPTY_TRANSACTION_CHANNEL_NAME
9006 EMPTY_TRANSACTION_CHANNEL_ID
9007 INVALID_CUSTOM_FILTER_CONSTRAINT_TYPE
9008 INVALID_CUSTOM_FILTER_USAGE
9009 INVALID_CUSTOM_FILTER_CRITERIA
9500 CF_SET_ID_ERROR
9501 CF_SET_INVALID_ID
9502 CF_SET_DUPLICATE_ID
9503 CF_GROUPED_SET_EMPTY_ERROR
9504 CF_GROUPED_SET_INDEX_DUPLICATE_ERROR
9505 CF_STANDARD_VALUES_DEFINED_FOR_GROUPED_SET_ERROR
9506 CF_GROUPED_VALUES_DEFINED_FOR_STANDARD_SET_ERROR
9507 CF_GROUPED_SET_CF_ID_DUPLICATE_ERROR
9508 CF_STANDARD_SET_CF_ID_DUPLICATE_ERROR
9509 CUSTOM_FIELD_ID_BLANK_ERROR
9510 CUSTOM_FIELD_ID_INVALID_ERROR
9511 CF_VALUE_CHECKBOX_TYPE_INVALID_ERROR
9512 CF_VALUE_CLIENT_LINK_TYPE_INVALID_ERROR
9513 CF_VALUE_DATE_TYPE_INVALID_ERROR
9514 CF_VALUE_GROUP_LINK_TYPE_INVALID_ERROR
9515 CF_VALUE_NUMBER_TYPE_INVALID_ERROR
9516 CF_VALUE_SELECTION_TYPE_INVALID_ERROR
9517 CF_VALUE_USER_LINK_TYPE_INVALID_ERROR
9518 CF_VALUES_EMPTY_ERROR
9519 CF_GROUPED_SET_NULL_INDEX_ERROR
9520 CF_GROUPED_SET_INDEX_UNORDERED_ERROR
9600 DUPLICATE_NON_WORKING_DAYS
9601 INVALID_GENERAL_HOLIDAY_IDENTIFIER
9602 HOLIDAY_ID_NOT_UNIQUE_INVALID_OPERATION

9700 — 9716 Client roles configuration

Response Code Description
9700 CLIENT_ROLE_EMPTY_CONFIGURATION The client roles configuration cannot be empty
9701 CLIENT_ROLE_NULL_ROLES_CONFIG The client roles configuration cannot be null, at least one null entry was detected
9702 CLIENT_ROLE_NULL_ROLES Client roles cannot be null, at least one null entry was detected
9703 CLIENT_ROLE_ID_LENGTH The client role ID must not be more than 32 characters
9704 CLIENT_ROLE_BLANK_ID The client role ID cannot be blank
9705 CLIENT_ROLE_DUPLICATE_ID The client role ID must be unique for the given account holder type
9706 CLIENT_ROLE_NAME_LENGTH The client role name must not be more than 255 characters
9707 CLIENT_ROLE_BLANK_NAME The client role name must not be blank
9708 CLIENT_ROLE_DUPLICATE_NAME The client role name must be unique for the given account holder type
9709 CLIENT_ROLE_IDENTIFICATION_DOCUMENT_ERROR Identification documents cannot be applied to groups. The requireIdentificationDocuments field must be null for groups
9710 CLIENT_ROLE_ID_TEMPLATE_LENGTH The ID template must not be more than 32 characters
9711 CLIENT_ROLE_ID_TEMPLATE_FORMAT The ID template cannot contain any special characters besides placeholders of ‘#’ for numbers, ‘@’ for letters, or ‘$’ for letters or numbers
9712 CLIENT_ROLE_DESCRIPTION_LENGTH The client role description must not be more than 256 characters
9713 CLIENT_ROLE_DEFAULT_ROLE_REQUIRED The default client role and default group role are required and cannot be deleted
9714 CLIENT_ROLE_BLANK_TYPE The type field is required for a client role and cannot be null
9715 CLIENT_ROLE_DUPLICATE_TYPES The type (either client or group) must be unique. Roles can be defined for types only once
9716 DEFAULT_ROLE_ID The default role ID cannot be changed

9750 — 9758 Internal controls configuration

Response Code Description
9750 EXPOSURE_AMOUNT_RANGE_VIOLATION The value for exposureAmount must be between 0 and 2000000000
9751 EXPOSURE_AMOUNT_REQUIRED If exposureType is not UNLIMITED, then exposureAmount is required
9752 ARREARS_DAYS_BEFORE_WRITE_OFF_RANGE_VIOLATION The value for arrearsDaysBeforeWriteOff must be between 0 and 2000000000
9753 MAX_ALLOWED_UNDO_CLOSURE_PERIOD_RANGE_VIOLATION The value for maxAllowedUndoClosurePeriod must be between 0 and 2000000000
9754 MIN_GROUP_SIZE_LIMIT_RANGE_VIOLATION The value for minGroupSizeLimit must be between 0 and 2000000000
9755 MIN_GROUP_SIZE_LIMIT_REQUIRED If groupSizeLimitType is not NONE, then minGroupSizeLimit is required
9756 MAX_GROUP_SIZE_LIMIT_RANGE_VIOLATION The value for maxGroupSizeLimit must be between 0 and 2000000000
9757 MAX_LOWER_THAN_MIN_GROUP_SIZE_LIMIT The value of the maximum group size limit must be higher than the value of the minimum group size limit
9758 MAX_GROUP_SIZE_LIMIT_REQUIRED If groupSizeLimitType is not NONE, then maxGroupSizeLimit is required

9759 — 9770 Loan risk levels configuration

Response Code Description
9759 LOAN_RISK_LEVELS_CONFIGURATION_EMPTY The loan risk levels configuration must not be empty
9760 NULL_LOAN_RISK_LEVEL_ENTRY A loan risk level cannot be null, at least one null entry was detected
9761 LOAN_RISK_LEVEL_ID_LENGTH The ID length for a loan risk level must not exceed 32 characters
9762 BLANK_LOAN_RISK_LEVEL_ID The ID for a loan risk level must not be blank
9763 DUPLICATE_LOAN_RISK_LEVEL_ID The ID for a loan risk level must be unique
9764 NON_ALPHANUMERIC_LOAN_RISK_LEVEL_ID The ID for a loan risk level can only contain letters and numbers
9765 LOAN_RISK_LEVEL_NAME_LENGTH The name length for a loan risk level must not exceed 256 characters
9766 LOAN_RISK_LEVEL_NAME_BLANK The name for a loan risk level must not be blank
9767 NEGATIVE_ARREARS_DAYS_NUMBER The value of arrearsFrom and arrearsTo cannot be negative
9768 EMPTY_ARREARS_DAYS_NUMBER The value of arrearsFrom and arrearsTo cannot be blank
9769 ARREARS_DAYS_NUMBER_SIZE The value of arrearsFrom and arrearsTo must not exceed 2000000000
9770 BLANK_PROVISIONING_PERCENT The provisioning percent of a loan risk level cannot be blank

9800 — 9806 Group role names configuration

Response Code Description
9800 GROUP_ROLE_NAMES_EMPTY_CONFIGURATION The group role name configuration cannot be empty.
9801 GROUP_ROLE_NAMES_NULL_CONFIG The group role name configuration cannot be null, at least one null entry was detected
9802 GROUP_ROLE_NAME_BLANK_ID The ID must not be blank for any group role name
9803 GROUP_ROLE_NAME_ID_LENGTH The group role name ID length must not exceed 32 characters
9804 GROUP_ROLE_NAME_DUPLICATE_ID The group role name ID must not be a duplicate. It must be unique
9805 GROUP_ROLE_NAME_BLANK_NAME The group role name must not be blank
9806 GROUP_ROLE_NAME_LENGTH The name length of the group role name must not exceed 255 characters

9900 — 9908 Labels configuration

Response Code Description
9900 OBJECT_LABELS_CONFIGURATION_EMPTY The object labels configuration cannot be empty
9901 NULL_OBJECT_LABELS_ENTITY Object labels cannot be null, at least one null entry was detected
9902 DUPLICATE_OBJECT_LABEL_PAIR Object label pairs must be unique in the configuration
9903 INVALID_NUMBER_OF_OBJECT_LABEL_PAIRS You cannot add or delete object labels
9904 NULL_OBJECT_LABELS_VALUE_ENTITY Labels cannot be null, at least one null entry was detected
9905 MISSING_LANGUAGE A language is missing from the configuration.
9906 DUPLICATE_LANGUAGE Duplicate language in the configuration. You cannot have duplicate languages
9907 EMPTY_SINGULAR_OBJECT_LABEL_VALUE The value for the singular label cannot be empty
9908 EMPTY_PLURAL_OBJECT_LABEL_VALUE The value for the plural label cannot be empty

9909 — 9922 ID templates configuration

Response Code Description
9909 ID_DOCUMENT_TEMPLATES_CONFIGURATION_EMPTY The ID document templates configuration must not be empty
9910 NULL_ID_DOCUMENT_TEMPLATE_ENTRY An ID document template cannot be null, at least one null entry was detected
9911 ID_DOCUMENT_TEMPLATE_ID_LENGTH The ID length of the ID document template must not exceed 32 characters
9912 BLANK_ID_DOCUMENT_TEMPLATE The ID of an ID document template must not be blank
9913 DUPLICATE_ID_DOCUMENT_TEMPLATE_ID The ID of an ID document template must be unique
9914 NON_ALPHANUMERIC_ID_DOCUMENT_TEMPLATE_ID The ID of an ID document can only contain letters and numbers
9915 BLANK_DOCUMENT_TYPE The document type of an ID document template must not be blank
9916 DOCUMENT_TYPE_LENGTH The document type length must not exceed 256 characters
9917 BLANK_DOCUMENT_ID_TEMPLATE The ID document template must not be blank
9918 DOCUMENT_ID_TEMPLATE_LENGTH The template length for the ID document template must not exceed 256 characters
9919 BLANK_ISSUING_AUTHORITY The issuing authority of an ID document template must not be blank
9920 ISSUING_AUTHORITY_LENGTH The issuing authority length must not exceed 256 characters
9921 BLANK_MANDATORY_FOR_CLIENT The mandatory for clients field of an ID document template must not be blank
9922 BLANK_ALLOW_ATTACHMENTS The allow attachments field of an ID document template must not be blank

9909 — 9929 Accounting rules configuration

Response Code Description
9909 ACCOUNTING_RULE_BLANK_ID The ID of an accounting rule cannot be blank
9910 ID_NOT_ALPHANUMERIC The ID of an accounting rule must contain only letters and numbers
9911 INVALID_ID_LENGTH The ID of an accounting rule must not exceed 32 characters
9912 ACCOUNTING_RULE_DUPLICATE_ID The ID of an accounting rule must be unique in the configuration. A duplicate ID was found
9913 ACCOUNTING_RULES_CONFIGURATION_EMPTY
9914 NULL_CUSTOM_ACCOUNTING_RULE_ENTRY Inter-branch transfer rule entry cannot be null
9915 DUPLICATE_RULE_FOR_CURRENCY Accounting rules must be unique. Another rule is defined for the same pair of branches
9916 BRANCHES_ARE_EQUAL An accounting rule must be defined for two different branches. The selected branches cannot be equal
9917 GLACCOUNT_NOT_SET The mandatory value for a GL account was not defined or is invalid
9918 BRANCHES_NOT_SET
9919 GLACCOUNT_DOESNT_EXIST The GL account defined for an accounting rule must exist
9920 BRANCHES_MUST_BE_SET
9921 BOTH_BRANCHES_MUST_BE_SET_OR_BOTH_BRANCHES_NOT_SET
9922 DEFAULT_RULE_ALLOWS_ONLY_GLACCOUNT_IN_ORGBASE_CURRENCY The default rule must be associated with a GL account in the organization’s base currency, irrespective of whether the Accounting in Multicurrency feature is enabled or not
9923 ONLY_FOREIGN_CURRENCY_ALLOWED_FOR_ALL_BRANCHES_
TO_ALL_BRANCHES_RULE
When the ‘Accounting in Multicurrency’ feature is enabled, all other accounting rules can have GL accounts in any currency, except the organization’s base currency. This does not apply to the default rule of the form ‘All branches — All branches’
9924 GLACCOUNT_MUST_HAVE_ORGBASE_CURRENCY
9925 NEGATIVE_AUTOMATED_ACCOUNTING_CLOSURES_INTERVAL The automated accounting closures interval can’t be a negative number
9926 AUTOMATED_ACCOUNTING_CLOSURES_INTERVAL_EXCEEDS_LIMIT
9927 DEFAULT_GLACCOUNT_DOESNT_EXIST The default GL account must exist. The selected default GL account does not exist
9928 ACCOUNTING_RULE_INVALID_BRANCH_ID The branches defined in an accounting rule must exist
9929 ACCOUNTING_RULE_EMPTY_BRANCH_ID Branch IDs defined in an accounting rule must not be empty

9940 — 9972 Currencies configuration

Response Code Description
9940 BASE_CURRENCY
9941 BASE_CURRENCY_REQUIRED The base currency is required in the configuration
9942 BASE_CURRENCY_EDITED The currency code of the base currency cannot be changed
9943 CURRENCY_CODE_REQUIRED The currency code is required
9944 CURRENCY_NAME_REQUIRED The currency name is required
9945 CURRENCY_SYMBOL_REQUIRED The currency symbol is required
9946 SYMBOL_POSITION_REQUIRED The currency symbol position is required
9947 CURRENCY_NAME_LENGTH The currency name must not exceed 256 characters
9948 CURRENCY_SYMBOL_LENGTH The currency symbol must not exceed 10 characters
9949 CURRENCY_REQUIRED If foreign currencies are included in the configuration, the currency is required
9950 FOREIGN_CURRENCY_NULL_ENTRIES A foreign currency cannot be null. At least one null entry was detected
9951 DUPLICATE_BASE_CURRENCY
9952 DUPLICATE_FOREIGN_CURRENCY Foreign currencies must be unique in the configuration. A duplicate currency code was found
9953 EXCHANGE_RATE_REQUIRED Exchange rates are required for each foreign currency
9954 BUY_EXCHANGE_RATE_REQUIRED The buy rate of an exchange rate is required
9955 SELL_EXCHANGE_RATE_REQUIRED The sell rate of an exchange rate is required
9956 ACCOUNTING_RATES_REQUIRED The accounting rates are required for foreign currencies
9957 ACCOUNTING_RATE_REQUIRED The rate is required when defining an accounting rate
9958 ACCOUNTING_RATE_CAN_NOT_BE_SET
9959 BUY_EXCHANGE_RATE_RANGE_VIOLATION The buy rate of an exchange rate must be between 0 and 2000000000000000
9960 SELL_EXCHANGE_RATE_RANGE_VIOLATION The sell rate of an exchange rate must be between 0 and 2000000000000000
9961 ACCOUNTING_RATE_RANGE_VIOLATION The accounting rate must be between 0 and 2000000000000000
9962 RATE_START_DATE_REQUIRED The start date of an accounting rate is required
9963 EXCHANGE_RATES_NULL_ENTRIES The exchange rate cannot be null. At least one null entry was detected
9964 BUY_RATE_GRATER_THAN_SELL_RATE In an exchange rate, the buy rate cannot be greater than the sell rate
9965 ACCOUNTING_RATES_NULL_ENTRIES The accounting rate cannot be null. At least one null entry was detected
9966 START_DATE_BEFORE_PREVIOUS_RATE The start date of an exchange rate or accounting rate cannot be before the previous defined rate start date
9967 EDIT_EXISTING_RATE_NOT_ALLOWED Existing accounting rates or exchange rates cannot be edited
9968 EXISTING_RATES_REMOVAL_NOT_ALLOWED Existing accounting rates or exchange rates cannot be deleted
9969 GL_JOURNAL_ENTRIES_USING_CURRENT_RATES
9970 BEFORE_CONFIGURATION_START_DATE
9971 MULTICURRENCY_FEATURE_IS_DISABLED
9972 DUPLICATE_RATE_START_DATE Duplicate start date
Response Code Description
9950 AUTHORIZATION_HOLDS_CONFIGURATION_EMPTY The authorization holds configuration must not be null
9951 NULL_AUTHORIZATION_HOLD_ENTITY An authorization hold entry cannot be null in the configuration
9952 NULL_DEFAULT_AUTHORIZATION_HOLD_ENTITY The default authorization hold must not be null in the configuration
9953 NON_EMPTY_MCC_FOR_DEFAULT_AUTHORIZATION_HOLD The default authorization hold must not have an MCC value
9954 NON_EMPTY_DESCRIPTION_FOR_DEFAULT_AUTHORIZATION_HOLD The default authorization hold must not have a description
9955 INVALID_DAYS_TO_EXPIRE_FOR_DEFAULT_AUTHORIZATION_HOLD The value for the days to expire for the default authorization hold must be a positive number
9956 EMPTY_MCC_FOR_AUTHORIZATION_HOLD The MCC value must not be empty for an authorization hold entry in the configuration
9957 INVALID_DAYS_TO_EXPIRE_FOR_AUTHORIZATION_HOLD The days to expire value for an authorization hold must be a positive number
9958 INVALID_DESCRIPTION_FOR_AUTHORIZATION_HOLD The description for an authorization hold entry must not exceed 256 characters
9959 NON_UNIQUE_MCC_FOR_AUTHORIZATION_HOLD The MCC value for an authorization hold entry must be unique

9973 — 9976

Response Code Description
9973 CUSTOM_PAYMENT_AMOUNT_DUPLICATE_PREDEFINED_FEE
9974 CUSTOM_PAYMENT_AMOUNT_TYPE_DISALLOWS_PREDEFINED_FEE
9975 CUSTOM_PAYMENT_AMOUNT_TYPE_DOES_NOT_MATCH_PREDEFINED_FEE
9976 CUSTOM_PAYMENT_AMOUNT_TYPE_SHOULD_HAVE_FEE_NAME_FIRST

10000

Response Code Description
10000 INVALID_YAML_SYNTAX
10500 INVALID_API_CONSUMER_ID
10503 API_CONSUMER_BRANCH_CHANGE
10504 API_CONSUMER_HAS_ASSIGNED_CLIENTS_OR_GROUPS
10505 CANNOT_DELETE_SUPPORT_USER_BY_REGULAR_API_CONSUMER
10506 CANNOT_DELETE_DELIVERY_USER_BY_REGULAR_API_CONSUMER
10507 CANNOT_DELETE_API_CONSUMER_WITH_PERFORMED_ACTIVITIES
10508 API_CONSUMER_ALREADY_EXISTS
10509 ONLY_MAMBU_API_CONSUMER_CAN_HAVE_A_ROLE
10510 CANNOT_UPDATE_API_CONSUMER_NAME
10511 CANNOT_UPDATE_API_CONSUMER_TYPE
10512 INVALID_API_CONSUMER_NAME_FORMAT
10513 INVALID_API_KEY_ID
10514 MISSING_API_CONSUMER_TYPE
10515 MISSING_API_CONSUMER_NAME
10516 ROLE_DOES_NOT_HAVE_APIS_ACCESS
10517 INVALID_API_CONSUMER_ROLE_KEY
10518 CANNOT_UPDATE_AUDIT_OR_STREAMING_API_CONSUMERS
10519 INVALID_PAYMENTS_PERMISSIONS
10520 PAYMENTS_API_CONSUMER_CANNOT_BE_ADMIN_OR_CREDIT_OFFICER
10521 AUDIT_TRAIL_AND_STREAMING_API_CONSUMERS_CANNOT_HAVE_ACCESS
10600 DEADLOCK_ERROR
10601 INDEX_RATES_EMPTY_CONFIGURATION The index rates configuration cannot be empty
10602 INDEX_RATE_SOURCE_NULL_ENTRY The index rates sources cannot be null; at least one null entry was detected
10603 INDEX_RATE_SOURCE_NULL_RATES The index rates cannot be null, at least one null entry was detected
10604 INDEX_RATE_SOURCE_ID_INVALID The index rate source ID was incorrect. It cannot be null, must contain alphanumeric characters, and cannot exceed 32 characters
10605 INDEX_RATE_SOURCE_ID_DUPLICATE The index rate source ID must be unique
10606 INDEX_RATE_SOURCE_NAME_EMPTY The index rate source name must not be blank
10607 INDEX_RATE_SOURCE_NAME_TOO_LONG The length of the index rate source name must not exceed 32 characters
10608 INDEX_RATE_SOURCE_NOTES_TOO_LONG The length of the index rate source notes must not exceed 255 characters
10609 INDEX_RATE_SOURCE_NAME_DUPLICATE The index rate source name must be unique
10610 INDEX_RATE_SOURCE_TYPE_INCORRECT The index rate source type must not be null
10611 INDEX_RATE_SOURCE_TYPE_IN_USE
10612 INDEX_RATE_CANNOT_BE_CHANGED
10613 INDEX_RATE_ID_INVALID The index rate ID was incorrect. It cannot be null, must contain alphanumeric characters, and cannot exceed 32 characters
10614 INDEX_RATE_ID_DUPLICATE The index rate ID must be unique
10615 INDEX_RATE_RATE_EMPTY The rate of the index rate must not be blank
10616 INDEX_RATE_RATE_RANGE_VIOLATION For rates of type TAX_RATE, the rate value must be between value 0 and 100
10617 INDEX_RATE_NOTES_TOO_LONG The index rate notes length must not exceed 255 characters
10618 INDEX_RATE_START_DATE_EMPTY The index rate start date must not be blank
10619 INDEX_RATE_START_DATE_DUPLICATE The index rate start date must be unique
10620 INDEX_RATE_START_DATE_BEFORE_REVIEWED_DATE
10650 TRANSACTION_CHANNELS_CONFIGURATION_EMPTY The transaction channels configuration cannot be empty
10651 TRANSACTION_CHANNEL_NULL_ROLES_CONFIG Transaction channels cannot be null. At least one null entry was detected
10652 DEFAULT_TRANSACTION_CHANNEL_ID
10653 BLANK_TRANSACTION_CHANNEL_ID The the transaction channel ID must not be blank
10654 TRANSACTION_CHANNEL_ID_LENGTH The transaction channel ID length must not exceed 32 characters
10655 DEFAULT_TRANSACTION_CHANNEL_CONFIG_ID The default transaction channel ID cannot be changed
10656 DEFAULT_TRANSACTION_CHANNEL_STATE The default transaction channel cannot be deactivated
10657 DEFAULT_TRANSACTION_CHANNEL_REQUIRED The default transaction channel is required and cannot be deleted
10658 TRANSACTION_CHANNEL_NAME_LENGTH The transaction channel name must not exceed 256 characters
10659 TRANSACTION_CHANNEL_BLANK_NAME The transaction channel name cannot be blank
10660 TRANSACTION_CHANNEL_DUPLICATE_NAME The transaction channel name must be unique
10661 TRANSACTION_CHANNEL_STATE_BLANK The transaction channel state must not be blank
10662 TRANSACTION_CHANNEL_GL_ACCOUNT_DOES_NOT_EXIST The GL account does not exist
10700 CONSTRAINTS_BLOCK_NULL The savings constraint and the loan constraints cannot be null
10701 CONSTRAINT_ENTRY_NULL A null constraint entry was detected. Constraints must not be null
10702 CONSTRAINT_USAGE_NULL The constraint usage cannot be null
10703 INVALID_UNCONSTRAINED_USAGE The unconstrained usage must not have constraints defined
10704 INVALID_LIMITED_USAGE The limited usage must have at least one constraint defined
10705 CONSTRAINT_MATCH_FILTER_INVALID A match filter cannot be specified for unconstrained usage
10706 CONSTRAINT_MATCH_FILTER_NULL A match filter must be specified for limited usage
10707 AMOUNT_CONSTRAINT_INVALID_FILTER The available operators for the IN filter element are EQUALS, EMPTY, NOT_EMPTY, BETWEEN, MORE_THAN, and LESS_THAN
10708 TRANSACTION_CONSTRAINT_INVALID_FILTER The available operators for the TYPE criterion are EMPTY, NOT_EMPTY, and IN
10709 PRODUCT_CONSTRAINT_INVALID_FILTER The available operators for the PRODUCT criterion are EMPTY, NOT_EMPTY, and IN
10710 BETWEEN_FILTER_INVALID_VALUES The BETWEEN filter must have two numeric values
10711 EXISTENCE_FILTER_INVALID_VALUES The EMPTY or NOT_EMPTY filters must not have values defined
10712 COMPARATOR_FILTER_INVALID_VALUES The EQUALS, MORE_THAN,and LESS_THAN filters must have one numeric value defined
10713 IN_FILTER_INVALID_VALUES The IN filter must have at least one value defined
10714 LOANS_IN_FILTER_INVALID_ID The IDs provided for the loan constraint PRODUCT criterion must exist
10715 SAVINGS_IN_FILTER_INVALID_ID The IDs provided for the savings constraint PRODUCT criterion must exist
10716 LOANS_IN_FILTER_INVALID_TYPE_VALUE The allowed values for the TYPE criterion are DISBURSEMENT and REPAYMENT
10717 SAVINGS_IN_FILTER_INVALID_TYPE_VALUE The allowed values for the TYPE criterion are DEPOSIT and WITHDRAWAL
10800 ACCESS_RIGHTS_BLANK The transaction channel access rights cannot be blank
10801 ACCESS_RIGHTS_ALL_USERS_BLANK The allUsers field of a transaction channel must not be null
10802 ACCESS_RIGHTS_ALL_USERS_FALSE If allUsers is set to false in the usage rights of a transaction channel, then you must specify role IDs in the roles array
10803 ACCESS_RIGHTS_BLANK_ROLE_ID Roles defined in the access rights of a transaction channel cannot be blank. One or more blank entries was detected
10804 ACCESS_RIGHTS_DUPLICATE_ROLE_ID Roles defined in the access rights of a transaction channel must be unique. One or more duplicate IDs was detected
10805 ACCESS_RIGHTS_INVALID_ROLE_ID The roles IDs defined in the access rights of a transaction channel must correspond to existing roles
10810 END_OF_DAY_PROCESSING_NULL_PROCESSING_METHOD The end of day processing method cannot be null
10811 END_OF_DAY_PROCESSING_INVALID_FORMAT The accounting cut-off time must be in the HH:mm:ss format

20000

Response Code Description
26223 INVALID_CUSTOM_REQUEST_HEADERS

Mambu Payment Gateway

Please be Aware

As the Mambu Payment Gateway is under active development new errors may be added or error codes changed at short notice.

When using the Mambu Payment Gateway you may receive further, general errors. These include SERVICE_INVALID or PARAMETER_NOT_SUPPORTED. If you receive these errors, the text parameter should include additional information to help debug the error such as pointing out the parameter which contains an unsupported value, indicating that a required field has not been provided, or, where mutually exclusive fields have been provided in a message body. In these cases, there may be no specific error number but the text parameter will provide guidance on how to correct the error.

Response Code Description
CREDIT_TRANSFER_REJECTED (-1) Payment order failed due to an incoming pacs.002 Reject message
CREDIT_TRANSFER_RETURNED (-1) Payment order failed due to an incoming pacs.004 Return message
CREDIT_TRANSFER_RECALLED (-1) Payment order failed due to it being recalled through a camt.056 message
CREDIT_TRANSFER_FAILED (-1) Payment order failed due to an internal error
DIRECT_DEBIT_REVERSED (-1) Collection failed due to an incoming pacs.007 Reversal message
DIRECT_DEBIT_REFUNDED (-1) Collection failed due to an incoming pacs.004 Refund message
DIRECT_DEBIT_RETURNED (-1) Collection failed due to an incoming pacs.004 Return message
CREDIT_TRANSFER_REJECT_FAILED (-1) Storno transaction failed when attempting to reverse a payment which was rejected through an incoming pacs.002 message
CREDIT_TRANSFER_RETURN_FAILED (-1) Storno transaction failed when attempting to reverse a payment which was returned through an incoming pacs.004 message
CREDIT_TRANSFER_RECALL_FAILED (-1) Storno transaction failed when attempting to reverse a payment which was recalled through an incoming camt.056 message
DIRECT_DEBIT_REVERSE_FAILED (-1) Storno transaction failed when attempting to reverse a collection which was reversed through an incoming pacs.007 message
DIRECT_DEBIT_REFUND_FAILED (-1) Storno transaction failed when attempting to reverse a collection which was refunded through an incoming pacs.004 message
DIRECT_DEBIT_RETURN_FAILED (-1) Storno transaction failed when attempting to reverse a collection which was returned through an incoming pacs.004 message
PAYMENT_BLOCKED (-1) Collection failed due to it being blocked by Debtor
SUSPENDED_CREDIT_TRANSFER_REJECT_COMPLETED (-1) A previously suspended Payment order failed due to an AML Rejected response
SUSPENDED_CREDIT_TRANSFER_REJECT_FAILED (-1) Storno transaction failed when attempting to reverse an originally suspended payment which was AML Rejected
401 BALANCE_BELOW_ZERO The Payment would result in a Balance below zero for the specified Deposit Account
407 INVALID_DEPOSIT_ACCOUNT_STATE The Deposit account is not in a valid state for initiating payments. It should be either Approved or Active
408 LOCKED_SAVINGS_AMOUNT The amount cannot be decreased below the locked amount by withdraw or transfer
417 MAXIMUM_WITHDRAWAL_AMOUNT_EXCEEDED The withdrawal value is grater than the maximum withdrawal constraint defined in the savings product or at savings account level
418 MAXIMUM_OVERDRAFT_LIMIT_EXCEEDED The overdraft value is greater than the maximum overdraft limit constraint defined in the savings product
499 UNKNOWN_SAVINGS_ACCOUNT_ERROR Mambu Core Banking System responded with unknown error

30000 Mambu Functions

Response Code Description
30000 MFUNCTION_ALREADY_EXISTS A Mambu Function with the same name has already been deployed to that Mambu environment. You must rename your Mambu Function
30001 MFUNCTION_SERVICE_NOT_READY An internal operation error failure. Check the status page to see if the API is currently down
30002 MFUNCTION_INTERNAL_ERROR An internal operation error failure. Check the status page to see if the API is currently down
30003 MFUNCTION_OPERATION_IN_PROGRESS Another operation is in progress on the same Function. You may try again later
30004 MFUNCTION_MAX_FUNCTION_COUNT_LIMIT_REACHED You have reached the limit of the number of Mambu Functions that can be deployed to this environment
30005 MFUNCTION_INTERNAL_LIMIT_REACHED An internal operation error failure. Check the status page to see if the API is currently down
30006 MFUNCTION_UNSUPPORTED_EXTENSION_POINT This extension point is currently unsupported. For more information, see the list of available extension points
30007 MFUNCTION_MAPPED_FUNCTION_CANNOT_BE_DELETED The Mambu Function cannot be deleted as it is still bound to a Mambu product. To delete the Function first unbind it from the Mambu product

HTTP status codes

Mambu uses standard HTTP status codes. The more frequent ones are described below:

Response Code Description
200 OK / 201 Created The request was successful
400 Bad Request The request was invalid or could not be understood by the server (wrong syntax). Resubmitting the request will likely result in the same error
401 Unauthorized The username and password credentials are missing or invalid for the given request
402 Payment Required Your Mambu account is not in good standing. Please pay any outstanding invoices
403 Forbidden Either the user is attempting to perform an action they do not have the rights to perform or the login credentials are not correct. You may also receive this error if you have enabled IP Access Restrictions and are trying to access Mambu from a non-whitelisetd IP address. You may also get this response code if your account is locked, which can happen after failed attempts to log in to the UI. See Access Preferences — Lock User After Failed Logins for more information
404 Not Found The resource was not found. This may be returned if the given loan account, deposit account. client or group does not exist. The response body will explain which resource was not found
422 Unprocessable Entity You may receive this response if you have made too many bad API requests in a short space of time. Bad requests can include incorrect password for the supplied username or posting a malformed JSON body, where subsequent requests with the same body will produce this error
500 Internal Server Error The server encountered an error while processing your request and failed
502 Gateway Error The load balancer or web server has trouble connecting to the Mambu app. Try the request again
503 Service Unavailable The service is temporarily unavailable. Try the request again. Possible reason for this could be too many invalid authentication attempts in a row

Понравилась статья? Поделить с друзьями:
  • Api код ошибки 400
  • Apk ошибка при установке bluestacks
  • Apex ошибка engine error иероглифы
  • Api ms win crt convert ошибка
  • Apoint exe ошибка