Account API

Access account balances and transaction history of Belfius customers in total security.

Introduction

AISP

These APIs provide the possibility for a TPP to access the account information and transaction history of a Belfius Customer, provided TPP has received the required token(s) generated as a result of consent process.

Produces
  • application/json

Hosts

You can use the production host when you want to go live:

https://psd2.b2b.belfius.be:8443

Click the button below to download the open API specification.

Download

Example screen

Navigate to an endpoint to see sample code


Get authorized account details along with balances.

Returns the account-details and associated set of balances for a given PSU account that is specified by the AISP through an encrypted logical-id of account.


Parameters

Response

{
  "type": "current-account",
  "iban": "BE80350454678790",
  "currency": "EUR",
  "balance": 123.12,
  "multicurrency": true,
  "other_compartments": [
    {
      "currency": "USD",
      "balance": -100
    },
    {
      "currency": "RUB",
      "balance": 23000
    }
  ],
  "_links": {
    "self": {
      "href": "/accounts/{logical-id}"
    },
    "transactions": {
      "href": "/accounts/{logical-id}/transactions"
    }
  }
}
Headers
  • Response-ID: Same as Request-ID passed in the request.
Possible responses
ScenarioResponse
Request received without a mandatory parameter
 {
 "error": "missing_input",
 "error_code": "10001",
 "error_description": "Missing required input 'INPUT'. DETAILS OF WHAT IS WRONG." 
}
Request received with bad parameters (invalid format) values
 {
 "error": "invalid_input",
 "error_code": "10002",
 "error_description": "Input 'INPUT' is not valid. DETAILS OF WHAT IS WRONG." 
}

  • Fixed-form error tokens mapping to specific errors.

    error (string)

  • Error specific code, could be used directly by consumer's software.

    error_code (string)

  • Full description of the error.

    error_description (string)

Headers
  • Response-ID: Same as Request-ID passed in the request.
Possible responses
ScenarioResponse
Request received with invalid values for Oauth2 Security related parametes
 {
 "error": "failed_security_validation", 
 "error_code": "10003", 
 "error_description": "Validation failed for security related parameters. DETAILS OF WHAT IS WRONG." 
}
Request received with invalid access_token
 {
 "error": "invalid_access_token",
 "error_code": "10006",
 "error_description": "access_token not valid in this scope." 
}

  • Fixed-form error tokens mapping to specific errors.

    error (string)

  • Error specific code, could be used directly by consumer's software.

    error_code (string)

  • Full description of the error.

    error_description (string)

Headers
  • Response-ID: Same as Request-ID passed in the request.
Possible responses
ScenarioResponse
Request received with a Client-ID(TPPID) which is not active
 {
 "error": "blocked_tpp",
 "error_code": "20001",
 "error_description": "No Active TPP found." 
}
Request received with non-belfius account
 {
 "error": "invalid_account",
 "error_code": "20002",
 "error_description": "No Account found." 
}
Request received with account 'not consultable with electronic channel'
 {
 "error": "channel_not_permitted", 
 "error_code": "20003", 
 "error_description": "This account can not be consultated via electronical channel." }
Request received with account 'not allowed for PSD2'
 {
 "error": "account_not_supported",
 "error_code": "20004",
 "error_description": "This account is not allowed for this type of request." 
}
Request received with the consent which has been deactivated by the user/system
 {
 "error": "no_active_consent",
 "error_code": "20005", 
 "error_description": "User/System has deactivated the consent. Tpp has to start over with /consent-uris ." 
}
Request received with account for which access has been disabled by provider'
 {
 "error": "access_denied",
 "error_code": "20006",
 "error_description": " Access is not ok for this account. Please contact customer support." 
}

  • Fixed-form error tokens mapping to specific errors.

    error (string)

  • Error specific code, could be used directly by consumer's software.

    error_code (string)

  • Full description of the error.

    error_description (string)

Headers
  • Response-ID: Same as Request-ID passed in the request.
Possible responses
ScenarioResponse
Request received with invalid version in Accept header
 {
 "error": "resource_not_found",
 "error_code": "10004",
 "error_description": " Specific version not found.  Supported versions are [X,..]." 
}
Request received with invalid logicalId
 {
 "error": "resource_not_found",
 "error_code": "10007",
 "error_description": " No account found with given logicalId." 
}
Request received with unsupported HTTP verb
 {
 "error": "resource_not_found",
 "error_code": "10102",
 "error_description": " Requested resource was not found." 
}

  • Fixed-form error tokens mapping to specific errors.

    error (string)

  • Error specific code, could be used directly by consumer's software.

    error_code (string)

  • Full description of the error.

    error_description (string)

Headers
  • Response-ID: Same as Request-ID passed in the request.
Possible responses
ScenarioResponse
Request received with restricted HTTP verbs
 {
 "error": "method_not_allowed",
 "error_code": "10103",
 "error_description": " Requested HTTP method is not allowed for this api." 
}

  • Fixed-form error tokens mapping to specific errors.

    error (string)

  • Error specific code, could be used directly by consumer's software.

    error_code (string)

  • Full description of the error.

    error_description (string)

Headers
  • Response-ID: Same as Request-ID passed in the request.
Possible responses
ScenarioResponse
Request received with invalid type in Accept header
 {
 "error": "unacceptable_media_type",
 "error_code": "10005",
 "error_description": " Server can not return the response In the format mentioned in the request. Supported type is application/vnd.belfius.api+json;." 
}

  • Fixed-form error tokens mapping to specific errors.

    error (string)

  • Error specific code, could be used directly by consumer's software.

    error_code (string)

  • Full description of the error.

    error_description (string)

Headers
  • Response-ID: Same as Request-ID passed in the request.
Possible responses
ScenarioResponse
Client request exceed the configured Quota limit for the associated Account Plan
 {
 "error": "quota_limit_exceeded",
 "error_code": "10105",
 "error_description": " Quota limit exceed." 
}
Client request exceed the configured Quota limit for the associated API Plan
 {
 "error": "quota_limit_exceeded",
 "error_code": "10106",
 "error_description": " Quota limit exceed." 
}
Client request exceeded the configured rate limit
 {
 "error": "rate_limit_exceeded",
 "error_code": "10107",
 "error_description": " Rate limit exceed." 
}

  • Fixed-form error tokens mapping to specific errors.

    error (string)

  • Error specific code, could be used directly by consumer's software.

    error_code (string)

  • Full description of the error.

    error_description (string)

Possible responses
ScenarioResponse
SSL certificate error
 {
 "error": "ssl_validation_error",
 "error_code": "10020",
 "error_description": "error during client authentication." 
}

  • Fixed-form error tokens mapping to specific errors.

    error (string)

  • Error specific code, could be used directly by consumer's software.

    error_code (string)

  • Full description of the error.

    error_description (string)

Headers
  • Response-ID: Same as Request-ID passed in the request.
Possible responses
ScenarioResponse
Internal server error
 {
 "error": "internal_server_error",
 "error_code": "20020",
 "error_description": " Internal error occurred." 
}

  • Fixed-form error tokens mapping to specific errors.

    error (string)

  • Error specific code, could be used directly by consumer's software.

    error_code (string)

  • Full description of the error.

    error_description (string)

Headers
  • Response-ID: Same as Request-ID passed in the request.
Possible responses
ScenarioResponse
Client request falls in the configured 'restrict time period' frame
 {
 "error": "service_unavailable",
 "error_code": "10108",
 "error_description": " Service unavailable, please try after some time." 
}
Client request falls in the configured 'restrict day period' frame
 {
 "error": "service_unavailable",
 "error_code": "10109",
 "error_description": " Service unavailable, please try in 24 hours." 
}

  • Fixed-form error tokens mapping to specific errors.

    error (string)

  • Error specific code, could be used directly by consumer's software.

    error_code (string)

  • Full description of the error.

    error_description (string)

Get /accounts/{logical-id}

Request example

There is no example request provided

Response example

{
  "type": "current-account",
  "iban": "BE80350454678790",
  "currency": "EUR",
  "balance": 123.12,
  "multicurrency": true,
  "other_compartments": [
    {
      "currency": "USD",
      "balance": -100
    },
    {
      "currency": "RUB",
      "balance": 23000
    }
  ],
  "_links": {
    "self": {
      "href": "/accounts/{logical-id}"
    },
    "transactions": {
      "href": "/accounts/{logical-id}/transactions"
    }
  }
}
{
 "error": "missing_input",
 "error_code": "10001",
 "error_description": "Missing required input 'INPUT'. DETAILS OF WHAT IS WRONG." 
}
{
 "error": "invalid_input",
 "error_code": "10002",
 "error_description": "Input 'INPUT' is not valid. DETAILS OF WHAT IS WRONG." 
}
{
 "error": "failed_security_validation", 
 "error_code": "10003", 
 "error_description": "Validation failed for security related parameters. DETAILS OF WHAT IS WRONG." 
}
{
 "error": "invalid_access_token",
 "error_code": "10006",
 "error_description": "access_token not valid in this scope." 
}
{
 "error": "blocked_tpp",
 "error_code": "20001",
 "error_description": "No Active TPP found." 
}
{
 "error": "invalid_account",
 "error_code": "20002",
 "error_description": "No Account found." 
}
{
 "error": "channel_not_permitted", 
 "error_code": "20003", 
 "error_description": "This account can not be consultated via electronical channel." }
{
 "error": "account_not_supported",
 "error_code": "20004",
 "error_description": "This account is not allowed for this type of request." 
}
{
 "error": "no_active_consent",
 "error_code": "20005", 
 "error_description": "User/System has deactivated the consent. Tpp has to start over with /consent-uris ." 
}
{
 "error": "access_denied",
 "error_code": "20006",
 "error_description": " Access is not ok for this account. Please contact customer support." 
}
{
 "error": "resource_not_found",
 "error_code": "10004",
 "error_description": " Specific version not found.  Supported versions are [X,..]." 
}
{
 "error": "resource_not_found",
 "error_code": "10007",
 "error_description": " No account found with given logicalId." 
}
{
 "error": "resource_not_found",
 "error_code": "10102",
 "error_description": " Requested resource was not found." 
}
{
 "error": "method_not_allowed",
 "error_code": "10103",
 "error_description": " Requested HTTP method is not allowed for this api." 
}
{
 "error": "unacceptable_media_type",
 "error_code": "10005",
 "error_description": " Server can not return the response In the format mentioned in the request. Supported type is application/vnd.belfius.api+json;." 
}
{
 "error": "quota_limit_exceeded",
 "error_code": "10105",
 "error_description": " Quota limit exceed." 
}
{
 "error": "quota_limit_exceeded",
 "error_code": "10106",
 "error_description": " Quota limit exceed." 
}
{
 "error": "rate_limit_exceeded",
 "error_code": "10107",
 "error_description": " Rate limit exceed." 
}
{
 "error": "ssl_validation_error",
 "error_code": "10020",
 "error_description": "error during client authentication." 
}
{
 "error": "internal_server_error",
 "error_code": "20020",
 "error_description": " Internal error occurred." 
}
{
 "error": "service_unavailable",
 "error_code": "10108",
 "error_description": " Service unavailable, please try after some time." 
}
{
 "error": "service_unavailable",
 "error_code": "10109",
 "error_description": " Service unavailable, please try in 24 hours." 
}

Get transactions for an authorized account.

Returns transactions for an account for a given PSU account that is specified by the AISP through an encrypted logical-id for account. The request may use some filter parameter in order to restrict the query - on a given imputation date range The result may be subject to pagination (i.e. retrieving a partial result in case of having too much results) through a set of pages by the ASPSP. Thereafter, the AISP may ask for the next page of results.


Parameters

date_from Query optional string

Inclusive minimal imputation date of the transactions in ISO_8601 UTC date format [YYYY-MM-DD]. Transactions having an imputation date equal to this parameter are included within the result.

date_to Query optional string

Exclusive maximal imputation date of the transactions in ISO_8601 UTC date format [YYYY-MM-DD]. Transactions having an imputation date equal to this parameter are not included within the result.

psu_involved Query optional boolean

If present (& with value true), it is indicating that a PSU has directly asked this account access in real-time. The PSU then might be involved in an additional consent process, if the given consent is not any more sufficient.

pagesize Query optional integer

Caller can provide the pagesize which is records per call.

next Query optional string

Populate with next_page_key present in the reply from API-GW if present.

currency Query optional string

ISO 4217 3-letter alphabatic Currency-codes.

logical-id Path required string

Encrypted Logical ID of the account which is mapped to IBAN.

Authorization Header required string

Access token to be passed as a header.Scope of this access-token is limited to a given type [e.g. AIS] and given IBAN. Token itself should be passed as bearer token in Authorization header like:"Bearer 987tghjkiu6trfghjuytrghj".

Request-ID Header required string

Request id to be passed as custom header. It will be used as sort of correlation id for logging and tracting purposes.

Accept Header required string

It must be of type application/json including version number.[Accept:application/vnd.belfius.api+json; version=1].

Accept-Language Header required string

Accept-Language header field sent by the Client terminal. It can include language in ISO 639-1 format [example-:fr]. If no Accept-Language header is present or if it is present with a language which is not at all known to server, HTTP 406[Not Accepted] will be returned.

Client-ID Header required string

Client ID of registered TPP.

Redirect-URI Header required string

Redirect-URI of the client.

Response

{
  "_embedded": {
    "transactions": [
      {
        "transaction_ref": "081721I000088",
        "amount": 123.12,
        "currency": "EUR",
        "execution_date": "2017-02-01",
        "counterparty_account": "BE80350454678790",
        "counterparty_info": "TEST ACCOUNT",
        "communication": "COMMUNICATION DETAILS",
        "communication_type": "FREETEXT"
      }
    ],
    "next_page_key": "783j23kj2hkj2h42u492424nh24924k2"
  },
  "_links": {
    "self": {
      "href": "/accounts/{logical-id}/transactions"
    },
    "account": {
      "href": "/accounts/{logical-id}"
    }
  }
}
Headers
  • Response-ID: Same as Request-ID passed in the request.
Possible responses
ScenarioResponse
Request received without a mandatory parameter
 {
 "error": "missing_input",
 "error_code": "10001",
 "error_description": "Missing required input 'INPUT'. DETAILS OF WHAT IS WRONG." 
}
Request received with bad parameters (invalid format) values
 {
 "error": "invalid_input",
 "error_code": "10002",
 "error_description": "Input 'INPUT' is not valid. DETAILS OF WHAT IS WRONG." 
}

  • Fixed-form error tokens mapping to specific errors.

    error (string)

  • Error specific code, could be used directly by consumer's software.

    error_code (string)

  • Full description of the error.

    error_description (string)

Headers
  • Response-ID: Same as Request-ID passed in the request.
Possible responses
ScenarioResponse
Request received with invalid values for Oauth2 Security related parametes
 {
 "error": "failed_security_validation",
 "error_code": "10003",
 "error_description": "Validation failed for security related parameters. DETAILS OF WHAT IS WRONG." 
}
Request received with invalid access_token
 {
 "error": "invalid_access_token",
 "error_code": "10006",
 "error_description": "access_token not valid in this scope." 
}
Request received when associated consent has been expired.
 {
 "error": "consent_expired",
 "error_code": "20008",
 "error_description": "Consent is expired. Client must call the url present in this response, associating a required state in the url, in order to renew the consent. In case the state query parameter has not been appended, client will receive an error/error-description (0100/0STATE) for missing state parameter." ,
 "url": "https://www.belfius.be/common/fr/fw/generic/launcher.html?appkey=PSD2_RENEWAL&apptoken=rdger6e5325drte5635trwe45rew5wr345we5 " 
}

()

Headers
  • Response-ID: Same as Request-ID passed in the request.
Possible responses
ScenarioResponse
Request received with a Client-ID(TPPID) which is not active
 {
 "error": "blocked_tpp",
 "error_code": "20001",
 "error_description": "No Active TPP found." 
}
Request received with non-belfius account
 {
 "error": "invalid_account",
 "error_code": "20002", 
 "error_description": "No Account found." 
}
Request received with account 'not consultable with electronic channel'
 {
 "error": "channel_not_permitted",
 "error_code": "20003",
 "error_description": "This account can not be consultated via electronical channel." }
Request received with account 'not allowed for PSD2'
 {
 "error": "account_not_supported",
 "error_code": "20004",
 "error_description": "This account is not allowed for this type of request." 
}
Request received with the consent which has been deactivated by the user/system
 {
 "error": "no_active_consent",
 "error_code": "20005",
 "error_description": "User/System has deactivated the consent. Tpp has to start over with /consent-uris ." 
}
Request received with account for which access has been disabled by provider'
 {
 "error": "access_denied",
 "error_code": "20006",
 "error_description": " Access is not ok for this account. Please contact customer support." 
}
Request received with date_from >90 days
 {
 "error": "date_from_is_too_old",
 "error_code": "20007", 
 "error_description": "Transaction history older than 90 days is not possible." 
}

  • Fixed-form error tokens mapping to specific errors.

    error (string)

  • Error specific code, could be used directly by consumer's software.

    error_code (string)

  • Full description of the error.

    error_description (string)

Headers
  • Response-ID: Same as Request-ID passed in the request.
Possible responses
ScenarioResponse
Request received with invalid version in Accept header
 {
 "error": "resource_not_found",
 "error_code": "10004",
 "error_description": " Specific version not found.  Supported versions are [X,..]." 
}
Request received with invalid logicalId
 {
 "error": "resource_not_found",
 "error_code": "10007", 
 "error_description": " No account found with given logicalId." 
}
Request received with unsupported HTTP verb
 {
 "error": "resource_not_found",
 "error_code": "10102",
 "error_description": " Requested resource was not found." 
}

  • Fixed-form error tokens mapping to specific errors.

    error (string)

  • Error specific code, could be used directly by consumer's software.

    error_code (string)

  • Full description of the error.

    error_description (string)

Headers
  • Response-ID: Same as Request-ID passed in the request.
Possible responses
ScenarioResponse
Request received with restricted HTTP verbs
 {
 "error": "method_not_allowed",
 "error_code": "10103", 
 "error_description": " Requested HTTP method is not allowed for this api." 
}

  • Fixed-form error tokens mapping to specific errors.

    error (string)

  • Error specific code, could be used directly by consumer's software.

    error_code (string)

  • Full description of the error.

    error_description (string)

Headers
  • Response-ID: Same as Request-ID passed in the request.
Possible responses
ScenarioResponse
Request received with invalid type in Accept header
 {
 "error": "unacceptable_media_type",
 "error_code": "10005", 
 "error_description": " Server can not return the response In the format mentioned in the request. Supported type is application/vnd.belfius.api+json;." 
}

  • Fixed-form error tokens mapping to specific errors.

    error (string)

  • Error specific code, could be used directly by consumer's software.

    error_code (string)

  • Full description of the error.

    error_description (string)

Headers
  • Response-ID: Same as Request-ID passed in the request.
Possible responses
ScenarioResponse
Client request exceed the configured Quota limit for the associated Account Plan
 {
 "error": "quota_limit_exceeded",
 "error_code": "10105",
 "error_description": " Quota limit exceed." 
}
Client request exceed the configured Quota limit for the associated API Plan
 {
 "error": "quota_limit_exceeded",
 "error_code": "10106",
 "error_description": " Quota limit exceed." 
}
Client request exceeded the configured rate limit
 {
 "error": "rate_limit_exceeded",
 "error_code": "10107",
 "error_description": " Rate limit exceed." 
}

  • Fixed-form error tokens mapping to specific errors.

    error (string)

  • Error specific code, could be used directly by consumer's software.

    error_code (string)

  • Full description of the error.

    error_description (string)

Possible responses
ScenarioResponse
SSL certificate error
 {
 "error": "ssl_validation_error",
 "error_code": "10020",
 "error_description": "error during client authentication." 
}

  • Fixed-form error tokens mapping to specific errors.

    error (string)

  • Error specific code, could be used directly by consumer's software.

    error_code (string)

  • Full description of the error.

    error_description (string)

Headers
  • Response-ID: Same as Request-ID passed in the request.
Possible responses
ScenarioResponse
Internal server error
 {
 "error": "internal_server_error",
 "error_code": "20020",
 "error_description": " Internal error occurred." 
}

  • Fixed-form error tokens mapping to specific errors.

    error (string)

  • Error specific code, could be used directly by consumer's software.

    error_code (string)

  • Full description of the error.

    error_description (string)

Headers
  • Response-ID: Same as Request-ID passed in the request.
Possible responses
ScenarioResponse
Client request falls in the configured 'restrict time period' frame
 {
 "error": "service_unavailable",
 "error_code": "10108",
 "error_description": " Service unavailable, please try after some time." 
}
Client request falls in the configured 'restrict day period' frame
 {
 "error": "service_unavailable",
 "error_code": "10109",
 "error_description": " Service unavailable, please try in 24 hours." 
}

  • Fixed-form error tokens mapping to specific errors.

    error (string)

  • Error specific code, could be used directly by consumer's software.

    error_code (string)

  • Full description of the error.

    error_description (string)

Get /accounts/{logical-id}/transactions

Request example

There is no example request provided

Response example

{
  "_embedded": {
    "transactions": [
      {
        "transaction_ref": "081721I000088",
        "amount": 123.12,
        "currency": "EUR",
        "execution_date": "2017-02-01",
        "counterparty_account": "BE80350454678790",
        "counterparty_info": "TEST ACCOUNT",
        "communication": "COMMUNICATION DETAILS",
        "communication_type": "FREETEXT"
      }
    ],
    "next_page_key": "783j23kj2hkj2h42u492424nh24924k2"
  },
  "_links": {
    "self": {
      "href": "/accounts/{logical-id}/transactions"
    },
    "account": {
      "href": "/accounts/{logical-id}"
    }
  }
}
{
 "error": "missing_input",
 "error_code": "10001",
 "error_description": "Missing required input 'INPUT'. DETAILS OF WHAT IS WRONG." 
}
{
 "error": "invalid_input",
 "error_code": "10002",
 "error_description": "Input 'INPUT' is not valid. DETAILS OF WHAT IS WRONG." 
}
{
 "error": "failed_security_validation",
 "error_code": "10003",
 "error_description": "Validation failed for security related parameters. DETAILS OF WHAT IS WRONG." 
}
{
 "error": "invalid_access_token",
 "error_code": "10006",
 "error_description": "access_token not valid in this scope." 
}
{
 "error": "consent_expired",
 "error_code": "20008",
 "error_description": "Consent is expired. Client must call the url present in this response, associating a required state in the url, in order to renew the consent. In case the state query parameter has not been appended, client will receive an error/error-description (0100/0STATE) for missing state parameter." ,
 "url": "https://www.belfius.be/common/fr/fw/generic/launcher.html?appkey=PSD2_RENEWAL&apptoken=rdger6e5325drte5635trwe45rew5wr345we5 " 
}
{
 "error": "blocked_tpp",
 "error_code": "20001",
 "error_description": "No Active TPP found." 
}
{
 "error": "invalid_account",
 "error_code": "20002", 
 "error_description": "No Account found." 
}
{
 "error": "channel_not_permitted",
 "error_code": "20003",
 "error_description": "This account can not be consultated via electronical channel." }
{
 "error": "account_not_supported",
 "error_code": "20004",
 "error_description": "This account is not allowed for this type of request." 
}
{
 "error": "no_active_consent",
 "error_code": "20005",
 "error_description": "User/System has deactivated the consent. Tpp has to start over with /consent-uris ." 
}
{
 "error": "access_denied",
 "error_code": "20006",
 "error_description": " Access is not ok for this account. Please contact customer support." 
}
{
 "error": "date_from_is_too_old",
 "error_code": "20007", 
 "error_description": "Transaction history older than 90 days is not possible." 
}
{
 "error": "resource_not_found",
 "error_code": "10004",
 "error_description": " Specific version not found.  Supported versions are [X,..]." 
}
{
 "error": "resource_not_found",
 "error_code": "10007", 
 "error_description": " No account found with given logicalId." 
}
{
 "error": "resource_not_found",
 "error_code": "10102",
 "error_description": " Requested resource was not found." 
}
{
 "error": "method_not_allowed",
 "error_code": "10103", 
 "error_description": " Requested HTTP method is not allowed for this api." 
}
{
 "error": "unacceptable_media_type",
 "error_code": "10005", 
 "error_description": " Server can not return the response In the format mentioned in the request. Supported type is application/vnd.belfius.api+json;." 
}
{
 "error": "quota_limit_exceeded",
 "error_code": "10105",
 "error_description": " Quota limit exceed." 
}
{
 "error": "quota_limit_exceeded",
 "error_code": "10106",
 "error_description": " Quota limit exceed." 
}
{
 "error": "rate_limit_exceeded",
 "error_code": "10107",
 "error_description": " Rate limit exceed." 
}
{
 "error": "ssl_validation_error",
 "error_code": "10020",
 "error_description": "error during client authentication." 
}
{
 "error": "internal_server_error",
 "error_code": "20020",
 "error_description": " Internal error occurred." 
}
{
 "error": "service_unavailable",
 "error_code": "10108",
 "error_description": " Service unavailable, please try after some time." 
}
{
 "error": "service_unavailable",
 "error_code": "10109",
 "error_description": " Service unavailable, please try in 24 hours." 
}