NAV Navigation
HTTP cURL JavaScript PHP Ruby Python Java Go

Welcome

This documentation was last updated on Fri Dec 2 13:16:23 UTC 2022 and covers Version v1.44.15

Welcome to the Mambu Payments API Reference documentation.

Our Payments API allows you to process payments made via the Single Euro Payments Area (SEPA) payments scheme. It is independent from the existing Mambu API and webhook infrastructure.

For more information about the Payments capability and the Mambu Payment Gateway, see Payments Introduction in our User Guide.

About the Mambu Payments API

The Payments API allows you to orchestrate the movement of money between an account in Mambu and an account at a third-party financial institution, both domestic as well as international, using SEPA-compliant messages for interchange.

The orchestration includes triggering payment execution on the user-specified date, debiting or crediting the account in Mambu, and storing-and-forwarding the credit or debit instruction for settlement in a third party financial institution via the Mambu Payment Gateway. The Mambu Payment Gateway in turn sends it out to Payment Network.

Before using the Mambu Payment Gateway, you will need to carry out the steps outlined in our payments documentation. This includes setting up an API consumer, transaction channels, and configuring your bank identification codes and job schedulers.

Base URLs

The base URL for requests to the Payments API is found below:

https://TENANT_NAME.mambu.com/api/v1

You may also use the sandbox environment for testing. The sandbox environment is generally one version ahead of the production environment. The base URL for your sandbox environment is:

https://TENANT_NAME.sandbox.mambu.com/api/v1

HTTP verbs

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

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

Open API Specification

Use this link to access the latest Open API Specification.

This documentation is automatically generated from an OpenAPI Specification (OAS).

This OAS file can also be used to quickly scaffold client SDKs, in various languages, for interacting with our APIs using a number of tools, including the online Swagger Editor.

You can access the latest version of this specification using the link provided.

Using the API

Authentication

To access the Payments API, you must create an API consumer that has the Manage Payments (MANAGE_PAYMENTS) permission assigned to it and create API keys using this API consumer.

API keys inherit the scope of access settings from the API consumer that creates them. You must authenticate every request to the Payments API using an API key in the request header.

You may create and manage API consumers and keys either through the Mambu UI or using the API Consumers endpoint provided by Mambu API v2. For more information, see API Consumers in our User Guide.

> Example authenticated request using cURL
curl  --request GET 'https://TENANT_NAME.mambu.com/api/v1/collections/d45a34ed341321bca4d89e42452dc074' \
--header 'apikey: i9TCzwUBwyTVQrfPEAhk0oEpOUCt0O2M'

Content types

Depending on the endpoint, the Payments API will accept one of two content types: JSON and XML. The format should be specified in the Content-Type header with either the value application/json or application/xml. Check the parameters table for each request for the required value for the Content-Type header.

For certain requests, including some POST requests, there is no need to supply a request body. For these requests, the Content-Type header can be omitted.

Idempotency

Many POST requests take an optional Idempotency-Key header. The value of this header should be a randomly generated string, unique to the request. We recommend using a UUID generator or library to create idempotency keys in the UUID v4 format. The following example shows a typical UUID: c2f53453-439c-4efa-9e27-58877160638b.

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

Incoming and outgoing messages

The Payments API is designed to handle messages coming from external sources such as clearing houses or other financial institutions, as well as to send XML-formatted payment instructions to your own clearing and settlement provider.

Incoming messages

For handling by the Payments API, all incoming messages must be routed to the /payments/incoming endpoint.

This endpoint accepts XML and responds with an HTTP status of 202 accepted, indicating that the message has been received and will be processed. The response includes a messageId, which can be used to later identify the transaction. For example, it can be used with getPaymentDetails or getCollectionDetails API requests to retrieve payment details and the current status of the transaction.

In case of any incoming message errors, the endpoint responds with a 4xx status code and an array of messages giving details on the errors encountered. Errors can range from invalid content type to individual fields within the message not conforming to the payment scheme specification. Errors will be reported using the TPPMessage model, and should be handled by your service.

Outgoing messages

Example outgoing message

Content-Type: application/xml
Authorization: BASIC AuThKey==
Message-Type: urn:iso:std:iso:20022:tech:xsd:pacs.008.001.02
Message-Id: SCTORD156820211213000000012649

<?xml version="1.0" encoding="utf-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pacs.008.001.02">
  <FIToFICstmrCdtTrf>
  ...
  </FIToFICstmrCdtTrf>
</Document>

When you create payments or inquiries, the Mambu Payment Gateway generates the appropriate ISO 20022 XML message and schedules it to be sent to the webhook callout URL configured in the Mambu Payment Gateway UI. See the callout configuration section of the Mambu Payment Gateway system properties article in our User Guide for more information on configuring your callout URL, including authentication options.

Outgoing messages are XML formatted messages conforming to the ISO 20022 specification - specifically, the subset supported by the SEPA payment scheme. The Message-Type header includes the type of message sent, such as pacs.008.001.02 for a SEPA credit transfer or camt.056.001.01 for cancellation of a payment.

Parameters

Name Type Description In Required
Content-Type string The encoding of the content in the body of the request. This will always be application/xml Header true
Authentication string BASIC authentication credentials. Base64 encoded representation of the credentials provided in webhook configuration in the Mambu Payment Gateway settings Header false
Message-Type string Message namespace URN. For example urn:iso:std:iso:20022:tech:xsd:pacs.008.001.02 Header true
Message-Id string Message ID, representing the GrpHdr>MsgId field of the message Header true
Body XML The actual, generated XML message. The content of the message will, depending on the source, include data provided in an API request, data from another payment or collection instruction, or a combination of both. Visit our User Guide for examples of selected messages or refer to the European Payments Council document library for more comprehensive descriptions of the message types supported by the SEPA payment scheme. body true

AML

If you are using an external service to check payments as part of your Anti Money Laundering obligations, these endpoints receive responses which will lead to unblocking funds and transferring them to the recipient account in the case of an all clear or returning funds to the payer in cases where there a compliance issue has been identified.

For more general information on AML flows, including how the necessary suspense accounting should be set up in Mambu, please refer to the AML and Suspense Accounts section of our User Guide.

processPaymentAmlResponse

Code samples

# You can also use wget
curl -X POST https://TENANT_NAME.mambu.com/api/v1/payments/aml \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Content-Type: string' \
  -H 'X-Request-ID: string' \
  -H 'Idempotency-Key: string'

POST https://TENANT_NAME.mambu.com/api/v1/payments/aml HTTP/1.1
Host: tenant_name.mambu.com
Content-Type: application/json
Accept: application/json
Content-Type: string
X-Request-ID: string
Idempotency-Key: string

const inputBody = '{
  "groupHeader": {
    "messageIdentification": "SCTORD200020190305ORD000011119"
  },
  "transactions": [
    {
      "status": "Accepted",
      "paymentIdentification": {
        "transactionIdentification": "00730100632BHGCRWC"
      },
      "debtorAgent": {
        "institutionIdentification": {
          "bicfi": "BTRLRO22"
        }
      },
      "interbankSettlementDate": "2019-06-28"
    }
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Content-Type':'string',
  'X-Request-ID':'string',
  'Idempotency-Key':'string'
};

fetch('https://TENANT_NAME.mambu.com/api/v1/payments/aml',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Content-Type' => 'string',
  'X-Request-ID' => 'string',
  'Idempotency-Key' => 'string'
}

result = RestClient.post 'https://TENANT_NAME.mambu.com/api/v1/payments/aml',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Content-Type': 'string',
  'X-Request-ID': 'string',
  'Idempotency-Key': 'string'
}

r = requests.post('https://TENANT_NAME.mambu.com/api/v1/payments/aml', headers = headers)

print(r.json())

 'application/json',
    'Accept' => 'application/json',
    'Content-Type' => 'string',
    'X-Request-ID' => 'string',
    'Idempotency-Key' => 'string',
);

$client = new \GuzzleHttp\Client();

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

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

 // ...

URL obj = new URL("https://TENANT_NAME.mambu.com/api/v1/payments/aml");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Content-Type": []string{"string"},
        "X-Request-ID": []string{"string"},
        "Idempotency-Key": []string{"string"},
    }

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

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

POST /payments/aml

Accepts AML check results for Payment Orders, for example SEPA Credit Transfers.

Example Request

amlInformation

{
  "groupHeader": {
    "messageIdentification": "SCTORD200020190305ORD000011119"
  },
  "transactions": [
    {
      "status": "Accepted",
      "paymentIdentification": {
        "transactionIdentification": "00730100632BHGCRWC"
      },
      "debtorAgent": {
        "institutionIdentification": {
          "bicfi": "BTRLRO22"
        }
      },
      "interbankSettlementDate": "2019-06-28"
    }
  ]
}

Parameters

Name Type Description In
Content-Type (required) string application/json header
X-Request-ID (required) string ID of the request, unique to the call, as determined by the initiating party. header
Idempotency-Key string Prevents retried requests to be executed multiple times. Subsequent requests with the same Idempotency Key will not be processed and will return a cached result. header
body AmlResult none body

Example Responses

400 :
missingMandatoryField

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "FORMAT_ERROR",
      "path": "groupHeader.messageIdentification",
      "text": "groupHeader.messageIdentification may not be null"
    }
  ]
}

405 :
unsupportedHttpMethod

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

415 :
unsupportedContentType

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

500 :
internalServerError

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK OK - The AML check result has been prepared for processing. None
400 Bad Request Bad Request - Validation error occurred. This code will cover malformed syntax in request or incorrect data in payload. FailedPaymentResponse
405 Method Not Allowed Method Not Allowed - This code is only sent when the HTTP method (PUT, POST, DELETE, GET etc.) is not supported by a specific endpoint. It has nothing to do with the content, payment or account information data model. FailedPaymentResponse
415 Unsupported Media Type Unsupported Media Type - A media type which the serves does not support has been supplied. FailedPaymentResponse
500 Internal Server Error Internal Server Error - Internal server error occurred. FailedPaymentResponse
503 Service Unavailable Service Unavailable - The server is currently unavailable. Generally, this is a temporary state. None

processCollectionAmlResponse

Code samples

# You can also use wget
curl -X POST https://TENANT_NAME.mambu.com/api/v1/collections/aml \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Content-Type: string' \
  -H 'X-Request-ID: string' \
  -H 'Idempotency-Key: string'

POST https://TENANT_NAME.mambu.com/api/v1/collections/aml HTTP/1.1
Host: tenant_name.mambu.com
Content-Type: application/json
Accept: application/json
Content-Type: string
X-Request-ID: string
Idempotency-Key: string

const inputBody = '{
  "groupHeader": {
    "messageIdentification": "SCTORD200020190305ORD000011119"
  },
  "transactions": [
    {
      "status": "Accepted",
      "collectionIdentification": {
        "transactionIdentification": "00730100632BHGCRWC"
      },
      "creditorAgent": {
        "institutionIdentification": {
          "bicfi": "BTRLRO22"
        }
      },
      "interbankSettlementDate": "2019-06-28"
    }
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Content-Type':'string',
  'X-Request-ID':'string',
  'Idempotency-Key':'string'
};

fetch('https://TENANT_NAME.mambu.com/api/v1/collections/aml',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Content-Type' => 'string',
  'X-Request-ID' => 'string',
  'Idempotency-Key' => 'string'
}

result = RestClient.post 'https://TENANT_NAME.mambu.com/api/v1/collections/aml',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Content-Type': 'string',
  'X-Request-ID': 'string',
  'Idempotency-Key': 'string'
}

r = requests.post('https://TENANT_NAME.mambu.com/api/v1/collections/aml', headers = headers)

print(r.json())

 'application/json',
    'Accept' => 'application/json',
    'Content-Type' => 'string',
    'X-Request-ID' => 'string',
    'Idempotency-Key' => 'string',
);

$client = new \GuzzleHttp\Client();

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

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

 // ...

URL obj = new URL("https://TENANT_NAME.mambu.com/api/v1/collections/aml");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Content-Type": []string{"string"},
        "X-Request-ID": []string{"string"},
        "Idempotency-Key": []string{"string"},
    }

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

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

POST /collections/aml

Accepts AML check results for collections, for example, SEPA Direct Debits.

Example Request

amlInformation

{
  "groupHeader": {
    "messageIdentification": "SCTORD200020190305ORD000011119"
  },
  "transactions": [
    {
      "status": "Accepted",
      "collectionIdentification": {
        "transactionIdentification": "00730100632BHGCRWC"
      },
      "creditorAgent": {
        "institutionIdentification": {
          "bicfi": "BTRLRO22"
        }
      },
      "interbankSettlementDate": "2019-06-28"
    }
  ]
}

Parameters

Name Type Description In
Content-Type (required) string application/json header
X-Request-ID (required) string ID of the request, unique to the call, as determined by the initiating party. header
Idempotency-Key string Prevents retried requests to be executed multiple times. Subsequent requests with the same Idempotency Key will not be processed and will return a cached result. header
body AmlResult none body

Example Responses

400 :
missingMandatoryField

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "FORMAT_ERROR",
      "path": "groupHeader.messageIdentification",
      "text": "groupHeader.messageIdentification may not be null"
    }
  ]
}

405 :
unsupportedHttpMethod

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

415 :
unsupportedContentType

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

500 :
internalServerError

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK OK - The AML check result has been prepared for processing. None
400 Bad Request Bad Request - Validation error occurred. This code will cover malformed syntax in request or incorrect data in payload. FailedPaymentResponse
405 Method Not Allowed Method Not Allowed - This code is only sent when the HTTP method (PUT, POST, DELETE, GET etc.) is not supported by a specific endpoint. It has nothing to do with the consent, payment or account information data model. FailedPaymentResponse
415 Unsupported Media Type Unsupported Media Type - A media type which the serves does not support has been supplied. FailedPaymentResponse
500 Internal Server Error Internal Server Error - Internal server error occurred. FailedPaymentResponse
503 Service Unavailable Service Unavailable - The server is currently unavailable. Generally, this is a temporary state. None

resendCTAmlCallout

Code samples

# You can also use wget
curl -X POST https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}/aml:resendCallout \
  -H 'Accept: application/json'

POST https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}/aml:resendCallout HTTP/1.1
Host: tenant_name.mambu.com
Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}/aml:resendCallout',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.post 'https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}/aml:resendCallout',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.post('https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}/aml:resendCallout', headers = headers)

print(r.json())

 'application/json',
);

$client = new \GuzzleHttp\Client();

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

try {
    $response = $client->request('POST','https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}/aml:resendCallout', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}/aml:resendCallout");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}/aml:resendCallout", data)
    req.Header = headers

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

POST /payments/{paymentOrderId}/aml:resendCallout

Resends the AML callout for an Outgoing payment.

Parameters

Name Type Description In
paymentOrderId (required) string none path

Example Responses

400 :
invalidRequestBody

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "Failed to find any valid Sepa Transaction for the given request. The error message is: resend.aml.callout.failed"
    }
  ]
}

405 :
unsupportedHttpMethod

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

500 :
internalServerError

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK OK - The AML callout was resent for the provided payment order. None
400 Bad Request Bad Request - Validation error occurred. This code will cover malformed syntax in request or incorrect data in payload. PaymentResponse-TPP
405 Method Not Allowed Method Not Allowed - This code is only sent when the HTTP method (PUT, POST, DELETE, GET etc.) is not supported on a specific endpoint. It has nothing to do with the consent, payment or account information data model. PaymentResponse-TPP
500 Internal Server Error Internal Server Error - Internal server error occurred. PaymentResponse-TPP
503 Service Unavailable Service Unavailable - The server is currently unavailable. Generally, this is a temporary state. None

resendDDAmlCallout

Code samples

# You can also use wget
curl -X POST https://TENANT_NAME.mambu.com/api/v1/collections/{collectionId}/aml:resendCallout \
  -H 'Accept: application/json'

POST https://TENANT_NAME.mambu.com/api/v1/collections/{collectionId}/aml:resendCallout HTTP/1.1
Host: tenant_name.mambu.com
Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('https://TENANT_NAME.mambu.com/api/v1/collections/{collectionId}/aml:resendCallout',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.post 'https://TENANT_NAME.mambu.com/api/v1/collections/{collectionId}/aml:resendCallout',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.post('https://TENANT_NAME.mambu.com/api/v1/collections/{collectionId}/aml:resendCallout', headers = headers)

print(r.json())

 'application/json',
);

$client = new \GuzzleHttp\Client();

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

try {
    $response = $client->request('POST','https://TENANT_NAME.mambu.com/api/v1/collections/{collectionId}/aml:resendCallout', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_NAME.mambu.com/api/v1/collections/{collectionId}/aml:resendCallout");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://TENANT_NAME.mambu.com/api/v1/collections/{collectionId}/aml:resendCallout", data)
    req.Header = headers

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

POST /collections/{collectionId}/aml:resendCallout

Resends the AML callout for an Outgoing collection.

Parameters

Name Type Description In
collectionId (required) string none path

Example Responses

400 :
invalidRequestBody

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "Failed to find any valid Sepa Transaction for the given request. The error message is: resend.aml.callout.failed"
    }
  ]
}

405 :
unsupportedHttpMethod

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

500 :
internalServerError

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK OK - The AML callout was resent for the provided collection order. None
400 Bad Request Bad Request - Validation error occurred. This code will cover malformed syntax in request or incorrect data in payload. PaymentResponse-TPP
405 Method Not Allowed Method Not Allowed - This code is only sent when the HTTP method (PUT, POST, DELETE, GET etc.) is not supported on a specific endpoint. It has nothing to do with the consent, payment or account information data model. PaymentResponse-TPP
500 Internal Server Error Internal Server Error - Internal server error occurred. PaymentResponse-TPP
503 Service Unavailable Service Unavailable - The server is currently unavailable. Generally, this is a temporary state. None

resendAmlCallouts

Code samples

# You can also use wget
curl -X POST https://TENANT_NAME.mambu.com/api/v1/aml:resendCallouts \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json'

POST https://TENANT_NAME.mambu.com/api/v1/aml:resendCallouts HTTP/1.1
Host: tenant_name.mambu.com
Content-Type: application/json
Accept: application/json

const inputBody = '{
  "category": "SEPA_CT",
  "direction": "I",
  "instructingAgent": "string",
  "interbankSettlementDate": "string",
  "messageId": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json'
};

fetch('https://TENANT_NAME.mambu.com/api/v1/aml:resendCallouts',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json'
}

result = RestClient.post 'https://TENANT_NAME.mambu.com/api/v1/aml:resendCallouts',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

r = requests.post('https://TENANT_NAME.mambu.com/api/v1/aml:resendCallouts', headers = headers)

print(r.json())

 'application/json',
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

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

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

 // ...

URL obj = new URL("https://TENANT_NAME.mambu.com/api/v1/aml:resendCallouts");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
    }

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

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

POST /aml:resendCallouts

Resends the AML callouts.

Example Request

{
  "category": "SEPA_CT",
  "direction": "I",
  "instructingAgent": "string",
  "interbankSettlementDate": "string",
  "messageId": "string"
}

Parameters

Name Type Description In
body (required) ResendAmlFilter none body

Example Responses

400 :
invalidRequestBody

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "Failed to find any valid Sepa Transaction for the given request. The error message is: resend.aml.callout.failed"
    }
  ]
}

405 :
unsupportedHttpMethod

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

415 :
unsupportedContentType

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

500 :
internalServerError

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK OK - The AML callouts were resent. None
400 Bad Request Bad Request - Validation error occurred. This code will cover malformed syntax in request or incorrect data in payload. PaymentResponse-TPP
405 Method Not Allowed Method Not Allowed - This code is only sent when the HTTP method (PUT, POST, DELETE, GET etc.) is not supported on a specific endpoint. It has nothing to do with the consent, payment or account information data model. PaymentResponse-TPP
415 Unsupported Media Type Unsupported Media Type - A media type which the server does not support has been supplied. PaymentResponse-TPP
500 Internal Server Error Internal Server Error - Internal server error occurred. PaymentResponse-TPP
503 Service Unavailable Service Unavailable - The server is currently unavailable. Generally, this is a temporary state. None

External Account Representation

The External Account Representation (EAR) endpoints are used to associate IBANs with Mambu account IDs so that payments made using the Mambu Payment Gateway are routed to the correct accounts.

An IBAN can be mapped to multiple accounts but can only be associated to one account per currency, so, for example, the same IBAN can be mapped to one underlying Mambu account using EUR, another using GBP and another using CHF, but not to two accounts both in EUR denomination.

getMapping

Code samples

# You can also use wget
curl -X GET https://TENANT_NAME.mambu.com/api/v1/accounts/{accountId}/identifications \
  -H 'Accept: application/json' \
  -H 'Content-Type: string'

GET https://TENANT_NAME.mambu.com/api/v1/accounts/{accountId}/identifications HTTP/1.1
Host: tenant_name.mambu.com
Accept: application/json
Content-Type: string


const headers = {
  'Accept':'application/json',
  'Content-Type':'string'
};

fetch('https://TENANT_NAME.mambu.com/api/v1/accounts/{accountId}/identifications',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json',
  'Content-Type' => 'string'
}

result = RestClient.get 'https://TENANT_NAME.mambu.com/api/v1/accounts/{accountId}/identifications',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json',
  'Content-Type': 'string'
}

r = requests.get('https://TENANT_NAME.mambu.com/api/v1/accounts/{accountId}/identifications', headers = headers)

print(r.json())

 'application/json',
    'Content-Type' => 'string',
);

$client = new \GuzzleHttp\Client();

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

try {
    $response = $client->request('GET','https://TENANT_NAME.mambu.com/api/v1/accounts/{accountId}/identifications', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

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

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Content-Type": []string{"string"},
    }

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

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

GET /accounts/{accountId}/identifications

Gets associations of an external account identification (IBAN or proprietary) to a Mambu Account.

Parameters

Name Type Description In
Content-Type (required) string application/json header
accountId (required) string none path
limit integer(int32) Limit the number of identifications retrieved. The default limit is 50, can be specified up to 1000. query
offset integer(int64) Offset determines how many records will be skipped before being included in the returned results. The default offset value is 0. query

Example Responses

200 :
Identification

[
  {
    "iban": "DE46606951125202071272"
  },
  {
    "other": {
      "identification": "ABCDE1234F",
      "scheme": "PAN"
    }
  }
]

500 :
internalServerError

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK OK - List existing external identifications. Inline
500 Internal Server Error Internal Server Error - Internal server error occurred. TppMessagesResponse
503 Service Unavailable Service Unavailable - The server is currently unavailable. Generally, this is a temporary state. None

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [Identification] [Unique and unambiguous identification for the account.] none
» iban string ISO 13616 International Bank Account Number (IBAN) - identifier used internationally by financial institutions to uniquely identify the account of a customer. Must be between 15 and 34 characters. none
» other Other Unique identification of an account, as assigned by the account servicer, using any other identification scheme. none
»» identification (required) string Identification assigned by an institution. Must not exceed 34 characters. none
»» scheme (required) string Name or code of the identification scheme. Must not exceed 35 characters. none

Response Headers

Status Header Type Format Description
200 Items-Offset undefined The index of the first returned item.
200 Items-Limit undefined The requested page size.
200 Items-Total undefined The total count of available items.

createMapping

Code samples

# You can also use wget
curl -X POST https://TENANT_NAME.mambu.com/api/v1/accounts/{accountId}/identifications \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Content-Type: string'

POST https://TENANT_NAME.mambu.com/api/v1/accounts/{accountId}/identifications HTTP/1.1
Host: tenant_name.mambu.com
Content-Type: application/json
Accept: application/json
Content-Type: string

const inputBody = '{
  "identification": {
    "other": {
      "identification": "ABCDE1234F",
      "scheme": "PAN"
    },
    "iban": "DE46606951125202071272"
  }
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Content-Type':'string'
};

fetch('https://TENANT_NAME.mambu.com/api/v1/accounts/{accountId}/identifications',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Content-Type' => 'string'
}

result = RestClient.post 'https://TENANT_NAME.mambu.com/api/v1/accounts/{accountId}/identifications',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Content-Type': 'string'
}

r = requests.post('https://TENANT_NAME.mambu.com/api/v1/accounts/{accountId}/identifications', headers = headers)

print(r.json())

 'application/json',
    'Accept' => 'application/json',
    'Content-Type' => 'string',
);

$client = new \GuzzleHttp\Client();

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

try {
    $response = $client->request('POST','https://TENANT_NAME.mambu.com/api/v1/accounts/{accountId}/identifications', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_NAME.mambu.com/api/v1/accounts/{accountId}/identifications");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Content-Type": []string{"string"},
    }

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

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

POST /accounts/{accountId}/identifications

Adds association of an external account identification (IBAN or proprietary) to a Mambu Account. The currency of the association will be the one of the underlining Mambu account. If an IBAN is supposed to be a multi-currency one, this API needs to be invoked multiple times with different Mambu accounts (for the different currencies).

Example Request

createMambuAccountMapping

{
  "identification": {
    "other": {
      "identification": "ABCDE1234F",
      "scheme": "PAN"
    },
    "iban": "DE46606951125202071272"
  }
}

Parameters

Name Type Description In
Content-Type (required) string application/json header
accountId (required) string none path
body CreateAccountMapping none body

Example Responses

201 :
accountMappingResponse

{}

400 :
invalidIdentification

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "FORMAT_ERROR",
      "path": "iban",
      "text": "iban size must be between 15 and 34"
    },
    {
      "category": "ERROR",
      "code": "FORMAT_ERROR",
      "path": "iban",
      "text": "iban invalid IBAN value"
    }
  ]
}

500 :
internalServerError

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

Responses

Status Meaning Description Schema
201 Created Created - Association successfully created. AccountMappingResponse
400 Bad Request Bad Request - Validation error occurred. This code will cover malformed syntax in request or incorrect data in payload. TppMessagesResponse
500 Internal Server Error Internal Server Error - Internal server error occurred. TppMessagesResponse
503 Service Unavailable Service Unavailable - The server is currently unavailable. Generally, this is a temporary state. None

createMappings

Code samples

# You can also use wget
curl -X PUT https://TENANT_NAME.mambu.com/api/v1/accounts/identifications \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Content-Type: string'

PUT https://TENANT_NAME.mambu.com/api/v1/accounts/identifications HTTP/1.1
Host: tenant_name.mambu.com
Content-Type: application/json
Accept: application/json
Content-Type: string

const inputBody = '{
  "identification": {
    "iban": "DE46606951125202071272"
  },
  "accountIds": [
    "123",
    "456",
    "789"
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Content-Type':'string'
};

fetch('https://TENANT_NAME.mambu.com/api/v1/accounts/identifications',
{
  method: 'PUT',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Content-Type' => 'string'
}

result = RestClient.put 'https://TENANT_NAME.mambu.com/api/v1/accounts/identifications',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Content-Type': 'string'
}

r = requests.put('https://TENANT_NAME.mambu.com/api/v1/accounts/identifications', headers = headers)

print(r.json())

 'application/json',
    'Accept' => 'application/json',
    'Content-Type' => 'string',
);

$client = new \GuzzleHttp\Client();

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

try {
    $response = $client->request('PUT','https://TENANT_NAME.mambu.com/api/v1/accounts/identifications', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_NAME.mambu.com/api/v1/accounts/identifications");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Content-Type": []string{"string"},
    }

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

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

PUT /accounts/identifications

Create or replace associations of an external account identification (IBAN or proprietary) to a list of Mambu Accounts. The currency of the association will be the one of the underlining Mambu account.

Example Request

createMambuAccountMappings

{
  "identification": {
    "iban": "DE46606951125202071272"
  },
  "accountIds": [
    "123",
    "456",
    "789"
  ]
}

Parameters

Name Type Description In
Content-Type (required) string application/json header
body CreateAccountMappings none body

Example Responses

201 :
accountMappingResponse

{}

400 :
invalidIdentification

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "FORMAT_ERROR",
      "path": "iban",
      "text": "iban size must be between 15 and 34"
    },
    {
      "category": "ERROR",
      "code": "FORMAT_ERROR",
      "path": "iban",
      "text": "iban invalid IBAN value"
    }
  ]
}

500 :
internalServerError

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

Responses

Status Meaning Description Schema
201 Created Created - Association successfully created. AccountMappingResponse
400 Bad Request Bad Request - Validation error occurred. This code will cover malformed syntax in request or incorrect data in payload. TppMessagesResponse
500 Internal Server Error Internal Server Error - Internal server error occurred. TppMessagesResponse
503 Service Unavailable Service Unavailable - The server is currently unavailable. Generally, this is a temporary state. None

searchAccountIdentifications

Code samples

# You can also use wget
curl -X POST https://TENANT_NAME.mambu.com/api/v1/accounts/identifications:search \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Content-Type: string'

POST https://TENANT_NAME.mambu.com/api/v1/accounts/identifications:search HTTP/1.1
Host: tenant_name.mambu.com
Content-Type: application/json
Accept: application/json
Content-Type: string

const inputBody = '{
  "filterCriteria": [
    {
      "field": "SCHEME",
      "operator": "EQUALS",
      "value": "string"
    }
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Content-Type':'string'
};

fetch('https://TENANT_NAME.mambu.com/api/v1/accounts/identifications:search',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Content-Type' => 'string'
}

result = RestClient.post 'https://TENANT_NAME.mambu.com/api/v1/accounts/identifications:search',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Content-Type': 'string'
}

r = requests.post('https://TENANT_NAME.mambu.com/api/v1/accounts/identifications:search', headers = headers)

print(r.json())

 'application/json',
    'Accept' => 'application/json',
    'Content-Type' => 'string',
);

$client = new \GuzzleHttp\Client();

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

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

 // ...

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

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Content-Type": []string{"string"},
    }

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

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

POST /accounts/identifications:search

Searches identifications (with MambuID included) based on provided filter criteria

Example Request

{
  "filterCriteria": [
    {
      "field": "SCHEME",
      "operator": "EQUALS",
      "value": "string"
    }
  ]
}

Parameters

Name Type Description In
Content-Type (required) string application/json header
body AccountIdentificationsSearchRequestDTO none body

Example Responses

200 :
AccountIdentificationsSearchResponse

[
  {
    "accountId": "test123",
    "currency": "EUR",
    "type": "DEPOSIT",
    "identification": {
      "iban": "DE46606951125202071272",
      "identification": "ABCDE1234F",
      "scheme": "PAN"
    }
  }
]

400 :
invalidSearchFilter

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "FORMAT_ERROR",
      "path": "searchAccountIdentifications.arg0.filterCriteria[0].field",
      "text": "filterCriteria[0].field Should be one of: schema, iban, currency, identification"
    }
  ]
}

500 :
internalServerError

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK OK - List of found identifications with accountId Inline
400 Bad Request Bad Request - Validation error occurred. This code will cover malformed syntax in request or incorrect data in payload. TppMessagesResponse
500 Internal Server Error Internal Server Error - Internal server error occurred. TppMessagesResponse
503 Service Unavailable Service Unavailable - The server is currently unavailable. Generally, this is a temporary state. None

Response Schema

Status Code 200

Name Type Description Restrictions
anonymous [AccountIdentificationsSearchResponseDTO] none none
» accountId (required) string AccountID (Unique and unambiguous identification for the account.) none
» currency string Account currency none
» identification (required) Identification Unique and unambiguous identification for the account. none
»» iban string ISO 13616 International Bank Account Number (IBAN) - identifier used internationally by financial institutions to uniquely identify the account of a customer. Must be between 15 and 34 characters. none
»» other Other Unique identification of an account, as assigned by the account servicer, using any other identification scheme. none
»»» identification (required) string Identification assigned by an institution. Must not exceed 34 characters. none
»»» scheme (required) string Name or code of the identification scheme. Must not exceed 35 characters. none
» type string Account type none

mask

Code samples

# You can also use wget
curl -X POST https://TENANT_NAME.mambu.com/api/v1/accounts/identifications:mask \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json'

POST https://TENANT_NAME.mambu.com/api/v1/accounts/identifications:mask HTTP/1.1
Host: tenant_name.mambu.com
Content-Type: application/json
Accept: application/json

const inputBody = '{
  "identifications": [
    {
      "iban": "stringstringstr"
    }
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json'
};

fetch('https://TENANT_NAME.mambu.com/api/v1/accounts/identifications:mask',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json'
}

result = RestClient.post 'https://TENANT_NAME.mambu.com/api/v1/accounts/identifications:mask',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

r = requests.post('https://TENANT_NAME.mambu.com/api/v1/accounts/identifications:mask', headers = headers)

print(r.json())

 'application/json',
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

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

try {
    $response = $client->request('POST','https://TENANT_NAME.mambu.com/api/v1/accounts/identifications:mask', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_NAME.mambu.com/api/v1/accounts/identifications:mask");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
    }

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

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

POST /accounts/identifications:mask

Mask identifications from Payments Gateway.

Example Request

{
  "identifications": [
    {
      "iban": "stringstringstr"
    }
  ]
}

Parameters

Name Type Description In
body (required) IdentificationsToMask none body

Example Responses

400 :
identificationAlreadyMasked

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "Following identifications are already masked: DK0643182702662691"
    }
  ]
}

500 :
internalServerError

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK OK - Identifications masked. This operation is irreversible. None
400 Bad Request Bad Request - Validation error occurred. This code will cover malformed syntax in request or incorrect data in payload. PaymentResponse-TPP
500 Internal Server Error Internal Server Error - Internal server error occurred. PaymentResponse-TPP
503 Service Unavailable Service Unavailable - The server is currently unavailable. Generally, this is a temporary state. None

Incoming Messages

This endpoint is the main entry point to the Mambu Payment Gateway for external systems.

For more information on the types of messages accepted by this endpoint, please refer to the supported flows section of the introduction to the Mambu Payment Gateway article in our User Guide.

submitIncomingMessage

Code samples

# You can also use wget
curl -X POST https://TENANT_NAME.mambu.com/api/v1/payments/incoming \
  -H 'Content-Type: application/xml' \
  -H 'Accept: application/json' \
  -H 'X-Request-ID: string'

POST https://TENANT_NAME.mambu.com/api/v1/payments/incoming HTTP/1.1
Host: tenant_name.mambu.com
Content-Type: application/xml
Accept: application/json
X-Request-ID: string

const inputBody = ' ... ';
const headers = {
  'Content-Type':'application/xml',
  'Accept':'application/json',
  'X-Request-ID':'string'
};

fetch('https://TENANT_NAME.mambu.com/api/v1/payments/incoming',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/xml',
  'Accept' => 'application/json',
  'X-Request-ID' => 'string'
}

result = RestClient.post 'https://TENANT_NAME.mambu.com/api/v1/payments/incoming',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/xml',
  'Accept': 'application/json',
  'X-Request-ID': 'string'
}

r = requests.post('https://TENANT_NAME.mambu.com/api/v1/payments/incoming', headers = headers)

print(r.json())

 'application/xml',
    'Accept' => 'application/json',
    'X-Request-ID' => 'string',
);

$client = new \GuzzleHttp\Client();

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

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

 // ...

URL obj = new URL("https://TENANT_NAME.mambu.com/api/v1/payments/incoming");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/xml"},
        "Accept": []string{"application/json"},
        "X-Request-ID": []string{"string"},
    }

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

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

POST /payments/incoming

Creates an incoming message request.

Example Request

incomingCreditTransferRequest


<?xml version="1.0" encoding="utf-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pacs.008.001.02">
  <FIToFICstmrCdtTrf>
  ...
  </FIToFICstmrCdtTrf>
</Document>

Parameters

Name Type Description In
X-Request-ID (required) string ID of the request, unique to the call, as determined by the initiating party. header
body (required) string none body

Example Responses

202 :
incomingPacs008Response

{
  "messageId": "SCTORD200020190305ORD000011119",
  "messageType": "urn:iso:std:iso:20022:tech:xsd:pacs.008.001.02"
}

202 :
incomingCamt056Response

{
  "messageId": "568R9154000000000000000000000000010",
  "messageType": "urn:iso:std:iso:20022:tech:xsd:camt.056.001.01"
}

400 :
invalidValueForField

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "FORMAT_ERROR",
      "text": "The request body may not be empty"
    }
  ]
}

405 :
unsupportedHttpMethod

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

415 :
unsupportedContentType

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

500 :
internalServerError

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

Responses

Status Meaning Description Schema
202 Accepted Accepted - Incoming file accepted and is due for processing, when incoming scheduler is configured to run. Outgoing (complete / partial) pacs.002 will be published in case of complete / partial processing of incoming pacs.008. If the incoming pacs.008 is completely failed then a rejected pacs.002 will be published. Outgoing pacs.004 will be published for failed transaction from incoming pacs.008. IncomingMessageResponse
400 Bad Request Bad Request - Validation error occurred. PaymentResponse-TPP
405 Method Not Allowed Method Not Allowed - This code is only sent when the HTTP method (PUT, POST, DELETE, GET etc.) is not supported on a specific endpoint. It has nothing to do with the consent, payment or account information data model. PaymentResponse-TPP
415 Unsupported Media Type Unsupported Media Type - A media type which the server does not support has been supplied. PaymentResponse-TPP
500 Internal Server Error Internal Server Error - Internal server error occurred. PaymentResponse-TPP
503 Service Unavailable Service Unavailable - The server is currently unavailable. Generally, this is a temporary state. None

SEPA Credit Transfers

These endpoints are used for making and receiving SEPA credit transfers through the Mambu Payment Gateway.

For more information on supported messages, flows and technical information, including examples of generated XML messages and how the fields map to these API requests, please refer to the SEPA Credit Transfer section of our User Guide.

initiatePayment

Code samples

# You can also use wget
curl -X POST https://TENANT_NAME.mambu.com/api/v1/payments \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Content-Type: string' \
  -H 'X-Request-ID: string' \
  -H 'Idempotency-Key: string'

POST https://TENANT_NAME.mambu.com/api/v1/payments HTTP/1.1
Host: tenant_name.mambu.com
Content-Type: application/json
Accept: application/json
Content-Type: string
X-Request-ID: string
Idempotency-Key: string

const inputBody = '{
  "debtorAccount": {
    "identification": {
      "iban": "DE46606951125202071272"
    },
    "currency": "EUR"
  },
  "debtorName": "John Doe",
  "debtorAddress": {
    "street": "Karl-Liebknecht-Str. 5",
    "buildingNumber": "5234",
    "city": "Berlin",
    "postalCode": "10178",
    "countryCode": "DE"
  },
  "serviceLevel": "SEPA",
  "instructedAmount": {
    "currency": "EUR",
    "amount": "500"
  },
  "creditorAccount": {
    "identification": {
      "iban": "DE16195554277485442959"
    },
    "currency": "EUR"
  },
  "creditorAgent": {
    "institutionIdentification": {
      "bicfi": "DEUTDEFF"
    }
  },
  "creditorName": "Merchant123",
  "creditorAddress": {
    "street": "Am Olympiapark 1",
    "buildingNumber": "1",
    "city": "Munchen",
    "postalCode": "80809",
    "countryCode": "DE"
  }
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Content-Type':'string',
  'X-Request-ID':'string',
  'Idempotency-Key':'string'
};

fetch('https://TENANT_NAME.mambu.com/api/v1/payments',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Content-Type' => 'string',
  'X-Request-ID' => 'string',
  'Idempotency-Key' => 'string'
}

result = RestClient.post 'https://TENANT_NAME.mambu.com/api/v1/payments',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Content-Type': 'string',
  'X-Request-ID': 'string',
  'Idempotency-Key': 'string'
}

r = requests.post('https://TENANT_NAME.mambu.com/api/v1/payments', headers = headers)

print(r.json())

 'application/json',
    'Accept' => 'application/json',
    'Content-Type' => 'string',
    'X-Request-ID' => 'string',
    'Idempotency-Key' => 'string',
);

$client = new \GuzzleHttp\Client();

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

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

 // ...

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

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Content-Type": []string{"string"},
        "X-Request-ID": []string{"string"},
        "Idempotency-Key": []string{"string"},
    }

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

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

POST /payments

Creates a payment initiation request. Payments using the SEPA Credit Transfer scheme can only be created for the current date. A pacs.008 message will be generated from the data provided in this request. For more information on how these fields map to SEPA XML messages, refer to the SEPA Credit Transfer Techincal Information article in our user guide.

Example Request

initiatePaymentRequest

{
  "debtorAccount": {
    "identification": {
      "iban": "DE46606951125202071272"
    },
    "currency": "EUR"
  },
  "debtorName": "John Doe",
  "debtorAddress": {
    "street": "Karl-Liebknecht-Str. 5",
    "buildingNumber": "5234",
    "city": "Berlin",
    "postalCode": "10178",
    "countryCode": "DE"
  },
  "serviceLevel": "SEPA",
  "instructedAmount": {
    "currency": "EUR",
    "amount": "500"
  },
  "creditorAccount": {
    "identification": {
      "iban": "DE16195554277485442959"
    },
    "currency": "EUR"
  },
  "creditorAgent": {
    "institutionIdentification": {
      "bicfi": "DEUTDEFF"
    }
  },
  "creditorName": "Merchant123",
  "creditorAddress": {
    "street": "Am Olympiapark 1",
    "buildingNumber": "1",
    "city": "Munchen",
    "postalCode": "80809",
    "countryCode": "DE"
  }
}

Parameters

Name Type Description In
Content-Type (required) string application/json header
X-Request-ID (required) string ID of the request, unique to the call, as determined by the initiating party. header
Idempotency-Key string Prevents retried requests to be executed multiple times. Subsequent requests with the same Idempotency Key will not be processed and will return a cached result. header
body Payment none body

Example Responses

201 :
initiatePaymentResponse

{
  "transactionStatus": "RCVD",
  "paymentId": "e38458a4-d955-4a39-8e21-9608e9600b3d",
  "transactionFeeIndicator": false
}

400 :
missingMandatoryField

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "FORMAT_ERROR",
      "path": "debtorAccount.identification",
      "text": "debtorAccount.identification may not be null"
    }
  ]
}

405 :
unsupportedHttpMethod

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

415 :
unsupportedContentType

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

500 :
internalServerError

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

Responses

Status Meaning Description Schema
201 Created Created - Payment Initiation request was correctly performed (but not yet accepted) nor executed. PaymentResponse
400 Bad Request Bad Request - Validation error occurred. This code will cover malformed syntax in request or incorrect data in payload. FailedPaymentResponse
405 Method Not Allowed Method Not Allowed - This code is only sent when the HTTP method (PUT, POST, DELETE, GET etc.) is not supported by a specific endpoint. It has nothing to do with the consent, payment or account information data model. FailedPaymentResponse
415 Unsupported Media Type Unsupported Media Type - A media type which the serves does not support has been supplied. FailedPaymentResponse
500 Internal Server Error Internal Server Error - Internal server error occurred. FailedPaymentResponse
503 Service Unavailable Service Unavailable - The server is currently unavailable. Generally, this is a temporary state. None

Response Headers

Status Header Type Format Description
201 Location undefined Location of the created payment order request resource, for future reference or status polling.

getPaymentDetails

Code samples

# You can also use wget
curl -X GET https://TENANT_NAME.mambu.com/api/v1/payments/{paymentId} \
  -H 'Accept: application/json'

GET https://TENANT_NAME.mambu.com/api/v1/payments/{paymentId} HTTP/1.1
Host: tenant_name.mambu.com
Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('https://TENANT_NAME.mambu.com/api/v1/payments/{paymentId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get 'https://TENANT_NAME.mambu.com/api/v1/payments/{paymentId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('https://TENANT_NAME.mambu.com/api/v1/payments/{paymentId}', headers = headers)

print(r.json())

 'application/json',
);

$client = new \GuzzleHttp\Client();

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

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

 // ...

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

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

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

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

GET /payments/{paymentId}

Retrieve the payment initiation details for a given payment order ID.

Parameters

Name Type Description In
paymentId (required) string ID of the payment order, as received in the response to a POST /payments request path
detailsLevel string Details level of the response. STATUS and FULL detail levels are supported. STATUS will return the current status and a timestamp of when the payment order was last modified. The default value of FULL will return a complete set of information about the payment order. query

Example Responses

200 :
paymentStatusDetailsResponse

{
  "transactionStatus": "ACSC",
  "lastStatusUpdateTimestamp": "2019-03-15T09:34:00Z"
}

200 :
paymentFullDetailsResponse

{
  "transactionStatus": "ACSC",
  "lastStatusUpdateTimestamp": "2019-03-15T09:34:00Z",
  "paymentIdentification": {
    "transactionIdentification": "SCTORD156820190401000000000010"
  },
  "debtorAccount": {
    "identification": {
      "iban": "DE46606951125202071272"
    },
    "currency": "EUR"
  },
  "debtorName": "John Doe",
  "serviceLevel": "SEPA",
  "instructedAmount": {
    "currency": "EUR",
    "amount": "500"
  },
  "creditorAccount": {
    "identification": {
      "iban": "DE16195554277485442959"
    },
    "currency": "EUR"
  },
  "creditorAgent": {
    "institutionIdentification": {
      "bicfi": "DEUTDEFF"
    }
  },
  "creditorName": "Merchant123",
  "product": "SEPA_CREDIT_TRANSFER",
  "direction": "OUTGOING"
}

400 :
missingDetailsForPaymentId

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "path": "paymentId",
      "text": "Unable to find payment details for payment 123"
    }
  ]
}

405 :
unsupportedHttpMethod

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

406 :
unsupportedAcceptType

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

500 :
internalServerError

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK OK - Payment Initiation Details were correctly found. PaymentDetails
400 Bad Request Bad Request - Validation error occurred. This code will cover malformed syntax in request or incorrect data in payload. FailedPaymentResponse
405 Method Not Allowed Method Not Allowed - This code is only sent when the HTTP method (PUT, POST, DELETE, GET etc.) is not supported on a specific endpoint. It has nothing to do with the content, payment or account information data model. FailedPaymentResponse
406 Not Acceptable Not Acceptable - A media type which the serves does not support has been supplied. FailedPaymentResponse
500 Internal Server Error Internal Server Error - Internal server error occurred. FailedPaymentResponse
503 Service Unavailable Service Unavailable - The server is currently unavailable. Generally, this is a temporary state. None

manuallyRejectOutgoingPayment

Code samples

# You can also use wget
curl -X POST https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}:reject \
  -H 'Accept: application/json'

POST https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}:reject HTTP/1.1
Host: tenant_name.mambu.com
Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}:reject',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.post 'https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}:reject',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.post('https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}:reject', headers = headers)

print(r.json())

 'application/json',
);

$client = new \GuzzleHttp\Client();

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

try {
    $response = $client->request('POST','https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}:reject', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}:reject");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

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

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

POST /payments/{paymentOrderId}:reject

Manually Reject an Outgoing Payment.

Parameters

Name Type Description In
paymentOrderId (required) string none path

Example Responses

400 :
invalidTransactionStatus

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "INVALID_TRANSACTION_STATUS",
      "text": "Transaction has invalid status: TO_BE_REJECTED. Expected status is: TO_BE_SENT."
    }
  ]
}

500 :
internalServerError

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK OK - The specified payment order has been marked to be manually rejected. None
400 Bad Request Bad Request - Validation error occurred. This code will cover malformed syntax in request or incorrect data in payload. PaymentResponse-TPP
500 Internal Server Error Internal Server Error - Internal server error occurred. PaymentResponse-TPP
503 Service Unavailable Service Unavailable - The server is currently unavailable. Generally, this is a temporary state. None

recallOutgoingPayment

Code samples

# You can also use wget
curl -X POST https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}:recall \
  -H 'Content-Type: application/json' \
  -H 'Accept: */*'

POST https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}:recall HTTP/1.1
Host: tenant_name.mambu.com
Content-Type: application/json
Accept: */*

const inputBody = '{
  "customerRecallReasonCode": "AM09",
  "recallReasonCode": "FRAD"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'*/*'
};

fetch('https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}:recall',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => '*/*'
}

result = RestClient.post 'https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}:recall',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': '*/*'
}

r = requests.post('https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}:recall', headers = headers)

print(r.json())

 'application/json',
    'Accept' => '*/*',
);

$client = new \GuzzleHttp\Client();

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

try {
    $response = $client->request('POST','https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}:recall', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}:recall");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"*/*"},
    }

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

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

POST /payments/{paymentOrderId}:recall

Recall an outgoing payment.

Example Request

{
  "customerRecallReasonCode": "AM09",
  "recallReasonCode": "FRAD"
}

Parameters

Name Type Description In
paymentOrderId (required) string none path
body (required) Recall none body

Example Responses

400 :
badRecallReasonCode

500 :
internalServerError

Responses

Status Meaning Description Schema
200 OK OK - Payment marked to be recalled successfully. None
400 Bad Request Bad Request - Validation error occurred. This code will cover malformed syntax in request or incorrect data in payload. PaymentResponse-TPP
500 Internal Server Error Internal Server Error - Internal server error occurred. PaymentResponse-TPP
503 Service Unavailable Service Unavailable - The server is currently unavailable. Generally, this is a temporary state. None

denyOutgoingRecall

Code samples

# You can also use wget
curl -X POST https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}:denyOutgoingRecall \
  -H 'Accept: application/json'

POST https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}:denyOutgoingRecall HTTP/1.1
Host: tenant_name.mambu.com
Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}:denyOutgoingRecall',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.post 'https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}:denyOutgoingRecall',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.post('https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}:denyOutgoingRecall', headers = headers)

print(r.json())

 'application/json',
);

$client = new \GuzzleHttp\Client();

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

try {
    $response = $client->request('POST','https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}:denyOutgoingRecall', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}:denyOutgoingRecall");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

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

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

POST /payments/{paymentOrderId}:denyOutgoingRecall

Deny an Outgoing Recall.

Parameters

Name Type Description In
paymentOrderId (required) string none path

Example Responses

400 :
invalidPaymentOrderId

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "original transaction for Payment Order bac5161bd53348fa8dfc143cae49ba13 not found"
    }
  ]
}

500 :
internalServerError

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK OK - The specified outgoing recall has been marked to be rejected. None
400 Bad Request Bad Request - Validation error occurred. This code will cover malformed syntax in request or incorrect data in payload. PaymentResponse-TPP
500 Internal Server Error Internal Server Error - Internal server error occurred. PaymentResponse-TPP
503 Service Unavailable Service Unavailable - The server is currently unavailable. Generally, this is a temporary state. None

denyIncomingRecall

Code samples

# You can also use wget
curl -X POST https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}:denyIncomingRecall \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json'

POST https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}:denyIncomingRecall HTTP/1.1
Host: tenant_name.mambu.com
Content-Type: application/json
Accept: application/json

const inputBody = '{
  "additionalInformation": [
    "string"
  ],
  "originalRecallReasonAdditionalInformation": [
    "string"
  ],
  "rejectionReason": "ARDT"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json'
};

fetch('https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}:denyIncomingRecall',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json'
}

result = RestClient.post 'https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}:denyIncomingRecall',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

r = requests.post('https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}:denyIncomingRecall', headers = headers)

print(r.json())

 'application/json',
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

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

try {
    $response = $client->request('POST','https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}:denyIncomingRecall', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}:denyIncomingRecall");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
    }

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

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

POST /payments/{paymentOrderId}:denyIncomingRecall

Deny an Incoming Recall.

Example Request

{
  "additionalInformation": [
    "string"
  ],
  "originalRecallReasonAdditionalInformation": [
    "string"
  ],
  "rejectionReason": "ARDT"
}

Parameters

Name Type Description In
paymentOrderId (required) string none path
body (required) CancellationDetails none body

Example Responses

400 :
invalidRequest

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "Database update failed due to invalid request, expected number of updated rows is 1, actual number is: 0. The error message is: pending.authorized.failed"
    }
  ]
}

500 :
internalServerError

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK OK - The specified incoming recall has been marked to be rejected. None
400 Bad Request Bad Request - Validation error occurred. This code will cover malformed syntax in request or incorrect data in payload. PaymentResponse-TPP
500 Internal Server Error Internal Server Error - Internal server error occurred. PaymentResponse-TPP
503 Service Unavailable Service Unavailable - The server is currently unavailable. Generally, this is a temporary state. None

approveOutgoingRecall

Code samples

# You can also use wget
curl -X POST https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}:approveOutgoingRecall \
  -H 'Accept: application/json'

POST https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}:approveOutgoingRecall HTTP/1.1
Host: tenant_name.mambu.com
Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}:approveOutgoingRecall',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.post 'https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}:approveOutgoingRecall',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.post('https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}:approveOutgoingRecall', headers = headers)

print(r.json())

 'application/json',
);

$client = new \GuzzleHttp\Client();

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

try {
    $response = $client->request('POST','https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}:approveOutgoingRecall', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}:approveOutgoingRecall");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

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

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

POST /payments/{paymentOrderId}:approveOutgoingRecall

Approve an Outgoing Recall.

Parameters

Name Type Description In
paymentOrderId (required) string none path

Example Responses

400 :
invalidPaymentOrderId

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "original transaction for Payment Order bac5161bd53348fa8dfc143cae49ba13 not found"
    }
  ]
}

500 :
internalServerError

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK OK - The specified outgoing recall has been authorized. None
400 Bad Request Bad Request - Validation error occurred. This code will cover malformed syntax in request or incorrect data in payload. PaymentResponse-TPP
500 Internal Server Error Internal Server Error - Internal server error occurred. PaymentResponse-TPP
503 Service Unavailable Service Unavailable - The server is currently unavailable. Generally, this is a temporary state. None

approveIncomingRecall

Code samples

# You can also use wget
curl -X POST https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}:approveIncomingRecall \
  -H 'Accept: application/json'

POST https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}:approveIncomingRecall HTTP/1.1
Host: tenant_name.mambu.com
Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}:approveIncomingRecall',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.post 'https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}:approveIncomingRecall',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.post('https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}:approveIncomingRecall', headers = headers)

print(r.json())

 'application/json',
);

$client = new \GuzzleHttp\Client();

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

try {
    $response = $client->request('POST','https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}:approveIncomingRecall', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_NAME.mambu.com/api/v1/payments/{paymentOrderId}:approveIncomingRecall");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

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

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

POST /payments/{paymentOrderId}:approveIncomingRecall

Approve an Incoming Recall.

Parameters

Name Type Description In
paymentOrderId (required) string none path

Example Responses

400 :
invalidRequest

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "Database update failed due to invalid request, expected number of updated rows is 1, actual number is: 0. The error message is: pending.authorized.failed"
    }
  ]
}

500 :
internalServerError

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK OK - The specified incoming recall has been authorized. None
400 Bad Request Bad Request - Validation error occurred. This code will cover malformed syntax in request or incorrect data in payload. PaymentResponse-TPP
500 Internal Server Error Internal Server Error - Internal server error occurred. PaymentResponse-TPP
503 Service Unavailable Service Unavailable - The server is currently unavailable. Generally, this is a temporary state. None

SEPA Credit Transfer Inquiries

These APIs allow you to submit inquiries for SEPA payments including for cases where the customer claims to have not received the funds, the value date was not correctly recorded or to request a status update for payments which have been cancelled.

For more information on the types of inquiry supported and how to submit and respond to inquiries via the Mambu Payment Gateway UI, please refer to the relevant section of our User Guide, such as the SEPA credit transfer inquiries article for SEPA credit transfers.

skipStatusUpdateOnRecall

Code samples

# You can also use wget
curl -X POST https://TENANT_NAME.mambu.com/api/v1/inquiries:skipStatusUpdateOnRecall \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json'

POST https://TENANT_NAME.mambu.com/api/v1/inquiries:skipStatusUpdateOnRecall HTTP/1.1
Host: tenant_name.mambu.com
Content-Type: application/json
Accept: application/json

const inputBody = '{
  "groupHeader": {
    "messageIdentification": "82d7125b36014c2e8cc442a3586badd0",
    "creationDateTime": "2021-02-10T10:03:25",
    "instructingAgent": "ABCDE123"
  },
  "transactionInformation": {
    "statusRequestIdentification": "4112f6688c846a89bee2b2c476f1145"
  }
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json'
};

fetch('https://TENANT_NAME.mambu.com/api/v1/inquiries:skipStatusUpdateOnRecall',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json'
}

result = RestClient.post 'https://TENANT_NAME.mambu.com/api/v1/inquiries:skipStatusUpdateOnRecall',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

r = requests.post('https://TENANT_NAME.mambu.com/api/v1/inquiries:skipStatusUpdateOnRecall', headers = headers)

print(r.json())

 'application/json',
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

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

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

 // ...

URL obj = new URL("https://TENANT_NAME.mambu.com/api/v1/inquiries:skipStatusUpdateOnRecall");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
    }

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

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

POST /inquiries:skipStatusUpdateOnRecall

Skips response for Request for Status Update on Recall with given details.

Example Request

skipStatusUpdateOnRecall

{
  "groupHeader": {
    "messageIdentification": "82d7125b36014c2e8cc442a3586badd0",
    "creationDateTime": "2021-02-10T10:03:25",
    "instructingAgent": "ABCDE123"
  },
  "transactionInformation": {
    "statusRequestIdentification": "4112f6688c846a89bee2b2c476f1145"
  }
}

Parameters

Name Type Description In
body (required) SkipStatusUpdateOnRecall none body

Example Responses

400 :
invalidTransactionStatus

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "INVALID_TRANSACTION_STATUS",
      "text": "Transaction has invalid status: REPLY_SKIPPED"
    }
  ]
}

404 :
messageNotFound

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "NOT_FOUND",
      "text": "No pacs.028.001.01 was found for the supplied details"
    }
  ]
}

405 :
unsupportedHttpMethod

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

415 :
unsupportedContentType

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

500 :
internalServerError

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK OK - Request for skipping Status Update on Recall response was received None
400 Bad Request Bad Request - Invalid Transaction Status. PaymentResponse-TPP
404 Not Found Not Found - No message found for the given identification. PaymentResponse-TPP
405 Method Not Allowed Method Not Allowed - This code is only sent when the HTTP method (PUT, POST, DELETE, GET etc.) is not supported on a specific endpoint. It has nothing to do with the consent, payment or account information data model. PaymentResponse-TPP
415 Unsupported Media Type Unsupported Media Type - A media type which the server does not support has been supplied. PaymentResponse-TPP
500 Internal Server Error Internal Server Error - Internal server error occurred. PaymentResponse-TPP
503 Service Unavailable Service Unavailable - The server is currently unavailable. Generally, this is a temporary state. None

requestStatusUpdateOnRecall

Code samples

# You can also use wget
curl -X POST https://TENANT_NAME.mambu.com/api/v1/inquiries:requestStatusUpdateOnRecall \
  -H 'Content-Type: application/json' \
  -H 'Accept: */*'

POST https://TENANT_NAME.mambu.com/api/v1/inquiries:requestStatusUpdateOnRecall HTTP/1.1
Host: tenant_name.mambu.com
Content-Type: application/json
Accept: */*

const inputBody = '{
  "cancellationIdentification": "string",
  "groupHeader": {
    "messageIdentification": "string"
  },
  "historicCancellationRequest": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'*/*'
};

fetch('https://TENANT_NAME.mambu.com/api/v1/inquiries:requestStatusUpdateOnRecall',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => '*/*'
}

result = RestClient.post 'https://TENANT_NAME.mambu.com/api/v1/inquiries:requestStatusUpdateOnRecall',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': '*/*'
}

r = requests.post('https://TENANT_NAME.mambu.com/api/v1/inquiries:requestStatusUpdateOnRecall', headers = headers)

print(r.json())

 'application/json',
    'Accept' => '*/*',
);

$client = new \GuzzleHttp\Client();

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

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

 // ...

URL obj = new URL("https://TENANT_NAME.mambu.com/api/v1/inquiries:requestStatusUpdateOnRecall");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"*/*"},
    }

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

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

POST /inquiries:requestStatusUpdateOnRecall

Create inquiry to request status update for a payment cancellation.

Example Request

{
  "cancellationIdentification": "string",
  "groupHeader": {
    "messageIdentification": "string"
  },
  "historicCancellationRequest": "string"
}

Parameters

Name Type Description In
body (required) OriginalCamt056Data none body

Example Responses

400 :
originalTransactionNotFound

500 :
internalServerError

Responses

Status Meaning Description Schema
200 OK OK - Inquiry created successfully. None
400 Bad Request Bad Request - The original Payment Cancellation Request transaction not found. Please check the input parameters. PaymentResponse-TPP
500 Internal Server Error Internal Server Error - Internal server error occurred. PaymentResponse-TPP
503 Service Unavailable Service Unavailable - The server is currently unavailable. Generally, this is a temporary state. None

requestStatusUpdateOnInquiry

Code samples

# You can also use wget
curl -X POST https://TENANT_NAME.mambu.com/api/v1/inquiries:requestStatusUpdateOnInquiry \
  -H 'Content-Type: application/json' \
  -H 'Accept: */*'

POST https://TENANT_NAME.mambu.com/api/v1/inquiries:requestStatusUpdateOnInquiry HTTP/1.1
Host: tenant_name.mambu.com
Content-Type: application/json
Accept: */*

const inputBody = '{
  "assignment": {
    "creationDateTime": "2019-08-24T14:15:22Z",
    "identification": "string"
  },
  "caseIdentification": "string",
  "historicClaimRequest": "string",
  "messageTypeName": "PACS_002_001_03"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'*/*'
};

fetch('https://TENANT_NAME.mambu.com/api/v1/inquiries:requestStatusUpdateOnInquiry',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => '*/*'
}

result = RestClient.post 'https://TENANT_NAME.mambu.com/api/v1/inquiries:requestStatusUpdateOnInquiry',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': '*/*'
}

r = requests.post('https://TENANT_NAME.mambu.com/api/v1/inquiries:requestStatusUpdateOnInquiry', headers = headers)

print(r.json())

 'application/json',
    'Accept' => '*/*',
);

$client = new \GuzzleHttp\Client();

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

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

 // ...

URL obj = new URL("https://TENANT_NAME.mambu.com/api/v1/inquiries:requestStatusUpdateOnInquiry");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"*/*"},
    }

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

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

POST /inquiries:requestStatusUpdateOnInquiry

Create status update request for existing camt.087 or camt.027 inquiry

Example Request

{
  "assignment": {
    "creationDateTime": "2019-08-24T14:15:22Z",
    "identification": "string"
  },
  "caseIdentification": "string",
  "historicClaimRequest": "string",
  "messageTypeName": "PACS_002_001_03"
}

Parameters

Name Type Description In
body (required) OriginalInquiryData none body

Example Responses

400 :
originalTransactionNotFound

500 :
internalServerError

Responses

Status Meaning Description Schema
200 OK OK - Inquiry created successfully. None
400 Bad Request Bad Request - The original Credit transfer transaction not found. Please check the input parameters. PaymentResponse-TPP
500 Internal Server Error Internal Server Error - Internal server error occurred. PaymentResponse-TPP
503 Service Unavailable Service Unavailable - The server is currently unavailable. Generally, this is a temporary state. None

rejectStatusUpdateOnRecall

Code samples

# You can also use wget
curl -X POST https://TENANT_NAME.mambu.com/api/v1/inquiries:rejectStatusUpdateOnRecall \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json'

POST https://TENANT_NAME.mambu.com/api/v1/inquiries:rejectStatusUpdateOnRecall HTTP/1.1
Host: tenant_name.mambu.com
Content-Type: application/json
Accept: application/json

const inputBody = '{
  "groupHeader": {
    "messageIdentification": "82d7125b36014c2e8cc442a3586badd0",
    "creationDateTime": "2021-02-10T10:03:25",
    "instructingAgent": "ABCDE123"
  },
  "transactionInformation": {
    "statusRequestIdentification": "4112f6688c846a89bee2b2c476f1145",
    "originalMessageIdentification": "22b8f938c6154877886a0c1fc9e74166",
    "originalInstructionIdentification": "562f8f9f8c6154844886a0c1fc9e7451"
  },
  "cancellationDetails": {
    "rejectionReason": "ARDT"
  }
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json'
};

fetch('https://TENANT_NAME.mambu.com/api/v1/inquiries:rejectStatusUpdateOnRecall',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json'
}

result = RestClient.post 'https://TENANT_NAME.mambu.com/api/v1/inquiries:rejectStatusUpdateOnRecall',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

r = requests.post('https://TENANT_NAME.mambu.com/api/v1/inquiries:rejectStatusUpdateOnRecall', headers = headers)

print(r.json())

 'application/json',
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

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

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

 // ...

URL obj = new URL("https://TENANT_NAME.mambu.com/api/v1/inquiries:rejectStatusUpdateOnRecall");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
    }

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

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

POST /inquiries:rejectStatusUpdateOnRecall

Handles negative response for Request for Status Update on Recall with given details.

Example Request

rejectStatusUpdateOnRecall

{
  "groupHeader": {
    "messageIdentification": "82d7125b36014c2e8cc442a3586badd0",
    "creationDateTime": "2021-02-10T10:03:25",
    "instructingAgent": "ABCDE123"
  },
  "transactionInformation": {
    "statusRequestIdentification": "4112f6688c846a89bee2b2c476f1145",
    "originalMessageIdentification": "22b8f938c6154877886a0c1fc9e74166",
    "originalInstructionIdentification": "562f8f9f8c6154844886a0c1fc9e7451"
  },
  "cancellationDetails": {
    "rejectionReason": "ARDT"
  }
}

Parameters

Name Type Description In
body (required) RejectStatusUpdateOnRecall none body

Example Responses

400 :
invalidValueForField

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "FORMAT_ERROR",
      "text": "The request body must not be empty"
    }
  ]
}

404 :
messageNotFound

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "NOT_FOUND",
      "text": "No pacs.028.001.01 was found for the supplied details"
    }
  ]
}

405 :
unsupportedHttpMethod

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

415 :
unsupportedContentType

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

500 :
internalServerError

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK OK - Request for Status Update on Recall negative response was received None
400 Bad Request Bad Request - Validation error occurred. PaymentResponse-TPP
404 Not Found Not Found - No message found for the given identification. PaymentResponse-TPP
405 Method Not Allowed Method Not Allowed - This code is only sent when the HTTP method (PUT, POST, DELETE, GET etc.) is not supported on a specific endpoint. It has nothing to do with the consent, payment or account information data model. PaymentResponse-TPP
415 Unsupported Media Type Unsupported Media Type - A media type which the server does not support has been supplied. PaymentResponse-TPP
500 Internal Server Error Internal Server Error - Internal server error occurred. PaymentResponse-TPP
503 Service Unavailable Service Unavailable - The server is currently unavailable. Generally, this is a temporary state. None

claimValueDateCorrection

Code samples

# You can also use wget
curl -X POST https://TENANT_NAME.mambu.com/api/v1/inquiries:claimValueDateCorrection \
  -H 'Content-Type: application/json' \
  -H 'Accept: */*'

POST https://TENANT_NAME.mambu.com/api/v1/inquiries:claimValueDateCorrection HTTP/1.1
Host: tenant_name.mambu.com
Content-Type: application/json
Accept: */*

const inputBody = '{
  "claimedValueDate": "2019-08-24",
  "groupHeader": {
    "messageIdentification": "string",
    "settlementDate": "2019-08-24"
  },
  "historicCreditTransferRequest": "string",
  "paymentIdentification": {
    "endToEndIdentification": "string",
    "transactionIdentification": "string"
  }
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'*/*'
};

fetch('https://TENANT_NAME.mambu.com/api/v1/inquiries:claimValueDateCorrection',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => '*/*'
}

result = RestClient.post 'https://TENANT_NAME.mambu.com/api/v1/inquiries:claimValueDateCorrection',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': '*/*'
}

r = requests.post('https://TENANT_NAME.mambu.com/api/v1/inquiries:claimValueDateCorrection', headers = headers)

print(r.json())

 'application/json',
    'Accept' => '*/*',
);

$client = new \GuzzleHttp\Client();

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

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

 // ...

URL obj = new URL("https://TENANT_NAME.mambu.com/api/v1/inquiries:claimValueDateCorrection");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"*/*"},
    }

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

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

POST /inquiries:claimValueDateCorrection

Create inquiry to request claim for value-date change.

Example Request

{
  "claimedValueDate": "2019-08-24",
  "groupHeader": {
    "messageIdentification": "string",
    "settlementDate": "2019-08-24"
  },
  "historicCreditTransferRequest": "string",
  "paymentIdentification": {
    "endToEndIdentification": "string",
    "transactionIdentification": "string"
  }
}

Parameters

Name Type Description In
body (required) OriginalPacs008Data none body

Example Responses

400 :
originalTransactionNotFound

500 :
internalServerError

Responses

Status Meaning Description Schema
200 OK OK - Inquiry created successfully. None
400 Bad Request Bad Request - The original Credit Transfer transaction not found. Please check the input parameters. PaymentResponse-TPP
500 Internal Server Error Internal Server Error - Internal server error occurred. PaymentResponse-TPP
503 Service Unavailable Service Unavailable - The server is currently unavailable. Generally, this is a temporary state. None

claimNonReceipt

Code samples

# You can also use wget
curl -X POST https://TENANT_NAME.mambu.com/api/v1/inquiries:claimNonReceipt \
  -H 'Content-Type: application/json' \
  -H 'Accept: */*'

POST https://TENANT_NAME.mambu.com/api/v1/inquiries:claimNonReceipt HTTP/1.1
Host: tenant_name.mambu.com
Content-Type: application/json
Accept: */*

const inputBody = '{
  "claimedValueDate": "2019-08-24",
  "groupHeader": {
    "messageIdentification": "string",
    "settlementDate": "2019-08-24"
  },
  "historicCreditTransferRequest": "string",
  "paymentIdentification": {
    "endToEndIdentification": "string",
    "transactionIdentification": "string"
  }
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'*/*'
};

fetch('https://TENANT_NAME.mambu.com/api/v1/inquiries:claimNonReceipt',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => '*/*'
}

result = RestClient.post 'https://TENANT_NAME.mambu.com/api/v1/inquiries:claimNonReceipt',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': '*/*'
}

r = requests.post('https://TENANT_NAME.mambu.com/api/v1/inquiries:claimNonReceipt', headers = headers)

print(r.json())

 'application/json',
    'Accept' => '*/*',
);

$client = new \GuzzleHttp\Client();

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

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

 // ...

URL obj = new URL("https://TENANT_NAME.mambu.com/api/v1/inquiries:claimNonReceipt");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"*/*"},
    }

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

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

POST /inquiries:claimNonReceipt

Create inquiry for claim of non-receipt

Example Request

{
  "claimedValueDate": "2019-08-24",
  "groupHeader": {
    "messageIdentification": "string",
    "settlementDate": "2019-08-24"
  },
  "historicCreditTransferRequest": "string",
  "paymentIdentification": {
    "endToEndIdentification": "string",
    "transactionIdentification": "string"
  }
}

Parameters

Name Type Description In
body (required) OriginalPacs008Data none body

Example Responses

400 :
originalTransactionNotFound

500 :
internalServerError

Responses

Status Meaning Description Schema
200 OK OK - Inquiry created successfully. None
400 Bad Request Bad Request - The original Credit transfer transaction not found. Please check the input parameters. PaymentResponse-TPP
500 Internal Server Error Internal Server Error - Internal server error occurred. PaymentResponse-TPP
503 Service Unavailable Service Unavailable - The server is currently unavailable. Generally, this is a temporary state. None

acceptStatusUpdateOnRecall

Code samples

# You can also use wget
curl -X POST https://TENANT_NAME.mambu.com/api/v1/inquiries:acceptStatusUpdateOnRecall \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json'

POST https://TENANT_NAME.mambu.com/api/v1/inquiries:acceptStatusUpdateOnRecall HTTP/1.1
Host: tenant_name.mambu.com
Content-Type: application/json
Accept: application/json

const inputBody = '{
  "groupHeader": {
    "messageIdentification": "82d7125b36014c2e8cc442a3586badd0",
    "creationDateTime": "2021-02-10T10:03:25",
    "instructingAgent": "ABCDE123"
  },
  "transactionInformation": {
    "statusRequestIdentification": "4112f6688c846a89bee2b2c476f1145",
    "originalMessageIdentification": "22b8f938c6154877886a0c1fc9e74166",
    "originalInstructionIdentification": "562f8f9f8c6154844886a0c1fc9e7451"
  }
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json'
};

fetch('https://TENANT_NAME.mambu.com/api/v1/inquiries:acceptStatusUpdateOnRecall',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json'
}

result = RestClient.post 'https://TENANT_NAME.mambu.com/api/v1/inquiries:acceptStatusUpdateOnRecall',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

r = requests.post('https://TENANT_NAME.mambu.com/api/v1/inquiries:acceptStatusUpdateOnRecall', headers = headers)

print(r.json())

 'application/json',
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

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

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

 // ...

URL obj = new URL("https://TENANT_NAME.mambu.com/api/v1/inquiries:acceptStatusUpdateOnRecall");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
    }

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

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

POST /inquiries:acceptStatusUpdateOnRecall

Handles positive response for Request for Status Update on Recall with given details.

Example Request

acceptStatusUpdateOnRecall

{
  "groupHeader": {
    "messageIdentification": "82d7125b36014c2e8cc442a3586badd0",
    "creationDateTime": "2021-02-10T10:03:25",
    "instructingAgent": "ABCDE123"
  },
  "transactionInformation": {
    "statusRequestIdentification": "4112f6688c846a89bee2b2c476f1145",
    "originalMessageIdentification": "22b8f938c6154877886a0c1fc9e74166",
    "originalInstructionIdentification": "562f8f9f8c6154844886a0c1fc9e7451"
  }
}

Parameters

Name Type Description In
body (required) AcceptStatusUpdateOnRecall none body

Example Responses

400 :
invalidValueForField

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "FORMAT_ERROR",
      "text": "The request body must not be empty"
    }
  ]
}

404 :
messageNotFound

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "NOT_FOUND",
      "text": "No pacs.028.001.01 was found for the supplied details"
    }
  ]
}

405 :
unsupportedHttpMethod

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

415 :
unsupportedContentType

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

500 :
internalServerError

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK OK - Request for Status Update on Recall positive response was received None
400 Bad Request Bad Request - Validation error occurred. PaymentResponse-TPP
404 Not Found Not Found - No message found for the given identification. PaymentResponse-TPP
405 Method Not Allowed Method Not Allowed - This code is only sent when the HTTP method (PUT, POST, DELETE, GET etc.) is not supported on a specific endpoint. It has nothing to do with the consent, payment or account information data model. PaymentResponse-TPP
415 Unsupported Media Type Unsupported Media Type - A media type which the server does not support has been supplied. PaymentResponse-TPP
500 Internal Server Error Internal Server Error - Internal server error occurred. PaymentResponse-TPP
503 Service Unavailable Service Unavailable - The server is currently unavailable. Generally, this is a temporary state. None

SEPA Direct Debit

SEPA Direct Debit Payments are one time or recurring payments made using the Single European Payment Area scheme for transactions made in Euros between accounts at banks within the SEPA area, which includes all EU countries as well as other territories such as Liechtenstein, Switzerland, the United Kingdom, Andorra and Nordic countries.

Mambu supports both the Core SEPA rulebook for individuals and the B2B scheme for companies. For more information on supported messages, flows and technical information, please refer to the SEPA Direct Debit section of our user guide.

createBlockingRule

Code samples

# You can also use wget
curl -X POST https://TENANT_NAME.mambu.com/api/v1/accounts/{accountId}/blocking-rules \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Content-Type: string'

POST https://TENANT_NAME.mambu.com/api/v1/accounts/{accountId}/blocking-rules HTTP/1.1
Host: tenant_name.mambu.com
Content-Type: application/json
Accept: application/json
Content-Type: string

const inputBody = '{
  "product": "SEPA_DIRECT_DEBIT"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Content-Type':'string'
};

fetch('https://TENANT_NAME.mambu.com/api/v1/accounts/{accountId}/blocking-rules',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Content-Type' => 'string'
}

result = RestClient.post 'https://TENANT_NAME.mambu.com/api/v1/accounts/{accountId}/blocking-rules',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Content-Type': 'string'
}

r = requests.post('https://TENANT_NAME.mambu.com/api/v1/accounts/{accountId}/blocking-rules', headers = headers)

print(r.json())

 'application/json',
    'Accept' => 'application/json',
    'Content-Type' => 'string',
);

$client = new \GuzzleHttp\Client();

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

try {
    $response = $client->request('POST','https://TENANT_NAME.mambu.com/api/v1/accounts/{accountId}/blocking-rules', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_NAME.mambu.com/api/v1/accounts/{accountId}/blocking-rules");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Content-Type": []string{"string"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://TENANT_NAME.mambu.com/api/v1/accounts/{accountId}/blocking-rules", data)
    req.Header = headers

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

POST /accounts/{accountId}/blocking-rules

Request a blocking rule to be added to a specific Mambu account. When a blocking rule has been added for a specific mandate ID, collection requests for that mandate will be rejected and a pacs.002 message sent as response with reason code MS02. If no specific mandate ID is provided, all direct debit collection requests for the given account will be rejected. For more information on blocking SEPA Direct Debits, consult the Blocking SEPA Direct Debits article in our user guide.

Example Request

createProductBlockingRule

{
  "product": "SEPA_DIRECT_DEBIT"
}

Parameters

Name Type Description In
Content-Type (required) string application/json header
accountId (required) string ID of the Mambu Deposit account. path
body CreateBlockingRule none body

Example Responses

400 :
productCannotBeBlocked

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "PARAMETER_NOT_SUPPORTED",
      "path": "product",
      "text": "SEPA_CREDIT_TRANSFER cannot be blocked"
    }
  ]
}

405 :
unsupportedHttpMethod

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

415 :
unsupportedContentType

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

500 :
internalServerError

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

Responses

Status Meaning Description Schema
202 Accepted Accepted - The Blocking Rule has been prepared for processing. None
400 Bad Request Bad Request - Validation error occurred. This code will cover malformed syntax in request or incorrect data in payload. FailedPaymentResponse
405 Method Not Allowed Method Not Allowed - This code is only sent when the HTTP method (PUT, POST, DELETE, GET etc.) is not supported by a specific endpoint. It has nothing to do with the content, payment or account information data model. FailedPaymentResponse
415 Unsupported Media Type Unsupported Media Type - A media type which the serves does not support has been supplied. FailedPaymentResponse
500 Internal Server Error Internal Server Error - Internal server error occurred. FailedPaymentResponse
503 Service Unavailable Service Unavailable - The server is currently unavailable. Generally, this is a temporary state. None

deleteBlockingRules

Code samples

# You can also use wget
curl -X DELETE https://TENANT_NAME.mambu.com/api/v1/accounts/{accountId}/blocking-rules \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Content-Type: string'

DELETE https://TENANT_NAME.mambu.com/api/v1/accounts/{accountId}/blocking-rules HTTP/1.1
Host: tenant_name.mambu.com
Content-Type: application/json
Accept: application/json
Content-Type: string

const inputBody = 'undefined';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Content-Type':'string'
};

fetch('https://TENANT_NAME.mambu.com/api/v1/accounts/{accountId}/blocking-rules',
{
  method: 'DELETE',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Content-Type' => 'string'
}

result = RestClient.delete 'https://TENANT_NAME.mambu.com/api/v1/accounts/{accountId}/blocking-rules',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Content-Type': 'string'
}

r = requests.delete('https://TENANT_NAME.mambu.com/api/v1/accounts/{accountId}/blocking-rules', headers = headers)

print(r.json())

 'application/json',
    'Accept' => 'application/json',
    'Content-Type' => 'string',
);

$client = new \GuzzleHttp\Client();

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

try {
    $response = $client->request('DELETE','https://TENANT_NAME.mambu.com/api/v1/accounts/{accountId}/blocking-rules', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_NAME.mambu.com/api/v1/accounts/{accountId}/blocking-rules");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Content-Type": []string{"string"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://TENANT_NAME.mambu.com/api/v1/accounts/{accountId}/blocking-rules", data)
    req.Header = headers

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

DELETE /accounts/{accountId}/blocking-rules

Request deletion of blocking rules for the specified Mambu account. If no request body is provided, all rules for the account will be removed, if you provide a JSON body with a specific mandate ID, only the rule for that mandate will be removed. For more information on blocking SEPA Direct Debits, consult the Blocking SEPA Direct Debits article in our user guide.

Example Request

deleteAllBlockingRules

undefined

Parameters

Name Type Description In
Content-Type (required) string application/json header
accountId (required) string ID of the Mambu Deposit account. path
body DeleteBlockingRule none body

Example Responses

405 :
unsupportedHttpMethod

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

415 :
unsupportedContentType

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

500 :
internalServerError

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

Responses

Status Meaning Description Schema
202 Accepted Accepted - Blocking rules for the specified account have been submitted for deletion. None
405 Method Not Allowed Method Not Allowed - This code is only sent when the HTTP method (PUT, POST, DELETE, GET etc.) is not supported by a specific endpoint. It has nothing to do with the consent, payment or account information data model. FailedPaymentResponse
415 Unsupported Media Type Unsupported Media Type - A media type which the serves does not support has been supplied. FailedPaymentResponse
500 Internal Server Error Internal Server Error - Internal server error occurred. FailedPaymentResponse
503 Service Unavailable Service Unavailable - The server is currently unavailable. Generally, this is a temporary state. None

initiateCollection

Code samples

# You can also use wget
curl -X POST https://TENANT_NAME.mambu.com/api/v1/collections \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Content-Type: string' \
  -H 'X-Request-ID: string' \
  -H 'Idempotency-Key: string'

POST https://TENANT_NAME.mambu.com/api/v1/collections HTTP/1.1
Host: tenant_name.mambu.com
Content-Type: application/json
Accept: application/json
Content-Type: string
X-Request-ID: string
Idempotency-Key: string

const inputBody = '{
  "debtorAccount": {
    "identification": {
      "iban": "DE46606951125202071272"
    },
    "currency": "EUR"
  },
  "debtorName": "John Doe",
  "serviceLevel": "SEPA",
  "instructedAmount": {
    "currency": "EUR",
    "amount": "500"
  },
  "creditorAccount": {
    "identification": {
      "iban": "DE16195554277485442959"
    },
    "currency": "EUR"
  },
  "creditorName": "Merchant123",
  "paymentIdentification": {
    "transactionIdentification": "113T9bs6ad48ga1216d772430401s01sd2"
  },
  "requestedExecutionDate": "2020-09-01",
  "mandateRelatedInformation": {
    "mandateIdentification": "16ead91c975c4881a60c",
    "dateOfSignature": "2020-01-31"
  },
  "paymentTypeInformation": {
    "sequenceType": "FRST"
  },
  "creditorSchemeIdentification": {
    "identification": {
      "privateIdentification": "I48799148795"
    }
  }
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Content-Type':'string',
  'X-Request-ID':'string',
  'Idempotency-Key':'string'
};

fetch('https://TENANT_NAME.mambu.com/api/v1/collections',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Content-Type' => 'string',
  'X-Request-ID' => 'string',
  'Idempotency-Key' => 'string'
}

result = RestClient.post 'https://TENANT_NAME.mambu.com/api/v1/collections',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Content-Type': 'string',
  'X-Request-ID': 'string',
  'Idempotency-Key': 'string'
}

r = requests.post('https://TENANT_NAME.mambu.com/api/v1/collections', headers = headers)

print(r.json())

 'application/json',
    'Accept' => 'application/json',
    'Content-Type' => 'string',
    'X-Request-ID' => 'string',
    'Idempotency-Key' => 'string',
);

$client = new \GuzzleHttp\Client();

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

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

 // ...

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

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Content-Type": []string{"string"},
        "X-Request-ID": []string{"string"},
        "Idempotency-Key": []string{"string"},
    }

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

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

POST /collections

Creates a collection initiation request. This covers the flows as described in the SEPA Direct Debit section of our user guide.

Example Request

initiateCollectionRequest

{
  "debtorAccount": {
    "identification": {
      "iban": "DE46606951125202071272"
    },
    "currency": "EUR"
  },
  "debtorName": "John Doe",
  "serviceLevel": "SEPA",
  "instructedAmount": {
    "currency": "EUR",
    "amount": "500"
  },
  "creditorAccount": {
    "identification": {
      "iban": "DE16195554277485442959"
    },
    "currency": "EUR"
  },
  "creditorName": "Merchant123",
  "paymentIdentification": {
    "transactionIdentification": "113T9bs6ad48ga1216d772430401s01sd2"
  },
  "requestedExecutionDate": "2020-09-01",
  "mandateRelatedInformation": {
    "mandateIdentification": "16ead91c975c4881a60c",
    "dateOfSignature": "2020-01-31"
  },
  "paymentTypeInformation": {
    "sequenceType": "FRST"
  },
  "creditorSchemeIdentification": {
    "identification": {
      "privateIdentification": "I48799148795"
    }
  }
}

Parameters

Name Type Description In
Content-Type (required) string application/json header
X-Request-ID (required) string ID of the request, unique to the call, as determined by the initiating party. header
Idempotency-Key string Prevents retried requests to be executed multiple times. Subsequent requests with the same Idempotency Key will not be processed and will return a cached result. header
body Collection none body

Example Responses

201 :
initiateCollectionResponse

{
  "transactionStatus": "RCVD",
  "collectionId": "e38458a4-d955-4a39-8e21-9608e9600b3d"
}

400 :
missingMandatoryField

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "FORMAT_ERROR",
      "path": "debtorAccount.identification",
      "text": "debtorAccount.identification may not be null"
    }
  ]
}

405 :
unsupportedHttpMethod

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

415 :
unsupportedContentType

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

500 :
internalServerError

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

Responses

Status Meaning Description Schema
201 Created Created - Collection Initiation request was correctly performed (but not yet accepted) nor executed. CollectionResponse
400 Bad Request Bad Request - Validation error occurred. This code will cover malformed syntax in request or incorrect data in payload. FailedPaymentResponse
405 Method Not Allowed Method Not Allowed - This code is only sent when the HTTP method (PUT, POST, DELETE, GET etc.) is not supported on a specific endpoint. It has nothing to do with the content, payment or account information data model. FailedPaymentResponse
415 Unsupported Media Type Unsupported Media Type - A media type which the serves does not support has been supplied. FailedPaymentResponse
500 Internal Server Error Internal Server Error - Internal server error occurred. FailedPaymentResponse
503 Service Unavailable Service Unavailable - The server is currently unavailable. Generally, this is a temporary state. None

Response Headers

Status Header Type Format Description
201 Location undefined Location of the created collection order request resource, for future reference or status polling.

getCollectionDetails

Code samples

# You can also use wget
curl -X GET https://TENANT_NAME.mambu.com/api/v1/collections/{collectionId} \
  -H 'Accept: application/json'

GET https://TENANT_NAME.mambu.com/api/v1/collections/{collectionId} HTTP/1.1
Host: tenant_name.mambu.com
Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('https://TENANT_NAME.mambu.com/api/v1/collections/{collectionId}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get 'https://TENANT_NAME.mambu.com/api/v1/collections/{collectionId}',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('https://TENANT_NAME.mambu.com/api/v1/collections/{collectionId}', headers = headers)

print(r.json())

 'application/json',
);

$client = new \GuzzleHttp\Client();

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

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

 // ...

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

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

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

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

GET /collections/{collectionId}

Retrieve details for a given collection ID.

Parameters

Name Type Description In
collectionId (required) string ID of the collection order, as received in the response to a POST /collections request or from the instruction ID field of a collection. You can retrieve the instruction ID in the Payment Gateway UI by opening up the detail view of a collection and looking for the value of InstId in the Payment Identification object. path
detailsLevel string Details level of the response. STATUS and FULL detail levels are supported. STATUS will return the current status and a timestamp of when the collection order was last modified. The default value of FULL will return a complete set of information about the collection order. query

Example Responses

200 :
collectionStatusDetailsResponse

{
  "transactionStatus": "ACSC",
  "lastStatusUpdateTimestamp": "2019-03-15T09:34:00Z"
}

200 :
collectionFullDetailsResponse

{
  "transactionStatus": "ACSC",
  "lastStatusUpdateTimestamp": "2019-03-15T09:34:00.000Z",
  "paymentIdentification": {
    "transactionIdentification": "SCTORD156820190401000000000010"
  },
  "debtorAccount": {
    "identification": {
      "iban": "DE46606951125202071272"
    },
    "currency": "EUR"
  },
  "debtorName": "John Doe",
  "serviceLevel": "SEPA",
  "instructedAmount": {
    "currency": "EUR",
    "amount": "500"
  },
  "creditorAccount": {
    "identification": {
      "iban": "DE16195554277485442959"
    },
    "currency": "EUR"
  },
  "creditorAgent": {
    "institutionIdentification": {
      "bicfi": "DEUTDEFF"
    }
  },
  "creditorName": "Merchant123",
  "product": "SEPA_DIRECT_DEBIT",
  "direction": "INCOMING",
  "mandateRelatedInformation": {
    "mandateIdentification": "mandate-id",
    "dateOfSignature": "22-03-2020"
  },
  "paymentTypeInformation": {
    "sequenceType": "OOFF"
  },
  "creditorSchemeIdentification": {
    "identification": {
      "privateIdentification": "pr2432edax132131"
    }
  }
}

400 :
missingDetailsForCollectionId

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "path": "collectionId",
      "text": "Unable to find collection details for collection 123"
    }
  ]
}

405 :
unsupportedHttpMethod

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

406 :
unsupportedAcceptType

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

500 :
internalServerError

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK OK - Collection Details were correctly found. CollectionDetails
400 Bad Request Bad Request - Validation error occurred. This code will cover malformed syntax in request or incorrect data in payload. FailedPaymentResponse
405 Method Not Allowed Method Not Allowed - This code is only sent when the HTTP method (PUT, POST, DELETE, GET etc.) is not supported on a specific endpoint. It has nothing to do with the content, payment or account information data model. FailedPaymentResponse
406 Not Acceptable Not Acceptable - A media type which the serves does not support has been supplied. FailedPaymentResponse
500 Internal Server Error Internal Server Error - Internal server error occurred. FailedPaymentResponse
503 Service Unavailable Service Unavailable - The server is currently unavailable. Generally, this is a temporary state. None

manuallyRejectOutgoingCollection

Code samples

# You can also use wget
curl -X POST https://TENANT_NAME.mambu.com/api/v1/collections/{collectionOrderId}:reject \
  -H 'Accept: application/json'

POST https://TENANT_NAME.mambu.com/api/v1/collections/{collectionOrderId}:reject HTTP/1.1
Host: tenant_name.mambu.com
Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('https://TENANT_NAME.mambu.com/api/v1/collections/{collectionOrderId}:reject',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.post 'https://TENANT_NAME.mambu.com/api/v1/collections/{collectionOrderId}:reject',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.post('https://TENANT_NAME.mambu.com/api/v1/collections/{collectionOrderId}:reject', headers = headers)

print(r.json())

 'application/json',
);

$client = new \GuzzleHttp\Client();

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

try {
    $response = $client->request('POST','https://TENANT_NAME.mambu.com/api/v1/collections/{collectionOrderId}:reject', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_NAME.mambu.com/api/v1/collections/{collectionOrderId}:reject");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

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

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

POST /collections/{collectionOrderId}:reject

Manually Reject an Outgoing Collection.

Parameters

Name Type Description In
collectionOrderId (required) string none path

Example Responses

400 :
invalidTransactionStatus

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "INVALID_TRANSACTION_STATUS",
      "text": "Transaction has invalid status: TO_BE_REJECTED. Expected status is: TO_BE_SENT."
    }
  ]
}

500 :
internalServerError

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK OK - The specified collection order has been marked to be manually rejected. None
400 Bad Request Bad Request - Validation error occurred. This code will cover malformed syntax in request or incorrect data in payload. PaymentResponse-TPP
500 Internal Server Error Internal Server Error - Internal server error occurred. PaymentResponse-TPP
503 Service Unavailable Service Unavailable - The server is currently unavailable. Generally, this is a temporary state. None

manuallyRejectIncomingCollection

Code samples

# You can also use wget
curl -X POST https://TENANT_NAME.mambu.com/api/v1/collections/{collectionOrderId}:rejectIncoming \
  -H 'Accept: application/json'

POST https://TENANT_NAME.mambu.com/api/v1/collections/{collectionOrderId}:rejectIncoming HTTP/1.1
Host: tenant_name.mambu.com
Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('https://TENANT_NAME.mambu.com/api/v1/collections/{collectionOrderId}:rejectIncoming',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.post 'https://TENANT_NAME.mambu.com/api/v1/collections/{collectionOrderId}:rejectIncoming',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.post('https://TENANT_NAME.mambu.com/api/v1/collections/{collectionOrderId}:rejectIncoming', headers = headers)

print(r.json())

 'application/json',
);

$client = new \GuzzleHttp\Client();

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

try {
    $response = $client->request('POST','https://TENANT_NAME.mambu.com/api/v1/collections/{collectionOrderId}:rejectIncoming', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_NAME.mambu.com/api/v1/collections/{collectionOrderId}:rejectIncoming");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

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

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

POST /collections/{collectionOrderId}:rejectIncoming

Manually Reject an Incoming Collection.

Parameters

Name Type Description In
collectionOrderId (required) string none path

Example Responses

400 :
invalidTransactionStatus

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "INVALID_TRANSACTION_STATUS",
      "text": "Transaction has invalid status: TO_BE_REJECTED. Expecting one of the following statuses: PENDING_SETTLEMENT, RECEIVED."
    }
  ]
}

500 :
internalServerError

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK OK - The specified collection order has been marked to be manually rejected. None
400 Bad Request Bad Request - Validation error occurred. This code will cover malformed syntax in request or incorrect data in payload. PaymentResponse-TPP
500 Internal Server Error Internal Server Error - Internal server error occurred. PaymentResponse-TPP
503 Service Unavailable Service Unavailable - The server is currently unavailable. Generally, this is a temporary state. None

reverse

Code samples

# You can also use wget
curl -X POST https://TENANT_NAME.mambu.com/api/v1/collections/{collectionId}:reverse \
  -H 'Content-Type: application/json' \
  -H 'Accept: */*'

POST https://TENANT_NAME.mambu.com/api/v1/collections/{collectionId}:reverse HTTP/1.1
Host: tenant_name.mambu.com
Content-Type: application/json
Accept: */*

const inputBody = '{
  "reasonCode": "AM05"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'*/*'
};

fetch('https://TENANT_NAME.mambu.com/api/v1/collections/{collectionId}:reverse',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => '*/*'
}

result = RestClient.post 'https://TENANT_NAME.mambu.com/api/v1/collections/{collectionId}:reverse',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': '*/*'
}

r = requests.post('https://TENANT_NAME.mambu.com/api/v1/collections/{collectionId}:reverse', headers = headers)

print(r.json())

 'application/json',
    'Accept' => '*/*',
);

$client = new \GuzzleHttp\Client();

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

try {
    $response = $client->request('POST','https://TENANT_NAME.mambu.com/api/v1/collections/{collectionId}:reverse', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_NAME.mambu.com/api/v1/collections/{collectionId}:reverse");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"*/*"},
    }

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

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

POST /collections/{collectionId}:reverse

Reverse a Collection Instruction.

Example Request

{
  "reasonCode": "AM05"
}

Parameters

Name Type Description In
collectionId (required) string none path
body (required) Reverse none body

Example Responses

400 :
badReversalReasonCode

500 :
internalServerError

Responses

Status Meaning Description Schema
200 OK OK - Collection Instruction marked to be reversed successfully. None
400 Bad Request Bad Request - Validation error occurred. This code will cover malformed syntax in request or incorrect data in payload. PaymentResponse-TPP
500 Internal Server Error Internal Server Error - Internal server error occurred. PaymentResponse-TPP
503 Service Unavailable Service Unavailable - The server is currently unavailable. Generally, this is a temporary state. None

refund

Code samples

# You can also use wget
curl -X POST https://TENANT_NAME.mambu.com/api/v1/collections/{collectionId}:refund \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json'

POST https://TENANT_NAME.mambu.com/api/v1/collections/{collectionId}:refund HTTP/1.1
Host: tenant_name.mambu.com
Content-Type: application/json
Accept: application/json

const inputBody = '{
  "reasonCode": "MD01"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json'
};

fetch('https://TENANT_NAME.mambu.com/api/v1/collections/{collectionId}:refund',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json'
}

result = RestClient.post 'https://TENANT_NAME.mambu.com/api/v1/collections/{collectionId}:refund',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

r = requests.post('https://TENANT_NAME.mambu.com/api/v1/collections/{collectionId}:refund', headers = headers)

print(r.json())

 'application/json',
    'Accept' => 'application/json',
);

$client = new \GuzzleHttp\Client();

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

try {
    $response = $client->request('POST','https://TENANT_NAME.mambu.com/api/v1/collections/{collectionId}:refund', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

URL obj = new URL("https://TENANT_NAME.mambu.com/api/v1/collections/{collectionId}:refund");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
    }

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

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

POST /collections/{collectionId}:refund

Refund a Collection Instruction.

Example Request

{
  "reasonCode": "MD01"
}

Parameters

Name Type Description In
collectionId (required) string none path
body (required) Refund none body

Example Responses

400 :
badRefundReasonCode

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "PARAMETER_NOT_SUPPORTED",
      "text": "value 'MD02' not supported"
    }
  ]
}

500 :
internalServerError

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK OK - Collection Instruction marked to be refunded successfully. None
400 Bad Request Bad Request - Validation error occurred. This code will cover malformed syntax in request or incorrect data in payload. PaymentResponse-TPP
500 Internal Server Error Internal Server Error - Internal server error occurred. PaymentResponse-TPP
503 Service Unavailable Service Unavailable - The server is currently unavailable. Generally, this is a temporary state. None

Search Messages

Use this endpoint to search for SEPA Credit Transfer and Direct Debit messages received by the Mambu Payment Gateway.

findSepaMessages

Code samples

# You can also use wget
curl -X GET https://TENANT_NAME.mambu.com/api/v1/instructions?sepaMessageFilter=dateFrom,string,dateTo,string,direction,string,limit,1,messageId,string,messageType,string,network,string,offset,0,transactionsLimit,0,transactionsOffset,0 \
  -H 'Accept: application/json'

GET https://TENANT_NAME.mambu.com/api/v1/instructions?sepaMessageFilter=dateFrom,string,dateTo,string,direction,string,limit,1,messageId,string,messageType,string,network,string,offset,0,transactionsLimit,0,transactionsOffset,0 HTTP/1.1
Host: tenant_name.mambu.com
Accept: application/json


const headers = {
  'Accept':'application/json'
};

fetch('https://TENANT_NAME.mambu.com/api/v1/instructions?sepaMessageFilter=dateFrom,string,dateTo,string,direction,string,limit,1,messageId,string,messageType,string,network,string,offset,0,transactionsLimit,0,transactionsOffset,0',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

require 'rest-client'
require 'json'

headers = {
  'Accept' => 'application/json'
}

result = RestClient.get 'https://TENANT_NAME.mambu.com/api/v1/instructions',
  params: {
  'sepaMessageFilter' => '[SepaMessageFilter](#schemasepamessagefilter)'
}, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('https://TENANT_NAME.mambu.com/api/v1/instructions', params={
  'sepaMessageFilter': {
  "dateFrom": "string",
  "dateTo": "string",
  "direction": "string",
  "limit": 1,
  "messageId": "string",
  "messageType": "string",
  "network": "string",
  "offset": 0,
  "transactionsLimit": 0,
  "transactionsOffset": 0
}
}, headers = headers)

print(r.json())

 'application/json',
);

$client = new \GuzzleHttp\Client();

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

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

 // ...

URL obj = new URL("https://TENANT_NAME.mambu.com/api/v1/instructions?sepaMessageFilter=dateFrom,string,dateTo,string,direction,string,limit,1,messageId,string,messageType,string,network,string,offset,0,transactionsLimit,0,transactionsOffset,0");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
    }

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

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

GET /instructions

Retrieve the SEPA messages details.

Parameters

Name Type Description In
sepaMessageFilter (required) SepaMessageFilter none query

Example Responses

200 :
pacs.008 instruction information

{
  "instructions": [
    {
      "FIToFICstmrCdtTrf": {
        "grpHdr": {
          "msgId": "22b8f938c6154877886a0c1fc9e74166",
          "creDtTm": "2019-04-11T09:08:45+03:00",
          "nbOfTxs": "2",
          "ttlIntrBkSttlmAmt": {
            "value": 200,
            "ccy": "EUR"
          },
          "intrBkSttlmDt": "2019-04-11T00:00:00+03:00",
          "sttlmInf": {
            "clrSys": {
              "prtry": "ST2"
            }
          },
          "instgAgt": {
            "finInstnId": {
              "bic": "ABVRATW1XXX"
            }
          }
        },
        "cdtTrfTxInf": [
          {
            "pmtId": {
              "instrId": "82d7125b36014c2e8cc442a3586badd0",
              "endToEndId": "NOTPROVIDED",
              "txId": "4112f6688c846a89bee2b2c476f1145"
            },
            "pmtTpInf": {
              "svcLvl": {
                "cd": "SEPA"
              }
            },
            "intrBkSttlmAmt": {
              "value": 100,
              "ccy": "EUR"
            },
            "accptncDtTm": "2019-04-11T09:08:45+03:00",
            "chrgBr": "SLEV",
            "dbtr": {
              "nm": "John Doe"
            },
            "dbtrAcct": {
              "id": {
                "iban": "RO59INGBW91QIQFZSG6IZBJT"
              }
            },
            "dbtrAgt": {
              "finInstnId": {
                "bic": "INGBROBU"
              }
            },
            "cdtrAgt": {
              "finInstnId": {
                "bic": "BTRLRO22"
              }
            },
            "cdtr": {
              "nm": "BT",
              "pstlAdr": {
                "ctry": "DE"
              }
            },
            "cdtrAcct": {
              "id": {
                "iban": "RO75BTRLBSIJS00RPQWYLYWL"
              }
            },
            "_metadata": {
              "transactionSn": 1,
              "transactionStatus": "RECEIVED",
              "paymentId": "67eacbf33f1b4eaea8d1055a2a01adea"
            }
          },
          {
            "pmtId": {
              "instrId": "108cf3f5fd833aa5bc5efb90c0dee19e",
              "endToEndId": "NOTPROVIDED",
              "txId": "758e663666ae40be8e9278a9e4e899f9"
            },
            "pmtTpInf": {
              "svcLvl": {
                "cd": "SEPA"
              }
            },
            "intrBkSttlmAmt": {
              "value": 100,
              "ccy": "EUR"
            },
            "accptncDtTm": "2019-04-11T09:08:45+03:00",
            "chrgBr": "SLEV",
            "dbtr": {
              "nm": "John Doe"
            },
            "dbtrAcct": {
              "id": {
                "iban": "RO59INGBW91QIQFZSG6IZBJT"
              }
            },
            "dbtrAgt": {
              "finInstnId": {
                "bic": "INGBROBU"
              }
            },
            "cdtrAgt": {
              "finInstnId": {
                "bic": "BTRLRO22"
              }
            },
            "cdtr": {
              "nm": "BT",
              "pstlAdr": {
                "ctry": "DE"
              }
            },
            "cdtrAcct": {
              "id": {
                "iban": "RO94BTRLVU048EN2KBPTVT7U"
              }
            },
            "_metadata": {
              "transactionSn": 2,
              "transactionStatus": "RECEIVED",
              "paymentId": "fcaae256fed94018958326c9cb752aeb"
            }
          }
        ],
        "_metadata": {
          "bulkSn": 1,
          "direction": "I",
          "messageId": "pacs.008",
          "transactions": 2
        }
      }
    }
  ]
}

200 :
pacs.004 instruction information

{
  "instructions": [
    {
      "PmtRtr": {
        "grpHdr": {
          "msgId": "1",
          "creDtTm": "2018-11-26T21:47:57+02:00",
          "nbOfTxs": "1",
          "ttlRtrdIntrBkSttlmAmt": {
            "value": 4000.5,
            "ccy": "EUR"
          },
          "intrBkSttlmDt": "2018-11-26T00:00:00+02:00",
          "sttlmInf": {
            "sttlmMtd": "CLRG",
            "clrSys": {
              "prtry": "ST2"
            }
          }
        },
        "txInf": [
          {
            "rtrId": "2020181126130827322001",
            "orgnlGrpInf": {
              "orgnlMsgId": "1231231312",
              "orgnlMsgNmId": "pacs.008"
            },
            "orgnlEndToEndId": "10864caa82034bc8a12e4bf3e117d10d",
            "orgnlTxId": "8097758122275259",
            "rtrdIntrBkSttlmAmt": {
              "value": 4000.5,
              "ccy": "EUR"
            },
            "rtrRsnInf": {
              "orgtr": {
                "id": {
                  "orgId": {
                    "bicorBEI": "DABADKKK"
                  }
                }
              },
              "rsn": {
                "cd": "AC_01"
              }
            },
            "orgnlTxRef": {
              "intrBkSttlmDt": "2018-11-26T00:00:00+02:00",
              "sttlmInf": {
                "sttlmMtd": "CLRG"
              },
              "pmtTpInf": {
                "svcLvl": {
                  "cd": "SEPA"
                }
              },
              "dbtr": {
                "nm": "Hanne Doe"
              },
              "dbtrAcct": {
                "id": {
                  "iban": "DK0643182702662691"
                }
              },
              "dbtrAgt": {
                "finInstnId": {
                  "bic": "DABADKKK"
                }
              },
              "cdtrAgt": {
                "finInstnId": {
                  "bic": "BTRLRO22"
                }
              },
              "cdtr": {
                "nm": "John Doe"
              },
              "cdtrAcct": {
                "id": {
                  "iban": "RO69BTRL3333444433334444"
                }
              }
            },
            "_metadata": {
              "transactionSn": 14,
              "transactionStatus": "RECEIVED",
              "returnReason": "AC01",
              "paymentId": "22886adc407e4280b7df22a966d08425"
            }
          }
        ],
        "_metadata": {
          "bulkSn": 10,
          "direction": "I",
          "messageId": "pacs.004.001.02",
          "procstatus": "REPLIED",
          "transactions": 1
        }
      }
    }
  ]
}

200 :
camt.056 instruction information

{
  "instructions": [
    {
      "FIToFIPmtCxlReq": {
        "assgnmt": {
          "id": "msg-id-camt.056.001.01",
          "assgnr": {
            "agt": {
              "finInstnId": {
                "bic": "TESTXXXXXXX"
              }
            }
          },
          "assgne": {
            "agt": {
              "finInstnId": {
                "bic": "TESTXXXXXXX"
              }
            }
          },
          "creDtTm": "2019-05-14T21:00:00.000+0000"
        },
        "ctrlData": {
          "nbOfTxs": 1
        },
        "undrlyg": [
          {
            "txInf": {
              "cxlId": "000R9087000000011",
              "orgnlGrpInf": {
                "orgnlMsgId": "SCTORD15682019",
                "orgnlMsgNmId": "pacs.008.001.02"
              },
              "orgnlInstrId": "6630844036108666",
              "orgnlEndToEndId": "NOTPROVIDED",
              "orgnlTxId": "8097758122275259",
              "orgnlIntrBkSttlmAmt": {
                "value": 4000.5,
                "ccy": "EUR"
              },
              "orgnlIntrBkSttlmDt": "2019-06-19T21:00:00.000+0000",
              "cxlRsnInf": [
                {
                  "orgtr": {
                    "nm": "Beneficioso beneficiar io"
                  },
                  "rsn": {
                    "cd": "DUPL"
                  }
                }
              ],
              "orgnlTxRef": {
                "sttlmInf": {
                  "sttlmMtd": "CLRG",
                  "clrSys": {
                    "cd": "REP"
                  }
                },
                "pmtTpInf": {
                  "svcLvl": {
                    "cd": "SEPA"
                  }
                },
                "rmtInf": {
                  "ustrd": [
                    "Pruebas para CECA 1"
                  ]
                },
                "ultmtDbtr": {
                  "nm": "EUR"
                },
                "dbtr": {
                  "nm": "ENRIQUE ROMERA MARTINEZ DE MIGUEL"
                },
                "dbtrAcct": {
                  "id": {
                    "iban": "ES1011110001087939390799"
                  }
                },
                "dbtrAgt": {
                  "finInstnId": {
                    "bic": "TESTXXXXXXX"
                  }
                },
                "cdtrAgt": {
                  "finInstnId": {
                    "bic": "TESTXXXXXXX"
                  }
                },
                "cdtr": {
                  "nm": "Beneficioso beneficiario"
                },
                "cdtrAcct": {
                  "id": {
                    "iban": "ES6520950001153279157264"
                  }
                }
              },
              "_metadata": {
                "transactionSn": 2,
                "transactionStatus": "TO_BE_SENT",
                "returnReason": "DUPL",
                "paymentId": "poId"
              }
            }
          }
        ],
        "_metadata": {
          "bulkSn": 2,
          "direction": "I",
          "messageId": "camt.056.001.01",
          "procstatus": "RETRIEVED",
          "transactions": 1
        }
      }
    }
  ]
}

200 :
camt.029 instruction information

{
  "instructions": [
    {
      "RsltnOfInvstgtn": {
        "assgnmt": {
          "id": "msg-id-camt.029.001.03",
          "assgnr": {
            "agt": {
              "finInstnId": {
                "bic": "TESTXXXXXXX"
              }
            }
          },
          "assgne": {
            "agt": {
              "finInstnId": {
                "bic": "TESTXXXXXXX"
              }
            }
          },
          "creDtTm": "2019-05-14T21:00:00.000+0000"
        },
        "sts": {
          "conf": "RJCT"
        },
        "cxlDtls": [
          {
            "txInfAndSts": {
              "cxlStsId": "568R9",
              "orgnlGrpInf": {
                "orgnlMsgId": "SCTORD156820190620000000000001",
                "orgnlMsgNmId": "pacs.008.001.02"
              },
              "orgnlInstrId": "a5fbae19e3d24522963ad60d018f2e49",
              "orgnlEndToEndId": "7456b0bb2c1a4209b87b4636995c5d08",
              "orgnlTxId": "1002",
              "txCxlSts": "RJCR",
              "cxlStsRsnInf": [
                {
                  "orgtr": {
                    "id": {
                      "orgId": {
                        "bicorBEI": "TESTXXXXXXX"
                      }
                    }
                  },
                  "rsn": {
                    "cd": "AGNT"
                  }
                }
              ],
              "orgnlTxRef": {
                "intrBkSttlmAmt": {
                  "value": 4000.5,
                  "ccy": "EUR"
                },
                "intrBkSttlmDt": "2019-06-19T21:00:00.000+0000",
                "sttlmInf": {
                  "sttlmMtd": "CLRG",
                  "clrSys": {
                    "prtry": "ACHT1234567890123456789012345678905"
                  }
                },
                "pmtTpInf": {
                  "svcLvl": {
                    "cd": "SEPA"
                  }
                },
                "rmtInf": {
                  "ustrd": [
                    "Pruebas para CECA 1"
                  ]
                },
                "dbtr": {
                  "nm": "ENRIQUE ROMERA MARTINEZ DE MIGUEL"
                },
                "dbtrAcct": {
                  "id": {
                    "iban": "ES1011110001087939390799"
                  }
                },
                "dbtrAgt": {
                  "finInstnId": {
                    "bic": "TESTXXXXXXX"
                  }
                },
                "cdtrAgt": {
                  "finInstnId": {
                    "bic": "TESTXXXXXXX"
                  }
                },
                "cdtr": {
                  "nm": "Beneficioso beneficiario"
                },
                "cdtrAcct": {
                  "id": {
                    "iban": "ES6520950001153279157264"
                  }
                }
              },
              "_metadata": {
                "transactionSn": 3,
                "transactionStatus": "TO_BE_SENT",
                "returnReason": "RJCT",
                "paymentId": "poId"
              }
            }
          }
        ],
        "_metadata": {
          "bulkSn": 3,
          "direction": "O",
          "messageId": "camt.029.001.03",
          "procstatus": "RETRIEVED",
          "transactions": 1
        }
      }
    }
  ]
}

400 :
invalidDirection

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "PARAMETER_NOT_SUPPORTED",
      "text": "direction invalid value: example_invalid_direction"
    }
  ]
}

500 :
internalServerError

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "SERVICE_INVALID",
      "text": "There was an error processing your request. It has been logged (ID a449ea6319107e42)."
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK OK - SEPA Messages Details were correctly found. SepaMessages
400 Bad Request Bad Request - Validation error occurred. This code will cover malformed syntax in request or incorrect data in payload. PaymentResponse-TPP
500 Internal Server Error Internal Server Error - Internal server error occurred. PaymentResponse-TPP
503 Service Unavailable Service Unavailable - The server is currently unavailable. Generally, this is a temporary state. None

Schemas

AcceptStatusUpdateOnRecall

{
  "groupHeader": {
    "creationDateTime": "string",
    "instructingAgent": "string",
    "messageIdentification": "string"
  },
  "transactionInformation": {
    "originalInstructionIdentification": "string",
    "originalMessageIdentification": "string",
    "statusRequestIdentification": "string"
  }
}

Properties

Name Type Description Restrictions
groupHeader (required) GroupHeaderIncoming Set of characteristics shared by all individual transactions included in the Request for Status Update on Recall message none
transactionInformation (required) TransactionInformation Information concerning the original transaction, to which the Request for Status Update on Recall message refers none

Account

{
  "currency": "str",
  "identification": {
    "iban": "stringstringstr",
    "other": {
      "identification": "string",
      "scheme": "string"
    }
  }
}

Settlement account used when settlement method is INDA/INGA.

Properties

Name Type Description Restrictions
currency string ISO 4217 Alpha 3 currency code. none
identification (required) Identification Unique and unambiguous identification for the account. none

AccountDTO

{
  "currency": "str",
  "identification": {
    "iban": "stringstringstr"
  }
}

Beneficiary’s account.

Properties

Name Type Description Restrictions
currency string ISO 4217 Alpha 3 currency code. none
identification (required) IdentificationDTO Unique and unambiguous identification for the account. none

AccountIdentificationsFilterCriteriaDTO

{
  "field": "SCHEME",
  "operator": "EQUALS",
  "value": "string"
}

Account identification search criteria

Properties

Name Type Description Restrictions
field (required) string Contains the actual searching fields that can be native (one from the provided list) none
operator (required) string EQUALS - checks that 'field' equals to 'value' (strict equals, does not support parts or masks) none
value string The value to match the searching criteria none

Enumerated Values

Property Value
field SCHEME
field IBAN
field IDENTIFICATION
operator EQUALS

AccountIdentificationsSearchRequestDTO

{
  "filterCriteria": [
    {
      "field": "SCHEME",
      "operator": "EQUALS",
      "value": "string"
    }
  ]
}

Properties

Name Type Description Restrictions
filterCriteria (required) [AccountIdentificationsFilterCriteriaDTO] Account identification search criteria none

AccountIdentificationsSearchResponseDTO

{
  "accountId": "string",
  "currency": "string",
  "identification": {
    "iban": "stringstringstr",
    "other": {
      "identification": "string",
      "scheme": "string"
    }
  },
  "type": "string"
}

Properties

Name Type Description Restrictions
accountId (required) string AccountID (Unique and unambiguous identification for the account.) none
currency string Account currency none
identification (required) Identification Unique and unambiguous identification for the account. none
type string Account type none

AccountInternalIdentification

{
  "currency": "string",
  "id": "string",
  "type": "DEPOSIT"
}

Mambu Accounts corresponding to the current IBAN / proprietary identification

Properties

Name Type Description Restrictions
currency string none none
id string none none
type string none none

Enumerated Values

Property Value
type DEPOSIT
type LOAN

AccountMappingResponse

{
  "internalAccounts": [
    {
      "currency": "string",
      "id": "string",
      "type": "DEPOSIT"
    }
  ],
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "ACCOUNT_ALREADY_MAPPED_TO_THE_SPECIFIED_IDENTIFICATION",
      "errorCode": "string",
      "errorReason": "string",
      "path": "string",
      "text": "string"
    }
  ]
}

Properties

Name Type Description Restrictions
internalAccounts [AccountInternalIdentification] Mambu Accounts corresponding to the current IBAN / proprietary identification none
tppMessages [TPPMessage] Messages to the TPP on operational issues. none

Address

{
  "buildingNumber": "string",
  "city": "string",
  "countryCode": "st",
  "postalCode": "string",
  "street": "string"
}

Properties

Name Type Description Restrictions
buildingNumber string The building or street number of the address. Must not exceed 16 characters. none
city string The city of the address. Must not exceed 35 characters. none
countryCode (required) string Two characters as defined by ISO 3166. For example DE for Germany, TZ for Tanzania. none
postalCode string The postal code of the address. Must not exceed 16 characters. none
street string The street name of the adress. Must not exceed 70 characters. none

Agent

{
  "institutionIdentification": {
    "bicfi": "stringst"
  }
}

Financial institution servicing an account for the creditor. This field is mandatory when proprietary (other) creditor account identification is used.

Properties

Name Type Description Restrictions
institutionIdentification (required) InstitutionIdentification Unique and unambiguous identification of a financial institution, as assigned under an internationally recognised identification scheme. none

AmendmentInformationDetails

{
  "originalCreditorSchemeIdentification": {
    "identification": {
      "iban": "stringstringstr",
      "other": {
        "identification": "string",
        "scheme": "string"
      }
    },
    "name": "string"
  },
  "originalDebtorAccount": {
    "currency": "str",
    "identification": {
      "iban": "stringstringstr",
      "other": {
        "identification": "string",
        "scheme": "string"
      }
    }
  },
  "originalDebtorAgent": {
    "institutionIdentification": {
      "bicfi": "stringst"
    }
  },
  "originalMandateIdentification": "string"
}

List of mandate elements that have been modified.

Properties

Name Type Description Restrictions
originalCreditorSchemeIdentification OriginalCreditorSchemeIdentification Original creditor scheme identification that has been modified. none
originalDebtorAccount Account Settlement account used when settlement method is INDA/INGA. none
originalDebtorAgent Agent Financial institution servicing an account for the creditor. This field is mandatory when proprietary (other) creditor account identification is used. none
originalMandateIdentification string Unique identification, as assigned by the creditor, to unambiguously identify the original mandate. Must not exceed 35 characters. none

AmlPaymentIdentification

{
  "transactionIdentification": "string"
}

Collection instruction reference.

Properties

Name Type Description Restrictions
transactionIdentification (required) string Unique identification as assigned by the initiating party to be used as transaction identifier. none

AmlResult

{
  "groupHeader": {
    "messageIdentification": "string"
  },
  "transactions": [
    {
      "debtorAgent": {
        "institutionIdentification": {
          "bicfi": "stringst"
        }
      },
      "interbankSettlementDate": "stringstri",
      "paymentIdentification": {
        "transactionIdentification": "string"
      },
      "status": "ACCEPTED"
    }
  ]
}

Properties

Name Type Description Restrictions
groupHeader (required) GroupHeader GroupHeader information from the original instruction. none
transactions (required) [AmlTransactionResult] List of AML result checks, one per Payment Order. none

AmlTransactionResult

{
  "debtorAgent": {
    "institutionIdentification": {
      "bicfi": "stringst"
    }
  },
  "interbankSettlementDate": "stringstri",
  "paymentIdentification": {
    "transactionIdentification": "string"
  },
  "status": "ACCEPTED"
}

List of AML result checks, one per Payment Order.

Properties

Name Type Description Restrictions
debtorAgent (required) Agent Financial institution servicing an account for the creditor. This field is mandatory when proprietary (other) creditor account identification is used. none
interbankSettlementDate (required) string InterbankSettlementDate from the original instruction in the format YYYY-MM-DD. none
paymentIdentification (required) AmlPaymentIdentification Collection instruction reference. none
status (required) string Actual status of the AML investigation. Must be one of ACCEPTED, SUSPENDED, REJECTED, MANUAL_REDIRECT_EXTERNAL or MANUAL_REDIRECT_INTERNAL. none

Enumerated Values

Property Value
status ACCEPTED
status SUSPENDED
status REJECTED
status MANUAL_REDIRECT_EXTERNAL
status MANUAL_REDIRECT_INTERNAL

Amount

{
  "amount": "string",
  "currency": "str"
}

Transaction currency and amount.

Properties

Name Type Description Restrictions
amount (required) string The amount given with fractional digits, where fractions must be compliant to the currency definition. Negative amounts are signed by minus. The decimal separator is a dot. none
currency (required) string ISO 4217 Alpha 3 currency code. none

AmountDTO

{
  "amount": "string",
  "currency": "str"
}

Properties

Name Type Description Restrictions
amount (required) string The amount given with fractional digits, where fractions must be compliant to the currency definition. Negative amounts are signed by minus. The decimal separator is a dot. none
currency (required) string ISO 4217 Alpha 3 currency code. none

Assignment

{
  "creationDateTime": "2019-08-24T14:15:22Z",
  "identification": "string"
}

Assignment

Properties

Name Type Description Restrictions
creationDateTime string(date-time) creation date time none
identification string camt.027/camt.087 assignment id none

CancellationDetails

{
  "additionalInformation": [
    "string"
  ],
  "originalRecallReasonAdditionalInformation": [
    "string"
  ],
  "rejectionReason": "ARDT"
}

Properties

Name Type Description Restrictions
additionalInformation [string] Further details on the cancellation request reason. The order must be as defined in the SEPA guideline. The prefixes will be added automatically. First occurrence will be added to the first (mandatory) entry of additional information. When denying a recall, if you do not want to add extra information to the mandatory occurrence, please provide an empty string. For Legal additional information, second and third occurrence will be added on the second and third additional information. none
originalRecallReasonAdditionalInformation [string] Further details on the cancellation reason which can be used when the recall rejection reason was AC03 for a recall made by the originator or FRAD for a recall made by the financial institution. The prefixes will be added automatically. Up to 10 occurrences are allowed. none
rejectionReason (required) string Reason for the cancellation status. Only ARDT, AC04, AM04, NOAS, NOOR, CUST, LEGL, AGNT are allowed. none

Enumerated Values

Property Value
rejectionReason ARDT
rejectionReason AC04
rejectionReason AM04
rejectionReason NOAS
rejectionReason NOOR
rejectionReason CUST
rejectionReason LEGL
rejectionReason AGNT

Collection

{
  "creditorAccount": {
    "currency": "str",
    "identification": {
      "iban": "stringstringstr",
      "other": {
        "identification": "string",
        "scheme": "string"
      }
    }
  },
  "creditorAddress": {
    "buildingNumber": "string",
    "city": "string",
    "countryCode": "st",
    "postalCode": "string",
    "street": "string"
  },
  "creditorAgent": {
    "institutionIdentification": {
      "bicfi": "stringst"
    }
  },
  "creditorIdentification": {
    "code": "stri",
    "issuer": "string",
    "privateIdentification": "string",
    "proprietary": "string"
  },
  "creditorName": "string",
  "creditorSchemeIdentification": {
    "identification": {
      "privateIdentification": "ABC123"
    }
  },
  "debtorAccount": {
    "currency": "str",
    "identification": {
      "iban": "stringstringstr",
      "other": {
        "identification": "string",
        "scheme": "string"
      }
    }
  },
  "debtorAddress": {
    "buildingNumber": "string",
    "city": "string",
    "countryCode": "st",
    "postalCode": "string",
    "street": "string"
  },
  "debtorAgent": {
    "institutionIdentification": {
      "bicfi": "stringst"
    }
  },
  "debtorIdentification": {
    "code": "stri",
    "issuer": "string",
    "privateIdentification": "string",
    "proprietary": "string"
  },
  "debtorName": "string",
  "instructedAmount": {
    "amount": "string",
    "currency": "str"
  },
  "localInstrument": "string",
  "mandateRelatedInformation": {
    "amendmentInformationDetails": {
      "originalCreditorSchemeIdentification": {
        "identification": {
          "iban": "stringstringstr",
          "other": {
            "identification": "string",
            "scheme": "string"
          }
        },
        "name": "string"
      },
      "originalDebtorAccount": {
        "currency": "str",
        "identification": {
          "iban": "stringstringstr",
          "other": {
            "identification": "string",
            "scheme": "string"
          }
        }
      },
      "originalDebtorAgent": {
        "institutionIdentification": {
          "bicfi": "stringst"
        }
      },
      "originalMandateIdentification": "string"
    },
    "dateOfSignature": "string",
    "mandateIdentification": "string"
  },
  "paymentIdentification": {
    "endToEndIdentification": "string",
    "transactionIdentification": "string"
  },
  "paymentTypeInformation": {
    "sequenceType": "string"
  },
  "purposeCode": "stri",
  "remittanceInformationStructured": {
    "reference": "string",
    "referenceIssuer": "string",
    "referenceType": "string"
  },
  "remittanceInformationUnstructured": "string",
  "requestedExecutionDate": "stringstri",
  "requestedExecutionTime": "stringstringstrin",
  "serviceLevel": "string",
  "ultimateCreditor": "string",
  "ultimateDebtor": "string"
}

Properties

Name Type Description Restrictions
creditorAccount (required) Account Settlement account used when settlement method is INDA/INGA. none
creditorAddress Address none none
creditorAgent Agent Financial institution servicing an account for the creditor. This field is mandatory when proprietary (other) creditor account identification is used. none
creditorIdentification PartyIdentification Beneficiary’s identification. none
creditorName (required) string The Party whose account is credited with the payment. Must not exceed 70 characters. none
creditorSchemeIdentification (required) CreditorSchemeIdentification Credit party that signs the mandate. none
debtorAccount (required) Account Settlement account used when settlement method is INDA/INGA. none
debtorAddress Address none none
debtorAgent Agent Financial institution servicing an account for the creditor. This field is mandatory when proprietary (other) creditor account identification is used. none
debtorIdentification PartyIdentification Beneficiary’s identification. none
debtorName (required) string The full name of the debtor. Must not exceed 70 characters. none
instructedAmount (required) Amount Transaction currency and amount. none
localInstrument string User community specific instrument. Used to specify a local instrument, local clearing option and/or further qualify the service or service level. For example, whether a Direct Debit uses the business to customer CORE, or business to business B2B ruleset. none
mandateRelatedInformation (required) Mandate Set of elements used to provide further details of the direct debit mandate signed between the creditor and the debtor. none
paymentIdentification PaymentIdentification Payment instruction reference. none
paymentTypeInformation (required) PaymentTypeInformation Set of elements used to further specify the type of transaction. none
purposeCode string The PurposeCode value or a similar explanation is not added to the payer’s Electronic account statement. This value can be shown on both the payers and the beneficiary’s on the Camt.053 account statement. Purpose codes can be taken from an external list, for example the ISO 20022 External Code Set. none
remittanceInformationStructured Remittance Payment details. Structured message. Generally, these fields are used to provide invoice or creditor reference information. References should conform to ISO 11649, international standard of reference information. none
remittanceInformationUnstructured string Payment details. Free text, one occurrence (max 140 characters).
Payment reason (according to current recurrent payment standard) can be given in this element.
none
requestedExecutionDate string Optional field for recording the date of the transfer. For SEPA Credit Transfers only the current date can be provided. Payments can not be backdated or scheduled for the future. none
requestedExecutionTime string Optional field for recording the date and time of the payment initiation. For SEPACredit Transfers, only the current date and time can be provided. Payments can not be backdated or scheduled for the future. none
serviceLevel string Agreement under which or rules under which the transaction should be processed. Must be SEPA for SEPA Credit Transfers and Direct Debits. none
ultimateCreditor string Party which is the ultimate beneficiary of the payment. For example, the payment can be credited to an account of a financing company, with the ultimate beneficiary being the customer of the financing company. Must not exceed 70 characters. none
ultimateDebtor string The Party that originally ordered goods or services and to whom the seller has sent the invoice. Ultimate Debtor can be used when the acceptor of the invoice is different than the payer. Must not exceed 70 characters. none

CollectionAmlResult

{
  "groupHeader": {
    "messageIdentification": "string"
  },
  "transactions": [
    {
      "collectionIdentification": {
        "transactionIdentification": "string"
      },
      "creditorAgent": {
        "institutionIdentification": {
          "bicfi": "stringst"
        }
      },
      "interbankSettlementDate": "stringstri",
      "status": "ACCEPTED"
    }
  ]
}

Properties

Name Type Description Restrictions
groupHeader (required) GroupHeader GroupHeader information from the original instruction. none
transactions (required) [CollectionAmlTransactionResult] List of AML result checks, one per Payment Order. none

CollectionAmlTransactionResult

{
  "collectionIdentification": {
    "transactionIdentification": "string"
  },
  "creditorAgent": {
    "institutionIdentification": {
      "bicfi": "stringst"
    }
  },
  "interbankSettlementDate": "stringstri",
  "status": "ACCEPTED"
}

List of AML result checks, one per Payment Order.

Properties

Name Type Description Restrictions
collectionIdentification (required) AmlPaymentIdentification Collection instruction reference. none
creditorAgent (required) Agent Financial institution servicing an account for the creditor. This field is mandatory when proprietary (other) creditor account identification is used. none
interbankSettlementDate (required) string InterbankSettlementDate from the original instruction in the format YYYY-MM-DD. none
status (required) string Actual status of the AML investigation. Must be one of ACCEPTED, SUSPENDED, REJECTED, MANUAL_REDIRECT_EXTERNAL or MANUAL_REDIRECT_INTERNAL. none

Enumerated Values

Property Value
status ACCEPTED
status SUSPENDED
status REJECTED
status MANUAL_REDIRECT_EXTERNAL
status MANUAL_REDIRECT_INTERNAL

CollectionDetails

{
  "acceptanceDateTime": "2019-08-24T14:15:22Z",
  "categoryPurposeCode": "string",
  "creditorAccount": {
    "currency": "str",
    "identification": {
      "iban": "stringstringstr",
      "other": {
        "identification": "string",
        "scheme": "string"
      }
    }
  },
  "creditorAddress": {
    "addressLine1": "string",
    "addressLine2": "string",
    "buildingNumber": "string",
    "city": "string",
    "countryCode": "string",
    "postalCode": "string",
    "street": "string"
  },
  "creditorAgent": {
    "institutionIdentification": {
      "bicfi": "stringst"
    }
  },
  "creditorName": "string",
  "creditorSchemeIdentification": {
    "identification": {
      "privateIdentification": "ABC123"
    }
  },
  "debtorAccount": {
    "currency": "str",
    "identification": {
      "iban": "stringstringstr",
      "other": {
        "identification": "string",
        "scheme": "string"
      }
    }
  },
  "debtorAddress": {
    "addressLine1": "string",
    "addressLine2": "string",
    "buildingNumber": "string",
    "city": "string",
    "countryCode": "string",
    "postalCode": "string",
    "street": "string"
  },
  "debtorAgent": {
    "institutionIdentification": {
      "bicfi": "stringst"
    }
  },
  "debtorName": "string",
  "direction": "string",
  "instructedAmount": {
    "amount": "string",
    "currency": "str"
  },
  "lastStatusUpdateTimestamp": "2019-08-24T14:15:22Z",
  "localInstrument": "string",
  "mandateRelatedInformation": {
    "amendmentInformationDetails": {
      "originalCreditorSchemeIdentification": {
        "identification": {
          "iban": "stringstringstr",
          "other": {
            "identification": "string",
            "scheme": "string"
          }
        },
        "name": "string"
      },
      "originalDebtorAccount": {
        "currency": "str",
        "identification": {
          "iban": "stringstringstr",
          "other": {
            "identification": "string",
            "scheme": "string"
          }
        }
      },
      "originalDebtorAgent": {
        "institutionIdentification": {
          "bicfi": "stringst"
        }
      },
      "originalMandateIdentification": "string"
    },
    "dateOfSignature": "string",
    "mandateIdentification": "string"
  },
  "paymentIdentification": {
    "endToEndIdentification": "string",
    "instructionIdentification": "string",
    "transactionIdentification": "string",
    "uetr": "string"
  },
  "paymentTypeInformation": {
    "sequenceType": "string"
  },
  "product": "SEPA_CREDIT_TRANSFER",
  "purposeCode": "string",
  "remittanceInformationStructured": {
    "reference": "string",
    "referenceIssuer": "string",
    "referenceType": "string"
  },
  "remittanceInformationUnstructured": "string",
  "requestedExecutionDate": "string",
  "requestedExecutionTime": "string",
  "retryInformation": {
    "retryCount": 0,
    "retryUntil": "2019-08-24T14:15:22Z"
  },
  "scheme": "string",
  "serviceLevel": "string",
  "settlementInformation": {
    "clearingSystem": "string",
    "settlementAccount": {
      "currency": "str",
      "identification": {
        "iban": "stringstringstr",
        "other": {
          "identification": "string",
          "scheme": "string"
        }
      }
    },
    "settlementMethod": "string"
  },
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "ACCOUNT_ALREADY_MAPPED_TO_THE_SPECIFIED_IDENTIFICATION",
      "errorCode": "string",
      "errorReason": "string",
      "path": "string",
      "text": "string"
    }
  ],
  "transactionStatus": "string",
  "ultimateCreditor": "string",
  "ultimateDebtor": "string"
}

Properties

Name Type Description Restrictions
acceptanceDateTime string(date-time) Point in time when the payment order from the initiating party meets the processing conditions of the account servicing agent in the formst YYYY-MM-DD. none
categoryPurposeCode string Specifies the high level purpose of the instruction based on a set of pre-defined categories. none
creditorAccount Account Settlement account used when settlement method is INDA/INGA. none
creditorAddress FullDetailsAddress An object containing the adress of the creditor. none
creditorAgent Agent Financial institution servicing an account for the creditor. This field is mandatory when proprietary (other) creditor account identification is used. none
creditorName string The party whose account is credited with the payment. Must not exceed 70 characters. none
creditorSchemeIdentification CreditorSchemeIdentification Credit party that signs the mandate. none
debtorAccount Account Settlement account used when settlement method is INDA/INGA. none
debtorAddress FullDetailsAddress An object containing the adress of the creditor. none
debtorAgent Agent Financial institution servicing an account for the creditor. This field is mandatory when proprietary (other) creditor account identification is used. none
debtorName string The name of the debtor. Must not exceed 70 characters. none
direction string Payment direction, I for incoming or O for outgoing. This value will be inferred based on current Payment Product, Debtor and Creditor Agents none
instructedAmount Amount Transaction currency and amount. none
lastStatusUpdateTimestamp string(date-time) ISO 8601 timestamp when the transaction status was last updated, expressed in UTC time format (YYYY-MM-DDThh:mm:ss.sssZ). none
localInstrument string User community specific instrument. Used to specify a local instrument, local clearing option and/or further qualify the service or service level. none
mandateRelatedInformation Mandate Set of elements used to provide further details of the direct debit mandate signed between the creditor and the debtor. none
paymentIdentification FullPaymentIdentification Payment instruction reference. none
paymentTypeInformation PaymentTypeInformation Set of elements used to further specify the type of transaction. none
product string Payment product type. Either SEPA_CREDIT_TRANSFER for one-off payments or SEPA_DIRECT_DEBIT for recurring collections. none
purposeCode string The PurposeCode value or a similar explanation is not added to the payer’s Electronic account statement. This value can be shown on both the payers and thebeneficiary’s on the Camt.053 account statement. Purpose codes can be taken from an external list, for example the ISO 20022 External Code Set. none
remittanceInformationStructured Remittance Payment details. Structured message. Generally, these fields are used to provide invoice or creditor reference information. References should conform to ISO 11649, international standard of reference information. none
remittanceInformationUnstructured string Payment details. Free text, one occurrence (max 140 characters).
Payment reason (according to current recurrent payment standard) can be given in this element.
none
requestedExecutionDate string Debit date given by the customer. A particular point in the progression of time in a calendar year expressed in the YYYY-MM-DD format. none
requestedExecutionTime string Debit date given by the customer. A particular point in the progression of time defined by a mandatory date and a mandatory time component, expressed in either UTC time format (YYYY-MM-DDThh:mm:ss.sssZ) or local time with UTC offset format (YYYY-MM-DDThh:mm:ss.sss+/-hh:mm). These representations are aligned with ISO 8601. none
retryInformation RetryInformation Under certain conditions a Direct Debit will be retried. This object contains information about the number of retries attempted and cut-off date, after which the transaction will no longer be retried. none
scheme string Specifies the type of the payment. none
serviceLevel string The scheme being used for the payment. For credit transfers, value must be SEPA. none
settlementInformation SettlementInformation Specifies the details on how the settlement of the original transaction(s) between the instructing agent and the instructed agent was completed. none
tppMessages [TPPMessage] Messages to the TPP on operational issues. none
transactionStatus (required) string none none
ultimateCreditor string Party which is the ultimate beneficiary of the payment. For example, the payment can be credited to an account of a financing company, with the ultimate beneficiary being the customer of the financing company. Must not exceed 70 characters. none
ultimateDebtor string The Party that originally ordered goods or services and to whom the seller has sent the invoice. Ultimate Debtor can be used when the acceptor of the invoice is different than the payer. none

Enumerated Values

Property Value
product SEPA_CREDIT_TRANSFER
product ISO20022_CREDIT_TRANSFER
product SEPA_DIRECT_DEBIT

CollectionResponse

{
  "collectionId": "string",
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "ACCOUNT_ALREADY_MAPPED_TO_THE_SPECIFIED_IDENTIFICATION",
      "errorCode": "string",
      "errorReason": "string",
      "path": "string",
      "text": "string"
    }
  ],
  "transactionFeeIndicator": true,
  "transactionStatus": "ACSC"
}

Properties

Name Type Description Restrictions
collectionId (required) string Resource identification of the generated payment initiation resource. none
tppMessages [TPPMessage] Messages to the TPP on operational issues. none
transactionFeeIndicator boolean If set to true, the transaction will involve additional costs or fees. none
transactionStatus (required) string PSD2 transaction status codes:
  • ACSC: Settlement on the debtor’s account has been completed.
    Usage: this can be used by the first agent to report to the debtor that the transaction has been completed.
    Warning: this status is provided for reporting techincal transaction status, not for financial information. It can only be used after bilateral agreement.
  • ACSP: All preceding checks such as technical validation and customer profile were successful. The payment initiation has been accepted for execution.
  • ACTC: Authentication, syntactical and semantical validation are successful.
  • RCVD: Payment initiation has been received by the receiving agent.
  • PDNG: Payment initiation, or an individual transaction included in the payment initiation is pending. Further checks and status updates will be performed.
  • RJCT: Payment initiation, or an individual transaction included in the payment initiation has been rejected.
none

Enumerated Values

Property Value
transactionStatus ACSC
transactionStatus ACSP
transactionStatus ACTC
transactionStatus RCVD
transactionStatus PDNG
transactionStatus RJCT

CreateAccountMapping

{
  "identification": {
    "iban": "stringstringstr",
    "other": {
      "identification": "string",
      "scheme": "string"
    }
  }
}

Properties

Name Type Description Restrictions
identification (required) Identification Unique and unambiguous identification for the account. none

CreateAccountMappings

{
  "accountIds": [
    "string"
  ],
  "identification": {
    "iban": "stringstringstr",
    "other": {
      "identification": "string",
      "scheme": "string"
    }
  }
}

Properties

Name Type Description Restrictions
accountIds (required) [string] IDs of the Mambu Accounts which will be correlated to the IBAN or proprietary identification. The association will be made on account currency. none
identification (required) Identification Unique and unambiguous identification for the account. none

CreateBlockingRule

{
  "creditorMandate": {
    "creditorSchemeIdentification": {
      "identification": {
        "privateIdentification": "ABC123"
      }
    },
    "mandateRelatedInformation": {
      "mandateIdentification": "string"
    }
  },
  "product": "string"
}

Properties

Name Type Description Restrictions
creditorMandate CreditorMandate Collection mandate identification for deleting a rule applying to a specific mandate. none
product (required) string Payment Product to which this rule applies. For now, blocking rules can be applied to SEPA_DIRECT_DEBIT only none

CreditorMandate

{
  "creditorSchemeIdentification": {
    "identification": {
      "privateIdentification": "ABC123"
    }
  },
  "mandateRelatedInformation": {
    "mandateIdentification": "string"
  }
}

Collection mandate identification for deleting a rule applying to a specific mandate.

Properties

Name Type Description Restrictions
creditorSchemeIdentification (required) CreditorSchemeIdentification Credit party that signs the mandate. none
mandateRelatedInformation (required) MandateRelatedInformation none none

CreditorSchemeIdentification

{
  "identification": {
    "privateIdentification": "ABC123"
  }
}

Credit party that signs the mandate.

Properties

Name Type Description Restrictions
identification (required) object Object containing the identifier. none
» privateIdentification (required) string Unique and unambiguous identification of a person, eg, passport. none

DeleteBlockingRule

{
  "creditorMandate": {
    "creditorSchemeIdentification": {
      "identification": {
        "privateIdentification": "ABC123"
      }
    },
    "mandateRelatedInformation": {
      "mandateIdentification": "string"
    }
  },
  "product": "string"
}

Properties

Name Type Description Restrictions
creditorMandate CreditorMandate Collection mandate identification for deleting a rule applying to a specific mandate. none
product (required) string Payment product to remove blocking rules from. Must be SEPA_DIRECT_DEBIT. none

FailedPaymentResponse

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "ACCOUNT_ALREADY_MAPPED_TO_THE_SPECIFIED_IDENTIFICATION",
      "errorCode": "string",
      "errorReason": "string",
      "path": "string",
      "text": "string"
    }
  ]
}

Properties

Name Type Description Restrictions
tppMessages (required) [TPPMessage] Messages to the TPP on operational issues. none

FullDetailsAddress

{
  "addressLine1": "string",
  "addressLine2": "string",
  "buildingNumber": "string",
  "city": "string",
  "countryCode": "string",
  "postalCode": "string",
  "street": "string"
}

An object containing the adress of the creditor.

Properties

Name Type Description Restrictions
addressLine1 string The first line of an address. none
addressLine2 string The second line of an address. none
buildingNumber string The building or street number of the address. Must not exceed 16 characters. none
city string The city of the address. Must not exceed 35 characters. none
countryCode string Two letter, ISO 3166 alpha-2 country code, for example DE for Germany, TZ for Tanzania. none
postalCode string The postal code of the address. Must not exceed 16 characters. none
street string The street name of the address. Must not exceed 70 characters. none

FullPaymentIdentification

{
  "endToEndIdentification": "string",
  "instructionIdentification": "string",
  "transactionIdentification": "string",
  "uetr": "string"
}

Payment instruction reference.

Properties

Name Type Description Restrictions
endToEndIdentification string Unique identification assigned by the payer to identify the transaction. This identification will be returned to the payer and passed on to the beneficiary. none
instructionIdentification string Unique identification as assigned by an instructing party for an instructed party to unambiguously identify the instruction. none
transactionIdentification string Unique identification as assigned by the initiating party to be used as transaction identifier. If left empty, the Mambu transaction ID will be used. none
uetr string Universally unique identifier to provide the original end-to-end reference of a payment transaction. none

GroupHeader

{
  "messageIdentification": "string"
}

GroupHeader information from the original instruction.

Properties

Name Type Description Restrictions
messageIdentification (required) string Message Identification from the original instruction. none

GroupHeaderIncoming

{
  "creationDateTime": "string",
  "instructingAgent": "string",
  "messageIdentification": "string"
}

Set of characteristics shared by all individual transactions included in the Request for Status Update on Recall message

Properties

Name Type Description Restrictions
creationDateTime (required) string Date and time at which the inquiry message was created. Accepted format: yyyy-MM-ddTHH:mm:ss none
instructingAgent (required) string Agent that is instructed by the previous party in the chain to carry out the (set of) instruction(s). none
messageIdentification (required) string Message identification to identify the inquiry message none

Identification

{
  "iban": "stringstringstr",
  "other": {
    "identification": "string",
    "scheme": "string"
  }
}

Unique and unambiguous identification for the account.

Properties

Name Type Description Restrictions
iban string ISO 13616 International Bank Account Number (IBAN) - identifier used internationally by financial institutions to uniquely identify the account of a customer. Must be between 15 and 34 characters. none
other Other Unique identification of an account, as assigned by the account servicer, using any other identification scheme. none

Identification-IBAN

{
  "iban": "stringstringstr"
}

Properties

Name Type Description Restrictions
iban string ISO 13616 International Bank Account Number (IBAN) - identifier used internationally by financial institutions to uniquely identify the account of a customer. none

IdentificationDTO

{
  "iban": "stringstringstr"
}

Unique and unambiguous identification for the account.

Properties

Name Type Description Restrictions
iban (required) string International Bank Account Number (IBAN) - identifier used internationally by financial institutions to uniquely identify the account of a customer. Must be between 15 and 34 characters. none

IdentificationsToMask

{
  "identifications": [
    {
      "iban": "stringstringstr"
    }
  ]
}

Properties

Name Type Description Restrictions
identifications (required) [Identification-IBAN] none none

IncomingMessageResponse

{
  "messageId": "string",
  "messageType": "string"
}

Properties

Name Type Description Restrictions
messageId (required) string Resource identification of the incoming message none
messageType (required) string URN namespace of the incoming message none

InstitutionIdentification

{
  "bicfi": "stringst"
}

Unique and unambiguous identification of a financial institution, as assigned under an internationally recognised identification scheme.

Properties

Name Type Description Restrictions
bicfi (required) string ISO 9362 Business identifier code (BIC) - code allocated to a financial institution. Must be between 8 and 11 characters. none

Iso20022Payment

{
  "categoryPurposeCode": "stri",
  "creditorAccount": {
    "currency": "str",
    "identification": {
      "iban": "stringstringstr",
      "other": {
        "identification": "string",
        "scheme": "string"
      }
    }
  },
  "creditorAddress": {
    "buildingNumber": "string",
    "city": "string",
    "countryCode": "st",
    "postalCode": "string",
    "street": "string"
  },
  "creditorAgent": {
    "institutionIdentification": {
      "bicfi": "stringst"
    }
  },
  "creditorIdentification": {
    "code": "stri",
    "issuer": "string",
    "privateIdentification": "string",
    "proprietary": "string"
  },
  "creditorName": "string",
  "debtorAccount": {
    "currency": "str",
    "identification": {
      "iban": "stringstringstr",
      "other": {
        "identification": "string",
        "scheme": "string"
      }
    }
  },
  "debtorAddress": {
    "buildingNumber": "string",
    "city": "string",
    "countryCode": "st",
    "postalCode": "string",
    "street": "string"
  },
  "debtorAgent": {
    "institutionIdentification": {
      "bicfi": "stringst"
    }
  },
  "debtorIdentification": {
    "code": "stri",
    "issuer": "string",
    "privateIdentification": "string",
    "proprietary": "string"
  },
  "debtorName": "string",
  "instructedAmount": {
    "amount": "string",
    "currency": "str"
  },
  "localInstrument": "string",
  "paymentIdentification": {
    "endToEndIdentification": "string",
    "transactionIdentification": "string",
    "uetr": "stringstringstringstringstringstring"
  },
  "purposeCode": "stri",
  "remittanceInformationStructured": {
    "reference": "string",
    "referenceIssuer": "string",
    "referenceType": "string"
  },
  "remittanceInformationUnstructured": "string",
  "requestedExecutionDate": "stringstri",
  "requestedExecutionTime": "stringstringstrin",
  "scheme": "string",
  "serviceLevel": "string",
  "settlementInformation": {
    "clearingSystem": "string",
    "settlementAccount": {
      "currency": "str",
      "identification": {
        "iban": "stringstringstr",
        "other": {
          "identification": "string",
          "scheme": "string"
        }
      }
    },
    "settlementMethod": "string"
  },
  "ultimateCreditor": "string",
  "ultimateDebtor": "string"
}

Properties

Name Type Description Restrictions
categoryPurposeCode string Specifies the high level purpose of the payment based on a set of pre-defined categories. none
creditorAccount (required) Account Settlement account used when settlement method is INDA/INGA. none
creditorAddress Address none none
creditorAgent Agent Financial institution servicing an account for the creditor. This field is mandatory when proprietary (other) creditor account identification is used. none
creditorIdentification PartyIdentification Beneficiary’s identification. none
creditorName (required) string The Party whose account is credited with the payment. Must not exceed 70 characters. none
debtorAccount (required) Account Settlement account used when settlement method is INDA/INGA. none
debtorAddress Address none none
debtorAgent Agent Financial institution servicing an account for the creditor. This field is mandatory when proprietary (other) creditor account identification is used. none
debtorIdentification PartyIdentification Beneficiary’s identification. none
debtorName (required) string The full name of the debtor. Must not exceed 70 characters. none
instructedAmount (required) Amount Transaction currency and amount. none
localInstrument string User community specific instrument. Used to specify a local instrument, local clearing option and/or further qualify the service or service level. For example, whether a Direct Debit uses the business to customer CORE, or business to business B2B ruleset. none
paymentIdentification Iso20022PaymentIdentification none none
purposeCode string The PurposeCode value or a similar explanation is not added to the payer’s Electronic account statement. This value can be shown on both the payers and the beneficiary’s on the Camt.053 account statement. Purpose codes can be taken from an external list, for example the ISO 20022 External Code Set. none
remittanceInformationStructured Remittance Payment details. Structured message. Generally, these fields are used to provide invoice or creditor reference information. References should conform to ISO 11649, international standard of reference information. none
remittanceInformationUnstructured string Payment details. Free text, one occurrence (max 140 characters).
Payment reason (according to current recurrent payment standard) can be given in this element.
none
requestedExecutionDate string Optional field for recording the date of the transfer. For SEPA Credit Transfers only the current date can be provided. Payments can not be backdated or scheduled for the future. none
requestedExecutionTime string Optional field for recording the date and time of the payment initiation. For SEPACredit Transfers, only the current date and time can be provided. Payments can not be backdated or scheduled for the future. none
scheme string Specifies payment scheme for processing. none
serviceLevel string Agreement under which or rules under which the transaction should be processed. Must be SEPA for SEPA Credit Transfers and Direct Debits. none
settlementInformation (required) SettlementInformation Specifies the details on how the settlement of the original transaction(s) between the instructing agent and the instructed agent was completed. none
ultimateCreditor string Party which is the ultimate beneficiary of the payment. For example, the payment can be credited to an account of a financing company, with the ultimate beneficiary being the customer of the financing company. Must not exceed 70 characters. none
ultimateDebtor string The Party that originally ordered goods or services and to whom the seller has sent the invoice. Ultimate Debtor can be used when the acceptor of the invoice is different than the payer. Must not exceed 70 characters. none

Iso20022PaymentIdentification

{
  "endToEndIdentification": "string",
  "transactionIdentification": "string",
  "uetr": "stringstringstringstringstringstring"
}

Properties

Name Type Description Restrictions
endToEndIdentification string Unique identification assigned by the payer to identify the transaction. This identification will be returned to the payer and passed on to the beneficiary. Must not exceed 35 characters. none
transactionIdentification string Unique identification as assigned by the initiating party to be used as transaction identifier. If left empty, Mambu transaction id will be used. Must not exceed 35 characters. none
uetr string Universally unique identifier to provide an end-to-end reference of a payment transaction. none

Mandate

{
  "amendmentInformationDetails": {
    "originalCreditorSchemeIdentification": {
      "identification": {
        "iban": "stringstringstr",
        "other": {
          "identification": "string",
          "scheme": "string"
        }
      },
      "name": "string"
    },
    "originalDebtorAccount": {
      "currency": "str",
      "identification": {
        "iban": "stringstringstr",
        "other": {
          "identification": "string",
          "scheme": "string"
        }
      }
    },
    "originalDebtorAgent": {
      "institutionIdentification": {
        "bicfi": "stringst"
      }
    },
    "originalMandateIdentification": "string"
  },
  "dateOfSignature": "string",
  "mandateIdentification": "string"
}

Set of elements used to provide further details of the direct debit mandate signed between the creditor and the debtor.

Properties

Name Type Description Restrictions
amendmentInformationDetails AmendmentInformationDetails List of mandate elements that have been modified. none
dateOfSignature (required) string Date on which the direct debit mandate has been signed by the debtor in the format YYYY-MM-DD. none
mandateIdentification (required) string Unique identification, as assigned by the creditor, to unambiguously identify the mandate. none

MandateRelatedInformation

{
  "mandateIdentification": "string"
}

Properties

Name Type Description Restrictions
mandateIdentification (required) string Unique identification, as assigned by the creditor, to unambiguously identify the collection mandate. none

Message

{}

List of SEPA instructions.

Properties

None

OriginalCamt056Data

{
  "cancellationIdentification": "string",
  "groupHeader": {
    "messageIdentification": "string"
  },
  "historicCancellationRequest": "string"
}

Properties

Name Type Description Restrictions
cancellationIdentification (required) string Cancellation identification. none
groupHeader GroupHeader GroupHeader information from the original instruction. none
historicCancellationRequest string Original camt.056.001.01 message body XML for historical requests. none

OriginalCreditorSchemeIdentification

{
  "identification": {
    "iban": "stringstringstr",
    "other": {
      "identification": "string",
      "scheme": "string"
    }
  },
  "name": "string"
}

Original creditor scheme identification that has been modified.

Properties

Name Type Description Restrictions
identification Identification Unique and unambiguous identification for the account. none
name string Name of the creditor. Must not exceed 70 characters. none

OriginalInquiryData

{
  "assignment": {
    "creationDateTime": "2019-08-24T14:15:22Z",
    "identification": "string"
  },
  "caseIdentification": "string",
  "historicClaimRequest": "string",
  "messageTypeName": "PACS_002_001_03"
}

Properties

Name Type Description Restrictions
assignment Assignment Assignment none
caseIdentification (required) string camt.027/camt.087 case id none
historicClaimRequest string Optional historic camt.087 or camt.027 xml none
messageTypeName (required) string messageTypeName none

Enumerated Values

Property Value
messageTypeName PACS_002_001_03
messageTypeName PACS_002_001_12
messageTypeName PACS_003_001_02
messageTypeName PACS_004_001_02
messageTypeName PACS_004_001_11
messageTypeName PACS_007_001_02
messageTypeName PACS_008_001_02
messageTypeName PACS_008_001_10
messageTypeName PACS_028_001_01
messageTypeName CAMT_027_001_06
messageTypeName CAMT_029_001_03
messageTypeName CAMT_029_001_08
messageTypeName CAMT_056_001_01
messageTypeName CAMT_087_001_05
messageTypeName MT
messageTypeName UNKNOWN

OriginalPacs008Data

{
  "claimedValueDate": "2019-08-24",
  "groupHeader": {
    "messageIdentification": "string",
    "settlementDate": "2019-08-24"
  },
  "historicCreditTransferRequest": "string",
  "paymentIdentification": {
    "endToEndIdentification": "string",
    "transactionIdentification": "string"
  }
}

Properties

Name Type Description Restrictions
claimedValueDate string(date) Claimed value-date for change. none
groupHeader Pacs008GroupHeader Original pacs.008.001.02 group header information. none
historicCreditTransferRequest string Original pacs.008.001.02 message body XML for historical requests. none
paymentIdentification (required) PaymentIdentification Payment instruction reference. none

Other

{
  "identification": "string",
  "scheme": "string"
}

Unique identification of an account, as assigned by the account servicer, using any other identification scheme.

Properties

Name Type Description Restrictions
identification (required) string Identification assigned by an institution. Must not exceed 34 characters. none
scheme (required) string Name or code of the identification scheme. Must not exceed 35 characters. none

Pacs008GroupHeader

{
  "messageIdentification": "string",
  "settlementDate": "2019-08-24"
}

Original pacs.008.001.02 group header information.

Properties

Name Type Description Restrictions
messageIdentification (required) string Original message identification. none
settlementDate string(date) Original settlement date. none

PartyIdentification

{
  "code": "stri",
  "issuer": "string",
  "privateIdentification": "string",
  "proprietary": "string"
}

Beneficiary’s identification.

Properties

Name Type Description Restrictions
code string A four-letter code specifying the type of identification being used. For valid codes an external catalogue should be consulted such as the one provided in the ISO 20022 External Code Sets. none
issuer string The official body who provided the identification. Must not exceed 35 characters. none
privateIdentification (required) string Unique and unambiguous identification of a person, eg, passport. Must not exceed 35 characters. none
proprietary string A proprietary type of identification for the party to the transaction. Must not exceed 35 characters. none

Payment

{
  "creditorAccount": {
    "currency": "str",
    "identification": {
      "iban": "stringstringstr",
      "other": {
        "identification": "string",
        "scheme": "string"
      }
    }
  },
  "creditorAddress": {
    "buildingNumber": "string",
    "city": "string",
    "countryCode": "st",
    "postalCode": "string",
    "street": "string"
  },
  "creditorAgent": {
    "institutionIdentification": {
      "bicfi": "stringst"
    }
  },
  "creditorIdentification": {
    "code": "stri",
    "issuer": "string",
    "privateIdentification": "string",
    "proprietary": "string"
  },
  "creditorName": "string",
  "debtorAccount": {
    "currency": "str",
    "identification": {
      "iban": "stringstringstr",
      "other": {
        "identification": "string",
        "scheme": "string"
      }
    }
  },
  "debtorAddress": {
    "buildingNumber": "string",
    "city": "string",
    "countryCode": "st",
    "postalCode": "string",
    "street": "string"
  },
  "debtorAgent": {
    "institutionIdentification": {
      "bicfi": "stringst"
    }
  },
  "debtorIdentification": {
    "code": "stri",
    "issuer": "string",
    "privateIdentification": "string",
    "proprietary": "string"
  },
  "debtorName": "string",
  "instructedAmount": {
    "amount": "string",
    "currency": "str"
  },
  "localInstrument": "string",
  "paymentIdentification": {
    "endToEndIdentification": "string",
    "transactionIdentification": "string"
  },
  "purposeCode": "stri",
  "remittanceInformationStructured": {
    "reference": "string",
    "referenceIssuer": "string",
    "referenceType": "string"
  },
  "remittanceInformationUnstructured": "string",
  "requestedExecutionDate": "stringstri",
  "requestedExecutionTime": "stringstringstrin",
  "serviceLevel": "string",
  "ultimateCreditor": "string",
  "ultimateDebtor": "string"
}

Properties

Name Type Description Restrictions
creditorAccount (required) Account Settlement account used when settlement method is INDA/INGA. none
creditorAddress Address none none
creditorAgent Agent Financial institution servicing an account for the creditor. This field is mandatory when proprietary (other) creditor account identification is used. none
creditorIdentification PartyIdentification Beneficiary’s identification. none
creditorName (required) string The Party whose account is credited with the payment. Must not exceed 70 characters. none
debtorAccount (required) Account Settlement account used when settlement method is INDA/INGA. none
debtorAddress Address none none
debtorAgent Agent Financial institution servicing an account for the creditor. This field is mandatory when proprietary (other) creditor account identification is used. none
debtorIdentification PartyIdentification Beneficiary’s identification. none
debtorName (required) string The full name of the debtor. Must not exceed 70 characters. none
instructedAmount (required) Amount Transaction currency and amount. none
localInstrument string User community specific instrument. Used to specify a local instrument, local clearing option and/or further qualify the service or service level. For example, whether a Direct Debit uses the business to customer CORE, or business to business B2B ruleset. none
paymentIdentification PaymentIdentification Payment instruction reference. none
purposeCode string The PurposeCode value or a similar explanation is not added to the payer’s Electronic account statement. This value can be shown on both the payers and the beneficiary’s on the Camt.053 account statement. Purpose codes can be taken from an external list, for example the ISO 20022 External Code Set. none
remittanceInformationStructured Remittance Payment details. Structured message. Generally, these fields are used to provide invoice or creditor reference information. References should conform to ISO 11649, international standard of reference information. none
remittanceInformationUnstructured string Payment details. Free text, one occurrence (max 140 characters).
Payment reason (according to current recurrent payment standard) can be given in this element.
none
requestedExecutionDate string Optional field for recording the date of the transfer. For SEPA Credit Transfers only the current date can be provided. Payments can not be backdated or scheduled for the future. none
requestedExecutionTime string Optional field for recording the date and time of the payment initiation. For SEPACredit Transfers, only the current date and time can be provided. Payments can not be backdated or scheduled for the future. none
serviceLevel string Agreement under which or rules under which the transaction should be processed. Must be SEPA for SEPA Credit Transfers and Direct Debits. none
ultimateCreditor string Party which is the ultimate beneficiary of the payment. For example, the payment can be credited to an account of a financing company, with the ultimate beneficiary being the customer of the financing company. Must not exceed 70 characters. none
ultimateDebtor string The Party that originally ordered goods or services and to whom the seller has sent the invoice. Ultimate Debtor can be used when the acceptor of the invoice is different than the payer. Must not exceed 70 characters. none

PaymentDTO

{
  "amount": {
    "amount": "string",
    "currency": "str"
  },
  "creditorAccount": {
    "currency": "str",
    "identification": {
      "iban": "stringstringstr"
    }
  },
  "creditorName": "string",
  "debtorAccount": {
    "currency": "str",
    "identification": {
      "iban": "stringstringstr"
    }
  },
  "debtorName": "string",
  "remittanceInformationUnstructured": "string",
  "scheme": "string"
}

Payment details for standing order

Properties

Name Type Description Restrictions
amount (required) AmountDTO none none
creditorAccount (required) AccountDTO Beneficiary’s account. none
creditorName (required) string The Party whose account is credited with the payment. Must not exceed 70 characters. none
debtorAccount (required) AccountDTO Beneficiary’s account. none
debtorName (required) string The full name of the debtor. Must not exceed 70 characters. none
remittanceInformationUnstructured string Payment details. Free text, one occurrence (max 140 characters).
Payment reason (according to current recurrent payment standard) can be given in this element.
none
scheme string Specifies payment scheme for processing. none

PaymentDetails

{
  "acceptanceDateTime": "2019-08-24T14:15:22Z",
  "categoryPurposeCode": "string",
  "creditorAccount": {
    "currency": "str",
    "identification": {
      "iban": "stringstringstr",
      "other": {
        "identification": "string",
        "scheme": "string"
      }
    }
  },
  "creditorAddress": {
    "addressLine1": "string",
    "addressLine2": "string",
    "buildingNumber": "string",
    "city": "string",
    "countryCode": "string",
    "postalCode": "string",
    "street": "string"
  },
  "creditorAgent": {
    "institutionIdentification": {
      "bicfi": "stringst"
    }
  },
  "creditorName": "string",
  "debtorAccount": {
    "currency": "str",
    "identification": {
      "iban": "stringstringstr",
      "other": {
        "identification": "string",
        "scheme": "string"
      }
    }
  },
  "debtorAddress": {
    "addressLine1": "string",
    "addressLine2": "string",
    "buildingNumber": "string",
    "city": "string",
    "countryCode": "string",
    "postalCode": "string",
    "street": "string"
  },
  "debtorAgent": {
    "institutionIdentification": {
      "bicfi": "stringst"
    }
  },
  "debtorName": "string",
  "direction": "string",
  "instructedAmount": {
    "amount": "string",
    "currency": "str"
  },
  "lastStatusUpdateTimestamp": "2019-08-24T14:15:22Z",
  "localInstrument": "string",
  "paymentIdentification": {
    "endToEndIdentification": "string",
    "instructionIdentification": "string",
    "transactionIdentification": "string",
    "uetr": "string"
  },
  "product": "SEPA_CREDIT_TRANSFER",
  "purposeCode": "string",
  "remittanceInformationStructured": {
    "reference": "string",
    "referenceIssuer": "string",
    "referenceType": "string"
  },
  "remittanceInformationUnstructured": "string",
  "requestedExecutionDate": "string",
  "requestedExecutionTime": "string",
  "scheme": "string",
  "serviceLevel": "string",
  "settlementInformation": {
    "clearingSystem": "string",
    "settlementAccount": {
      "currency": "str",
      "identification": {
        "iban": "stringstringstr",
        "other": {
          "identification": "string",
          "scheme": "string"
        }
      }
    },
    "settlementMethod": "string"
  },
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "ACCOUNT_ALREADY_MAPPED_TO_THE_SPECIFIED_IDENTIFICATION",
      "errorCode": "string",
      "errorReason": "string",
      "path": "string",
      "text": "string"
    }
  ],
  "transactionStatus": "ACSC",
  "ultimateCreditor": "string",
  "ultimateDebtor": "string"
}

Properties

Name Type Description Restrictions
acceptanceDateTime string(date-time) Point in time when the payment order from the initiating party meets the processing conditions of the account servicing agent in the formst YYYY-MM-DD. none
categoryPurposeCode string Specifies the high level purpose of the instruction based on a set of pre-defined categories. none
creditorAccount Account Settlement account used when settlement method is INDA/INGA. none
creditorAddress FullDetailsAddress An object containing the adress of the creditor. none
creditorAgent Agent Financial institution servicing an account for the creditor. This field is mandatory when proprietary (other) creditor account identification is used. none
creditorName string The party whose account is credited with the payment. Must not exceed 70 characters. none
debtorAccount Account Settlement account used when settlement method is INDA/INGA. none
debtorAddress FullDetailsAddress An object containing the adress of the creditor. none
debtorAgent Agent Financial institution servicing an account for the creditor. This field is mandatory when proprietary (other) creditor account identification is used. none
debtorName string The name of the debtor. Must not exceed 70 characters. none
direction string Payment direction, I for incoming or O for outgoing. This value will be inferred based on current Payment Product, Debtor and Creditor Agents none
instructedAmount Amount Transaction currency and amount. none
lastStatusUpdateTimestamp string(date-time) ISO 8601 timestamp when the transaction status was last updated, expressed in UTC time format (YYYY-MM-DDThh:mm:ss.sssZ). none
localInstrument string User community specific instrument. Used to specify a local instrument, local clearing option and/or further qualify the service or service level. none
paymentIdentification FullPaymentIdentification Payment instruction reference. none
product string Payment product type. Either SEPA_CREDIT_TRANSFER for one-off payments or SEPA_DIRECT_DEBIT for recurring collections. none
purposeCode string The PurposeCode value or a similar explanation is not added to the payer’s Electronic account statement. This value can be shown on both the payers and thebeneficiary’s on the Camt.053 account statement. Purpose codes can be taken from an external list, for example the ISO 20022 External Code Set. none
remittanceInformationStructured Remittance Payment details. Structured message. Generally, these fields are used to provide invoice or creditor reference information. References should conform to ISO 11649, international standard of reference information. none
remittanceInformationUnstructured string Payment details. Free text, one occurrence (max 140 characters).
Payment reason (according to current recurrent payment standard) can be given in this element.
none
requestedExecutionDate string Debit date given by the customer. A particular point in the progression of time in a calendar year expressed in the YYYY-MM-DD format. none
requestedExecutionTime string Debit date given by the customer. A particular point in the progression of time defined by a mandatory date and a mandatory time component, expressed in either UTC time format (YYYY-MM-DDThh:mm:ss.sssZ) or local time with UTC offset format (YYYY-MM-DDThh:mm:ss.sss+/-hh:mm). These representations are aligned with ISO 8601. none
scheme string Specifies the type of the payment. none
serviceLevel string The scheme being used for the payment. For credit transfers, value must be SEPA. none
settlementInformation SettlementInformation Specifies the details on how the settlement of the original transaction(s) between the instructing agent and the instructed agent was completed. none
tppMessages [TPPMessage] Messages to the TPP on operational issues. none
transactionStatus (required) string PSD2 transaction status codes:
  • ACSC: Settlement on the debtor’s account has been completed.
    Usage: this can be used by the first agent to report to the debtor that the transaction has been completed.
    Warning: this status is provided for reporting techincal transaction status, not for financial information. It can only be used after bilateral agreement.
  • ACSP: All preceding checks such as technical validation and customer profile were successful. The payment initiation has been accepted for execution.
  • ACTC: Authentication, syntactical and semantical validation are successful.
  • RCVD: Payment initiation has been received by the receiving agent.
  • PDNG: Payment initiation, or an individual transaction included in the payment initiation is pending. Further checks and status updates will be performed.
  • RJCT: Payment initiation, or an individual transaction included in the payment initiation has been rejected.
none
ultimateCreditor string Party which is the ultimate beneficiary of the payment. For example, the payment can be credited to an account of a financing company, with the ultimate beneficiary being the customer of the financing company. Must not exceed 70 characters. none
ultimateDebtor string The Party that originally ordered goods or services and to whom the seller has sent the invoice. Ultimate Debtor can be used when the acceptor of the invoice is different than the payer. none

Enumerated Values

Property Value
product SEPA_CREDIT_TRANSFER
product ISO20022_CREDIT_TRANSFER
product SEPA_DIRECT_DEBIT
transactionStatus ACSC
transactionStatus ACSP
transactionStatus ACTC
transactionStatus RCVD
transactionStatus PDNG
transactionStatus RJCT

PaymentIdentification

{
  "endToEndIdentification": "string",
  "transactionIdentification": "string"
}

Payment instruction reference.

Properties

Name Type Description Restrictions
endToEndIdentification string Unique identification assigned by the payer to identify the transaction. This identification will be returned to the payer and passed on to the beneficiary. Must not exceed 35 characters. none
transactionIdentification string Unique identification as assigned by the initiating party to be used as transaction identifier. If left empty, Mambu transaction id will be used. Must not exceed 35 characters. none

PaymentResponse

{
  "paymentId": "string",
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "ACCOUNT_ALREADY_MAPPED_TO_THE_SPECIFIED_IDENTIFICATION",
      "errorCode": "string",
      "errorReason": "string",
      "path": "string",
      "text": "string"
    }
  ],
  "transactionFeeIndicator": true,
  "transactionStatus": "RCVD"
}

Properties

Name Type Description Restrictions
paymentId (required) string Resource identification of the generated payment initiation resource. none
tppMessages [TPPMessage] Messages to the TPP on operational issues. none
transactionFeeIndicator boolean If value is true, the transaction will involve additional transaction costs or fees. none
transactionStatus (required) string RCVD: Payment initiation has been received by the receiving agent. none

Enumerated Values

Property Value
transactionStatus RCVD

PaymentResponse-TPP

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "ACCOUNT_ALREADY_MAPPED_TO_THE_SPECIFIED_IDENTIFICATION",
      "errorCode": "string",
      "errorReason": "string",
      "path": "string",
      "text": "string"
    }
  ]
}

Properties

Name Type Description Restrictions
tppMessages [TPPMessage] Messages to the TPP on operational issues. none

PaymentTypeInformation

{
  "sequenceType": "string"
}

Set of elements used to further specify the type of transaction.

Properties

Name Type Description Restrictions
sequenceType (required) string Identifies the direct debit sequence, such as first, recurrent, final or one-off (FRST, RCUR, FNAL, OOFF). none

Recall

{
  "customerRecallReasonCode": "AM09",
  "recallReasonCode": "FRAD"
}

Properties

Name Type Description Restrictions
customerRecallReasonCode string Customer reason for outgoing payment recall, as defined in the SEPA guideline none
recallReasonCode (required) string Reason for outgoing payment recall, as defined in the SEPA guideline none

Enumerated Values

Property Value
customerRecallReasonCode AM09
customerRecallReasonCode AC03
recallReasonCode FRAD
recallReasonCode TECH
recallReasonCode CUST
recallReasonCode DUPL

Refund

{
  "reasonCode": "MD01"
}

Properties

Name Type Description Restrictions
reasonCode (required) string Reason for an interbank Refund, as defined in the SEPA guideline none

Enumerated Values

Property Value
reasonCode MD01
reasonCode MD06

RejectStatusUpdateOnRecall

{
  "cancellationDetails": {
    "additionalInformation": [
      "string"
    ],
    "originalRecallReasonAdditionalInformation": [
      "string"
    ],
    "rejectionReason": "ARDT"
  },
  "groupHeader": {
    "creationDateTime": "string",
    "instructingAgent": "string",
    "messageIdentification": "string"
  },
  "transactionInformation": {
    "originalInstructionIdentification": "string",
    "originalMessageIdentification": "string",
    "statusRequestIdentification": "string"
  }
}

Properties

Name Type Description Restrictions
cancellationDetails (required) CancellationDetails none none
groupHeader (required) GroupHeaderIncoming Set of characteristics shared by all individual transactions included in the Request for Status Update on Recall message none
transactionInformation (required) TransactionInformation Information concerning the original transaction, to which the Request for Status Update on Recall message refers none

Remittance

{
  "reference": "string",
  "referenceIssuer": "string",
  "referenceType": "string"
}

Payment details. Structured message. Generally, these fields are used to provide invoice or creditor reference information. References should conform to ISO 11649, international standard of reference information.

Properties

Name Type Description Restrictions
reference (required) string The actual reference. Must not exceed 35 characters. If providing a reference number, the referenceType should also be provided. none
referenceIssuer string The entity which created or generated the reference. Must not exceed 35 characters. none
referenceType string The type of reference provided. Must not exceed 35 characters. none

ResendAmlFilter

{
  "category": "SEPA_CT",
  "direction": "I",
  "instructingAgent": "string",
  "interbankSettlementDate": "string",
  "messageId": "string"
}

Properties

Name Type Description Restrictions
category string Message Category. Supported values are SEPA_CT, SEPA_DD or TGT. none
direction (required) string Message Direction. Supported values are I (incoming) or O (outgoing). none
instructingAgent string Agent that instructs the next party in the chain to carry out the (set of) instruction(s). none
interbankSettlementDate string Date on which the amount of money ceases to be available to the agent that owes it and when the amount of money becomes available to the agent to which it is due. Accepted format: yyyy-MM-dd none
messageId string Incoming message identification. none

Enumerated Values

Property Value
category SEPA_CT
category SEPA_DD
category TGT
direction I
direction O

RetryInformation

{
  "retryCount": 0,
  "retryUntil": "2019-08-24T14:15:22Z"
}

Under certain conditions a Direct Debit will be retried. This object contains information about the number of retries attempted and cut-off date, after which the transaction will no longer be retried.

Properties

Name Type Description Restrictions
retryCount integer(int32) Number of retries already attempted. none
retryUntil string(date-time) Date until Direct Debit will be retried. none

Reverse

{
  "reasonCode": "AM05"
}

Properties

Name Type Description Restrictions
reasonCode (required) string Reason for an interbank Reversal, as defined in the SEPA guideline none

Enumerated Values

Property Value
reasonCode AM05
reasonCode MS02
reasonCode MS03

SepaMessageFilter

{
  "dateFrom": "string",
  "dateTo": "string",
  "direction": "string",
  "limit": 1,
  "messageId": "string",
  "messageType": "string",
  "network": "string",
  "offset": 0,
  "transactionsLimit": 0,
  "transactionsOffset": 0
}

Properties

Name Type Description Restrictions
dateFrom string Start date from which the messages should be filtered. Accepted format: yyyy-MM-dd none
dateTo string End date up until which the messages should be filtered. Accepted format: yyyy-MM-dd none
direction (required) string Message Direction. Supported values are I (incoming) or O (outgoing) none
limit integer(int32) Limit of the number of objects returned by the server. Defaults to 20. none
messageId string Message ID, representing the GrpHdr>>MsgId field of the message none
messageType string Message type. Accepted values are pacs.008.001.02, pacs.004.001.02, pacs.003.001.02, camt.056.001.01, camt.029.001.03 none
network (required) string Network for which the instructions should be received. SEPA is the only value allowed none
offset integer(int32) Offset from which the results should be provided. Defaults to 0. none
transactionsLimit integer(int32) Limit of the number of transactions returned by the server. Defaults to 10. If the transactionsLimit is 0 only message headers will be returned. If the transactionsLimit or transactionsOffset is bigger than 0 then the messageId parameter has to be used as transactions pagination in only available for one message. none
transactionsOffset integer(int32) Offset from which the transactions should be provided. Defaults to 0. If the transactionsLimit or transactionsOffset is bigger than 0 then the messageId parameter has to be used as transactions pagination in only available for one message. none

SepaMessages

{
  "instructions": [
    {}
  ],
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "ACCOUNT_ALREADY_MAPPED_TO_THE_SPECIFIED_IDENTIFICATION",
      "errorCode": "string",
      "errorReason": "string",
      "path": "string",
      "text": "string"
    }
  ]
}

Properties

Name Type Description Restrictions
instructions [Message] List of SEPA instructions. none
tppMessages [TPPMessage] Messages to the TPP on operational issues. none

SettlementInformation

{
  "clearingSystem": "string",
  "settlementAccount": {
    "currency": "str",
    "identification": {
      "iban": "stringstringstr",
      "other": {
        "identification": "string",
        "scheme": "string"
      }
    }
  },
  "settlementMethod": "string"
}

Specifies the details on how the settlement of the original transaction(s) between the instructing agent and the instructed agent was completed.

Properties

Name Type Description Restrictions
clearingSystem string Clearing system when settlement method is CLRG. none
settlementAccount Account Settlement account used when settlement method is INDA/INGA. none
settlementMethod (required) string Method used to settle the payment: INDA (instructed agent), INGA (instructing agent), CLRG (clearing system) none

SkipStatusUpdateOnRecall

{
  "groupHeader": {
    "creationDateTime": "string",
    "instructingAgent": "string",
    "messageIdentification": "string"
  },
  "transactionInformation": {
    "statusRequestIdentification": "string"
  }
}

Properties

Name Type Description Restrictions
groupHeader (required) GroupHeaderIncoming Set of characteristics shared by all individual transactions included in the Request for Status Update on Recall message none
transactionInformation (required) StatusRequestIdentification Information concerning the Request for Status Update on Recall message none

StatusRequestIdentification

{
  "statusRequestIdentification": "string"
}

Information concerning the Request for Status Update on Recall message

Properties

Name Type Description Restrictions
statusRequestIdentification (required) string Unique identification, as assigned by an instructing party for an instructed party, to identify the status request none

TPPMessage

{
  "category": "ERROR",
  "code": "ACCOUNT_ALREADY_MAPPED_TO_THE_SPECIFIED_IDENTIFICATION",
  "errorCode": "string",
  "errorReason": "string",
  "path": "string",
  "text": "string"
}

Messages to the TPP on operational issues.

Properties

Name Type Description Restrictions
category (required) string Category designates the message severity. none
code (required) string Message error codes:
  • ACCOUNT_ALREADY_MAPPED_TO_THE_SPECIFIED_IDENTIFICATION: This identification is already mapped to the specified Mambu Account.
  • FEATURE_NOT_ENABLED: The request failed due to disabled feature.
  • FORMAT_ERROR: Format of certain request fields are not matching the API requirements. An explicit path to the corresponding field might be added in the return message.
  • INVALID_MESSAGE_TYPE: The request failed due to invalid message type.
  • INVALID_REQUEST_BODY: The request failed due to invalid request body.
  • INVALID_TRANSACTION_STATE: The request failed due to invalid transaction state.
  • INVALID_TRANSACTION_STATUS: The request failed due to invalid transaction status.
  • ORIGINAL_MESSAGE_ALREADY_REPLIED: The associated message already has a response.
  • ORIGINAL_MESSAGE_PENDING_REPLY: The associated message has no response.
  • PARAMETER_NOT_SUPPORTED: The parameter is not supported by the API.
  • PAYMENT_FAILED: The payment initiation POST request failed during the initial process.
  • NOT_FOUND: The request failed due to not found message.
  • SERVICE_INVALID: The addressed service is not valid for the addressed resources or the submitted data.
none
errorCode string Payment error code. Gives a more detailed analysis of any problems which may have occurred during the payment processing. none
errorReason string Payment error reason. Gives a more detailed analysis of any problems which may have occurred during the payment processing. none
path string none none
text string Additional explanatory text. none

Enumerated Values

Property Value
category ERROR
category WARN
code ACCOUNT_ALREADY_MAPPED_TO_THE_SPECIFIED_IDENTIFICATION
code FEATURE_NOT_ENABLED
code FORMAT_ERROR
code INVALID_MESSAGE_TYPE
code INVALID_REQUEST_BODY
code INVALID_TRANSACTION_STATE
code INVALID_TRANSACTION_STATUS
code ORIGINAL_MESSAGE_ALREADY_REPLIED
code ORIGINAL_MESSAGE_PENDING_REPLY
code PARAMETER_NOT_SUPPORTED
code PAYMENT_FAILED
code SERVICE_INVALID
code NOT_FOUND
code RESOURCE_UNKNOWN

TppMessagesResponse

{
  "tppMessages": [
    {
      "category": "ERROR",
      "code": "ACCOUNT_ALREADY_MAPPED_TO_THE_SPECIFIED_IDENTIFICATION",
      "errorCode": "string",
      "errorReason": "string",
      "path": "string",
      "text": "string"
    }
  ]
}

Properties

Name Type Description Restrictions
tppMessages (required) [TPPMessage] Messages to the TPP on operational issues. none

TransactionInformation

{
  "originalInstructionIdentification": "string",
  "originalMessageIdentification": "string",
  "statusRequestIdentification": "string"
}

Information concerning the original transaction, to which the Request for Status Update on Recall message refers

Properties

Name Type Description Restrictions
originalInstructionIdentification (required) string Unique identification, as assigned by the original instructing party for the original instructed party, to unambiguously identify the original instruction. none
originalMessageIdentification (required) string Point to point reference assigned by the original instructing party to identify the original group of individual transactions none
statusRequestIdentification (required) string Unique identification, as assigned by an instructing party for an instructed party, to identify the status request none