Liigu edasi põhisisu juurde

Info  Hea klient! Levimas on erinevad pettused, mille abil püüavad kelmid saada ligipääsu kliendi pangakontole. Ära kunagi sisesta PIN koode, kui Sa ei ole ise tehingut algatanud ja pea meeles, et pank ei küsi kunagi internetipanka sisenemisel PIN 2 koodi!

Gateway Technical Documentation

 

Access and Basics

How to start

Before starting the registration process your organisation must meet several prerequisites in order to be successfully onboarded as a customer for Coop Pank Gateway API:

  • You must have a valid customer contract with Coop Pank.
  • You must sign an additional Coop Pank Gateway contract.
  • You must obtain an authentication certificate(s):
    • If you use the certificate for authentication issued by SK ID Solutions AS, you can use it for both Sandbox and Live. For operators it is mandatory to use the authentication certificate issued by SK ID Solutions AS. For single clients it is strongly suggested.
    • If you request the certificates from Coop Pank CA, you need test certificate for Sandbox and the other one for Live environment.

On-boarding process for starting to use live environment:

  • The first thing you should do is submit the application for Coop Pank Gateway at Coop Pank webpage. In case you need any help with services, contact your personal Business Client Manager.
  • Based on your application, IT support team prepares your dedicated Sandbox test environment.
  • For testing in Sandbox an authentication certificate is needed. Sandbox accepts certificates issued by SK ID Solutions AS or by Coop Pank. Additional information about requesting an authentication certificate from Coop Pank.
  • Development and testing of your integrations can start after receiving a confirmation email.
  • After you are done with testing and ready to proceed to live, inform your Business Client Manager.
  • In case you used the authentication certificate issued by Coop Pank for testing, you should request for another certificate for live environment. Live environment can not be used with test certificate. If you used the authentication certificate issued by SK ID Solutions AS, you can continue to use it for live as well.
  • Business Client Manager prepares and signs the Coop Pank Gateway contract.
  • After your contract is signed you will receive a confirmation email that your services are ready to use.

For additional help, please contact your personal Business Client Manager or the IT Support Team gateway@cooppank.ee.

 

 

Clients and connection schemes

It's possible to use the Gateway API services as a single client or as an operator.

Single clients

Using it as a single client means that client itself is the owner of the authentication certificate and connection software. Certificate provides access to one customer or legal entity only.

Operators/service providers and end users using their services

Operators or service providers are the intermediary. They themselves own a certificate and provide the service to multiple customers or legal entities. It is usually for accounting software providers and other similar business cases.

In this scheme there are two kinds of clients:

  • service provider itself (software owner, technical aggregator) - they are directly connected to Gateway API;
  • end user clients, who use Gateway API through service providers - not directly connected to Gateway API.

Only service provider connection software is using Gateway API services directly. End users are using the service provider software. For all requests we also need to know the end user - the actual client that uses the service provider. For this we require two HTTP headers in addition to regular expected input:

  • Client-Code (registration code)
  • Client-Country (country code in ISO 3166-1 alpha-2 format - issuing country of registration code)

If these are missing from the request, you will get a corresponding error.

 

 

Certificates

Authentication (connection) certificates are necessary for both test and live environments. Certificates are necessary for single clients and operators/service providers. Certificate identifies and confirms on transport layer that messages were sent by customer's software to the Bank.

  • You can use the certificate for authentication issued by SK ID Solutions AS, you can use it for both Sandbox and Live. For operators it is mandatory to use the authentication certificate issued by SK ID Solutions AS. For single clients it is strongly suggested.
  • Alternatively you can request the certificates from Coop Pank CA, you need test certificate for Sandbox and the other one for Live environment. It is an SSL Base64 PEM certificate that also requires a key.

Process for Coop Pank CA certificate generation:

  1. Follow the instructions to create the CSR file and private key.
  2. For Sandbox environment's certificate attach the CSR file when submitting the application for Coop Pank Gateway (CSR file does not have to be digitally signed).
  3. For Live environment's certificate send the CSR file to your personal Business Client Manager after you are done with testing. The CSR file must be digitally signed by the company's official representative (according to Estonian Business Registry).
  4. IT support team will sign it with CA certificate and will send you a generated certificate.

To verify your certificates and test the basic connection to the API you can use the Communication Test services service in both Live and Sandbox.

 

 

Environments

Gateway has two environments:

  • Live environment
  • Sandbox environment

Live

Live base URL is: https://cpgw.cooppank.ee/

Sandbox

Sandbox can be used to test your integrations when on-boarding or also any additional developments. It is technically also very similar to Live environment - the services, messages structure etc. is the same.

Sandbox base URL is: https://cpgw-sandbox.cooppank.ee/

 

 

Gateway API services

List of services which are available in the Gateway API.

SERVICE DESCRIPTION AND PURPOSE SERVICES FORMATS
Generic Services      
Communication Test

For testing the connection and credentials (certificates).

GET gateway/api/heartbeat
GET gateway/api/heartbeat/mq
POST gateway/api/heartbeat

XML
Messaging For managing the messages (reading, deleting).

GET gateway/api/messages/
GET gateway/api/messages/next
GET gateway/api/messages/count
POST gateway/api/messages/delete

response varies according to messages
AIS Services      
Account Statement Getting an account statement or list of transactions for a selected period POST gateway/api/account-statement XML camt.060.001.06 / camt.053.001.02
Account Balance Getting account balances POST gateway/api/account-balance XML camt.060.001.06 / XML camt.052.001.02
Automatic Account Statement

Generated every midnight for the previous twenty-four hours. It's generated for every account separately.  For customers with contracts. 

 

message in the response table XML camt.053.001.02
Debit Credit Notification

For every transaction a new message will be generated immediately (in the response table). 

 

message in the response table XML camt.054.001.02
PIS Services      
Payment Initiation Service for Payment initiation. Service is used to initiate return payments. POST gateway/api/payment XML pain.001.001.03 / pain.002.001.03

 

Messaging

One of the main functions of Coop Pank Gateway is the messaging service. On the database side, it consists of  two tables - request table and response table. Customer posts its requests to request table and gets its messages from response table.  By default the response table returns oldest unread first. Messaging process consists of three steps: posting a request, getting the response and deleting the response.

Flow of API requests:

POST [base-url]/gateway/api/payment                  # initiate payment request
GET [base-url]/gateway/api/messages/next              # receive response message 
# handle message on customer side
DELETE [base-url]/gateway/api/messages/[Message-Response-Id]    # delete read message to confirm it's received

POST [base-url]/gateway/api/account-statement       # initiate account statement request
GET [base-url]/gateway/api/messages/next            # receive response message with account statement data status
# handle message on customer side
DELETE [base-url]/gateway/api/messages/[Message-Response-Id]    # delete read message to confirm it's received 

POST [base-url]/gateway/api/account-balance       # initiate account balance request
GET [base-url]/gateway/api/messages/next            # receive response message with account balance data status

# handle message on customer side
DELETE [base-url]/gateway/api/messages/[Message-Response-Id]    # delete read message to confirm it's received  
GET [base-url]/gateway/api/messages/next            # receive the oldest unread/undeleted message

# handle message on customer side
DELETE [base-url]/gateway/api/messages/[Message-Response-Id]    # delete read message to confirm it's received

Sending requests

POST [base-url]/gateway/api/payment
POST [base-url]/gateway/api/account-statement
POST [base-url]/gateway/api/account-balance

In response of successful sending of the request in HTTP header Message-Request-Id is returned, for example:

Message-Request-Id: 8743bd85-a917-4e12-9630-af8da25c4735

Every Message-Request-Id has at least one corresponding message-response-id. Some requests may have multiple - for example Payment Initiation.
Message-Request-Id: 8743bd85-a917-4e12-9630-af8da25c4735

 

Getting back the responses

For message traffic there are different possibilities. 

 

Get next message
GET [base-url]/gateway/api/messages/next

One can use the following filters and parameters. If no filters/parameters are selected, the oldest unread (undeleted) message is returned

  • Filter-Response-Type - for example account statement, account_balance etc. It's useful if there are huge amount on unread messages. Then it makes easier to find the right one.
  • Client-code - for using in Service Provide mode only. Company registration code of the Service Provider or its customer. When using the Service Provider own value also related customers messages are returned by default.
  • Client-Country -  for using in Service Provide mode only. Issuing country of registration code (ISO country code, 2 char) 

Headers of the reponse:

  • Message-Request-Id (optional) - the same id as the initial request. There are cases where request id can be missing, for example the Debit Credit Notification.
    Sample: Message-Request-Id: b84eee42-cb31-4687-8fad-2815ab3bd414 
  • Message-Response-Id (mandatory) - unique response id.
    Sample: message-response-id: 886b106c-d62e-274b-9732-dc15e86c874e  
  • Message-Response-Type - type of the response depending on the request or purpose. 
    Sample: message-response-type: PAYMENT_INITIATION  (response message for Payment Initiation request).

When executing the request you can receive following HTTP responses:

  • 200 - there is at least one unread message and it is returned
  • 204 - there are no unread messages

 

Get messages list
GET [base-url]/gateway/api/messages/   

One can use the following filters and parameters. If no filters/parameters are selected, the list of messages in returned ordered by oldest unread (undeleted) message first and the default limit of messages is 10

  • Filter-Response-Type - for example account statement, account_balance etc. It's useful if there are huge amount on unread messages. Then it makes easier to find the right one.
  • Client-code - for using in Service Provide mode only. Company registration code of the Service Provider or its customer. When using the Service Provider own value also related customers messages are returned by default.
  • Client-Country -  for using in Service Provide mode only. Issuing country of registration code (ISO country code, 2 char) 
  • Limit - sets the maximum number of messages in the list (default is 10)

Headers of the reponse:

  • Message-Request-Id (optional) - the same id as the initial request. There are cases where request id can be missing, for example the Debit Credit Notification.
    Sample: Message-Request-Id: b84eee42-cb31-4687-8fad-2815ab3bd414 
  • Message-Response-Id (mandatory) - unique response id.
    Sample: message-response-id: 886b106c-d62e-274b-9732-dc15e86c874e  
  • Message-Response-Type - type of the response depending on the request or purpose. 
    Sample: message-response-type: PAYMENT_INITIATION  (response message for Payment Initiation request).

When executing the request you can receive following HTTP responses:

  • 200 - there is at least one unread message and it is returned
  • 204 - there are no unread messages

List of messages is returned in JSon format:

  • messageResponseId -  unique ID, for deleting the message, this ID must be referred
  • messageRequestId -  unique ID. It matches the ID in the sending requests (payment, account stament, account balance)
  • messageResponseType -  Refers to the service (account_statement, payment_initiation)
  • clientCode -  client's reg.code 
  • clientCountry -  client's country code
  • messageCreatedTime -  timestamp
[
  {
    "messageResponseId": "886b106c-d62e-274b-9732-dc15e86c874e",
    "messageRequestId": "b84eee42-cb31-4687-8fad-2815ab3bd414",
    "messageResponseType": "PAYMENT_INITIATION",
    "clientCode": "12345678",
    "clientCountry": "EE",
    "messageCreatedTime": "2022-09-21T16:29:40.660"
  },
  {
    "messageResponseId": "590ab50c-6cd1-f742-8b75-d71eb054b377",
    "messageRequestId": "cd0b349b-dec5-4878-8718-60f3f02c6067",
    "messageResponseType": "ACCOUNT_STATEMENT",
    "clientCode": "12345678",
    "clientCountry": "EE",
    "messageCreatedTime": "2022-09-22T08:58:40.114"
  }
]
 
Read the content of the message
GET [base-url]/gateway/api/messages/{messageResponseId}   

 To read the content of the message, use this service. MessageResponseId is the same that is returned by the service [base-url]/gateway/api/messages.

When executing the request you can receive following HTTP responses:

  • 200 - there is at least one unread message and it is returned
  • 204 - there are no unread messages
  • 404 - no message found with given message response id
 
Get number of unread (undeleted) messages
GET [base-url]/gateway/api/messages/count

Use this service to get the number of pending messages.

Sample response:

{
    "count": 8
}

 

Deleting the message = Confirm the successful reading of the message/response

After reading a message it should be deleted promptly, it's so called confirming the reading. For this, use the response id.

DELETE [base-url]/gateway/api/messages/{messageResponseId}
 
Bulk delete = bulk delete

For deleting the messages there's another option where one can delete multiple messages at a time. This is more useful when used together with List of Messages service. 

POST [base-url]/gateway/api/messages/delete

Sample body in JSon format:

{
  "messageResponseIds": [
    "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "886b106c-d62e-274b-9732-dc15e86c874e"
  ]
} 

Response body contains the results for all the requests messages.

  • status: 200 - delete successful; 400 - already deleted or not found

Response sample:

{
  "messages": [
    {
      "messageResponseId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "status": 400
    },
    {
      "messageResponseId": "886b106c-d62e-274b-9732-dc15e86c874e",
      "status": 200
    }
  ]
}

 

 

Dates and time-zones

Depending on the season GMT+2 or GMT+3 time zone is used in Estonia. By default all date and time data uses that.

Precise information is available: https://www.timeanddate.com/time/zone/estonia/tallinn

Request's dates

Dates that are specified in requests (for example Account Statement, Account Balance, Payment Initiation) use ISO date format. Only following form "YYYY-MM-DD" is taken into account and all other additions are ignored (for example time zones).

Used format is "YYYY-MM-DD" where:

  • YYYY indicates the year
  • MM indicates the month
  • DD indicates the day

 

Language and Code Pages

We use the Windows-1257 code page with mainly supporting Baltic and a list of other European languages. ISO20022 standard messages use UTF-8.

UTF-8 Unicode characters, which are not supported by Windows-1257, will be replaced with "?" symbols. This rule applies to all API services unless stated differently.

For example unstructured payment description submitted in the payment file:

//Submitted by customer
Payment description - личный.
 
//Sent to the payment scheme
Payment description - ????????.

 

 

Error handling

Service specific errors are returned with following XML file. Errors are mostly returned with descriptions.

INDEX MULT. MESSAGE ELEMENT XML TAG DESCRIPTION
1.0 [1..1] Errors <Errors>  
1.1 [1..n] +Error <Error>  
1.2 [1..1] ++ErrorCode <ErrorCode>  
1.3 [1..1] ++Description <Description> Description text.
1.4 [0..1] ++Field <Field> Reference to faulty field.

 

Sample

<?xml version='1.0' encoding='UTF-8'?>
  <Errors>
    <Error>
      <ErrorCode>errStatement_RequestInvalid</ErrorCode>
      <Description>Request message fails xsd validation</Description>
      <Field/>
    </Error>
  </Errors>

 

 

Response codes

CODE   DESCRIPTION
503 Service Unavailable Technical error.
403 Forbidden Authorization or authentication failure. Requested service is not stated in Gateway API agreement, Gateway API agreement is not valid or other failure.
500 Internal Server Error Technical error.
200 OK Request is handled successfully
202 Accepted POST request accepted.
429 Too many requests Max 10 requests per hour per client is allowed.

 

 

Communication Test

Heartbeat service

GET [base-url]/heartbeat

With heartbeat it's possible to test if system is up and connection certificate is configured correctly. If configured correctly, it returns current system time.
One should use for testing some API testing tool (Postman, SOAP UI, cURL). Sample statements is in code box below. Your PEM certificate should be put instead yourcert.crt and yourkey.key should be replaced with key files. If you have certificate with password, you should add password in the curl command after certificate's name yourcert.crt:password

// Sandbox:
curl -X GET "https://cpgw-sandbox.cooppank.ee/gateway/api/heartbeat" --cert yourcert.crt --key yourkey.key
 
// Live:
curl -X GET "https://cpgw.cooppank.ee/gateway/api/heartbeat" --cert yourcert.crt --key yourkey.key
 
// Sandbox - for service providers:
curl -X GET "https://cpgw-sandbox.cooppank.ee/gateway/api/heartbeat" --cert yourcert.crt --key yourkey.key -H "Client-Code: 012345678" -H "Client-Country: EE"
 
// Live - for service providers:
curl -X GET "https://cpgw.cooppank.ee/gateway/api/heartbeat" --cert yourcert.crt --key yourkey.key -H "Client-Code: 012345678" -H "Client-Country: EE"

Sample response

<HeartBeatResponse>
  <TimeStamp>2022-08-19T15:06:07.141</TimeStamp>
  <AuthorizedUser/>
  <UserRequest/>
</HeartBeatResponse>
GET [base-url]/heartbeat/mq

It's the same as GET /heartbeat, but the response message will be created in the queue and could be read with GET/messagest/next. Response includes additional user information. This service can be used for simulating the general messaging logic without more complex Account Information or Payments requests.

Sample response

<?xml version='1.0' encoding='UTF-8'?>
  <HeartBeatResponse>
    <TimeStamp>2022-08-22T13:22:00.007</TimeStamp>
    <AuthorizedUser>
      <Name>Test user</Name>
      <Code>12345678</Code>
    </AuthorizedUser>
    <UserRequest><Content>test</Content></UserRequest>
  </HeartBeatResponse>
POST [base-url]/heartbeat

This service can be used for testing the ASICE and BDOC requests.

Request must contain digitally signed request.xml file, saved in ASICE or BDOC. Service takes authenticated user info, extracts ASICE or BDOC signature data and request.xml content and creates response xml like shown below.

One can read the response via messaging service GET "https://cpgw-sandbox.cooppank.ee/gateway/api/messages/next".

Sample response

<?xml version='1.0' encoding='UTF-8'?>
  <HeartBeatResponse>
    <TimeStamp>2022-08-22T13:34:25.007</TimeStamp>
    <AuthorizedUser>
      <Name>Test user</Name>
      <Code>12345678</Code>
    </AuthorizedUser>
    <Signatures>
      <Signature>
        <Name>Coop Pank</Name>
        <Code>12345678</Code>
      </Signature>
    </Signatures>
    <UserRequest><xml></UserRequest>
  </HeartBeatResponse>

 

 

Request Account Report

Account Statement
POST [base-url]/account-statement

Account Statement is used when statement end-date is in the past and it is used to report booked transactions and balances.
With Account Statement one receive the list of transactions, both incoming and outgoing, also payments with added details. Request can be made for the given period for one Customer Account.
For this endpoint the max amount of requests per hour apply - max 10 requests in an hour per every client (not per account).

Account Balance
POST [base-url]/account-balance

Account Balance is used for current day statement and it reports intraday transactions and balances (actual and free balance for all the currencies used). Balances are provided real-time on the moment of generating the response. Request can be made for one Customer Account at once.
To request Payment limits info, one can use optional Prtry parameter. Both total and free limits for Daily and Monthly periods are received.
For this endpoint the max amount of requests per hour apply - max 10 requests in an hour per every client (not per account).

 

XML format (camt.060.001.06)

This description is related to the ISO 20022 Account Report Request camt.060.001.06 XML-based description, which will replace the proprietary electronic account reporting standards used by banks operating in Estonia. One can use it for both Account Statement and Account Balance requests.

The AccountReportingRequest message is sent by the account owner, either directly or through a forwarding agent, to one of its account servicing institutions. It is used to ask the account servicing institution to send a report on the account owner's account in a BankToCustomerAccountReport.
Some values apply for both services and some are specific to either Statements or Balances response only. 

Request's Content-Type has to be 'multipart/form-data' and it has to contain XML file in "request" position.

Example how to create Account Statement Request with Java Apache HttpClient
String xml = "<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.060.001.06">
    <AcctRptgReq>
        <GrpHdr>
            <MsgId>20230201171147610</MsgId>
            <CreDtTm>2023-01-02T17:11:47.610+02:00</CreDtTm>
        </GrpHdr>
        <RptgReq>
            <Id>20230201171147610</Id>
            <ReqdMsgNmId>camt.053.001.02</ReqdMsgNmId>
            <Acct>
                <Id>
                    <IBAN>EE214204200000000000</IBAN>
                </Id>
            </Acct>
            <AcctOwnr>
                <Pty/>
            </AcctOwnr>
            <RptgPrd>
                <FrToDt>
                    <FrDt>2023-01-01</FrDt>
                    <ToDt>2023-01-01</ToDt>
                </FrToDt>
                <Tp>ALLL</Tp>
            </RptgPrd>
        </RptgReq>
    </AcctRptgReq>
</Document>";
 
try (CloseableHttpClient client = HttpClients.createDefault()) {
    HttpPost request = new HttpPost(gatewayUri + "/account-statement");
    request.setEntity(MultipartEntityBuilder.create()
        .addBinaryBody("request", xml.getBytes(), ContentType.create("text/xml"), "request")
        .setLaxMode()
        .build());
 
    client.execute(request);
} catch (IOException ex) {
    ...
}
Message root
INDEX MESSAGE ELEMENT XML TAG
[1..1] MessageRoot <AcctRptgReq>

 

Group header
INDEX MULT. MESSAGE ELEMENT XML TAG DESCRIPTION
1.0 [1..1] +GroupHeader <GrpHdr>  
1.1 [1..1] ++MessageIdentification <MsgId> Unique message identification, generated by Coop Pank.
1.2 [1..1] ++CreationDateTime <CreDtTm> The date and time (UTC+2) of account statement message creation at the bank 
2.0 [1..1] +ReportingRequest <RptgReq>  
2.1 [0..1] ++Identification <Id> Unique identification of the account statement, provided by the bank
2.2 [1..1] ++RequestedMessageNameIdentification <ReqdMsgNmId>

Supported values:

'camt.053.001.02' BankToCustomerStatement - client request POST https://cpgw.cooppank.ee/gateway/api/account-statement

'camt.052.001.02' BankToCustomerAccountReport - client request POST https://cpgw.cooppank.ee/gateway/api/account-balance

2.3 [1..1] ++Account <Acct>  
2.3 [1..1] +++Identification <Id>  
2.3 [1..1] ++++IBAN <IBAN> Account number, for what statement is generated 
2.4 [1..1] ++AccountOwner <AcctOwnr> Account owner information
2.4 [1..1] +++Party <Pty> Values are ignored.
2.8 [1..1] ++ReportingPeriod <RptgPrd>  
2.9 [1..1] +++FromToDate <FrToDt>  
2.9 [1..1] ++++FromDate <FrDt> Account statement from date, ISO date format. FromDate must be smaller than ToDate. For camt.052.001.06 value is ignored and only current day is returned.
2.9 [1..1] ++++ToDate <ToDt> Account statement to date, ISO date format. For camt.052.001.06 value is ignored and only current day is returned.
2.10 [1..1] +++FromToTime <FrToTm> Not used.
2.10 [1..1] ++++FromTime <FrTm> Not used.
2.10 [1..1] ++++ToTime <ToTm> Not used.
2.13 [1..1] +++Type <Tp> ‘ALLL’
2.14 [0..1] ++Requested Balance Type <ReqdBalTp> Provides details on the requested balance reporting.
2.14 [1..1] +++Code or Proprietary <CdOrPrtry>  
2.14 [1..1] ++++Code <Cd> Not used
2.14 [1..1] ++++Proprietary <Prtry> For Account Statement camt.053: 'DATE': return statement based on FromDate and ToDate only; FromTime and ToTime are ignored, 'DATETIME': return statement with FromTime and ToTime support.
 

 

 

Samples

 

Account Statement

 

This is sample request for the account statement for account EE214204200000000000.

Parameters used

  • The period: 31th of August 2022, time.
<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.060.001.06">
    <AcctRptgReq>
        <GrpHdr>
            <MsgId>MSGIDCOOPPANKTEST01</MsgId>
            <CreDtTm>2022-08-31T16:15:07.617</CreDtTm>
        </GrpHdr>
        <RptgReq>
            <ReqdMsgNmId>camt.053.001.02</ReqdMsgNmId>
            <Acct>
                <Id>
                    <IBAN>EE214204200000000000</IBAN>
                </Id>
            </Acct>
            <AcctOwnr>
                <Pty />
            </AcctOwnr>
            <RptgPrd>
                <FrToDt>
                    <FrDt>2022-08-31</FrDt>
                    <ToDt>2022-08-31</ToDt>
                </FrToDt>
                <Tp>ALLL</Tp>
            </RptgPrd>
            <ReqdBalTp>
                <CdOrPrtry>
                    <Prtry>DATE</Prtry>
                </CdOrPrtry>
            </ReqdBalTp>
        </RptgReq>
    </AcctRptgReq>
</Document>

 

Account Balance

This is sample request for the account statement for account EE214204200000000000

Parameters used

  • Balances are taken from current date, therefore it's not necessary to use Date parameters 
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.060.001.06">
    <AcctRptgReq>
        <GrpHdr>
            <MsgId>MSGIDCOOPPANKTEST01</MsgId>
            <CreDtTm>2022-08-30T16:15:07.617</CreDtTm>
        </GrpHdr>
        <RptgReq>
            <ReqdMsgNmId>camt.053.001.02</ReqdMsgNmId>
            <Acct>
                <Id>
                    <IBAN>EE214204200000000000</IBAN>
                </Id>
            </Acct>
            <AcctOwnr>
                <Pty/>
            </AcctOwnr>
            <RptgPrd>
                <FrToDt>
                    <FrDt>2022-08-30</FrDt>
                    <ToDt>2022-08-30</ToDt>
                </FrToDt>
                <Tp>ALLL</Tp>
            </RptgPrd>
        </RptgReq>
    </AcctRptgReq>
</Document>

 

Error codes

ERROR CODE DESCRIPTION
errStatement_NoAccess Cannot access the account.
errStatement_PeriodLong Too long period.
errStatement_PeriodInvalid From date cannot be later than to date.
errStatement_RequestInvalid Request message fails xsd validation.

 

 

Response Account Balance

XML format (ISO 20022 Account Report Message camt.052.001.06)

The ISO 20022 Account Report Message camt.052.001.06 is used for current day balances. Two balances are returned: the actual booked balance without reservations and the actual available balance with reservations. If the current balance is 0 EUR, then it's returned so.

Rate limit - max amount of requests is 10 per hour for each client (not per account).

Header Message-Response-Type: ACCOUNT_BALANCE

 

Message structure

Group Header - mandatory, occurs once.
Report - mandatory and repetitive per currency. Includes one to many Balance blocks.

 

Message root
INDEX MESSAGE ELEMENT XML TAG
[1..1] MessageRoot <BkToCstmrAcctRpt>

 

Group header
INDEX MULT. MESSAGE ELEMENT XML TAG DESCRIPTION
1.0 [1..1] +GroupHeader <GrpHdr>  
1.1 [1..1] ++MessageIdentification <MsgId> Unique message identifier generated by Coop Pank.
1.2 [1..1] ++CreationDateTime <CreDtTm> Date and time when the account statement message is created at Coop Pank.
1.3 [0..1] ++MessageRecipient <MsgRcpt> Not used.
1.4 [0..1] ++MessagePagination <MsgPgntn> Not used.

 

Report
INDEX MULT. MESSAGE ELEMENT XML TAG DESCRIPTION
2.0 [1..n] +Report <Rpt> - repeated for each currency on account
- includes balances and transaction data
2.1 [1..1] ++Identification <Id> Unique identification of the account statement, provided by the bank (Coop Pank)
2.4 [1..1] ++CreationDateTime <CreDtTm> The date and time (UTC+2) of account statement message creation at the bank.
2.5 [0..1] ++FromToDate <FrToDt> Period for what statement is generated
2.5 [1..1] +++FromDateTime <FrDtTm> Date and time when camt.052.001.06 was generated.
2.5 [1..1] +++ToDateTime <ToDtTm> Date and time when camt.052.001.06 was generated.
2.10 [1..1] ++Account <Acct>  
2.10 [1..1] +++Identification <Id>  
2.10 [1..1] ++++IBAN <IBAN> Account number, for what statement is generated
2.10 [0..1] +++Currency <Ccy> Account currency, for what this statement block is generated. 
2.23 [0..n] ++Balance <Bal> Report has two balances: current booked balance and current available balance.
2.24 [1..1] +++Type <Tp>  
2.25 [1..1] ++++CodeOrProprietary <CdOrPrtry>  
2.26 [0..1] +++++Code <Cd> ITAV for current available balance;
ITBD for interim booked balance.
2.26 [0..1] +++++Proprietary <Prtry>

Not used.

2.34 [1..1] +++Amount <Amt> Actual balance.
2.35 [1..1] +++CreditDebitIndicator <CdtDbtInd> Codes are listed in Code Set: Credit and Debit Code.  
2.36 [1..1] +++Date <Dt>  
2.36 [1..1] ++++Date <Dt> Date of the balance.
2.76 [0..n] ++Entry <Ntry> Entry data is not returned.

 

Sample

Sample account EE214204200000000000 has two balances in EUR (current available and current booked balance). 

<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.052.001.02" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:camt.052.001.02 camt.052.001.02.xsd">
  <BkToCstmrAcctRpt>
    <GrpHdr>
      <MsgId>STMMSGID/20220922124310_892323</MsgId>
      <CreDtTm>2022-09-22T12:43:10.209+03:00</CreDtTm>
    </GrpHdr>
    <Rpt>
      <Id>EE214204200000000000EUR20220922</Id>
      <CreDtTm>2022-09-22T12:43:10.209+03:00</CreDtTm>
      <FrToDt>
        <FrDtTm>2022-09-22T12:43:10.209+03:00</FrDtTm>
        <ToDtTm>2022-09-22T12:43:10.209+03:00</ToDtTm>
      </FrToDt>
      <Acct>
        <Id>
          <IBAN>EE214204200000000000</IBAN>
        </Id>
        <Ccy>EUR</Ccy>
      </Acct>
      <Bal>
        <Tp>
          <CdOrPrtry>
            <Cd>ITBD</Cd>
          </CdOrPrtry>
        </Tp>
        <Amt Ccy="EUR">991946579.49</Amt>
        <CdtDbtInd>CRDT</CdtDbtInd>
        <Dt>
          <Dt>2022-09-22</Dt>
        </Dt>
      </Bal>
      <Bal>
        <Tp>
          <CdOrPrtry>
            <Cd>ITAV</Cd>
          </CdOrPrtry>
        </Tp>
        <Amt Ccy="EUR">991949579.49</Amt>
        <CdtDbtInd>CRDT</CdtDbtInd>
        <Dt>
          <Dt>2022-09-22</Dt>
        </Dt>
      </Bal>
    </Rpt>
  </BkToCstmrAcctRpt>
</Document>

 

 

Response Account Statement

XML format (ISO 20022 Account Statement Message camt.053.001.02)

CAMT.053.001.02 is used when statement end-date is in the past and it is used to report booked transactions and balances. Information about the opening balance, the closing balance, and the available balance with all booked transactions of a specified period is included in the message. 
It's possible to make a request up to 7 years and 5 days old data.

Header Message-Response-Type: ACCOUNT_STATEMENT

Message structure

Group Header – mandatory, presented once.  
Statement – mandatory and repetitive. It should be repeated for each account on which a statement is provided. 
Balance – mandatory and repetitive. Contains elements such as Opening Booked Balance and Closing Booked Balance.
Entry – included in the Statement block. Contains information related to an entry on the account.
Entry Details – included in the Entry block. Contains detailed information related to the entry.

Message root
INDEX MESSAGE ELEMENT XML TAG
[1..1] MessageRoot <BkToCstmrStmt>

 

Group header
INDEX MULT. MESSAGE ELEMENT XML TAG DESCRIPTION
1.0 [1..1] +GroupHeader <GrpHdr>  
1.1 [1..1] ++MessageIdentification <MsgId> Unique message identification, generated by Coop Pank. Maximum length 35 characters.
1.2 [1..1] ++CreationDateTime <CreDtTm> The date and time (UTC+2) of account statement message creation at the bank.
1.3 [0..1] ++MessageRecipient <MsgRcpt> Not used.
1.4 [0..1] ++MessagePagination <MsgPgntn> Used if the camt-message needs to be divided into several parts. If pagination is not used, each account statement must be a complete account statement including all transactions and initial and final balances. Current pagination limit is 10k transactions.
1.4 [0..1] +++PageNumber <PgNb> Sequence number of current paginated long account statement portion.
1.4 [0..1] +++LastPageIndicator <LastPgInd> One of the following YesNoIndicator values is used:
Meaning When True= Yes
Meaning When False= No
 
Statement
INDEX MULT. OR MESSAGE ELEMENT XML TAG DESCRIPTION
2.0 [1..n]   +Statement <Stmt>  
2.1 [1..1]   ++Identification <Id> Unique identification of the account statement, provided by the bank . Identification is generated from the value of GrpHdr. MsgId and the currency for which this Statement block is generated.
2.2 [0..1]   ++ElectronicSequenceNumber <ElctrncSeqNb> Not used.
2.3 [0..1]   ++LegalSequenceNumber <LglSeqNb> Not used.
2.4 [1..1]   ++CreationDateTime <CreDtTm> The date and time (UTC+2) 
2.5 [1..1]   ++FromToDate <FrToDt> Period for what statement is generated
2.5 [1..1]   +++FromDateTime <FrDtTm>

Start date and time of the reporting period. Time is always start of the day 00:00:00.000.

2.5 [1..1]   +++ToDateTime <ToDtTm> End date and time of the reporting period. Time is always end of the day 23:59:59.000.
2.10 [1..1]   ++Account <Acct>  
  [1..1]   +++Identification <Id>  
  [1..1]   ++++IBAN <IBAN> Account number, for what statement is generated.
  [0..1]   +++Currency <Ccy> Account currency for which this statement block is generated.
  [0..1]   +++Servicer <Svcr> Full information about Coop Pank.
  [1..1]   ++++FinancialInstitutionIdentification <FinInstnId>  
  [0..1]   +++++BIC <BIC> EKRDEE22
  [0..1]   +++++Name <Nm> Coop Pank
  [0..1]   +++++PostalAddress <PstlAdr>  
  [0..1]   ++++++StreetName <StrtNm> Maakri
  [0..1]   ++++++BuildingNumber <BldgNb> 30
  [0..1]   ++++++PostCode <PstCd> 15014
  [0..1]   ++++++TownName <TwnNm> Tallinn
  [0..1]   ++++++CountrySubdivision <CtrySubDvsn> Harjumaa
  [0..1]   ++++++Country <Ctry> EE
2.11 [0..1]   ++RelatedAccount <RltdAcct> Not used.
2.23 [1..n]   ++Balance <Bal>  
2.24 [1..1]   +++Type <Tp>  
2.25 [1..1]   ++++CodeOrProprietary <CdOrPrtry>  
2.26 [1..1]   +++++Code <Cd> Codes are listed in Code Set: Balance.
2.31 [0..1]   +++CreditLine <CdtLine> Not used.
2.34 [1..1]   +++Amount <Amt> Balance amount.
2.35 [1..1]   +++CreditDebitIndicator <CdtDbtInd> Codes are listed in Code Set: Credit and Debit Code.  
  [1..1]   ++++Date <Dt> Balance date
2.43 [1..1]   ++TransactionsSummary <TxsSummry>  
2.44 [0..1]   +++TotalEntries <TtlNtries> Not used.
2.49 [1..1]   +++TotalCreditEntries <TtlCdtNtries>  
2.50 [0..1]   ++++NumberOfEntries <NbOfNtries> Number of credit entries in a given Statement block.
2.51 [1..1]   ++++Sum <Sum> Sum of all credit entries in a given statement block.
2.52 [1..1]   +++TotalDebitEntries <TtlDbtNtries>  
2.53 [0..1]   ++++NumberOfEntries <NbOfNtries> Number of debit ebtries in a given Statement block.
2.54 [1..1]   ++++Sum <Sum> Sum of all debit entries in a given Statement block.
2.76 [0..n]   ++Entry <Ntry>  
2.77 [0..1]   +++EntryReference <NtryRef> Not used.
2.78 [1..1]   +++Amount <Amt> Transaction amount (may be zero).
2.79 [1..1]   +++CreditDebitIndicator <CdtDbtInd> Codes are listed in Code Set: Credit and Debit Code.  
2.80 [0..1]   +++ReversalIndicator <RvslInd> True (1) if credit transaction is return of payment
2.81 [1..1]   +++Status <Sts> BOOK
2.82 [1..1]   +++BookingDate <BookgDt>  
  [1..1]   ++++Date <Dt> Booking date.
2.83 [0..1]   +++ValueDate <ValDt> Not used.
  [1..1]   ++++Date <Dt>  
2.84 [1..1]   +++AccountServicerReference <AcctSvcrRef> Unique payment ID assigned by the bank.
2.91 [1..1]   +++BankTransactionCode <BkTxCd>  
2.92 [1..1]   ++++Domain <Domn>  
2.93 [1..1]   +++++Code <Cd> Codes are listed in Code Set: Bank Transaction Codes.  
2.94 [1..1]   +++++Family <Fmly>  
2.95 [1..1]   ++++++Code <Cd> Codes are listed in Code Set: Bank Transaction Codes.
2.96 [1..1]   ++++++SubFamilyCode <SubFmlyCd> Codes are listed in Code Set: Bank Transaction Codes.
2.97 [0..1]   ++++Proprietary <Prtry>  
3.21 [1..1]   +++++Code <Cd> Payment scheme code - Code Set: Payment scheme.
2.101 [0..1]   +++AdditionalInformationIndicator <AddtlInfInd> Not used.
2.135 [1..n]   +++EntryDetails <NtryDtls>  
2.136 [0..1]   ++++Batch <Btch> Not used.
2.142 [0..n]   ++++TransactionDetails <TxDtls>  
2.143 [1..1]   +++++References <Refs>  
2.144 [0..1]   ++++++MessageIdentification <MsgId> Not used.
2.145 [0..1]   ++++++AccountServicerReference <AcctSvcrRef> Unique payment ID assigned by the bank.
2.146 [0..1]   ++++++PaymentInformationIdentification <PmtInfId> Unique identification assigned by a sending party. For outgoing payments reference to the original payment initiation message value PmtInf.PmtInfId.
2.147 [0..1]   ++++++InstructionIdentification <InstrId> Payment order number.
2.148 [0..1]   ++++++EndToEndIdentification <EndToEndId>  
2.149 [0..1]   ++++++TransactionIdentification <TxId> Not used.
2.199 [0..1]   +++++RelatedParties <RltdPties>  
2.200 [0..1]   ++++++InitiatingParty <InitgPty> Not used.
2.201 [0..1]   ++++++Remitter <Dbtr>  
  [0..1]   +++++++Name <Nm> Remitter’s name.
  [0..1]   ++++++++Country <Ctry> Remitter’s country ISO code.
  [0..7]   ++++++++AddressLine <AdrLine> Remitter’s address.
  [0..1]   +++++++Identification <Id>  
  [1..1] {Or ++++++++OrganisationIdentification <OrgId>  
  [0..1]   +++++++++BICOrBEI <BICOrBEI> Remitter’s BIC or BEI.
  [0..n]   +++++++++Other <Othr>  
  [1..1]   ++++++++++Identification <Id> Remitter’s identification.
  [1..1] Or} ++++++++PrivateIdentification <PrvtId>  
  [0..1]   +++++++++DateAndPlaceOfBirth <DtAndPlcOfBirth>  
  [1..1]   ++++++++++BirthDate <BirthDt> Remitter’s birth date.
  [1..1]   ++++++++++CityOfBirth <CityOfBirth> Remitter’s city of birth.
  [1..1]   ++++++++++CountryOfBirth <CtryOfBirth> Remitter’s country of birth.
  [0..n]   +++++++++Other <Othr>  
  [1..1]   ++++++++++Identification <Id> Remitter’s identification.
  [0..1]   ++++++++++SchemeName <SchmeNm>  
  [1..1]   +++++++++++Code <Cd> List of supported values in Code Set: Private Person Identification.
2.202 [0..1]   ++++++RemitterAccount <DbtrAcct>  
  [1..1]   +++++++Identification <Id>  
  [1..1] {Or ++++++++IBAN <IBAN> Remitter’s IBAN.
  [1..1] Or} ++++++++Other <Othr>  
  [1..1]   +++++++++Identification <Id> Remitter’s bank account number which is not IBAN. 
2.203 [0..1]   ++++++UltimateRemitter <UltmtDbtr>  
  [0..1]   +++++++Name <Nm> Ultimate remitter’s name.
  [0..1]   +++++++Identification <Id>  
  [1..1] {Or ++++++++OrganisationIdentification <OrgId>  
  [0..1]   +++++++++BICOrBEI <BICOrBEI> Ultimate remitter’s BIC or BEI.
  [0..n]   +++++++++Other <Othr>  
  [1..1]   ++++++++++Identification <Id> Ultimate remitter’s identification.
  [1..1] Or} ++++++++PrivateIdentification <PrvtId>  
  [0..1]   +++++++++DateAndPlaceOfBirth <DtAndPlcOfBirth>  
  [1..1]   ++++++++++BirthDate <BirthDt> Ultimate remitter’s birth date.
  [1..1]   ++++++++++CityOfBirth <CityOfBirth> Ultimate remitter’s city of birth.
  [1..1]   ++++++++++CountryOfBirth <CtryOfBirth> Ultimate remitter’s country of birth.
  [0..n]   +++++++++Other <Othr>  
  [1..1]   ++++++++++Identification <Id> Ultimate remitter’s identification.
  [0..1]   ++++++++++SchemeName <SchmeNm>  
  [1..1]   +++++++++++Code <Cd> List of supported values in Code Set: Private Person Identification.
2.204 [0..1]   ++++++Beneficiary <Cdtr>  
  [0..1]   +++++++Name <Nm> Beneficiary’s name.
  [0..1]   +++++++PostalAddress <PstlAdr>  
  [0..1]   ++++++++Country <Ctry> Beneficiary’s country ISO code.
  [0..1]   ++++++++AddressLine <AdrLine> Beneficiary’s address.
  [0..1]   +++++++Identification <Id>  
  [1..1] {Or ++++++++OrganisationIdentification <OrgId>  
  [0..1]   +++++++++BICOrBEI <BICOrBEI> Beneficiary’s BIC or BEI.
  [0..n]   +++++++++Other <Othr>  
  [1..1]   ++++++++++Identification <Id> Beneficiary’s identification.
  [1..1] Or} ++++++++PrivateIdentification <PrvtId>  
  [0..1]   +++++++++DateAndPlaceOfBirth <DtAndPlcOfBirth>  
  [1..1]   ++++++++++BirthDate <BirthDt> Beneficiary’s birth date.
  [1..1]   ++++++++++CityOfBirth <CityOfBirth> Beneficiary’s city of birth.
  [1..1]   ++++++++++CountryOfBirth <CtryOfBirth> Beneficiary’s country of birth.
  [0..n]   +++++++++Other <Othr>  
  [1..1]   ++++++++++Identification <Id> Beneficiary’s identification.
  [0..1]   ++++++++++SchemeName <SchmeNm>  
  [1..1]   +++++++++++Code <Cd> List of supported values in Code Set: Private Person Identification.
2.205 [0..1]   ++++++BeneficiaryAccount <CdtrAcct>  
  [1..1]   +++++++Identification <Id>  
  [0..1] {Or ++++++++IBAN <IBAN> Beneficiary’s IBAN.  
  [0..1] Or} ++++++++Other <Othr>  
  [1..1]   +++++++++Identification <Id> Beneficiary’s account number which is not IBAN.  
2.206 [0..1]   ++++++UltimateBeneficiary <UltmtCdtr>  
  [0..1]   +++++++Name <Nm> Ultimate beneficiary’s name.
  [0..1]   +++++++Identification <Id>  
  [1..1] {Or ++++++++OrganisationIdentification <OrgId>  
  [0..1]   +++++++++BICOrBEI <BICOrBEI> Ultimate beneficiary’s BIC or BEI.
  [0..n]   +++++++++Other <Othr>  
  [1..1]   ++++++++++Identification <Id> Ultimate beneficiary’s identification.
  [1..1] Or} ++++++++PrivateIdentification <PrvtId>  
  [0..1]   +++++++++DateAndPlaceOfBirth <DtAndPlcOfBirth>  
  [1..1]   ++++++++++BirthDate <BirthDt> Ultimate beneficiary’s birth date.
  [1..1]   ++++++++++CityOfBirth <CityOfBirth> Ultimate beneficiary’s city of birth.
  [1..1]   ++++++++++CountryOfBirth <CtryOfBirth> Ultimate beneficiary’s country of birth.
  [0..n]   +++++++++Other <Othr>  
  [1..1]   ++++++++++Identification <Id> Ultimate beneficiary’s identification.
  [0..1]   ++++++++++SchemeName <SchmeNm>  
  [1..1]   +++++++++++Code <Cd> List of supported values in Code Set: Private Person Identification.
2.211 [0..1]   +++++RelatedAgents <RltdAgts>  
2.212 [0..1]   ++++++RemitterAgent <DbtrAgt>  
  [1..1]   +++++++FinancialInstitutionIdentification <FinInstnId>  
  [0..1]   ++++++++BIC <BIC> BIC of the remitter’s bank.
  [0..1]   ++++++++Name <Nm> Name of the remitter’s bank.
2.213 [0..1]   ++++++BeneficiaryAgent <CdtrAgt>  
  [1..1]   +++++++FinancialInstitutionIdentification <FinInstnId>  
  [0..1]   ++++++++BIC <BIC> BIC of the beneficiary’s bank.
  [0..1]   ++++++++Name <Nm> Name of the beneficiary’s bank.
2.214 [0..1]   ++++++IntermediaryAgent1 <IntrmyAgt1> Not used.
2.215 [0..1]   ++++++IntermediaryAgent2 <IntrmyAgt2> Not used.
2.216 [0..1]   ++++++IntermediaryAgent3 <IntrmyAgt3>  
  [1..1]   +++++++FinancialInstitutionIdentification <FinInstnId>  
  [0..1]   ++++++++BIC <BIC> BIC of the beneficiary’s correspondent bank.
  [0..1]   ++++++++Name <Nm> Name of the beneficiary’s correspondent bank.
2.224 [0..1]   +++++Purpose <Purp>  
2.225 [1..1] {Or ++++++Code <Cd> List of codes in Code Set: Purpose.
2.226 [1..1] Or} ++++++Proprietary <Prtry>  
2.227 [0..10]   +++++RelatedRemittanceInformation <RltdRmtInf> Not used.
2.234 [0..1]   +++++RemittanceInformation <RmtInf>  
2.235 [0..n]   ++++++Unstructured <Ustrd> Payment description.
2.236 [0..n]   ++++++Structured <Strd>  
2.256 [0..n]   +++++++BeneficiaryReferenceInformation <CdtrRefInf>  
2.257 [0..1]   ++++++++Type <Tp>  
2.258 [1..1]   +++++++++CodeOrProprietary <CdOrPrtry>  
2.259 [1..1] {Or ++++++++++Code <Cd> SCOR
2.260 [1..1] Or} ++++++++++Proprietary <Prtry>  
2.261 [0..1]   +++++++++Issuer <Issr>  
2.262 [0..1]   ++++++++Reference <Ref> Payment reference number.
2.293 [0..1]   +++++ReturnInformation <RtrInf> Return information.
2.304 [0..1]   ++++++Reason <Rsn>  
2.305 [1..1] {Or +++++++Code <Cd> NARR if AdditionalInformation is filled.
2.306 [1..1] Or} +++++++Proprietary <Prtry>  
2.307 [0..n]   ++++++AdditionalInformation <AddtlInf> Used with Reason/Code NARR. For returned payment reference to original payment message PAIN.001.001.03 PmtInfId value. Coop Pank doesn't use the payment scheme return codes, the human readable messages are returned instead.
Sample
<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.053.001.02" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:camt.053.001.02 camt.053.001.02.xsd">
  <BkToCstmrStmt>
    <GrpHdr>
      <MsgId>MSGID_20220922113510_628688</MsgId>
      <CreDtTm>2022-09-22T11:35:10.231+03:00</CreDtTm>
      <MsgPgntn>
        <PgNb>1</PgNb>
        <LastPgInd>true</LastPgInd>
      </MsgPgntn>
    </GrpHdr>
<Stmt xmlns="urn:iso:std:iso:20022:tech:xsd:camt.053.001.02">
  <Id>EE214204200000000000EUR20220922</Id>
  <ElctrncSeqNb>1</ElctrncSeqNb>
  <CreDtTm>2022-09-22T11:35:10.231+03:00</CreDtTm>
  <FrToDt>
    <FrDtTm>2022-08-01T00:00:00.000+03:00</FrDtTm>
    <ToDtTm>2022-08-30T23:59:59.000+03:00</ToDtTm>
  </FrToDt>
  <Acct>
    <Id>
      <IBAN>EE214204200000000000</IBAN>
    </Id>
    <Ccy>EUR</Ccy>
    <Ownr>
      <Nm>TEST OÜ</Nm>
      <Id>
        <OrgId>
          <Othr>
            <Id>1111111</Id>
          </Othr>
        </OrgId>
      </Id>
    </Ownr>
    <Svcr>
      <FinInstnId>
        <BIC>EKRDEE22</BIC>
        <Nm>COOP PANK AS</Nm>
        <PstlAdr>
          <AdrTp>BIZZ</AdrTp>
          <StrtNm>Maakri</StrtNm>
          <BldgNb>30</BldgNb>
          <PstCd>15014</PstCd>
          <TwnNm>Tallinn</TwnNm>
          <CtrySubDvsn>Harjumaa</CtrySubDvsn>
          <Ctry>EE</Ctry>
        </PstlAdr>
      </FinInstnId>
    </Svcr>
  </Acct>
  <Bal>
    <Tp>
      <CdOrPrtry>
        <Cd>OPBD</Cd>
      </CdOrPrtry>
    </Tp>
    <Amt Ccy="EUR">993946639.49</Amt>
    <CdtDbtInd>CRDT</CdtDbtInd>
    <Dt>
      <Dt>2022-08-01</Dt>
    </Dt>
  </Bal>
  <Bal>
    <Tp>
      <CdOrPrtry>
        <Cd>CLBD</Cd>
      </CdOrPrtry>
    </Tp>
    <Amt Ccy="EUR">993946629.49</Amt>
    <CdtDbtInd>CRDT</CdtDbtInd>
    <Dt>
      <Dt>2022-08-30</Dt>
    </Dt>
  </Bal>
<TxsSummry xmlns="urn:iso:std:iso:20022:tech:xsd:camt.053.001.02">
  <TtlCdtNtries>
    <NbOfNtries>0</NbOfNtries>
    <Sum>0.00</Sum>
  </TtlCdtNtries>
  <TtlDbtNtries>
    <NbOfNtries>2</NbOfNtries>
    <Sum>10.00</Sum>
  </TtlDbtNtries>
</TxsSummry>
<Ntry xmlns="urn:iso:std:iso:20022:tech:xsd:camt.053.001.02">
  <NtryRef>1</NtryRef>
  <Amt Ccy="EUR">5.00</Amt>
  <CdtDbtInd>DBIT</CdtDbtInd>
  <Sts>BOOK</Sts>
  <BookgDt>
    <Dt>2022-08-26</Dt>
  </BookgDt>
  <ValDt>
    <Dt>2022-08-26</Dt>
  </ValDt>
  <AcctSvcrRef>717CC1F</AcctSvcrRef>
  <BkTxCd>
    <Domn>
      <Cd>PMNT</Cd>
      <Fmly>
        <Cd>ICDT</Cd>
        <SubFmlyCd>BOOK</SubFmlyCd>
      </Fmly>
    </Domn>
  </BkTxCd>
  <NtryDtls>
    <TxDtls>
      <Refs>
        <AcctSvcrRef>717CC1F</AcctSvcrRef>
        <InstrId>84</InstrId>
        <TxId>717CC1F</TxId>
      </Refs>
      <AmtDtls>
        <TxAmt>
          <Amt Ccy="EUR">5.00</Amt>
        </TxAmt>
      </AmtDtls>
      <RltdPties>
        <Dbtr>
          <Id>
            <OrgId>
              <Othr>
                <Id>123412</Id>
                <SchmeNm>
                  <Prtry>COID</Prtry>
                </SchmeNm>
              </Othr>
            </OrgId>
          </Id>
        </Dbtr>
        <Cdtr>
          <Nm>Mari Tamm</Nm>
          <Id>
            <PrvtId>
              <Othr>
                <Id>48603106511</Id>
              </Othr>
            </PrvtId>
          </Id>
        </Cdtr>
        <CdtrAcct>
          <Id>
            <IBAN>EE584204200000000013</IBAN>
          </Id>
        </CdtrAcct>
      </RltdPties>
      <RltdAgts>
        <CdtrAgt>
          <FinInstnId>
            <BIC>EKRDEE22</BIC>
            <Nm>COOP PANK</Nm>
          </FinInstnId>
        </CdtrAgt>
      </RltdAgts>
      <RmtInf>
        <Ustrd>testimiseks</Ustrd>
      </RmtInf>
    </TxDtls>
  </NtryDtls>
</Ntry>
<Ntry xmlns="urn:iso:std:iso:20022:tech:xsd:camt.053.001.02">
  <NtryRef>2</NtryRef>
  <Amt Ccy="EUR">5.00</Amt>
  <CdtDbtInd>DBIT</CdtDbtInd>
  <Sts>BOOK</Sts>
  <BookgDt>
    <Dt>2022-08-26</Dt>
  </BookgDt>
  <ValDt>
    <Dt>2022-08-26</Dt>
  </ValDt>
  <AcctSvcrRef>717CC26</AcctSvcrRef>
  <BkTxCd>
    <Domn>
      <Cd>PMNT</Cd>
      <Fmly>
        <Cd>ICDT</Cd>
        <SubFmlyCd>BOOK</SubFmlyCd>
      </Fmly>
    </Domn>
  </BkTxCd>
  <NtryDtls>
    <TxDtls>
      <Refs>
        <AcctSvcrRef>717CC26</AcctSvcrRef>
        <InstrId>85</InstrId>
        <TxId>717CC26</TxId>
      </Refs>
      <AmtDtls>
        <TxAmt>
          <Amt Ccy="EUR">5.00</Amt>
        </TxAmt>
      </AmtDtls>
      <RltdPties>
        <Dbtr>
          <Id>
            <OrgId>
              <Othr>
                <Id>123412</Id>
                <SchmeNm>
                  <Prtry>COID</Prtry>
                </SchmeNm>
              </Othr>
            </OrgId>
          </Id>
        </Dbtr>
        <Cdtr>
          <Nm>Mari Tamm</Nm>
          <Id>
            <PrvtId>
              <Othr>
                <Id>48603106511</Id>
              </Othr>
            </PrvtId>
          </Id>
        </Cdtr>
        <CdtrAcct>
          <Id>
            <IBAN>EE584204200000000013</IBAN>
          </Id>
        </CdtrAcct>
      </RltdPties>
      <RltdAgts>
        <CdtrAgt>
          <FinInstnId>
            <BIC>EKRDEE22</BIC>
            <Nm>COOP PANK</Nm>
          </FinInstnId>
        </CdtrAgt>
      </RltdAgts>
      <RmtInf>
        <Ustrd>testimiseks</Ustrd>
      </RmtInf>
    </TxDtls>
  </NtryDtls>
</Ntry>
</Stmt>
</BkToCstmrStmt>
</Document>

 

For long account statements containing larger number of transactions pagination can be used - one Account Statement response receives more than one response in the queue. Currently the pagination limit per message is 10 000 transactions. Total amount of transactions in any response is 100 000 - in 10 separate response messages. Layout of first message header:

<Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.053.001.02" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:camt.053.001.02 camt.053.001.02.xsd">
  <BkToCstmrStmt>
    <GrpHdr>
      <MsgId>MSGID_20220922113510_628688</MsgId>
      <CreDtTm>2022-09-22T11:35:10.231+03:00</CreDtTm>
      <MsgPgntn>
        <PgNb>1</PgNb>
        <LastPgInd>false</LastPgInd>
      </MsgPgntn>
    </GrpHdr>    
     ...

Layout of second and final message header:

<Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.053.001.02" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:camt.053.001.02 camt.053.001.02.xsd">
  <BkToCstmrStmt>
    <GrpHdr>
      <MsgId>MSGID_20220922113510_628688</MsgId>
      <CreDtTm>2022-09-22T11:35:10.231+03:00</CreDtTm>
      <MsgPgntn>
        <PgNb>2</PgNb>
        <LastPgInd>true</LastPgInd>
      </MsgPgntn>
    </GrpHdr>
     ...

 

Debit Credit Notification

XML format (ISO 20022 Bank To Customer Debit Credit Notification camt.054.001.02)

CAMT.054.001.02 Bank To Customer Debit Credit Notification is used to report single booked entry. The customer can recieve either debit or credit notifications or both, depending on the contract.
No balance information is included.

Header Message-Response-Type: CREDIT_DEBIT_NOTIFICATION

Message structure

Debit Credit Notification message does not include the Message-Request-Id HTTP header!

Group Header – mandatory, preseneted once.
Notificaton – required for every account and currency. Repetitive per account number and currency. One notification block can include many entries.
Entry – optional and repetitive. Contains information about single entry.

 

Elements

 

INDEX MULT. OR MESSAGE ELEMENT XML TAG DESCRIPTION
1.0 [1..1]   +GroupHeader <GrpHdr>  
1.1 [1..1]   ++MessageIdentification <MsgId> Unique message identification generated by Coop Pank.
1.2 [1..1]   ++CreationDateTime <CreDtTm> The date and time (UTC+2) of message creation at the bank.
2.0 [1..n]   +Notification <Ntfctn>  
2.1 [1..1]   ++Identification <Id> Unique identification of the notification provided by
the Coop Pank.
2.4 [1..1]   ++CreationDateTime <CreDtTm> The date and time (UTC+2).
2.10 [1..1]   ++Account <Acct>  
  [1..1]   +++ Identification <Id>  
  [1..1]   ++++IBAN <IBAN> Account number (IBAN), for what notification is generated. 
  [1..1]   +++Currency <Ccy> Account currency, for what this notification block is
generated. 
  [0..1]   +++Owner <Ownr> Account owner information.
  [1..1]   ++++Name <Nm> Name of the account owner.
  [1..1]   ++++Identification <Id> Legal customer registry code or private customer personal code.
  [1..1] {Or +++++OrganisationIdentification <OrgId>  
  [1..1]   ++++++Other <Othr>  
  [1..1]   +++++++Identification <Id> Organization’s legal registry code.
  [1..1] Or} +++++PrivateIdentification <PrvtId>  
  [1..1]   ++++++Other <Othr>  
  [1..1]   +++++++Identification <Id> Private customer's legal personal code.
  [1..1]   +++Servicer <Svcr>  
  [1..1]   ++++BIC <BIC> EKRDEE22
  [1..1]   ++++Name <Nm> Coop Pank
2.56 [0..n]   ++Entry <Ntry> Only booked transactions are reported.
2.58 [1..1]   +++Amount <Amt Ccy="XXX></Amt> Transaction amount (may be zero).
2.59 [1..1]   +++CreditDebitIndicator <CdtDbtInd> Code Set: Credit and debit code. Zero amount is considered a credit amount.
2.60 [0..1]   +++ReversalIndicator <RvslInd> Used in case Entry is a reversal. If CdtDbtInd is ’CRDT’ and RvslInd is ’true’ the original entry was a debit.
2.61 [1..1]   +++Status <Sts> BOOK
2.62 [1..1]   +++BookingDate <BookgDt> Booking date
  [1..1]   ++++Date <Dt> Transaction date
2.64 [1..1]   +++AccountServicerReference <AcctSvcrRef> Coop Pank's reference to identify the entry. 
2.71 [1..1]   +++BankTransactionCode <BkTxCd>  
2.72 [1..1]   ++++Domain <Domn>  
2.73 [1..1]   +++++Code <Cd> See the codes in Code Set: Bank Transaction Codes.
2.74 [1..1]   +++++Family <Fmly>  
2.75 [1..1]   ++++++Code <Cd> See the codes in Code Set: Bank Transaction Codes.
2.76 [1..1]   ++++++SubFamilyCode <SubFmlyCd> See the codes in Code Set: Bank Transaction Codes.
2.77 [0..1]   ++++Proprietary <Prtry> This is used only when payment is made via Banklink.
3.78 [1..1]   +++++Code <Cd> Payment scheme code - Code Set: Payment scheme.
2.115 [1..n]   +++EntryDetails <NtryDtls>  
2.122 [1..n]   ++++TransactionDetails <TxDtls> Used to provide information on the single transaction
2.123 [1..1]   +++++References <Refs>  
2.125 [0..1]   ++++++AccountServicerReference <AcctSvcrRef> Coop Pank's reference to identify the entry. Same as in field 2.64 
2.126 [0..1]   ++++++PaymentInformationIdentification <PmtInfId> Referencing the payment information id in the pain.001 (2.1 <PmntInfId>) 
2.127 [0..1]   ++++++InstructionIdentification <InstrId> Payment order number.
2.128 [0..1]   ++++++EndToEndIdentification <EndToEndId>  
2.136 [1..1]   +++++AmountDetails <AmtDtls>  
  [1..1]   +++++++Amount <Amt Ccy="XXX></Amt> Transaction amount (may be zero).
2.179 [0..1]   +++++RelatedParties <RltdPties>  
2.181 [0..1]   ++++++Debtor <Dbtr> Reported in case of incoming payments.
  [0..1]   +++++++Name <Nm> Remitter’s name.
  [0..1]   +++++++PostalAddress <PstlAdr>  
  [0..1]   ++++++++Country <Ctry> Remitter’s country ISO code.
  [0..7]   ++++++++AddressLine <AdrLine> Remitter’s address.
  [0..1]   +++++++Identification <Id>  
  [1..1] {Or ++++++++OrganisationIdentification <OrgId>  
  [0..1] {{Or +++++++++BICOrBEI <BICOrBEI> Remitter’s BIC or BEI.
  [0..n] Or}} +++++++++Other <Othr>  
  [1..1]   ++++++++++Identification <Id> Remitter’s identification.
  [0..1]   ++++++++++Issuer <Issr>  
  [1..1] Or} ++++++++PrivateIdentification <PrvtId> Personal code of the debtor.
  [0..1]   +++++++++DateAndPlaceOfBirth <DtAndPlcOfBirth>  
  [1..1]   ++++++++++BirthDate <BirthDt>  
  [1..1]   ++++++++++CityOfBirth <CityOfBirth>  
  [1..1]   ++++++++++CountryOfBirth <CtryOfBirth>  
  [0..n]   +++++++++Other <Othr>  
  [1..1]   ++++++++++Identification <Id> Remitter’s personal code.
  [0..1]   ++++++++++SchemeName <SchmeNm>  
  [1..1]   +++++++++++Code <Cd> See the supported values in Code Set: Private Person Identification.
2.182 [0..1]   ++++++DebtorAccount <DbtrAcct> Reported in case of incoming payments.
      +++++++Identification <Id>  
  [1..1] {Or ++++++++IBAN <IBAN> Remitter’s IBAN for credit transaction.
  [1..1] Or} ++++++++Other <Othr>  
  [1..1]   +++++++++Identification <Id>  
2.183 [0..1]   ++++++UltimateDebtor <UltmtDbtr> In case of incoming payments reported if available. In case of outgoing payments referencing the ultimate debtor in pain.001
  [0..1]   +++++++Name <Nm> Ultimate remitter’s name.
  [0..1]   +++++++Identification <Id>  
  [0..7] {Or ++++++++OrganisationIdentification <OrgId>  
  [0..1] {{Or +++++++++BICOrBEI <BICOrBEI> Ultimate remitter’s BIC or BEI.
  [1..1] Or}} +++++++++Other <Othr>  
  [0..1]   ++++++++++Identification <Id> Ultimate remitter’s identification.
  [1..1] Or} ++++++++PrivateIdentification <PrvtId>  
  [1..1]   +++++++++DateAndPlaceOfBirth <DtAndPlcOfBirth>  
  [0..1]   ++++++++++BirthDate <BirthDt> Ultimate remitter’s birth date.
  [1..1]   ++++++++++CityOfBirth <CityOfBirth> Ultimate remitter’s city of birth.
  [0..1]   ++++++++++CountryOfBirth <CtryOfBirth> Ultimate remitter’s country of birth.
  [1..1]   +++++++++Other <Othr>  
  [1..1]   ++++++++++Identification <Id> Ultimate remitter’s identification.
  [0..1]   ++++++++++SchemeName <SchmeNm>  
  [1..1]   +++++++++++Code <Cd> See the supported values in Code Set: Private Person Identification.
2.184 [0..1]   ++++++Creditor <Cdtr> Reported in case of outgoing payments as sent to the bank in pain.001 or in other payment instruction.
  [0..1]   +++++++Name <Nm> Beneficiary’s name.
  [0..1]   +++++++PostalAddress <PstlAdr>  
  [0..1]   ++++++++Country <Ctry> Remitter’s country ISO code.
  [0..7]   ++++++++AddressLine <AdrLine> Remitter’s address.
  [0..1]   +++++++Identification <Id>  
  [0..7] {Or ++++++++OrganisationIdentification <OrgId>  
  [0..1] {{Or +++++++++BICOrBEI <BICOrBEI> Beneficiary’s BIC or BEI.
  [1..1] Or}} +++++++++Other <Othr>  
  [0..1]   ++++++++++Identification <Id> Beneficiary’s identification.
  [1..1] Or} ++++++++PrivateIdentification <PrvtId>  
  [1..1]   +++++++++DateAndPlaceOfBirth <DtAndPlcOfBirth>  
  [0..1]   ++++++++++BirthDate <BirthDt> Beneficiary’s birth date.
  [1..1]   ++++++++++CityOfBirth <CityOfBirth> Beneficiary’s city of birth.
  [0..1]   ++++++++++CountryOfBirth <CtryOfBirth> Beneficiary’s country of birth.
  [1..1]   +++++++++Other <Othr>  
  [1..1]   ++++++++++Identification <Id> Beneficiary’s identification.
  [0..1]   ++++++++++SchemeName <SchmeNm>  
  [1..1]   +++++++++++Code <Cd> See the supported values in Code Set: Private Person Identification.
2.185     ++++++CreditorAccount <CdtrAcct> Reported in case of outgoing payments.
      +++++++Identification <Id>  
  [1..1] {Or ++++++++IBAN <IBAN> Beneficiary’s IBAN for debit transaction.
  [1..1] Or} ++++++++Other <Othr>  
  [1..1]   +++++++++Identification <Id> Beneficiary’s account number which is not IBAN.  
2.186 [0..1]   ++++++UltimateCreditor <UltmtCdtr> In case of incoming payments reported if available. In case of outgoing payments referencing the ultimate creditor in pain.001 
  [0..1]   +++++++Name <Nm> Ultimate beneficiary’s name.
  [0..1]   +++++++Identification <Id>  
  [0..7] {Or ++++++++OrganisationIdentification <OrgId>  
  [0..1] {{Or +++++++++BICOrBEI <BICOrBEI> Ultimate beneficiary’s BIC or BEI.
  [1..1] Or}} +++++++++Other <Othr>  
  [0..1]   ++++++++++Identification <Id> Ultimate beneficiary’s identification.
  [1..1] Or} ++++++++PrivateIdentification <PrvtId>  
  [1..1]   +++++++++DateAndPlaceOfBirth <DtAndPlcOfBirth>  
  [0..1]   ++++++++++BirthDate <BirthDt> Ultimate beneficiary’s birth date.
  [1..1]   ++++++++++CityOfBirth <CityOfBirth> Ultimate beneficiary’s city of birth.
  [0..1]   ++++++++++CountryOfBirth <CtryOfBirth> Ultimate beneficiary’s country of birth.
  [1..1]   +++++++++Other <Othr>  
  [1..1]   ++++++++++Identification <Id> Ultimate beneficiary’s identification.
  [0..1]   ++++++++++SchemeName <SchmeNm>  
  [1..1]   +++++++++++Code <Cd> See the supported values in Code Set: Private Person Identification
2.191     +++++RelatedAgents <RltdAgts>  
2.192     ++++++DebtorAgent <DbtrAgt> Reported in case of incoming payment and if BIC is used.
      +++++++FinancialInstitutionIdentification <FinInstnId>  
      ++++++++BIC <BIC> BIC of the remitter’s bank.
      ++++++++Name <Nm> Name of the remitter’s bank.
2.193     ++++++CreditorAgent <CdtrAgt> Reported in case of outgoing payment and if BIC is used.
      +++++++FinancialInstitutionIdentification <FinInstnId>  
      ++++++++BIC <BIC> BIC of the beneficiary’s bank.
      ++++++++Name <Nm> Name of the beneficiary’s bank.
2.204     +++++Purpose <Purp> In case of incoming payments reported if available. In case of outgoing payments referencing the purpose in pain.001 
2.205     ++++++Code <Cd> See the codes in Code Set: Purpose
2.206     ++++++Proprietary <Prtry>  
2.214     +++++RemittanceInformation <RmtInf> In case of incoming payments reported if available. In case of outgoing payments referencing the remittance information in pain.001 or other payment instruction.
2.215     ++++++Unstructured <Ustrd> Unstructured payment details.
2.216     ++++++Structured <Strd>  
2.236     +++++++CreditorReferenceInformation <CdtrRefInf>  
2.237     ++++++++Type <Tp>  
2.238     +++++++++CodeOrProprietary <CdOrPrtry>  
2.239     ++++++++++Code <Cd>  
2.240     ++++++++++Proprietary <Prtry>  
2.241     +++++++++Issuer <Issr>  
2.242     ++++++++Reference <Ref> Payment reference number.
2.273 [0..1]   +++++ReturnInformation <RtrInf> Return information.
2.284 [0..1]   ++++++Reason <Rsn>  
2.285 [1..1] {Or +++++++Code <Cd> NARR if AdditionalInformation is filled.
2.286 [1..1] Or} +++++++Proprietary <Prtry>  
2.287 [0..n]   ++++++AdditionalInformation <AddtlInf> Used with Reason/Code NARR. For returned payment reference to orignal payment message PAIN.001.001.03 PmtInfId value. Additional rows with format CD:NNNNNNNN refer to payment scheme specific return code

 

Sample of debit notification
<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.054.001.02" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:camt.054.001.02 camt.054.001.02.xsd">
  <BkToCstmrDbtCdtNtfctn>
    <GrpHdr>
      <MsgId>MSGID_20220922111310_531549</MsgId>
      <CreDtTm>2022-09-22T11:13:10.825+03:00</CreDtTm>
    </GrpHdr>
    <Ntfctn>
      <Id>EE214204200000000000EUR20220922</Id>
      <ElctrncSeqNb>1</ElctrncSeqNb>
      <CreDtTm>2022-09-22T11:13:10.825+03:00</CreDtTm>
      <Acct>
        <Id>
          <IBAN>EE214204200000000000</IBAN>
        </Id>
        <Ccy>EUR</Ccy>
        <Ownr>
          <Nm>Testimiseks OÜ</Nm>
          <Id>
            <OrgId>
              <Othr>
                <Id>123412</Id>
              </Othr>
            </OrgId>
          </Id>
        </Ownr>
        <Svcr>
          <FinInstnId>
            <BIC>EKRDEE22</BIC>
            <Nm>COOP PANK AS</Nm>
            <PstlAdr>
              <AdrTp>BIZZ</AdrTp>
              <StrtNm>Maakri</StrtNm>
              <BldgNb>30</BldgNb>
              <PstCd>15014</PstCd>
              <TwnNm>Tallinn</TwnNm>
              <CtrySubDvsn>Harjumaa</CtrySubDvsn>
              <Ctry>EE</Ctry>
            </PstlAdr>
          </FinInstnId>
        </Svcr>
      </Acct>
      <TxsSummry>
        <TtlCdtNtries>
          <NbOfNtries>0</NbOfNtries>
          <Sum>0.00</Sum>
        </TtlCdtNtries>
        <TtlDbtNtries>
          <NbOfNtries>1</NbOfNtries>
          <Sum>25.00</Sum>
        </TtlDbtNtries>
      </TxsSummry>
      <Ntry>
        <NtryRef>1</NtryRef>
        <Amt Ccy="EUR">25.00</Amt>
        <CdtDbtInd>DBIT</CdtDbtInd>
        <Sts>BOOK</Sts>
        <BookgDt>
          <Dt>2022-09-22</Dt>
        </BookgDt>
        <ValDt>
          <Dt>2022-09-22</Dt>
        </ValDt>
        <AcctSvcrRef>71B2EA2</AcctSvcrRef>
        <BkTxCd>
          <Domn>
            <Cd>PMNT</Cd>
            <Fmly>
              <Cd>ICDT</Cd>
              <SubFmlyCd>BOOK</SubFmlyCd>
            </Fmly>
          </Domn>
        </BkTxCd>
        <NtryDtls>
          <TxDtls>
            <Refs>
              <AcctSvcrRef>71B2EA2</AcctSvcrRef>
              <InstrId>168</InstrId>
              <TxId>71B2EA2</TxId>
            </Refs>
            <AmtDtls>
              <TxAmt>
                <Amt Ccy="EUR">25.00</Amt>
              </TxAmt>
            </AmtDtls>
            <RltdPties>
              <Dbtr>
                <Id>
                  <OrgId>
                    <Othr>
                      <Id>123412</Id>
                      <SchmeNm>
                        <Prtry>COID</Prtry>
                      </SchmeNm>
                    </Othr>
                  </OrgId>
                </Id>
              </Dbtr>
              <Cdtr>
                <Nm>XXXXX OÜ</Nm>
                <Id>
                  <PrvtId>
                    <Othr>
                      <Id>16166605</Id>
                    </Othr>
                  </PrvtId>
                </Id>
              </Cdtr>
              <CdtrAcct>
                <Id>
                  <IBAN>EE584204200000000013</IBAN>
                </Id>
              </CdtrAcct>
            </RltdPties>
            <RltdAgts>
              <CdtrAgt>
                <FinInstnId>
                  <BIC>EKRDEE22</BIC>
                  <Nm>COOP PANK</Nm>
                </FinInstnId>
              </CdtrAgt>
            </RltdAgts>
            <RmtInf>
              <Ustrd>testimiseks</Ustrd>
            </RmtInf>
          </TxDtls>
        </NtryDtls>
      </Ntry>
    </Ntfctn>
  </BkToCstmrDbtCdtNtfctn>
</Document>

 

Sample of credit notification
<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.054.001.02" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:camt.054.001.02 camt.054.001.02.xsd">
  <BkToCstmrDbtCdtNtfctn>
    <GrpHdr>
      <MsgId>MSGID_20220922111311_419562</MsgId>
      <CreDtTm>2022-09-22T11:13:11.254+03:00</CreDtTm>
    </GrpHdr>
    <Ntfctn>
      <Id>EE214204200000000000EUR20220922</Id>
      <ElctrncSeqNb>1</ElctrncSeqNb>
      <CreDtTm>2022-09-22T11:13:11.254+03:00</CreDtTm>
      <Acct>
        <Id>
          <IBAN>EE214204200000000000</IBAN>
        </Id>
        <Ccy>EUR</Ccy>
        <Ownr>
          <Nm>XXXX OÜ</Nm>
          <Id>
            <OrgId>
              <Othr>
                <Id>16166605</Id>
              </Othr>
            </OrgId>
          </Id>
        </Ownr>
        <Svcr>
          <FinInstnId>
            <BIC>EKRDEE22</BIC>
            <Nm>COOP PANK AS</Nm>
            <PstlAdr>
              <AdrTp>BIZZ</AdrTp>
              <StrtNm>Maakri</StrtNm>
              <BldgNb>30</BldgNb>
              <PstCd>15014</PstCd>
              <TwnNm>Tallinn</TwnNm>
              <CtrySubDvsn>Harjumaa</CtrySubDvsn>
              <Ctry>EE</Ctry>
            </PstlAdr>
          </FinInstnId>
        </Svcr>
      </Acct>
      <TxsSummry>
        <TtlCdtNtries>
          <NbOfNtries>1</NbOfNtries>
          <Sum>25.00</Sum>
        </TtlCdtNtries>
        <TtlDbtNtries>
          <NbOfNtries>0</NbOfNtries>
          <Sum>0.00</Sum>
        </TtlDbtNtries>
      </TxsSummry>
      <Ntry>
        <NtryRef>1</NtryRef>
        <Amt Ccy="EUR">25.00</Amt>
        <CdtDbtInd>CRDT</CdtDbtInd>
        <Sts>BOOK</Sts>
        <BookgDt>
          <Dt>2022-09-22</Dt>
        </BookgDt>
        <ValDt>
          <Dt>2022-09-22</Dt>
        </ValDt>
        <AcctSvcrRef>71B2EA2</AcctSvcrRef>
        <BkTxCd>
          <Domn>
            <Cd>PMNT</Cd>
            <Fmly>
              <Cd>RCDT</Cd>
              <SubFmlyCd>BOOK</SubFmlyCd>
            </Fmly>
          </Domn>
        </BkTxCd>
        <NtryDtls>
          <TxDtls>
            <Refs>
              <AcctSvcrRef>71B2EA2</AcctSvcrRef>
              <InstrId>168</InstrId>
              <TxId>71B2EA2</TxId>
            </Refs>
            <AmtDtls>
              <TxAmt>
                <Amt Ccy="EUR">25.00</Amt>
              </TxAmt>
            </AmtDtls>
            <RltdPties>
              <Dbtr>
                <Nm>Testimiseks OÜ</Nm>
                <Id>
                  <OrgId>
                    <Othr>
                      <Id>123412</Id>
                      <SchmeNm>
                        <Prtry>COID</Prtry>
                      </SchmeNm>
                    </Othr>
                  </OrgId>
                </Id>
              </Dbtr>
              <DbtrAcct>
                <Id>
                  <IBAN>EE954204200000000026</IBAN>
                </Id>
              </DbtrAcct>
            </RltdPties>
            <RltdAgts>
              <DbtrAgt>
                <FinInstnId>
                  <BIC>EKRDEE22</BIC>
                  <Nm>COOP PANK</Nm>
                </FinInstnId>
              </DbtrAgt>
            </RltdAgts>
            <RmtInf>
              <Ustrd>testimiseks</Ustrd>
            </RmtInf>
          </TxDtls>
        </NtryDtls>
      </Ntry>
    </Ntfctn>
  </BkToCstmrDbtCdtNtfctn>
</Document>

 

 

Payment Initiation

Service for executing payments.

Payment initiation Request

POST [base-url]/gateway/api/payment

Coop Pank uses the request message format: Customer to bank Payment Initiation (XML type pain.001.001.03) and it covers SEPA, SEPA Instant, Internal and SWIFT Payments.
One payment initiation message may contain multiple single payments.

For the status of imported payments Coop Pank returns Payment Status Report (XML type pain.002.001.12). One payment may have one to many statuses.

Payment confirmation methods

Every payment should be confirmed by the customer, most of them by using Strong Customer Authentication (SCA). This requirement comes from the Payment Service Directive 2 (PSD2).

Gateway API currently supports the following two options and the client himself can choose which one to use.

Pending Payments

Format for payment files: XML. Payment files will be processed and debited from the account after confirmation, not instantly. Payments must be confirmed in the Internet bank or in mobile application under Pending payments section and can be signed and confirmed only there. Internet Bank daily and monthly limits apply. At first the signer's personal limit (A limit) is taken in account. If it's not enough, the shared limit (A+A limit) will be used.

header Content-Type: application/xml

Signed Payments in DigiDoc Container

Estonian standard for payment files are BDOC or ASIC-E container. Internet bank daily and monthly limits and signature rights apply. If more than one signature is necessary to sign the payment, all signatures must be included in the container. Limit usage is taken into account for every signer - the requested amount is subtracted from every signer's limit.

header Content-Type: application/vnd.etsi.asic-e+zip

XML file should be named "request.xml". This file should be put into the BDOC or ASIC-E container and added required signature(s). Signed container has to be put into the body of the message. Internet Bank daily and monthly limits apply. At first the signer's personal limit (A limit) is taken in account. If it's not enough, the shared limit (A+A limit) will be used. The same process will apply for all the signatures added to the container.

Payment types and scheme selection

Gateway API currently supports following payment schemes:

  • SEPA Instant (SCT Inst)
  • Internal
  • SEPA 
  • SWIFT

Only automatic payment scheme selection decisions can be done.

  • To other Coop Pank accounts - Bank internal payment
  • If payment currency is EUR and the receiving bank is a member of the RT1 or TIPS clearing and settlement system for Instant payments - payment is sent as SEPA Instant. 
  • If Instant payment cannot be processed for different reasons it is changed to SEPA.
  • For other EUR payments in the European Economic Area (EEA) - SEPA payment.
  • Other payments not in EUR or where beneficiary bank is not in the EEA - Swift payment.

Clearing times and limitations

PAYMENT TYPE CURRENCY BENEFICIARY BANK CHARGES
European Payment (Instant, SEPA) EUR EEA SLEV
Cross Border Payment (Swift) EEA Currency EEA SHAR
Cross Border Payment (Swift) Non EEA Currency EEA SHAR
Cross Border Payment (Swift) EEA + Non EEA Currency Non EEA SHAR, DEBT

More information could be found on Coop Pank's webpage under Payment section.

XML format

XML format used by Coop Bank is a bit customized version of pain.001.001.03.xsd, still compliant with and has less restrictions than 1.4 version of the Estonian Banking Association implementation of pain.001.001.03. Coop Bank custom XSD is more restrictive that generic ISO 20022 XSD.
Every XML file valid according to Coop Bank custom XSD is also valid to generic pain.001.001.03.

Generic pain.001.001.03 message xml schema file is available at www.iso20022.org.

XML rules

Multiplicity (MULT.) Informs how many times an element can or must be used, as defined by ISO standard.

  1. 1..1 One occurrence (required)
  2. 1..n One or several occurrences (value for “n” represents total number of occurrences)
  3. 1..3 Minimum one occurrence must be used and maximum 3 occurrences can be used. Note: True value of “n” represents unlimited number of occurrences.
  4. 0..1 None or one occurrence to be used (optional)
  5. 0..n None or several occurrences can be used (value for “n” represents total number of occurrences). Note: True value of “n” represents unlimited number of occurrences.
Message structure

Group Header – mandatory, occurs once.
Payment Information – mandatory and repetitive. Contains information related to mostly the debit side of the payment.
Credit Transfer Transaction Information – mandatory and repetitive. Contains information related to the payment(s) included in the message.

 

Elements
INDEX MULT. OR MESSAGE ELEMENT XML TAG DESCRIPTION
1.0 [1..1]   +GroupHeader <GrpHdr>  
1.1 [1..1]   ++MessageIdentification <MsgId> Originator’s unique identifier of the submitted file.
1.2 [1..1]   ++CreationDateTime <CreDtTm>  
1.6 [1..1]   ++NumberOfTransactions <NbOfTxs> Number of individual transactions contained in the file. If this number is not correct, the file upload will be cancelled.
1.7 [1..1]   ++ControlSum <CtrlSum> Total of all individual amounts included in the file, irrespective of currencies. If this number is not correct, the file upload will be cancelled.
1.8 [1..1]   ++PaymentTypeInformation <PmtTpInf> Set of elements used to specify the type of payment.
1.8 [1..1]   +++ServiceLevel <SvcLvl> Agreement of rules according to which the payment must be processed. Pre-agreed customer-to-bank conditions apply.
1.8 [1..1]   ++++Prtry <Prtry> Do not use.
1.8 [1..1]   ++InitiatingParty <InitgPty> Party initiating the payment to an agent. In the payment context, this can either be the debtor or a party that initiates the payment on behalf of the debtor or creditor.
1.8 [0..1]   +++Name <Nm> Initiating party name.
1.8 [0..1]   +++PostalAddress <PstlAdr>  
1.8 [0..1]   ++++TownName <TwnNm> Initiating party address town.
1.8 [0..1]   ++++Country <Ctry> Initiating party address country ISO code.
1.8 [0..1]   +++Identification <Id>  
1.8   {Or ++++OrganisationIdentification <OrgId>  
1.8   {{Or +++++BICOrBEI <BICOrBEI> Initiating party BIC code.
1.8   Or}} +++++Other <Othr>  
1.8 [1..1]   ++++++Identification <Id>  
1.8 [0..1]   ++++++SchemeName <SchmeNm>  
1.8 [1..1]   +++++++Code <Cd>  
1.8   Or} ++++PrivateIdentification <PrvtId>  
1.8   {Or +++++DateAndPlaceOfBirth <DtAndPlcOfBirth>  
1.8 [1..1]   ++++++BirthDate <BirthDt>  
1.8 [1..1]   ++++++CityOfBirth <CityOfBirth>  
1.8 [1..1]   ++++++CountryOfBirth <CtryOfBirth>  
1.8   Or} +++++Other <Othr>  
1.8 [1..1]   ++++++Identification <Id>  
1.8 [0..1]   ++++++SchemeName <SchmeNm>  
1.8   {Or +++++++Code <Cd>  
1.8   Or} +++++++Proprietary <Prtry>  
1.8 [0..1]   +++CountryOfResidence <CtryOfRes> Initiating party country of residence
1.9 [0..1]   ++ForwardingAgent <FwdgAgt> Financial institution that receives the instruction from the initiating party and forwards it to the next agent in the payment chain for execution.
1.9 [1..1]   +++FinancialInstitutionIdentification <FinInstnId>  
1.9 [0..1]   ++++BIC <BIC> Forwarding agent BIC code.
1.9 [0..1]   ++++Name <Nm> Forwarding agent name.
1.9 [0..1]   ++++PostalAddress <PstlAdr>  
1.9 [0..1]   +++++TownName <TwnNm> Forwarding agent address town.
1.9 [0..1]   +++++Country <Ctry> Forwarding agent address country ISO code.

 

Payment information
INDEX MULT. OR MESSAGE ELEMENT XML TAG DESCRIPTION
2.0 [1..n]   +PaymentInformation <PmtInf>  
2.1 [1..1]   ++PaymentInformationIdentification <PmtInfId> Originator’s unique identifier of the batch of transactions
2.2 [1..1]   ++PaymentMethod <PmtMtd> Only the value TRF (credit transfer) is allowed here. If any other value is entered, it will be ignored.
2.3 [0..1]   ++BatchBooking <BtchBookg>

In case of Batch payments, the <BtchBookg> should be valued "true" and Category Purpose Code [index 2.15] should be "SALA", "SSBE" or "PENS". If the Category Purpose Code is left blank, the payment description will display just Batch payment. If the code is filled then corresponding text is displayed according to the list Code Set: Category purpose.

In case of Bulk payment, the <BtchBookg> should be valued "false".

2.4 [1..1]   ++NumberOfTransactions <NbOfTxs> Populate with number of transactions in batch. If this number is not correct, the file upload will be cancelled.
2.5 [1..1]   ++ControlSum <CtrlSum> Total of all individual amounts included in the batch. If this number is not correct, the file upload will be cancelled.
2.6 [0..1]   ++PaymentTypeInformation <PmtTpInf>  
2.7 [0..1]   +++InstructionPriority <InstrPrty>  
2.8 [0..1]   +++ServiceLevel <SvcLvl>  
2.9 [1..1]   ++++Code <Cd>  
2.11 [0..1]   +++LocalInstrument <LclInstrm>  
2.12   {Or ++++Code <Cd> Specifies the local instrument, as published in an external local instrument code list.
2.13   Or} ++++Proprietary <Prtry> Payment priority information is not used in Coop Pank.
2.14 [0..1]   +++CategoryPurpose <CtgyPurp>  
2.15 [1..1]   ++++Code <Cd> See the supported values in Code Set: Category Purpose.
2.17 [1..1]   ++Requested Execution Date <ReqdExctnDt> Date on which the remitter’s account is debited.
2.19 [1..1]   ++Remitter <Dbtr> Party from whose account the amount of payment is to be debited. If a different party’s information is entered, it will be ignored.
2.19 [1..1]   +++Name <Nm> Remitter’s name. For indirect agent - the holder name (not the master account owner). Debtor name is mandatory if payment is initiated from indirect agent's existing accounts.
2.19 [0..1]   +++PostalAddress <PstlAdr> If payment is initiated with indirect agent's existing accounts, following rule applies: (Town Name and Country) or (Country and Address Line) are required.
2.19 [0..1]   ++++TownName <TwnNm> See rule in PostalAddress.
2.19 [0..1]   ++++Country <Ctry> Remitter’s country ISO code. For agency banking account - the holder country. See rule in PostalAddress.
2.19 [0..2]   ++++AddressLine <AdrLine> Remitter’s address. For agency banking account - the holder address. See rule in PostalAddress.
2.19 [0..1]   +++Identification <Id>  
2.19   {Or ++++OrganisationIdentification <OrgId>  
2.19   {{Or +++++BICOrBEI <BICOrBEI> Remitter’s BIC or BEI code.
2.19   Or}} +++++Other <Othr>  
2.19 [1..1]   ++++++Identification <Id> Organisation’s identification code.
2.19 [0..1]   ++++++SchemeName <SchmeNm>  
2.19 [1..1]   +++++++Code <Cd> See the supported values in Code Set: Organisation Identification.
2.19   Or} ++++PrivateIdentification <PrvtId>  
2.19   {Or +++++DateAndPlaceOfBirth <DtAndPlcOfBirth>  
2.19 [1..1]   ++++++BirthDate <BirthDt> Remitter’s birth date.
2.19 [1..1]   ++++++CityOfBirth <CityOfBirth> Remitter’s city of birth.
2.19 [1..1]   ++++++CountryOfBirth <CtryOfBirth> Remitter’s birth country ISO code.
2.19   Or} +++++Other <Othr>  
2.19 [1..1]   ++++++Identification <Id> Remitter’s identification code.
2.19 [0..1]   ++++++SchemeName <SchmeNm>  
2.19 [1..1]   +++++++Code <Cd> See the supported values in Code Set: Private Person Identification.
2.20 [1..1]   ++RemitterAccount <DbtrAcct> Remitter’s account.  
2.20 [1..1]   +++Identification <Id>  
2.20 {Or   ++++IBAN <IBAN> Remitter’s IBAN or Virtual IBAN.
2.20 {Or   ++++Other <Othr> Remitter's non-IBAN account number.
2.20 Or}}   +++++Identification <Id> Account number.
2.20 [0..1]   +++Currency <Ccy> Not required to be filled in. The payment will be made in the currency of the payment amount. If there are not enough funds available on the account, a relevant error message will appear.
2.21 [1..1]   ++ RemitterAgent <DbtrAgt> Remitter’s bank information.
2.21 [1..1]   +++FinancialInstitutionIdentification <FinInstnId>  
2.21 [1..1]   ++++BIC <BIC> If the BIC is faulty or missing, it will be replaced with the correct code.
2.23 [0..1]   ++UltimateRemitter <UltmtDbtr> Used for SEPA payments. Third party acting as the actual owner of the funds or initiating the payment. If ultimate remitter information is filled in at the Payment Information level, it will apply to all payments included in this block. Usage rule: Only to be used if different from the beneficiary.
2.23 [0..1]   +++Name <Nm> Ultimate remitter’s name.
2.23 [0..1]   +++PostalAddress <PstlAdr> Ultimate debtor's postal address.  
2.23 [0..1]   ++++TownName <TwnNm> Ultimate debtor's postal address town.  
2.23 [0..1]   ++++Country <Ctry> Ultimate debtor's address country ISO code.  
2.23 [0..2]   ++++AddressLine <AdrLine> Ultimate debtor’s full postal address (street/road, number of house, town up to 140 characters).  
2.23 [0..1]   +++Identification <Id>  
2.23   {Or ++++OrganisationIdentification <OrgId>  
2.23   {{Or +++++BICOrBEI <BICOrBEI> Ultimate remitter’s BIC or BEI code. 
2.23   Or}} +++++Other <Othr>  
2.23 [1..1]   ++++++Identification <Id> Organization’s identification code. 
2.23 [0..1]   ++++++SchemeName <SchmeNm>  
2.23 [1..1]   +++++++Code <Cd> See the supported values in Code Set: Organisation Identification.
2.23   Or} ++++PrivateIdentification <PrvtId>  
2.23   {Or +++++DateAndPlaceOfBirth <DtAndPlcOfBirth>  
2.23 [1..1]   ++++++BirthDate <BirthDt> Ultimate remitter’s birth date.
2.23 [0..1]   ++++++ProvinceOfBirth <PrvcOfBirth> Ultimate remitter’s province of birth.
2.23 [1..1]   ++++++CityOfBirth <CityOfBirth> Ultimate remitter’s city of birth.
2.23 [1..1]   ++++++CountryOfBirth <CtryOfBirth> Ultimate remitter’s birth country ISO code.
2.23   Or} +++++Other <Othr>  
2.23 [1..1]   ++++++Identification <Id> Ultimate remitter’s identification code.
2.23 [0..1]   ++++++SchemeName <SchmeNm>  
2.23 [1..1]   +++++++Code <Cd> See the supported values in Code Set: Private Person Identification.
2.23 [0..1]   +++CountryOfResidence <CtryOfRes> Ultimate remitter’s country of residence.
2.24 [0..1]   ++ChargesBearer <ChrgBr> See the supported values in Code Set: Charges Bearer.
2.25 [0..1]   ++ChargesAccount <ChrgsAcct> Coop Bank does not support charge debiting from other than remitter’s account.
2.25 [1..1]   +++Identification <Id>  
2.25 [1..1]   ++++IBAN <IBAN>  
2.25 [0..1]   +++Currency <Ccy>  
2.27 [1..n]   ++CreditTransferTransactionInformation <CdtTrfTxInf> This block contains a set of elements providing information on the payment(s) included in the message.
2.28 [1..1]   +++PaymentIdentification <PmtId>  
2.29 [0..1]   ++++InstructionIdentification <InstrId> Unique identification, as assigned by an instructing party for an instructed party, to unambiguously identify the instruction.
2.30 [1..1]   ++++EndToEndIdentification <EndToEndId> Unique identification assigned by the initiating party to unambiguously identify the transaction.
1.8 [1..1]   +++PaymentTypeInformation <PmtTpInf> Set of elements used to specify the type of payment.
1.8 [1..1]   ++++ServiceLevel <SvcLvl> Agreement of rules according to which the payment must be processed. Pre-agreed customer-to-bank conditions apply.
1.8 [1..1]   +++++Prtry <Prtry> Specifies a pre-agreed service or level of service between the parties, as a proprietary code. Allowed values: INST, SEPA, FAST, ALL - equals as uploaded without interface type. Other values return validation error.
2.36 [0..1]   ++++LocalInstrument <LclInstrm>  
2.37   {Or +++++Code <Cd>  
2.38   Or} +++++Proprietary <Prtry> Payment priority information is not used in Coop Pank.
2.39 [0..1]   ++++CategoryPurpose <CtgyPurp>  
2.40 [1..1]   +++++Code <Cd> See the supported values in Code Set: Category Purpose.
2.42 [1..1]   +++Amount <Amt>  
2.43   {Or ++++InstructedAmount <InstdAmt> Payment amount and the currency ordered by the initiating party. All currencies accepted by the bank for payment services are allowed. If there are not enough funds available on the account in a given currency, a relevant error message will appear.
2.44   Or} ++++EquivalentAmount <EqvtAmt> Not used.
2.51 [0..1]   +++ChargeBearer <ChrgBr> See the supported values in Code Set: Charges Bearer.
2.70 [0..1]   +++UltimateRemitter <UltmtDbtr> Used for SEPA payments. Third party acting as the actual owner of the funds or initiating the payment. If ultimate remitter information is filled in at the Credit Transfer Transaction Information level, it will apply only to the current payment. Usage rule: Only to be used if different from the remitter.
2.70 [0..1]   ++++Name <Nm> Ultimate remitter’s name.  
2.70 [0..1]   ++++PostalAddress <PstlAdr> Ultimate debtor's postal address.  
2.70 [0..1]   +++++TwnNm <TwnNm> Ultimate debtor's postal address town.  
2.70 [0..1]   +++++Ctry <Ctry> Ultimate debtor's address country ISO code. 
2.70 [0..2]   +++++AdrLine <AdrLine> Ultimate debtor’s full postal address (street/road, number of house, town up to 140 characters).  
2.70 [0..1]   ++++Identification <Id>  
2.70   {Or +++++OrganisationIdentification <OrgId>  
2.70   {{Or ++++++BICOrBEI <BICOrBEI> Ultimate remitter’s BIC or BEI code.  
2.70   Or}} ++++++Other <Othr>  
2.70 [1..1]   +++++++Identification <Id> Organization’s identification code. 
2.70 [0..1]   +++++++SchemeName <SchmeNm>  
2.70 [1..1]   ++++++++Code <Cd> See the supported values in Code Set: Organisation Identification.
2.70   Or} +++++PrivateIdentification <PrvtId>  
2.70   {Or ++++++DateAndPlaceOfBirth <DtAndPlcOfBirth>  
2.70 [1..1]   +++++++BirthDate <BirthDt> Ultimate remitter’s birth date.
2.70 [0..1]   +++++++ProvinceOfBirth <PrvcOfBirth>  
2.70 [1..1]   +++++++CityOfBirth <CityOfBirth> Ultimate remitter’s city of birth.
2.70 [1..1]   +++++++CountryOfBirth <CtryOfBirth> Ultimate remitter’s birth country ISO code.
2.70   Or} ++++++Other <Othr>  
2.70 [1..1]   +++++++Identification <Id> Ultimate remitter’s identification code.
2.70 [0..1]   +++++++SchemeName <SchmeNm>  
2.70 [1..1]   ++++++++Code <Cd> See the supported values in Code Set: Private Person Identification
2.70 [0..1]   ++++CountryOfResidence <CtryOfRes> Ultimate remitter’s country of residence.
2.71 [0..1]   +++IntermediaryAgent1 <IntrmyAgt1> Information about the beneficiary’s bank’s correspondent bank. Used for foreign payments.
2.71 [1..1]   ++++FinancialInstitutionIdentification <FinInstnId>  
2.71 [0..1]   +++++BIC <BIC> Bank’s BIC code.
2.71 [0..1]   +++++ClearingSystemMemberIdentification <ClrSysMmbId>  
2.71 [0..1]   ++++++ClearingSystemIdentification <ClrSysId>  
2.71 [1..1]   +++++++Code <Cd> For the clearing system’s identification code see the External Code Sets spreadsheet on the ISO website.
2.71 [1..1]   ++++++MemberIdentification <MmbId> Identification of the beneficiary's bank's correspondent bank in a clearing system.
2.71 [0..1]   +++++Name <Nm> Name of the beneficiary’s bank’s correspondent bank. Used when the BIC or the clearing system’s member identification is not known to the initiating party.
2.71 [0..1]   +++++PostalAddress <PstlAdr>  
2.71 [0..1]   ++++++Country <Ctry> Country ISO code of the beneficiary’s bank’s correspondent bank.
2.71 [0..2]   ++++++AddressLine <AdrLine> Country address of the beneficiary’s bank’s correspondent bank.
2.72 [0..1]   +++IntermediaryAgent1Account <IntrmyAgt1Acct> Not used.
2.72 [1..1]   ++++Identification <Id>  
2.72   {Or +++++IBAN <IBAN>  
2.72   Or} +++++Other <Othr>  
2.72 [1..1]   ++++++Identification <Id>  
2.77 [0..1]   +++BeneficiaryAgent <CdtrAgt> Beneficiary agent’s information is required for SWIFT payments.
2.77 [1..1]   ++++FinancialInstitutionIdentification <FinInstnId>  
2.77 [0..1]   +++++BIC <BIC> Beneficiary’s bank’s BIC.
2.77 [0..1]   +++++ClearingSystemMemberIdentification <ClrSysMmbId>  
2.77 [0..1]   ++++++ClearingSystemIdentification <ClrSysId>  
2.77 [1..1]   +++++++Code <Cd> For the clearing system’s identification code see the External Code Sets spreadsheet on the ISO website. 
2.77 [1..1]   ++++++MemberIdentification <MmbId> Beneficiary’s bank identification in a clearing system.  
2.77 [0..1]   +++++Name <Nm> Beneficiary's bank name. Usage rule: The name is limited to 70 characters in length. Used when the BIC or the clearing system’s member identification is not known to the initiating party.
2.77 [0..1]   +++++PostalAddress <PstlAdr>  
2.77 [0..1]   ++++++Country <Ctry> Beneficiary’s bank’s country ISO code.
2.77 [0..2]   ++++++AddressLine <AdrLine> Beneficiary’s bank’s address.
2.78 [0..1]   +++BeneficiaryAgentAccount <CdtrAgt> Do not use.
2.78 [1..1]   ++++Identification <Id>  
2.78   {Or +++++IBAN <IBAN>  
2.78   Or} +++++Other <Othr>  
2.78 [1..1]   ++++++Identification <Id> Do not use.
2.79 [1..1]   +++Beneficiary <Cdtr> Beneficiary’s information.
2.79 [1..1]   ++++Name <Nm> Beneficiary’s name.
2.79 [0..1]   ++++PostalAddress <PstlAdr> Beneficiary’s address.
2.79 [0..1]   +++++Country <Ctry>  
2.79 [0..2]   +++++AddressLine <AdrLine>  
2.79 [0..1]   ++++Identification <Id> Beneficiary’s identification.
2.79   {Or +++++OrganisationIdentification <OrgId>  
2.79   {{Or ++++++BICOrBEI <BICOrBEI> Beneficiary’s BIC or BEI code.
2.79   Or}} ++++++Other <Othr>  
2.79 [1..1]   +++++++Identification <Id> Organization’s identification code. 
2.79 [0..1]   +++++++SchemeName <SchmeNm>  
2.79   1..1 ++++++++Code <Cd> See the supported values in Code Set: Organisation Identification.
2.79   Or} +++++PrivateIdentification <PrvtId>  
2.79   {Or ++++++DateAndPlaceOfBirth <DtAndPlcOfBirth>  
2.79 [1..1]   +++++++BirthDate <BirthDt> Beneficiary’s birth date.
2.79 [1..1]   +++++++CityOfBirth <CityOfBirth> Beneficiary’s city of birth.
2.79 [1..1]   +++++++CountryOfBirth <CtryOfBirth> Beneficiary’s birth country ISO code.
2.79   Or} ++++++Other <Othr>  
2.79 [1..1]   +++++++Identification <Id> Beneficiary’s identification.
2.79 [0..1]   +++++++SchemeName <SchmeNm>  
2.79 [1..1]   ++++++++Code <Cd> See the supported values in Code Set: Private Person Identification.
2.80 [1..1]   +++BeneficiaryAccount <CdtrAcct> Beneficiary’s account.
2.80 [1..1]   ++++Identification <Id>  
2.80   {Or +++++IBAN <IBAN> Beneficiary’s IBAN. 
2.80   Or} +++++Other <Othr>  
2.80 [1..1]   ++++++Identification <Id> Beneficiary’s account number. 
2.80 [0..1]   ++++++SchemeName <SchmeNm>  
2.80 [1..1]   +++++++Code <Cd> Do not use.
2.81 [0..1]   +++UltimateBeneficiary <UltmtCdtr> SEPA specific information. Ultimate beneficiary is the ultimate beneficiary of the payment.
2.81 [0..1]   ++++Name <Nm> Ultimate beneficiary’s name.
2.81 [0..1]   ++++Identification <Id>  
2.81   {Or +++++OrganisationIdentification <OrgId>  
2.81   {{Or ++++++BICOOrBEI <BICOrBEI> Ultimate beneficiary’s BIC or BEI.
2.81   Or}} ++++++Other <Othr>  
2.81 [1..1]   +++++++Identification <Id> Ultimate beneficiary’s organization identification.
2.81 [0..1]   +++++++SchemeName <SchmeNm>  
2.81 [1..1]   ++++++++Code <Cd> See the supported values in Code Set: Organisation Identification.
2.81   Or} +++++PrivateIdentification <PrvtId>  
2.81   {Or ++++++DateAndPlaceOfBirth <DtAndPlcOfBirth>  
2.81 [1..1]   +++++++BirthDate <BirthDt> Ultimate beneficiary’s birth date.
2.81 [1..1]   +++++++CityOfBirth <CityOfBirth> Ultimate beneficiary’s city of birth.
2.81 [1..1]   +++++++CountryOfBirth <CtryOfBirth> Ultimate beneficiary’s birth country ISO code.
2.81   Or} ++++++Other <Othr>  
2.81 [1..1]   +++++++Identification <Id> Ultimate beneficiary’s identification.
2.81 [0..1]   +++++++SchemeName <SchmeNm>  
2.81 [1..1]   ++++++++Code <Cd> See the supported values in Code Set: Private Person Identification.
2.85 [0..1]   +++InstructionForDebtorAgent> <InstrForDbtrAgt Do not use.
2.86 [0..1]   +++Purpose <Purp> SEPA specific information. Reason for the payment.
2.87 [1..1]   ++++Code <Cd> See the supported codes in Code Set: Purpose
2.89 [0..10]   +++RegulatoryReporting <RgltryRptg> Do not use.
2.89 [0..1]   ++++Authority <Authrty>  
2.89 [0..1]   +++++Country <Ctry>  
2.89 [0..n]   ++++Details <Dtls>  
2.89 [0..1]   +++++Type <Tp>  
2.89 [0..1]   +++++Country <Ctry>  
2.89 [0..1]   +++++Code <Cd>  
2.89 [0..1]   +++++Information <Inf> Do not use.
2.98 [0..1]   +++RemittanceInformation <RmtInf>

For the payments within Estonia, client can enter the payment description (unstructured) and the reference number (structured). For the payments outside Estonia, it is mandatory to provide one or the other. Otherwise the payment will be cancelled. 
Reference number (structured) must comply with Estonian reference standard.

2.99 [0..1]   ++++Unstructured <Ustrd> Payment description is entered here.
2.100 [0..1]   ++++Structured <Strd>  
2.120 [0..1]   +++++BeneficiaryReferenceInformation <CdtrRefInf>  
2.121 [0..1]   ++++++Type <Tp>  
2.122 [1..1]   +++++++CodeOrProprietary <CdOrPrtry>  
2.123 [1..1]   ++++++++Code <Cd> Only the value SCOR is allowed here. If any other value is entered, it will be ignored.
2.125 [0..1]   +++++++Issuer <Issr>  
2.126 [0..1]   ++++++Reference <Ref> Payment reference number is entered here.

 

Samples

Samples of payments and related messages for typical use cases depending on payment schemes and other details.

CASE NOTES AND SAMPLES
SEPA Instant payment SEPA Instant payment from EE Coop Bank account to external EE account.
  Payment request
  Payment response
SEPA payment  SEPA Instant payment from EE Coop Bank account to external EU account.
  Payment request
  Payment response
Internal payment Internal payment from one Coop Bank account to another.
  Payment request
  Payment response
SWIFT payment (IBAN) - Swift SWIFT payment to foreign account in IBAN format.
  Payment request
  Payment response
Bulk payment Multiple payments in one file. 
  Payment request
  Payment response

Response

XML format (ISO 20022 Customer Payment Status Report pain.002.001.12)

After payment request the customer will receive the response message - ISO 20022 Customer Payment Status Report (pain.002.001.12). This message is sent to the client to inform about the status of a payment instruction sent via Gateway API with Payment Initiation (pain.001.001.03) message.

Customer Payment Status Report refers to the original Payment Initiation message and gives feedback about the status of the process - provides positive, negative and pending status updates to original payments.
There can be many Customer Payment Status Reports per one Payment Initiation message - typically if any of the transactions was not accepted right away for any reason.

Payment status codes and descriptions

Statuses are reported on group level for the whole payment instruction (GrpSts and PmtInfSts tags) and separately for each payment (TxSts tag).
Group level statuses are reported only in the first payment response message after the initial request.
Further responses (if any) shall not contain GrpSts and PmtInfSts tags - you must process the result of every payment entry separately.

Group level statuses (OrgnlGrpInfAndSts.GrpSts and OrgnlPmtInfAndSts.PmtInfSts):

  • RJCT – all payments in the forwarded XML file have been rejected.
  • PDNG - pending, payments are waiting for confirmation in Internet Bank.
  • PART – payment has been accepted, settlement is in process. Processing the payment is in the bank, it hasn't been debited from client account or sent to clearing system.
  • ACSP - all payments in the forwarded XML file are in statuses of "In progress" or "Debited", but not debited from the customer's account yet. 

Single payment statuses (OrgnlPmtInfAndSts.TxInfAndSts.TxSts):

  • PDNG - pending, payments are waiting for confirmation in Internet Bank.
  • RJCT – rejected. One payment out of the group has been rejected (final status).
  • ACSP – accepted, settlement in process. Payment is being processed by the bank, it has not been debited from client account nor sent to clearing system. At least one more status update must follow (either accept or reject).
  • ACSC – accepted, settlement completed and payment has been debited from client account.  
Pending payments need confirmation in Internet Bank

When payment receives PDNG status after ACSP status (payment is accepted by the customer) it means that the payment needs confirmation in Internet Bank.

Payment rejection due to account balance or limits

By default, all payments will be rejected right away when there is not enough free balance or payments limits to execute the payment.

Message structure

Group Header – mandatory, occurs once. Set of characteristics shared by all individual payments included in the status report message.
Original Group Information And Status – occurs once. Refers to original Payment Initiation Group Level information.
Transaction Information And Status – optional and repetitive. Includes information about the original payment and its status.

Elements
INDEX MULT. MESSAGE ELEMENT XML TAG DESCRIPTION
1.0 [1..1] +GroupHeader <GrpHdr>  
1.1 [1..1] ++MessageIdentification <MsgId> Unique identification created by Coop Bank
1.2 [1..1] ++CreationDateTime <CreDtTm> Creation date and time.
1.3 [0..1] ++InitiatingParty <InitgPty>  
1.3 [0..1] +++Identification <Id>  
1.3 [0..1] ++++OrganisationIdentification <OrgId>  
1.3 [0..1] +++++BICOrBEI <BICOrBEI> EKRDEE22 (BIC of Coop Bank)
2.0 [1..1] +OriginalGroupInformationAndStatus <OrgnlGrpInfAndSts>  
2.1 [1..1] ++OriginalMessageIdentification <OrgnlMsgId> Original pain.001.001.03 Group Level Message Id.
2.2 [1..1] ++OriginalMessageNameIdentification <OrgnlMsgNmId> Value ‘pain.001.001.03’.
2.6 [0..1] ++GroupStatus <GrpSts> Specifies the Group status of all payments in the original pain.001.001.03 message. Status codes explained above.
2.7 [0..n] ++StatusReasonInformation <StsRsnInf>  
2.9 [0..1] +++Reason <Rsn>  
2.10 [1..1] ++++Code <Cd> If Group Status is RJCT, then filled with ‘NOOR’. In this case, Additional Information is also filled.
2.12 [0..n] +++AdditionalInformation <AddtlInf> If Reason Code is filled with ‘NOOR’, error description is present here. See Group Level Errors.
3.0 [0..n] +OriginalPaymentInformationAndStatus <OrgnlPmtInfAndSts>  
3.1 [1..1] ++OriginalPaymentInformationId <OrgnlPmtInfId> Original pain.001.001.03 Payment Information Id.
3.4 [0..1] ++PaymentInformationStatus <PmtInfSts> Specifies the Group status of one PmtInf block in the original pain.001.001.03 message. Status codes explained Status codes explained above.
3.15 [0..n] ++TransactionInformationAndStatus <TxInfAndSts>  
3.17 [0..1] +++OriginalInstructionIdentification <OrgnlInstrId> Original payment order number.
3.18 [0..1] +++OriginalEndToEndId <OrgnlEndToEndId> Not used.
3.19 [0..1] +++TransactionStatus <TxSts> Payment status. Status codes explained above.
3.20 [0..n] +++StatusReasonInformation <StsRsnInf>  
3.21 [0..1] +++OriginalTransactionReference <OrgnlTxRef> Payment scheme information
3.21 [1..1] ++++PaymentTypeInformation <PmtTpInf>  
3.21 [1..1] +++++ServiceLevel <SvcLvl>  
3.21 [1..1] ++++++Proprietary <Prtry> Payment scheme code - Code Set: Payment scheme.
3.22 [0..1] ++++Reason <Rsn>  
3.23 [1..1] +++++Code <Cd> If Transaction Status is ACWC or RJCT, then ‘NOOR’.
3.25 [0..n] ++++AdditionalInformation <AddtlInf> If Reason Code is ‘NOOR’, then description or scheme reject code is given here. For Transaction Status ‘ACWC’, see Reason for Change; for Transaction Status ‘RJCT’, see Transaction Level Errors. For payment scheme error codes see Code Set: Payment Scheme Reject Codes.
3.30 [0..1] +++AccountServicerReference <AcctSvcrRef> Unique payment ID assigned by the bank.
3.32 [0..1] +++OriginalTransactionReference <OrgnlTxRef>  
3.34 [0..1] ++++Amount <Amt>  
3.35 [1..1] +++++InstructedAmount <InstdAmt Ccy="AAA">  
3.41 [0..1] ++++RequestedExecutionDate <ReqExctnDt> Execution date requested by client.
3.121 [0..1] ++++Debtor <Dbtr>  
3.121 [0..1] +++++Name <Nm> Remitter’s name.
3.122 [0..1] ++++DebtorAccount <DbtrAcct>  
3.122 [1..1] +++++Identification <Id>  
3.122 {Or ++++++IBAN <IBAN> Remitter’s IBAN
3.122 {Or ++++++Other <Othr> Remitter's non-IBAN account number 
3.122 Or}} +++++++Identification <Id> Account number.
3.123 [0..1] ++++DebtorAgent <DbtrAgt>  
3.123 [1..1] +++++FinancialInstitution Id <FinInstnId>  
3.123 [1..1] ++++++BIC <BIC> EKRDEE22 (BIC of Coop Bank)
3.125 [0..1] ++++CreditorAgent <CdtrAgt>  
3.125 [1..1] +++++ FinancialInstitutionId <FinInstnId>  
3.125 [1..1] ++++++BIC <BIC> Beneficiary’s bank BIC.
3.127 [0..1] ++++Creditor <Cdtr>  
3.127 [1..1] +++++Name <Nm> Beneficiary’s name.
3.128 [0..1] ++++CreditorAccount <CdtrAcct>  
3.128 [1..1] +++++Identification <Id>  
3.128 [0..1] ++++++IBAN <IBAN> Beneficiary’s IBAN.  
3.128 [0..1] ++++++Other <Othr>  
3.128 [1..1] +++++++Identification <Id> Beneficiary’s account number which is not IBAN.  

 

Error codes

Error codes are subject to change. The xml returns the correct error description.

 

Appendix

Code Set: Balance

CODE DESCRIPTION
OPBD Opening booked balance
CLBD Opening booked balance

 

Code Set: Bank transaction codes

DOMAIN CODE FAMILY CODE SUBFAMILY CODE DESCRIPTION
ACMT MDOP CHRG Account Management Fee
ACMT MDOP INTR Debit Interest
ACMT MCOP INTR Credit Interest
ACMT NTAV NTAV Account Management
FORX OTHR OTHR Foreign Exchange
LDAS NTAV NTAV Loans, Deposits & Syndications
PMNT RCDT BOOK Internal Book Transfer
PMNT RCDT DMCT Domestic Credit Transfer
PMNT RCDT ESCT SEPA Credit Transfer
PMNT RCDT XBCT Cross-Border Credit Transfer
PMNT ICDT BOOK Internal Book Transfer
PMNT ICDT CHRG Transaction Fee
PMNT ICDT DMCT Domestic Credit Transfer
PMNT ICDT ESCT SEPA Credit Transfer
PMNT ICDT XBCT Cross-Border Credit Transfer
PMNT CCRD CWDL Cash Withdrawal
PMNT CCRD POSD

Point-of-Sale (POS) Payment - Debit Card

PMNT CNTR CDPT Counter Transactions - Cash Deposit
PMNT CNTR FCDP Foreign Currency Deposit
PMNT CNTR CWDL Cash Withdrawal
PMNT CNTR FCWD Foreign Currency Withdrawal

Code Set: Category purpose

CODE DESCRIPTION
CASH Cash management.
CORT Trade settlement payment.
DIVI Dividends payment.
GOVT Government payment.
HEDG Hedging.
INTC Intra-company payment.
INTE Interest payment.
LOAN Transfer of a loan to a borrower.
PENS Pension payment.
SALA Salary payment.
SECU Securities payment.
SSBE Social security benefit payment.
SUPP Supplier payment.
TAXS Tax payment.
TRAD Trade finance transaction payment.
TREA Treasury payment.
VATX VAT payment.
WHLD Withholding tax payment.
OTHR Other payment.
EPAY Payment via online banking.
FCOL Fee collection.

Code Set: Charges bearer

CODE DESCRIPTION
SLEV Allowed only for SEPA payments. Shared charges.
SHAR Shared charges.
DEBT Remitter pays charges.

Code Set: Credit and debit code

 

CODE DESCRIPTION
CRDT Positive amount or zero.
DBIT Negative amount.

 

Code Set: Organisation identification

CODE DESCRIPTION
BANK Unique and unambiguous assignment made by a specific bank or similar financial institution to identify a relationship as defined between the bank and its client.
CBID A unique identification number assigned by a central bank to identify an organisation.
CHID A unique identification number assigned by a clearing house to identify an organisation.
COID Country authority given organisation identification (e.g., corporate registration number).
CUST Number assigned by an issuer to identify a customer. Number assigned by a party to identify a beneficiary or remitter relationship.
DUNS A unique identification number provided by Dun & Bradstreet to identify an organisation.
EMPL Number assigned by a registration authority to an employer.
GS1G Global Location Number. A non-significant reference number used to identify legal entities, functional entities, or physical entities according to GS1 numbering scheme rules. The number is used to retrieve detailed information that is linked to it.
SREN The SIREN number is a 9 digit code assigned by INSEE, the French National Institute for Statistics and Economic Studies, to identify an organisation in France.
SRET The SIRET number is a 14 digit code assigned by INSEE, the French National Institute for Statistics and Economic Studies, to identify an organisation unit in France. It consists of the SIREN number, followed by a five digit classification number, to identify the local geographical unit of that entity.
TXID Number assigned by a tax authority to identify an organisation.

Code Set: Payment scheme

CODE DESCRIPTION
INST SEPA Instant payment.
SEPA SEPA payment.
SWIFT SWIFT payment.
TARGET2 TARGET2 payment.
INTERNAL Coop Pank internal payment.

Code Set: Payment scheme return codes

Coop Pank doesn't use the payment scheme return codes, the human readable messages are returned instead. 

Code Set: Payment scheme reject codes

Coop Pank doesn't use the payment scheme reject codes, the human readable messages are returned instead. 

Code Set: Payment priority

Coop Pank doesn't use priority codes.

Information about payment priority can be found at Coop Pank's webpage under section How quickly do Coop Pank payments move?

Code Set: Private person identification

CODE DESCRIPTION
CCPT Number assigned by an authority to identify the passport number of a person.
CUST Number assigned by an issuer to identify a customer.
DRLC Number assigned by an authority to identify a driver's license.
EMPL Number assigned by a registration authority to an employee.
NIDN Number assigned by an authority to identify the national identity number of a person.

Code Set: Purpose

CODE DESCRIPTION
ACCT Account management.
CASH Cash management.
COLL Collection payment.
INTC Intra-company payment.
LIMA Liquidity management.
NETT Netting.
AGRT Agricultural payment.
BEXP Business expenses.
COMC Commercial payment.
CPYR Copyright.
LICF Licence fee.
GDDS Purchase and sale of goods.
SCVE Purchase and sale of services.
SUBS Subscription.
SUPP Supplier payment.
CHAR Charity payment.
HLRP Housing loan repayment.
INSU Insurance premium.
INTE Interest.
LBRI Labour insurance.
LIFI Life insurance.
LOAN Loan to borrower.
LOAR Loan to lender.
PPTI Property insurance.
ADVA Advance payment.
CCRD Credit card payment.
DCRD Debit card payment.
GOVT Government payment.
MSVC Multiple service types.
NOWS Not otherwise specified.
OTHR Other.
PADD Preauthorised debit.
RENT Rent.
STDY Study.
DERI Derivatives.
DIVD Dividend.
FREX Foreign exchange.
SAVG Savings.
SECU Securities.
TREA Treasury payment.
DNTS Dental services.
HLTI Health insurance.
HSPC Hospital care.
LTCF Long-term care facility.
MDCS Medical services.
ALMY Alimony payment.
BONU Bonus payment.
BECH Child benefit.
COMM Commission.
PENS Pension payment.
SALA Salary payment.
SSBE Social security benefit.
HSTX Housing tax.
INTX Income tax.
TAXS Tax payment.
VATX VAT payment.
AIRB Air transport.
BUSB Bus transport.
FERB Ferry transport.
RLWY Railway transport.
CBTV Cable TV bill.
ELEC Electricity bill.
ENRG Energies.
GASB Gas bill.
NWCH Network charge.
NWCM Network communication.
OTLC Other telecom related bill.
PHON Telephone bill.
WTER Water bill.
DEBT Deposit.
GDSV Purchase and Sale of Goods and Services
CDBL Credit Card Bill
INVS Investment and Securities
ALLW Allowance
PAYR Payroll
UBIL Utilities