NAV
cURL PHP Java Perl C#

Izmaiņu vēsture

Dokumenta versija Izmaiņu apraksts Izmaiņas datums
1.2 Ir labots funkcijas "Nosūtīt dokumentu" lauka Details70 apraksts 2021-04-12
1.1 Ir labots funkcijas "Transakciju saraksts" XML lauku uniqueID un trnID apraksts 2020-07-17
1.0 Sākotnējā dokumentācijas publicēšana 2017-01-13

Pieslēgšanas instrukcija

Vispārējā informācija

„Enterprise Link PRO” sniedz piekļuvi informācijai par veiktajiem darījumiem, kā arī iespēju nodot Bankai rīkojumus turpmākai izpildei.

Pakalpojuma aktivizēšana

Lai pieslēgtu pakalpojumu, iRietumu iestatījumos izvēlieties kontu un uzklikšķiniet uz „Aktivēt”.

Izvēlieties pakalpojuma veidu „Maksājumu uzdevumu pārlūkošana un pārsūtīšana (PRO)”! Ierakstiet piekariņa ģenerēto vienreiz izmantojamo paroli un uzklikšķiniet uz „Apstiprināt”.

Nokopējiet piekļuves identificētāju, kuru turpmāk izmantosiet savā pielikumā kā elektronisko caurlaidi (parametrs “ticket”).

Rīkojuma izveides loģika

Pilns rīkojuma izveides cikls sastāv no trim soļiem. Pirmajā solī tiek izmantota funkcija „Nosūtīt dokumentu”. Funkcija reģistrē rīkojumu, piešķir ienākošā dokumenta references numuru un sniedz tā pārbaudes rezultātus. Nepieciešamības gadījumā, piemēram, pēc kļūdu labošanas dokumentu var nosūtīt no jauna.

Izpildot otro soli, jāpieprasa bankā reģistrētais dokuments, norādot references numuru, ko veic ar funkcijas „Saņemt dokumentu parakstīšanai” palīdzību. Vienā no laukiem Jūs saņemsiet atpakaļ rīkojuma XML dokumentu.

Izpildot trešo soli, atpakaļ saņemtais XML dokuments jāparaksta ar elektronisko XML parakstu, pamatojoties uz sertifikātu pēc standarta XMLDSig, un jānosūta parakstītais dokuments bankai, lietojot funkciju „Nosūtīt parakstīto dokumentu”.

Kā izsaukt servisu

Pieprasījuma formāts

Piemērs kods:

curl -d "function=<Function name>&ticket=<Ticket>&refno=<Reference number>&language=<Language code>" -E ./<Filename>.pem:<Password>  https://<domain>/elinkpro/Process
<?php
/**
 * Process Enterprise Link Pro request
 * 
 * make sure that curl.cainfo in php.ini is targeted to last CA certificates
 * last extracted CA can be downloaded here: http://curl.haxx.se/ca/cacert.pem
 * 
 * @param   {Array}     $arguments      ASSOC array with arguments for request
 * @param   {String}    $cert_path      path to certificate file
 * @param   {String}    $cert_passwd    certificate password
 * @return  {String}                    response content
 */
function process_enterprise_link_pro( $arguments, $cert_path, $cert_passwd ) {
    $ch = curl_init();
    curl_setopt_array( $ch, array(
        CURLOPT_POST => 1,
        CURLOPT_HEADER => 0,
        CURLOPT_FRESH_CONNECT => 1,
        CURLOPT_RETURNTRANSFER => 1,
        CURLOPT_FORBID_REUSE => 1,
        CURLOPT_TIMEOUT => 120,
        CURLOPT_URL => "https://<domain>/elinkpro/Process",
        CURLOPT_POSTFIELDS => http_build_query($arguments),
        CURLOPT_SSLCERT => $cert_path,
        CURLOPT_SSLCERTPASSWD => $cert_passwd
    ) );
    $result = curl_exec( $ch ); 
    curl_close( $ch ); 
    return $result; 
}
?>
/**
 * Enterprise Link Pro class for Java 7
 * 
 * MAVEN dependencies:
 * org.apache.httpcomponents : httpclient : 4.4
 */
public class EnterpriseLinkPro {

    private static final String ELINK_PRO_HOST = "https://<domain>";
    private static final String PROCESS_PATH = "/elinkpro/Process";
    private static final String KEYSTORE_TYPE = "PKCS12";

    private HttpHost host;
    private HttpClient httpClient;
    private String filePath;
    private String password;

    public EnterpriseLinkPro(String filePath, String password) throws GeneralSecurityException, IOException {
        this.filePath = filePath;
        this.password = password;
        this.host = HttpHost.create(ELINK_PRO_HOST);
        this.httpClient = HttpClientBuilder.create()
                .setSSLSocketFactory(createSSLConnectionSocketFactory())
                .build();
    }

    private SSLConnectionSocketFactory createSSLConnectionSocketFactory() throws GeneralSecurityException, IOException {
        KeyStore keyStore = KeyStore.getInstance(KEYSTORE_TYPE);
        keyStore.load(new FileInputStream(this.filePath), this.password.toCharArray());

        SSLContext sslContext = SSLContextBuilder.create()
                .loadKeyMaterial(keyStore, this.password.toCharArray())
                .build();

        return new SSLConnectionSocketFactory(sslContext);
    }

    public String process(List<NameValuePair> params) throws ParseException, IOException {
        HttpPost httpPost = new HttpPost(PROCESS_PATH);
        httpPost.setEntity(new UrlEncodedFormEntity(params));

        HttpResponse response = httpClient.execute(host, httpPost);

        return EntityUtils.toString(response.getEntity(), Consts.UTF_8);
    }

}
#!/usr/bin/perl

use LWP::UserAgent;
use HTTP::Request::Common;

# Process Enterprise Link Pro request
#
# @param   {Array}     $arguments       array with arguments for request
# @param   {String}    $cert_path       path to certificate file
# @param   {String}    $cert_passwd     certificate password
# @return  {String}                     response content
sub process_enterprise_link_pro {
    my ( $arguments, $cert_path, $cert_passwd ) = @_;
    my $ua = LWP::UserAgent->new( ssl_opts => {
        SSL_use_cert => 1,
        SSL_cert_file => $cert_path,
        SSL_passwd_cb => sub { $cert_passwd }
    } );
    my $req = POST 'https://<domain>/elinkpro/Process', $arguments;
    my $response = $ua->request( $req );
    return $response->content();
}
/**
 * Enterprise Link Pro class for .NET 4.5
 *
 * Required references:
 * System.Net.Http
 * System.Net.Http.WebRequest
 */
public class EnterpriseLinkPro
{
    private static readonly String ELINK_PRO_URL = "https://<domain>/elinkpro/Process";
    private HttpClient client;

    public EnterpriseLinkPro(String certPath, String password)
    {
        var certHandler = new WebRequestHandler();
        certHandler.ClientCertificateOptions = ClientCertificateOption.Manual;
        certHandler.UseDefaultCredentials = false;
        certHandler.ClientCertificates.Add(new X509Certificate2(certPath, password));

        this.client = new HttpClient(certHandler);
    }

    public async Task<String> Process(Dictionary<string, string> values)
    {
        var response = await client.PostAsync(ELINK_PRO_URL, new FormUrlEncodedContent(values));
        var responseString = await response.Content.ReadAsStringAsync();
        return responseString;
    }
}

Adrese: https://<domain>/elinkpro/Process

Metode: Post

Autorizācija: jāizmanto sertifikāts no Rietumu ID, uz kuru ir noregulēts pieslēgums.

Pieprasījuma parametri: parametri atšķiras atkarībā no funkcijas. Sīkāks funkciju apraksts ir sniegts turpmāk.

Atbildes formāts informācijas pieprasījuma gadījumā

Struktūra:

<response>
    <code>atbildes kods*</code>
    <error/>
    <!-- tagu komplekts atkarībā no funkcijas -->
</response>

XML formāts tiek izmantots, saņemot veikto darījumu sarakstu un sīkāku informāciju par tiem, lietojot attiecīgi funkcijas „Transakciju saraksts” un „Izejošā maksājuma detaļas".

* – atpakaļ nododamais funkcijas kods

Atbildes kods Apraksts
0 Funkcija veiksmīgi izpildīta
1 Sistēmas kļūda
2 Minētajā periodā ar minēto valūtu transakciju nav
4 Kļūda parametros
6 Kļūdaina elektroniskā caurlaide (parametrs “ticket”)

Atbildes formāts rīkojumiem

Struktūra:

{
    "code": "atbildes kods*",
    "error": "kļūdas teksts",
    "signatureRequired": [ "CER" ],
    "refNo": "references numurs",
    "error_code": "kļūdas kods",
    "error_message": "kļūdas teksts",
    "execute_message": "izpildes teksts",
    "error_field": "lauka, uz kuru attiecas kļūda, nosaukums",
    "error_level": "kļūdas būtiskuma kods**"
}

JSON formāts tiek izmantots, noformējot maksājumu uzdevumus.

* – atpakaļ nododamais funkcijas kods

Atbildes kods Apraksts
0 Funkcija veiksmīgi izpildīta
1 Sistēmas kļūda
2 Dati nav atrasti
4 Kļūda parametros
5 Nav sesijas, vai kļūdainie sesijas parametri
6 Kļūdaina elektroniskā caurlaide (parametrs “ticket”)

** – kļūdas būtiskuma rādītājs

Atbildes kods Apraksts
0 kļūdu nav
2 nebūtiska kļūda. Rīkojums nevar būt izpildīts uzreiz (nav naudas u.tml.), bet būs apstrādāts vēlāk
4 būtiska kļūda. Rīkojums netiks izpildīts

Funkcija „Transakciju saraksts”

Funkcija tiek izmantota, lai saņemtu visas konta transakcijas.

Pieprasījuma parametri

Piemērs kods:

curl -d "function=Transactions&ticket=JGFIGDMG5965SF44557548958345975934&ccy=EUR&dateFrom=2012-01-26&dateTill=2012-02-28&language=RU&trnID=~bb~Y#~bbEUR~12387.76#~cbd~03122012#~ctd~03122012#~fbd~31122000#~hd~05032005#~ls~2513030097#~of~seq_no#~t1~2512150262#~t2~2524554564#~td~01112012#" -E ./cert.pem:qwerty https://<domain>/elinkpro/Process
<?php
$response = process_enterprise_link_pro( array(
    "function" => "Transactions",
    "ticket" => "JGFIGDMG5965SF44557548958345975934",
    "ccy" => "EUR",
    "dateFrom" => "2012-01-26",
    "dateTill" => "2012-02-28",
    "language" => "RU",
    "trnID" => "~bb~Y#~bbEUR~12387.76#~cbd~03122012#~ctd~03122012#~fbd~31122000#~hd~05032005#~ls~2513030097#~of~seq_no#~t1~2512150262#~t2~2524554564#~td~01112012#"
), "./cert.pem", "qwerty" );
?>
EnterpriseLinkPro enterpriseLinkPro = new EnterpriseLinkPro("./cert.p12", "qwerty");

List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("function", "Transactions"));
params.add(new BasicNameValuePair("ticket", "JGFIGDMG5965SF44557548958345975934"));
params.add(new BasicNameValuePair("ccy", "EUR"));
params.add(new BasicNameValuePair("dateFrom", "2012-01-26"));
params.add(new BasicNameValuePair("dateTill", "2012-02-28"));
params.add(new BasicNameValuePair("language", "RU"));
params.add(new BasicNameValuePair("trnID", "~bb~Y#~bbEUR~12387.76#~cbd~03122012#~ctd~03122012#~fbd~31122000#~hd~05032005#~ls~2513030097#~of~seq_no#~t1~2512150262#~t2~2524554564#~td~01112012#"));

String result = enterpriseLinkPro.process(params);
$response = process_enterprise_link_pro( [
    function => "Transactions",
    ticket => "JGFIGDMG5965SF44557548958345975934",
    ccy => "EUR",
    dateFrom => "2012-01-26",
    dateTill => "2012-02-28",
    language => "RU",
    trnID => "~bb~Y#~bbEUR~12387.76#~cbd~03122012#~ctd~03122012#~fbd~31122000#~hd~05032005#~ls~2513030097#~of~seq_no#~t1~2512150262#~t2~2524554564#~td~01112012#"
], './cert.pem', 'qwerty' );
var enterpriseLinkPro = new EnterpriseLinkPro("./cert.p12", "qwerty");

var result = await enterpriseLinkPro.Process(new Dictionary<string, string>
    {
       { "function", "Transactions" },
       { "ticket", "JGFIGDMG5965SF44557548958345975934" },
       { "ccy", "EUR" },
       { "dateFrom", "2012-01-26" },
       { "dateTill", "2012-02-28" },
       { "language", "RU" },
       { "trnID", "~bb~Y#~bbEUR~12387.76#~cbd~03122012#~ctd~03122012#~fbd~31122000#~hd~05032005#~ls~2513030097#~of~seq_no#~t1~2512150262#~t2~2524554564#~td~01112012#" }
    }
);
Parametrs Apraksts
function* Transactions
ticket* Elektroniskā caurlaide, kas ir izsniegta, pieslēdzot kontu servisam “iRietumu”, piemēram, ticket=JGFIGDMG5965SF44557548958345975934
ccy Valūtas kods atbilstoši standartam ISO-4217, piemēram, ccy=EUR
dateFrom* Izraksta perioda sākuma datums ISO yyyy-MM-dd formātā, piemēram, dateFrom=2012-01-26
dateTill* Izraksta perioda beigu datums ISO yyyy-MM-dd formātā, piemēram, dateTill=2012-02-28
language Izraksta (piezīmju u. tml.) valoda, piemēram, language=RU. Pieejamie varianti: RU, EN, LV
trnID Transakcijas ID, no kuras sākas nākamā lappuse (izmanto izrakstam pa lappusēm). Pirmajai lappusei parametrs netiek norādīts.

* obligātie parametri

XML lauku apraksts

Atbildes piemērs:

<?xml version="1.0" encoding="UTF-8"?>
<response>
    <code>0</code>
    <error/>
    <transactions>
        <transaction>
            <uniqueID>EQ-28022013-HEAD-@@SC-7</uniqueID>
            <trnID>~bb~Y#~bbEUR~12387.76#~cbd~03122012#~ctd~03122012#~fbd~31122000#~hd~05032005#~ls~2513030097#~of~seq_no#~t1~2512150262#~t2~2524554564#~td~01112012#</trnID>
            <date>2012-11-01</date>
            <refno>AAA2004</refno>
            <docno/>
            <benname/>
            <benacc/>
            <benid/>
            <benbank/>
            <benbankswift/>
            <details/>
            <narrative>Interest repay - fund.</narrative>
            <amount>-9.82</amount>
            <currency>EUR</currency>
            <saldo>12387.76</saldo>
            <trtype>YP</trtype>
            <trntype>EQ_440</trntype>
            <trndesc>Interest repay - fund.</trndesc>
            <tcf>Y</tcf>
        </transaction>
        <transaction>
            <uniqueID>EQ-28022013-HEAD-@@SC-8</uniqueID>
            <trnID>~bb~Y#~bbEUR~12183.39#~cbd~03122012#~ctd~03122012#~fbd~31122000#~hd~05032005#~ls~2513030097#~of~seq_no#~t1~2512436843#~t2~2525131368#~td~12112012#</trnID>
            <date>2012-11-12</date>
            <refno>I5IC11129901953</refno>
            <docno/>
            <benname/>
            <benacc/>
            <benid/>
            <benbank/>
            <benbankswift/>
            <details>6.97 LVL -- 10.00 EUR (0.697500000)</details>
            <narrative>6.97 LVL -- 10.00 EUR (0.697500000)</narrative>
            <amount>10.0</amount>
            <currency>EUR</currency>
            <saldo>12183.39</saldo>
            <trtype>CONV</trtype>
            <trntype>EQ_543</trntype>
            <trndesc>Currency Exchange</trndesc>
            <tcf>Y</tcf>
        </transaction>
        <transaction>
            <uniqueID>EQ-28022013-HEAD-@@SC-9</uniqueID>
            <trnID>~bb~Y#~bbLVL~2638.06#~cbd~03122012#~ctd~03122012#~fbd~31122000#~hd~05032005#~ls~2513030256#~of~seq_no#~t1~2512299603#~t2~2524860183#~td~07112012#</trnID>
            <date>2012-11-07</date>
            <refno>IVIC11079900909</refno>
            <docno>11-1</docno>
            <benname>ben name</benname>
            <benacc>LV70RIKO000000000000</benacc>
            <benid>111111-22222</benid>
            <benbank>AS DNB BANKA</benbank>
            <benbankswift>RIKOLV2X</benbankswift>
            <details>konta papild.</details>
            <narrative>59: /ID/ 111111-22222, ben name, Rez LV, Nr.LV70RIKO000000000000; 57: AS DNB BANKA, RIKOLV2X; 70: konta papild.;</narrative>
            <amount>-100.0</amount>
            <currency>LVL</currency>
            <saldo>2638.06</saldo>
            <trtype>OO</trtype>
            <trntype>EQ_471</trntype>
            <trndesc>External payment</trndesc>
            <tcf>Y</tcf>
        </transaction>
    </transactions>
    <more>false</more>
</response>
XML lauks Apraksts
<uniqueID> Unikālais transakcijas identificētājs
<trnID> Transakcijas ID, kas tiek izmantots pieprasījumā lai iegūtu nākamo lapu
<date> Transakcijas datums
<refno> Transakcijas atsauces numurs
<docno> Klienta iestatītais dokumenta numurs
<benname> Saņēmēja nosaukums
<benacc> Saņēmēja konta numurs
<benid> Saņēmēja identificētājs
<benbank> Saņēmēja banka
<benbankswift> Saņēmēja bankas SWIFT kods
<details> Transakcijas nosaukums
<amount> Transakcijas summa. “-” norāda, ka tā ir debeta transakcija.
<currency> Transakcijas valūta
<saldo> Atlikums pēc transakcijas
<trtype> Darījuma kods
<trndesc> Darījuma koda atšifrējums
<more> Transakciju pastāvēšanas pazīme. Parametrs “true” liecina, ka nav saņemtas visas transakcijas un ir jāpieprasa turpinājums (norādot pēdējās saņemtās transakcijas identificētāju <trnID>).

Funkcija „Izejošā maksājuma detaļas”

Funkcija tiek izmantota, lai saņemtu informāciju par noteiktu izejošo transakciju.

Pieprasījuma parametri

Piemērs kods:

curl -d "function=OutgoingPaymentDetails&ticket=JGFIGDMG5965SF44557548958345975934&refno=IVID05249900342&language=RU" -E ./cert.pem:qwerty https://<domain>/elinkpro/Process
<?php
$response = process_enterprise_link_pro( array(
    "function" => "OutgoingPaymentDetails",
    "ticket" => "JGFIGDMG5965SF44557548958345975934",
    "refno" => "IVID05249900342",
    "language" => "RU"
), "./cert.pem", "qwerty" );
?>
EnterpriseLinkPro enterpriseLinkPro = new EnterpriseLinkPro("./cert.p12", "qwerty");

List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("function", "OutgoingPaymentDetails"));
params.add(new BasicNameValuePair("ticket", "JGFIGDMG5965SF44557548958345975934"));
params.add(new BasicNameValuePair("refno", "IVID05249900342"));
params.add(new BasicNameValuePair("language", "RU"));

String result = enterpriseLinkPro.process(params);
$response = process_enterprise_link_pro( [
    function => "OutgoingPaymentDetails",
    ticket => "JGFIGDMG5965SF44557548958345975934",
    refno => "IVID05249900342",
    language => "RU"
], './cert.pem', 'qwerty' );
var enterpriseLinkPro = new EnterpriseLinkPro("./cert.p12", "qwerty");

var result = await enterpriseLinkPro.Process(new Dictionary<string, string>
    {
       { "function", "OutgoingPaymentDetails" },
       { "ticket", "JGFIGDMG5965SF44557548958345975934" },
       { "refno", "IVID05249900342" },
       { "language", "RU" }
    }
);
Parametrs Apraksts
function* OutgoingPaymentDetails
ticket* Elektroniskā caurlaide, kas ir izsniegta, pieslēdzot kontu servisam “iRietumu”, piemēram, ticket=JGFIGDMG5965SF44557548958345975934.
refno* Transakcijas atsauces numurs
language Izraksta (piezīmju u. tml.) valoda, piemēram, language=RU. Pieejamie varianti: RU, EN, LV

* obligātie parametri

XML lauku apraksts

Atbildes piemērs:

<?xml version="1.0" encoding="UTF-8"?>
<response>
    <code>0</code>
    <error/>
    <details>
        <ref_no>IVID05249900342</ref_no>
        <state_id>2</state_id>
        <doc_number/>
        <reg_date>2013-05-24T00:00:00</reg_date>
        <reg_datetime>2013-05-24T16:04:58</reg_datetime>
        <urgency>Standart</urgency>
        <urgency_code>1</urgency_code>
        <rem_acc>LV10RTMB0000000000000</rem_acc>
        <rem_name>ABC Ltd.</rem_name>
        <rem_addr>RĪGA LATVIA</rem_addr>
        <rem_regno>123456789-0</rem_regno>
        <rem_country>LV</rem_country>
        <rem_res>RES</rem_res>
        <pmnt_amount>1000.0</pmnt_amount>
        <pmnt_ccy>AUD</pmnt_ccy>
        <pmnt_value/>
        <cor_name/>
        <cor_addr/>
        <cor_addr1/>
        <cor_bic/>
        <cor_eltype/>
        <cor_el/>
        <cor_country/>
        <bbank_acc/>
        <bbank_name>UBS AG</bbank_name>
        <bbank_addr>ZURICH</bbank_addr>
        <bbank_addr1>45, BAHNHOFSTRASSE</bbank_addr1>
        <bbank_bic>UBSWCHZH80A</bbank_bic>
        <bbank_country>CH</bbank_country>
        <bbank_eltype/>
        <bbank_el/>
        <ben_name>ABC HOLDINGS LIMITED</ben_name>
        <ben_addr>UNIT 88,19THFLOOR BASE</ben_addr>
        <ben_addr1>200 DEF ROAD,Germany</ben_addr1>
        <ben_acciban>CH5000111235FJ1234567</ben_acciban>
        <ben_country>SZ</ben_country>
        <ben_regno>123</ben_regno>
        <ben_res>NONRES</ben_res>
        <charge_type>BEN</charge_type>
        <pmnt_details>test ALL FIELDS</pmnt_details>
        <add_info>Поле Information to the Bank.</add_info>
        <rietumuid>000000</rietumuid>
        <charge_amnt>0.0</charge_amnt>
        <charge_ccy/>
        <amk_code>213</amk_code>
        <tran_type_desc>Payment to another bank</tran_type_desc>
        <lng>EN</lng>
        <oper_type>Debit</oper_type>
        <state_id_desc>Rejected</state_id_desc>
        <cor_bank_acc/>
        <oper_type_v>D</oper_type_v>
        <pmnt_amount_text>one thousand, 00</pmnt_amount_text>
    </details>
</response>
XML lauks Apraksts
<ref_no> Transakcijas atsauces numurs
<state_id> Transakcijas statuss *
<doc_number> Klienta iestatītais dokumenta numurs
<reg_date> Transakcijas reģistrācijas datums
<reg_datetime> Reģistrācijas datums un laiks
<urgency> Transakcijas steidzamība **
<urgency_code> Steidzamības kods **
<rem_acc> Nosūtītāja konts
<rem_name> Nosūtītāja nosaukums
<rem_addr> Nosūtītāja adrese
<rem_regno> Nosūtītāja reģistrācijas numurs
<rem_country> Nosūtītāja valsts
<rem_res> Vai nosūtītājs ir Latvijas rezidents? Pieejamie varianti: RES, NONRES
<pmnt_amount> Transakcijas summa
<pmnt_ccy> Transakcijas valūta
<pmnt_value> Valutēšanas datums
<cor_name> Korespondentbankas nosaukums
<cor_addr> Korespondentbankas adrese
<cor_addr1>
<cor_bic> Korespondentbankas SWIFT kods
<cor_eltype> Nacionālā koda tips
<cor_el> Nacionālais kods
<cor_country> Korespondentbankas valsts
<bbank_acc> Saņēmēja bankas konts
<bbank_name> Saņēmēja bankas nosaukums
<bbank_addr> Saņēmēja bankas adrese
<bbank_addr1>
<bbank_bic> Saņēmēja bankas SWIFT kods
<bbank_country> Saņēmēja bankas valsts
<bbank_eltype> Nacionālā koda tips
<bbank_el> Nacionālais kods
<ben_name> Saņēmēja nosaukums
<ben_acciban> Saņēmēja konts IBAN formātā
<ben_addr> Saņēmēja adrese
<ben_addr1>
<ben_country> Saņēmēja valsts
<ben_regno> Saņēmēja reģistrācijas numurs
<ben_res> Vai saņēmējs ir Latvijas rezidents? Pieejamie varianti: RES, NONRES
<charge_type> Komisijas tips ***
<pmnt_details> Rīkojuma detaļas
<add_info> Papildinformācija
<rietumuid> Rietumu ID
<charge_amnt> Komisijas summa. Rādītājs netiek nosūtīts atpakaļ.
<charge_ccy> Komisijas valūta. Rādītājs netiek nosūtīts atpakaļ.
<amk_code> Transakcijas AMK kods. Tiek izmantots, ja Latvijas rezidents pārskaita nerezidentam vairāk par EUR 5000.
<tran_type_desc> Transakcijas tipa apraksts
<lng> Pieprasījumā minētā valoda
<oper_type> Darījuma tips. Iespējamie varianti (valoda ir atkarīga no ): debets, kredīts.
<state_id_desc> Transakcijas statusa kods *
<cor_bank_acc> Saņēmēja bankas konts korespondentbankā
<oper_type_v> Darījuma tipa kods. Pieejamie varianti: D, C
<pmnt_amount_text> Transakcijas summas tekstuālais atšifrējums

* - iespējamie transakciju statusa varianti

Statusa apraksts Kods
Bankā 0, 3, 4
Parakstīšanai 20
Atlikts 1
Atcelts 2, 7
Nosūtīts 5, 6

** - iespējamie steidzamības varianti

Steidzamības apraksts Kods
Standarta 1
Steidzams (Express) 2
Ekonomiskais 3

*** - iespējamie komisijas tipu varianti

Komisijas tips Apraksts
OUR Maksā maksātājs
BEN Maksā saņēmējs
SHA Tiek maksāts dalīti

Funkcija „Nosūtīt dokumentu”

Funkcija reģistrē maksājuma uzdevuma dokumentu bankā un nosūta atpakaļ informāciju par kļūdām, ja tādas tiek konstatētas.

Pieprasījuma parametri

Piemērs kods:

curl -d "function=PostDocument&ticket=JGFIGDMG5965SF44557548958345975934&language=RU&doc=<XML content>" -E ./cert.pem:qwerty https://<domain>/elinkpro/Process
<?php
$response = process_enterprise_link_pro( array(
    "function" => "PostDocument",
    "ticket" => "JGFIGDMG5965SF44557548958345975934",
    "language" => "RU",
    "doc" => "<XML content>"
), "./cert.pem", "qwerty" );
?>
EnterpriseLinkPro enterpriseLinkPro = new EnterpriseLinkPro("./cert.p12", "qwerty");

List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("function", "PostDocument"));
params.add(new BasicNameValuePair("ticket", "JGFIGDMG5965SF44557548958345975934"));
params.add(new BasicNameValuePair("language", "RU"));
params.add(new BasicNameValuePair("doc", "<XML content>"));

String result = enterpriseLinkPro.process(params);
$response = process_enterprise_link_pro( [
    function => "PostDocument",
    ticket => "JGFIGDMG5965SF44557548958345975934",
    language => "RU",
    doc => "<XML content>"
], './cert.pem', 'qwerty' );
var enterpriseLinkPro = new EnterpriseLinkPro("./cert.p12", "qwerty");

var result = await enterpriseLinkPro.Process(new Dictionary<string, string>
    {
       { "function", "PostDocument" },
       { "ticket", "JGFIGDMG5965SF44557548958345975934" },
       { "language", "RU" },
       { "doc", "<XML content>" }
    }
);
Parametrs Apraksts
function* PostDocument
ticket* elektroniska caurlaide, ko piešķir, pieslēdzot kontu pakalpojumam sistēmā „iRietumu”, piemēram, ticket=JGFIGDMG5965SF44557548958345975934.
language valoda, kurā sniedzami ziņojumi par kļūdām. Pieejamie varianti: RU, EN, LV
doc* dokumenta teksts XML formātā

* obligātie parametri

Maksājuma uzdevuma XML formāts

XML dokumenta paraugs:

<RBdocument type="payment">
    <DocNo>1-3</DocNo>
    <SendCopyeMail/>
    <SendCopyiRietumu>N</SendCopyiRietumu>
    <User>000000</User>
    <System></System>
    <AddInfo72>additional info</AddInfo72>
    <AmkCode>0</AmkCode>
    <Amount>100.00</Amount>
    <BenBank>
        <BenBankAcc>A111111</BenBankAcc>
        <BenBankAddr1>AXION SWISS BANK SA</BenBankAddr1>
        <BenBankAddr2>LUGANO</BenBankAddr2>
        <BenBankAddr3>1, VIA BOSSI</BenBankAddr3>
        <BenBankBic>UNCECH22XXX</BenBankBic>
        <BenBankCountry>CH</BenBankCountry>
        <BenBankEl/>
        <BenBankElType/>
    </BenBank>
    <Beneficiary>
        <BenAcc>CH0000000000000000000</BenAcc>
        <BenAddr1>TEST COMPANY LIMITED</BenAddr1>
        <BenAddr2>address line 1</BenAddr2>
        <BenAddr3>address line 2</BenAddr3>
        <BenCountry>CH</BenCountry>
        <BenID>1234567</BenID>
    </Beneficiary>
    <Ccy>EUR</Ccy>
    <Charge>OUR</Charge>
    <Details70>payment details</Details70>
    <Intermediary>
        <IntBankAcc/>
        <IntBankAddr1>ASIA PACIFIC FINANCIAL SERVICES CHI</IntBankAddr1>
        <IntBankAddr2>NA LIMITED</IntBankAddr2>
        <IntBankAddr3>LANZHOU GANSU</IntBankAddr3>
        <IntBankBic>APFVCNB1XXX</IntBankBic>
        <IntBankCountry>CN</IntBankCountry>
        <IntBankEl/>
        <IntBankElType/>
    </Intermediary>
    <Rate>0.0</Rate>
    <Sender>
        <SenderAcc>LV10RTMB0000000000000</SenderAcc>
        <SenderCountry/>
    </Sender>
    <Urgency>1</Urgency>
</RBdocument>

Sekmīga JSON atbilde:

{
    "code": 0, 
    "error": "", 
    "signatureRequired": [ "CER", "DGP", "OTP" ],
    "refNo": "HVEE07099900001", 
    "error_code": "IERR_OK",
    "error_message": "The order has been executed (IERR_OK)",
    "execute_message": "",
    "error_field": "",
    "error_level": 0,
    "fee_ccy": "",
    "fee_amount": 0.0,
    "errors": [
        {
            "error_code": "IERR_OK",
            "error_message": "The order has been executed (IERR_OK)",
            "execute_message": "",
            "error_field": "",
            "error_level": 0
        }
    ]
}

Sekmīga JSON atbilde ar maksājuma izpildes kļūdām:

{
    "code": 0, 
    "error": "", 
    "signatureRequired": [ "CER", "DGP", "OTP" ],
    "refNo": "HVEE07099900002", 
    "error_code": "IPM_BENNOT2",
    "error_message": "Beneficiary name not found\/ not indicated (Beneficiary name not found)",
    "execute_message": "",
    "error_field": "BenAddr1",
    "error_level": 4,
    "fee_ccy": "",
    "fee_amount": 0.0,
    "errors": [
        {
            "error_code": "IPM_BENNOT2",
            "error_message": "Beneficiary name not found\/ not indicated (Beneficiary name not found)",
            "execute_message": "",
            "error_field": "BenAddr1",
            "error_level": 4
        },
        {
            "error_code": "IERR_FVALUE",
            "error_message": "Postponed payment. The payment instruction will be postponed until selected execution date. (Future Value)",
            "execute_message": "",
            "error_field": "",
            "error_level": 2
        }
    ]
}
Lauks Apraksts Garums Pieļaujamie apzīmējumi Obligāti
<DocNo> dokumenta numurs 15 charset_All* N
<System> sistēma, atstāt tukšu Y
<User> lietotāja identifikators - Rietumu ID 6 0-9 Y
<Amount> maksājuma summa 15.2 Y
<Ccy> valūta 3 ISO 4217
3-burtu kods
Y
<Sender>
<SenderAcc> nosūtītāja konts 21 IBAN. Vienmēr konts Rietumu Bankā Y
</Sender>
<Beneficiary>
<BenAcc> saņēmēja konts 34 charset_ACCOUNT** Y
<BenAddr1> saņēmēja nosaukums 34 charset_All* Y
<BenAddr2> saņēmēja adrese (rinda 1) 34 charset_All* N
<BenAddr3> saņēmēja adrese (rinda 2) 34 charset_All* N
<BenCountry> saņēmēja valsts 2 ISO 3166-1 alpha-2 code Y
<BenID> saņēmēja reģistrācijas numurs 34 charset_All* Y, ja saņēmēja valsts = LV
</Beneficiary>
<BenBank>
<BenBankAcc> saņēmēja bankas konts korespondentbankā (RKZ – payment processing centre) 34 charset_ACCOUNT** N
<BenBankAddr1> saņēmēja bankas nosaukums 34 charset_All* Y
<BenBankAddr2> saņēmēja bankas adrese Nr. 1 34 charset_All* N
<BenBankAddr3> saņēmēja bankas adrese Nr. 2 34 charset_All* N
<BenBankBic> saņēmēja bankas SWIFT 11 A-Za-z0-9 N
<BenBankCountry> saņēmēja bankas valsts 2 ISO 3166-1 alpha-2 code Y
<BenBankEl> nacionālais klīringa kods 30 charset_All* N
<BenBankElType> klīringa koda tips 2 ELTYPE*** Y, ja aizpildīts <BenBankEl>
</BenBank>
<Intermediary>
<IntBankAcc> konts korespondentbankā (RKZ – payment processing centre) 34 charset_ACCOUNT** N
<IntBankAddr1> korespondentbankas nosaukums 34 charset_All* N
<IntBankAddr2> korespondentbankas adrese Nr. 1 34 charset_All* N
<IntBankAddr3> korespondentbankas adrese Nr. 2 34 charset_All* N
<IntBankBic> korespondentbankas SWIFT 11 A-Za-z0-9 N
<IntBankCountry> korespondentbankas valsts 2 ISO 3166-1 alpha-2 code Y, ja aizpildīts <IntBankAddr1>
<IntBankEl> nacionālais klīringa kods 30 charset_All* N
<IntBankElType> klīringa koda tips 2 ELTYPE*** Y, ja aizpildīts <IntBankEl>
</Intermediary>
<Details70> piezīmes 140 charset_All* Y
<AddInfo72> papildinformācija 200 charset_All* N
<Rate> fiksēta vērtība „0.0” 1.1 Y
<SendCopyeMail> e-pasta adrese SWIFT kopijas saņemšanai. Maksas pakalpojums 60 A-Za-z0-9а-яА-Я!#$%’*+-/=?^_`{|}~.@ N
<SendCopyiRietumu> SWIFT kopijas saņemšana sistēmā „iRietumu”. Maksas pakalpojums 1 Y/N N
<Urgency> steidzamība 1 1 - Parasts maksājums (Normal)
2 - Steidzams maksājums (Urgent)
3 - Ekonomiskais (Econom)
Y
<DesiredDate> vēlamais izpildes datums 10 YYYY-MM-DD N
<Charge> komisijas maksājumu tips 3 BEN - par saņēmēja līdzekļiem
OUR - par nosūtītāja līdzekļiem
SHA - sadalīts maksājums
DEF - automātisks maksājums (vērtību izvēlēsies banka, ņemot vērā maksājuma parametrus)
Y
<AmkCode> ārējā maksājuma kods pēc Latvijas Bankas rokasgrāmatas 3 0-9 Y, ja tas ir maksājums, ko LV rezidents veic LV nerezidentam, par summu, kas ir lielāka par 10 000 EUR

* – A-Za-z0-9?:().,’+{};!?&-_[]`/“<space>а-яА-Я <latviešu alfabēta simboli>

** – A-Za-z0-9?:().,’+{};!?&-_[]`/”<space>

*** – divzīmju kods, vērtības ir sniegtas tabulā

Kods Apraksts
RU Bank Identification Code (БИК/BIC)
AT Austrian Bankleitzahl
AU Australian Bank State Branch (BSB)
BL German Bankleitzahl
CC Canadian Payments Association Payment Routing
CH CHIPS Universal Identifier
CP USA CHIPS Participant Identifier
ES Spanish Domestic Interbanking Code
FW USA Fedwire Routing Number
HK Bank Code of Hong Kong
IE Irish National Clearing Code (NSC)
IT Italian Domestic Identification Code
MF MFO (Other)
NZ New Zealand National Clearing Code
PT Portuguese National Clearing Code
SC UK Domestic Sort Code
SW Swiss Clearing Code (BC or SIC)

Funkcija „Saņemt dokumentu parakstīšanai”

Funkcija nodod atpakaļ agrāk reģistrēto dokumentu tā turpmākai parakstīšanai.

Pieprasījuma parametri

Piemērs kods:

curl -d "function=GetDocumentForSign&ticket=JGFIGDMG5965SF44557548958345975934&language=RU&refNo=HVEE07099900001" -E ./cert.pem:qwerty https://<domain>/elinkpro/Process
<?php
$response = process_enterprise_link_pro( array(
    "function" => "GetDocumentForSign",
    "ticket" => "JGFIGDMG5965SF44557548958345975934",
    "language" => "RU",
    "refNo" => "HVEE07099900001"
), "./cert.pem", "qwerty" );
?>
EnterpriseLinkPro enterpriseLinkPro = new EnterpriseLinkPro("./cert.p12", "qwerty");

List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("function", "GetDocumentForSign"));
params.add(new BasicNameValuePair("ticket", "JGFIGDMG5965SF44557548958345975934"));
params.add(new BasicNameValuePair("language", "RU"));
params.add(new BasicNameValuePair("refNo", "HVEE07099900001"));

String result = enterpriseLinkPro.process(params);
$response = process_enterprise_link_pro( [
    function => "GetDocumentForSign",
    ticket => "JGFIGDMG5965SF44557548958345975934",
    language => "RU",
    refNo => "HVEE07099900001"
], './cert.pem', 'qwerty' );
var enterpriseLinkPro = new EnterpriseLinkPro("./cert.p12", "qwerty");

var result = await enterpriseLinkPro.Process(new Dictionary<string, string>
    {
       { "function", "GetDocumentForSign" },
       { "ticket", "JGFIGDMG5965SF44557548958345975934" },
       { "language", "RU" },
       { "refNo", "HVEE07099900001" }
    }
);
Parametrs Apraksts
function* GetDocumentForSign
ticket* elektroniska caurlaide, ko piešķir, pieslēdzot kontu pakalpojumam sistēmā „iRietumu”, piemēram, ticket=JGFIGDMG5965SF44557548958345975934.
language valoda, kurā sniedzami ziņojumi par kļūdām. Pieejamie varianti: RU, EN, LV
refNo* dokumenta references numurs

* obligātie parametri

Atbildes piemērs:

{
    "code": 0,
    "error": "", 
    "signatureRequired": [ "CER" ], 
    "expectedSignatures": [], 
    "existingSignatures": [],
    "doc": "XML dokumenta teksts"
}

Funkcija „Nosūtīt parakstīto dokumentu”

Piemērs kods:

# W3C specification for XMLDSig is available here: http://www.w3.org/TR/xmldsig-core/
# OpenSSL documentation is available here: https://www.openssl.org/docs/apps/openssl.html
#
# Manually signing XML document using console tools is counterproductive so please check other solutions.
<?php
/**
 * Sign XML content using XMLDSig enveloped method for PHP 5.3
 *
 * Requires classes XMLSecurityKey and XMLSecurityDSig
 * from https://github.com/formapro/xmlseclib
 *
 * @param    string $XMLContent
 * @param    string $certificatePath
 * @param    string $certificatePassword
 *
 * @return    string                            signed XML
 * @throws    Exception
 *
 * Usage:
 * $signedContent = XMLDSig_SignEnveloped($contentToSign, './cert.pem', 'qwerty');
 */
function XMLDSig_SignEnveloped($XMLContent, $certificatePath, $certificatePassword) {
    if (!function_exists('openssl_pkey_get_private'))
        throw new Exception('Openssl PHP extension is required in ');
    $certificateContent = file_get_contents($certificatePath);
    $privateKey         = openssl_pkey_get_private($certificateContent, $certificatePassword);
    if (!$privateKey)
        throw new Exception("Unable to load private key in ");
    $keyDetails = openssl_pkey_get_details($privateKey);

    $document = new DOMDocument();
    $document->loadXML($XMLContent);

    $objXMLSecurityKey = new XMLSecurityKey(XMLSecurityKey::RSA_SHA1, array('type' => 'private'));
    $objXMLSecurityKey->loadKey($privateKey);
    $objXMLSecDSig = new XMLSecurityDSig("");
    $objXMLSecDSig->setCanonicalMethod(XMLSecurityDSig::EXC_C14N_COMMENTS);
    $objXMLSecDSig->addReference($document, XMLSecurityDSig::SHA1, array('http://www.w3.org/2000/09/xmldsig#enveloped-signature'), array('force_uri' => true));
    $objXMLSecDSig->sign($objXMLSecurityKey, $document->documentElement);
    $objXMLSecDSig->add509Cert($certificateContent);

    $RSAKeyValueTpl = "<KeyValue><RSAKeyValue><Modulus>%s</Modulus><Exponent>%s</Exponent></RSAKeyValue></KeyValue>";
    $modulus        = base64_encode($keyDetails['rsa']['n']);
    $exponent       = base64_encode($keyDetails['rsa']['e']);
    $RSAKeyValue    = sprintf($RSAKeyValueTpl, $modulus, $exponent);

    return str_replace("</KeyInfo>", $RSAKeyValue . "</KeyInfo>", $document->saveXML());
}
?>
/**
 * XMLDSig class for Java 7
 *
 * Required:
 * 1. Bouncy Castle 1.38 or newer
 *      from https://www.bouncycastle.org/java.html
 * 
 * 2. Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files
 *      from http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
 * 
 * Usage:
 * XMLDSig xmlDSig = new XMLDSig("./cert.p12", "qwerty");
 * String signedContent = xmlDSig.signEnveloped(contentToSign);
 */
public class XMLDSig {

    private KeyStore keyStore;
    private String alias;
    private XMLSignature signature;
    private DocumentBuilderFactory documentBuilderFactory;
    private TransformerFactory transformerFactory;
    private String filePath;
    private String password;

    public XMLDSig(String filePath, String password) throws GeneralSecurityException, IOException {
        this.filePath = filePath;
        this.password = password;

        Security.addProvider(new BouncyCastleProvider());

        keyStore = loadKeystore();
        alias = getAlias();
        signature = createSignature();

        documentBuilderFactory = DocumentBuilderFactory.newInstance();
        documentBuilderFactory.setNamespaceAware(true);
        transformerFactory = TransformerFactory.newInstance();
    }

    private KeyStore loadKeystore() throws GeneralSecurityException, IOException {
        KeyStore keyStore = KeyStore.getInstance("PKCS12", "BC");
        keyStore.load(new FileInputStream(filePath), password.toCharArray());

        return keyStore;
    }

    private String getAlias() throws GeneralSecurityException {
        String alias = null;
        Enumeration<String> enumeration = keyStore.aliases();
        while(enumeration.hasMoreElements()) {
            alias = (String)enumeration.nextElement();
            break;
        }
        if (alias.isEmpty()) {
            throw new RuntimeException("Key store does not contain entry with alias");
        }

        return alias;
    }

    private XMLSignature createSignature() throws GeneralSecurityException {
        XMLSignatureFactory signatureFactory = XMLSignatureFactory.getInstance("DOM");
        return signatureFactory.newXMLSignature(createSignedInfo(signatureFactory), createKeyInfo(signatureFactory));
    }

    private SignedInfo createSignedInfo(XMLSignatureFactory signatureFactory) throws GeneralSecurityException {
        CanonicalizationMethod canonicalizationMethod = signatureFactory.newCanonicalizationMethod(CanonicalizationMethod.INCLUSIVE_WITH_COMMENTS,
                (C14NMethodParameterSpec) null);

        SignatureMethod signatureMethod = signatureFactory.newSignatureMethod(SignatureMethod.RSA_SHA1, null);

        DigestMethod digestMethod = signatureFactory.newDigestMethod(DigestMethod.SHA1, null);
        Transform transform = signatureFactory.newTransform(Transform.ENVELOPED, (TransformParameterSpec) null);
        Reference reference = signatureFactory.newReference("", digestMethod, Collections.singletonList(transform), null, null);

        return signatureFactory.newSignedInfo(canonicalizationMethod, signatureMethod, Collections.singletonList(reference));
    }

    private KeyInfo createKeyInfo(XMLSignatureFactory signatureFactory) throws GeneralSecurityException {
        KeyInfoFactory keyInfoFactory = signatureFactory.getKeyInfoFactory();
        ArrayList<XMLStructure> keys = new ArrayList<XMLStructure>();

        X509Certificate certificate = getX509Certificate();
        keys.add(keyInfoFactory.newKeyValue(certificate.getPublicKey()));

        X509Data certificateInfo = keyInfoFactory.newX509Data(Collections.singletonList(certificate));
        keys.add(certificateInfo);

        return keyInfoFactory.newKeyInfo(keys);
    }

    private X509Certificate getX509Certificate() throws GeneralSecurityException {
        return (X509Certificate) keyStore.getCertificate(alias);
    }

    private PrivateKey getX509PrivateKey() throws GeneralSecurityException {
        return (PrivateKey) keyStore.getKey(alias, password.toCharArray());
    }

    public String signEnveloped(String documentSource) throws Exception {
        DocumentBuilder newDocumentBuilder = documentBuilderFactory.newDocumentBuilder();
        Document document = newDocumentBuilder.parse(new InputSource(new StringReader(documentSource)));

        DOMSignContext signContext = new DOMSignContext(getX509PrivateKey(), document.getDocumentElement());
        signature.sign(signContext);

        StringWriter writer = new StringWriter();
        Transformer transformer = transformerFactory.newTransformer();
        transformer.transform(new DOMSource(document), new StreamResult(writer));
        return writer.toString();
    }

}
#!/usr/bin/perl

use XML::XPath;
use MIME::Base64;
use Crypt::OpenSSL::X509;
use Crypt::OpenSSL::RSA;
use File::Slurp;
use Digest::SHA1 qw(sha1);
use XML::CanonicalizeXML;
# Sign XML content using XMLDSig enveloped method for Perl 5.20
#
# Certificate in PEM format without encryption can be extracted from P12 certificate
# openssl pkcs12 -in ATTID1TR.p12 -out certkey.pem -clcerts -nodes
#
# @param   {String}    $XMLContent          XML content to be signed
# @param   {String}    $certificatePath     path to certificate file in PEM format without encryption
# @return  {String}                         XML content
#
# Usage: 
# my $signedContent = XMLDSig_SignEnveloped($contentToSign, "./certkey.pem");
sub XMLDSig_SignEnveloped {
    my ( $XMLContent, $certificatePath ) = @_;

    my $xml;
    my $parser = XML::XPath->new( xml => $XMLContent );
    my $nodeset = $parser->find('/');
    foreach my $node ($nodeset->get_nodelist) {
        $xml = XML::XPath::XMLParser::as_string( $node );
        last;
    }
    $signed = $XMLContent;

    my $certContent = read_file($certificatePath);

    my $rsaKey = Crypt::OpenSSL::RSA->new_private_key( $certContent );
    $rsaKey->use_pkcs1_padding();
    my $bigNum = ( $rsaKey->get_key_parameters() )[1];
    my $bin = $bigNum->to_bin();
    my $exp = encode_base64( $bin, '' );
    $bigNum = ( $rsaKey->get_key_parameters() )[0];
    $bin = $bigNum->to_bin();
    my $mod = encode_base64( $bin, '' );
    my $keyContent = "<KeyValue><RSAKeyValue><Modulus>$mod</Modulus><Exponent>$exp</Exponent></RSAKeyValue></KeyValue>";
    my $x509 = Crypt::OpenSSL::X509->new_from_string( $certContent );
    my $certString = $x509->as_string();
    $certString =~ s/-----BEGIN CERTIFICATE-----//;
    $certString =~ s/-----END CERTIFICATE-----//;
    $certString =~ s/\n//g;
    $certContent = "<X509Data><X509Certificate>$certString</X509Certificate></X509Data>";
    my $keyInfo = "<KeyInfo>".$certContent.$keyContent."</KeyInfo>";

    my $canonical = XML::CanonicalizeXML::canonicalize( $xml, '<XPath>(//. | //@* | //namespace::*)</XPath>', "", 1, 1 );
    my $bin_digest    = sha1( $canonical );
    my $digest        = encode_base64( $bin_digest, '' );
    my $digest_xml    = qq{<Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>$digest</DigestValue></Reference>};
    my $signed_info   = qq{<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#"><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#WithComments"/><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>$digest_xml</SignedInfo>};
    $canonical_sign_info        = XML::CanonicalizeXML::canonicalize( $signed_info, '<XPath>(//. | //@* | //namespace::*)</XPath>', "", 1, 1 );

    my $bin_signature = $rsaKey->sign( $canonical_sign_info );
    my $signature     = encode_base64( $bin_signature, "" );
    my $signature_xml = qq{<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">$signed_info<SignatureValue>$signature</SignatureValue>$keyInfo</Signature>};
    $signed =~ s/(<\/[^>]*>)$/$signature_xml$1/;
    return $signed;
};
/**
 * XMLDSig class for .NET 4.5
 *
 * Required references:
 * System.Security
 * 
 * Usage:
 * var xmlDSig = new XMLDSig("./cert.p12", "qwerty");
 * var signedContent = xmlDSig.SignEnveloped(contentToSign);
 */
public class XMLDSig
{
    private X509Certificate2 x509Certificate2;
    private RSACryptoServiceProvider privateKey;

    public XMLDSig(String certificatePath, String certificatePassword)
    {
        x509Certificate2 = new X509Certificate2(certificatePath, certificatePassword);
        privateKey = (RSACryptoServiceProvider)x509Certificate2.PrivateKey;
    }

    public String SignEnveloped(String XMLContent)
    {
        var document = new XmlDocument();
        document.PreserveWhitespace = true;
        document.LoadXml(XMLContent);
        SignedXml signedXML = new SignedXml(document);

        signedXML.SigningKey = privateKey;
        signedXML.SignedInfo.CanonicalizationMethod = SignedXml.XmlDsigC14NWithCommentsTransformUrl;
        signedXML.SignedInfo.SignatureMethod = SignedXml.XmlDsigRSASHA1Url;

        Reference reference = new Reference();
        reference.Uri = "";
        reference.AddTransform(new XmlDsigEnvelopedSignatureTransform());
        signedXML.SignedInfo.AddReference(reference);

        KeyInfo keyInfo = new KeyInfo();
        keyInfo.AddClause(new KeyInfoX509Data(x509Certificate2));
        keyInfo.AddClause(new RSAKeyValue(privateKey));
        signedXML.KeyInfo = keyInfo;

        signedXML.ComputeSignature();
        XmlElement xmlDigitalSignature = signedXML.GetXml();
        document.DocumentElement.AppendChild(document.ImportNode(xmlDigitalSignature, true));
        return document.OuterXml;
    }
}

Funkcija nosūta izpildei parakstīto dokumentu bankai. Ja parādās kļūdas, tie tiks attēloti.

Pirms dokumenta izsūtīšanas tas jāparaksta pēc standarta XMLDSig (XML Digital Signature), metode „Enveloped”. Jāparaksta tikai maksājuma uzdevuma sekcija, kas ietverta XML tagos un XAdES.

Pieprasījuma parametri

Piemērs kods:

curl -d "function=PostSignedDocument&ticket=JGFIGDMG5965SF44557548958345975934&language=RU&refNo=HVEE07099900001&doc=<XML content>" -E ./cert.pem:qwerty https://<domain>/elinkpro/Process
<?php
$response = process_enterprise_link_pro( array(
    "function" => "PostSignedDocument",
    "ticket" => "JGFIGDMG5965SF44557548958345975934",
    "language" => "RU",
    "refNo" => "HVEE07099900001",
    "doc" => "<XML content>"
), "./cert.pem", "qwerty"  );
?>
EnterpriseLinkPro enterpriseLinkPro = new EnterpriseLinkPro("./cert.p12", "qwerty");

List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("function", "PostSignedDocument"));
params.add(new BasicNameValuePair("ticket", "JGFIGDMG5965SF44557548958345975934"));
params.add(new BasicNameValuePair("language", "RU"));
params.add(new BasicNameValuePair("refNo", "HVEE07099900001"));
params.add(new BasicNameValuePair("doc", "<XML content>"));

String result = enterpriseLinkPro.process(params);
$response = process_enterprise_link_pro( [
    function => "PostSignedDocument",
    ticket => "JGFIGDMG5965SF44557548958345975934",
    language => "RU",
    refNo => "HVEE07099900001",
    doc => "<XML content>"
], './cert.pem', 'qwerty' );
var enterpriseLinkPro = new EnterpriseLinkPro("./cert.p12", "qwerty");

var result = await enterpriseLinkPro.Process(new Dictionary<string, string>
    {
       { "function", "PostSignedDocument" },
       { "ticket", "JGFIGDMG5965SF44557548958345975934" },
       { "language", "RU" },
       { "refNo", "HVEE07099900001" },
       { "doc", "<XML content>" }
    }
);

Parakstīta XML dokumenta paraugs

<RBdocument type="payment">
    <DocNo>1-3</DocNo>
    <SendCopyeMail/>
    <SendCopyiRietumu>N</SendCopyiRietumu>
    <User>000000</User>
    <System>ELinkPRO</System>
    <AddInfo72>additional info</AddInfo72>
    <AmkCode>0</AmkCode>
    <Amount>100.00</Amount>
    <BenBank>
        <BenBankAcc>A111111</BenBankAcc>
        <BenBankAddr1>AXION SWISS BANK SA</BenBankAddr1>
        <BenBankAddr2>LUGANO</BenBankAddr2>
        <BenBankAddr3>1, VIA BOSSI</BenBankAddr3>
        <BenBankBic>UNCECH22XXX</BenBankBic>
        <BenBankCountry>CH</BenBankCountry>
        <BenBankEl/>
        <BenBankElType/>
    </BenBank>
    <Beneficiary>
        <BenAcc>CH0000000000000000000</BenAcc>
        <BenAddr1>TEST COMPANY LIMITED</BenAddr1>
        Инструкция по настройке Enterprise Link PRO
        23
        <BenAddr2>address line 1</BenAddr2>
        <BenAddr3>address line 2</BenAddr3>
        <BenCountry>CH</BenCountry>
        <BenID>1234567</BenID>
    </Beneficiary>
    <Ccy>EUR</Ccy>
    <Charge>OUR</Charge>
    <Details70>payment details</Details70>
    <Intermediary>
        <IntBankAcc/>
        <IntBankAddr1>ASIA PACIFIC FINANCIAL SERVICES CHI</IntBankAddr1>
        <IntBankAddr2>NA LIMITED</IntBankAddr2>
        <IntBankAddr3>LANZHOU GANSU</IntBankAddr3>
        <IntBankBic>APFVCNB1XXX</IntBankBic>
        <IntBankCountry>CN</IntBankCountry>
        <IntBankEl/>
        <IntBankElType/>
    </Intermediary>
    <Rate>0.0</Rate>
    <Sender>
        <SenderAcc>LV10RTMB0000000000000</SenderAcc>
        <SenderCountry/>
    </Sender>
    <Urgency>1</Urgency>
    <RegistrationDateTime>2014-07-07T10:42:26</RegistrationDateTime>
    <RefNo>HVEE07099900001</RefNo>
    <SignerSID>jcs_WhEny0eiG1s1FppetEw</SignerSID>
    <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
        <SignedInfo>
            <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/>
            <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
            <Reference URI="">
                <Transforms>
                    <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
                </Transforms>
                <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
                <DigestValue>Z/G0FYqtbpB6Wof2CQkuIoDOAVs=</DigestValue>
            </Reference>
        </SignedInfo>
        <SignatureValue>gJg8hHotw6fvuaPErg68rTH/OVnVYmohrfsYfwIW0vVhCLmDuTowEmgdnJWYzcKn2lttReQoV8cJ
            KX8uvTgrasmrHYZ3zuq9BH70yh0P7fZjb4gZRv0ptxtWFBgBuF4gkp7u4f5SYG4mckiN6+pBic4H
            asvbrfvTrXJSmy3/oBE=</SignatureValue>
        <KeyInfo>
            <KeyValue>
                <RSAKeyValue>
                    <Modulus>tPr8PUX9Cf5o2j25o1g1Tb/W6MiCDED9C0LlP9k/hK9uJkUL3fbMEfMDjtRa83+AfnYHMTG81tNp
                        h9+aLOeKNobDKG3KCYxEXqvfGva0a9OBLi8lULzVdqit+hBfCEpwKCSZNshu2AXA7KFw58CWTzth
                        +2A8f7z5GcgdTgxJu1E=</Modulus>
                    <Exponent>Aw==</Exponent>
                </RSAKeyValue>
            </KeyValue>
            <X509Data>
                <X509Certificate>MIICcDCCAdmgAwIBAgIGAUTPAVTCMA0GCSqGSIb3DQEBBQUAMG8xCzAJBgNVBAYTAkxWMRYwFAYD
                    VQQKEw1SaWV0dW11IEJhbmthMR4wHAYDVQQLExVDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxKDAmBgNV
                    BAMTHyh0ZXN0KSBSQiBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMTQwMzE3MDc0NjE0WhcNMTYw
                    MzA2MDc0NjE0WjBDMQ8wDQYDVQQDDAY0MjM2NzMxIzAhBgNVBAsMGkRpZ2l0YWwgSWRlbnRpZmll
                    ciBDbGFzcyAyMQswCQYDVQQGEwJMVjCBnTANBgkqhkiG9w0BAQEFAAOBiwAwgYcCgYEAtPr8PUX9
                    Cf5o2j25o1g1Tb/W6MiCDED9C0LlP9k/hK9uJkUL3fbMEfMDjtRa83+AfnYHMTG81tNph9+aLOeK
                    NobDKG3KCYxEXqvfGva0a9OBLi8lULzVdqit+hBfCEpwKCSZNshu2AXA7KFw58CWTzth+2A8f7z5
                    GcgdTgxJu1ECAQOjRTBDMAsGA1UdDwQEAwIB/jA0BgNVHSUBAf8EKjAoBggrBgEFBQcDAQYIKwYB
                    BQUHAwIGCCsGAQUFBwMJBggrBgEFBQcDBDANBgkqhkiG9w0BAQUFAAOBgQADBNN0K6wYm9G09yII
                    cPl8APAkbGPTm3eCUy50kkD9DnNwJilGY5Pdm1aqKQZ5GmbP+P4k6d6XKjB9TJSiBxzRLBurULes
                    LPaVxqWDp54gT7FFRr8Gz0CiaKdTr2xrzO+sCaMs3PzZ48WPrBZeYSedwPr7Gu3JjzxCD3dTq/BM
                    Ng==</X509Certificate>
            </X509Data>
        </KeyInfo>
    </Signature>
</RBdocument>

Sekmīga JSON atbilde:

{
    "code": 0,
    "error": "",
    "refNo": " HVEE07099900003",
    "error_code": "IERR_OK",
    "error_message": "",
    "error_field": "",
    "error_level": 0
}

Sekmīga JSON atbilde ar maksājuma izpildes kļūdām:

{
    "code": 0,
    "error": "",
    "refNo": " HVEE07099900004",
    "error_code": "IERR_SIG_BAD",
    "error_message": "Invalid signature",
    "execute_message": "",
    "error_field": "",
    "error_level": 4,
    "errors": [
        {
            "error_code": "IERR_SIG_BAD",
            "error_message": "Invalid signature",
            "execute_message": "",
            "error_field": "",
            "error_level": 4
        }
    ]
}
Parametrs Apraksts
function* PostSignedDocument
ticket* elektroniska caurlaide, ko piešķir, pieslēdzot kontu pakalpojumam sistēmā „iRietumu”, piemēram, ticket=JGFIGDMG5965SF44557548958345975934.
language valoda, kurā sniedzami ziņojumi par kļūdām. Pieejamie varianti: RU, EN, LV
refNo* dokumenta references numurs
doc* parakstītā dokumenta teksts XML formātā

* obligātie parametri

ISO 20022

AS Rietumu Banka atbalsta ISO 20022 XML standarta dokumentu pieņemšanu caur Enterprise Link Pro sistēmu.

Darbam ar ISO 20022 XML standarta dokumentiem izmantojamas sekojošās funkcijas:

Funkcija „Maksājumu ierosināšanas ziņojums”

Maksājumu ierosināšanas ziņojuma ISO 20022 XML pain.001.001.03 formāta nosūtīšanai no klienta Bankā tiek izmantota funkcija PostISO20022.

Pirms dokumenta izsūtīšanas tas jāparaksta pēc standarta XMLDSig (XML Digital Signature), metode „Enveloped”. Jāparaksta tikai maksājuma uzdevuma sekcija, kas ietverta XML tagos un XAdES.

Pieprasījuma parametri

Piemērs kods:

curl -d "function=PostISO20022&rid=123456&ticket=JGFIGDMG5965SF44557548958345975934&resultFormat=XML&doc=<XML content>" -E ./cert.pem:qwerty https://<domain>/elinkpro/Process
<?php
$response = process_enterprise_link_pro( array(
    "function" => "PostISO20022",
    "rid" => "123456",
    "ticket" => "JGFIGDMG5965SF44557548958345975934",
    "resultFormat" => "XML",
    "doc" => "<XML content>"
), "./cert.pem", "qwerty" );
?>
EnterpriseLinkPro enterpriseLinkPro = new EnterpriseLinkPro("./cert.p12", "qwerty");

List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("function", "PostISO20022"));
params.add(new BasicNameValuePair("rid", "123456"));
params.add(new BasicNameValuePair("ticket", "JGFIGDMG5965SF44557548958345975934"));
params.add(new BasicNameValuePair("resultFormat", "XML"));
params.add(new BasicNameValuePair("doc", "<XML content>"));

String result = enterpriseLinkPro.process(params);
$response = process_enterprise_link_pro( [
    function => "PostISO20022",
    rid => "123456",
    ticket => "JGFIGDMG5965SF44557548958345975934",
    resultFormat => "XML",
    doc => "<XML content>"
], './cert.pem', 'qwerty' );
var enterpriseLinkPro = new EnterpriseLinkPro("./cert.p12", "qwerty");

var result = await enterpriseLinkPro.Process(new Dictionary<string, string>
    {
       { "function", "PostISO20022" },
       { "rid", "123456" },
       { "ticket", "JGFIGDMG5965SF44557548958345975934" },
       { "resultFormat", "XML" },
       { "doc", "<XML content>" }
    }
);

Piemērs:

<Document>
    <CstmrPmtStsRpt>
        <GrpHdr>
            <MsgId>1459416333517</MsgId>
            <CreDtTm>2016-01-31T12:25:33</CreDtTm>
            <InitgPty>
                <Id>
                    <OrgId>
                        <BICOrBEI>RTMBLV2X</BICOrBEI>
                    </OrgId>
                </Id>
            </InitgPty>
        </GrpHdr>
        <OrgnlGrpInfAndSts>
            <OrgnlMsgId>000000UniqMessageId-000012345678989</OrgnlMsgId>
            <OrgnlMsgNmId>pain.001.001.03</OrgnlMsgNmId>
            <OrgnlCreDtTm>2016-03-22T10:03:35</OrgnlCreDtTm>
            <GrpSts>ACSP</GrpSts>
            <StsRsnInf>
                <Rsn>
                    <Cd>NARR</Cd>
                </Rsn>
                <AddtlInf>Accepted for execution. RefNo : XIEG01319900188</AddtlInf>
            </StsRsnInf>
        </OrgnlGrpInfAndSts>
    </CstmrPmtStsRpt>
</Document>
Parametrs Apraksts
function* PostISO20022
rid* Rietumu ID numurs
ticket* Elektroniska caurlaide, ko piešķir, pieslēdzot kontu pakalpojumam sistēmā „iRietumu”, piemēram, ticket=JGFIGDMG5965SF44557548958345975934
resultFormat* XML
doc* Parakstītā dokumenta teksts XML formātā. Parakstam jābūt pēc standarta XMLDSig (XML Digital Signature), metode „Enveloped”.

* obligātie parametri

Atbilde tiek sniegta Maksājumu statusa atbildes ziņojuma ISO 20022 XML pain.002.001.03 formātā par maksājumu uzdevumu pakas pieņemšanu tālakai apstrādei kopumā.

Funkcija „Maksājumu statusa atbildes ziņojums”

Maksājumu statusa atbildes ziņojuma ISO 20022 XML pain.002.001.03 formātā saņemšanai no Bankas klientam tiek izmantota funkcija ISO20022Status.

Pieprasījuma parametri

Piemērs kods:

curl -d "function=ISO20022Status&rid=123456&ticket=JGFIGDMG5965SF44557548958345975934&resultFormat=XML&msgId=1234566333517" -E ./cert.pem:qwerty https://<domain>/elinkpro/Process
<?php
$response = process_enterprise_link_pro( array(
    "function" => "ISO20022Status",
    "rid" => "123456",
    "ticket" => "JGFIGDMG5965SF44557548958345975934",
    "resultFormat" => "XML",
    "msgId" => "1234566333517"
), "./cert.pem", "qwerty" );
?>
EnterpriseLinkPro enterpriseLinkPro = new EnterpriseLinkPro("./cert.p12", "qwerty");

List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("function", "ISO20022Status"));
params.add(new BasicNameValuePair("rid", "123456"));
params.add(new BasicNameValuePair("ticket", "JGFIGDMG5965SF44557548958345975934"));
params.add(new BasicNameValuePair("resultFormat", "XML"));
params.add(new BasicNameValuePair("msgId", "1234566333517"));

String result = enterpriseLinkPro.process(params);
$response = process_enterprise_link_pro( [
    function => "ISO20022Status",
    rid => "123456",
    ticket => "JGFIGDMG5965SF44557548958345975934",
    resultFormat => "XML",
    msgId => "1234566333517"
], './cert.pem', 'qwerty' );
var enterpriseLinkPro = new EnterpriseLinkPro("./cert.p12", "qwerty");

var result = await enterpriseLinkPro.Process(new Dictionary<string, string>
    {
       { "function", "ISO20022Status" },
       { "rid", "123456" },
       { "ticket", "JGFIGDMG5965SF44557548958345975934" },
       { "resultFormat", "XML" },
       { "msgId", "1234566333517" }
    }
);
Parametrs Apraksts
function* ISO20022Status
rid* Rietumu ID numurs
ticket* Elektroniska caurlaide, ko piešķir, pieslēdzot kontu pakalpojumam sistēmā „iRietumu”, piemēram, ticket=JGFIGDMG5965SF44557548958345975934
resultFormat* XML
msgId* Pieprasītā maksājuma uzdevuma faila identifikators no oriģinālā maksājumu ierosināšanas ziņojuma (pain.001.001.03), par kuru tiek pieprasīts statuss.

* obligātie parametri

Funkcija „Dokumenta saņemšana parakstīšanai”

Dokumenta saņemšana parakstīšanai vairāklīmeņu paraksta shēmas izmantošanas gadījumā tiek izmantota funkcija GetISO20022ForSign.

Pieprasījuma parametri

Piemērs kods:

curl -d "function=GetISO20022ForSign&rid=123456&ticket=JGFIGDMG5965SF44557548958345975934&resultFormat=XML&msgId=1234566333517" -E ./cert.pem:qwerty https://<domain>/elinkpro/Process
<?php
$response = process_enterprise_link_pro( array(
    "function" => "GetISO20022ForSign",
    "rid" => "123456",
    "ticket" => "JGFIGDMG5965SF44557548958345975934",
    "resultFormat" => "XML",
    "msgId" => "1234566333517"
), "./cert.pem", "qwerty" );
?>
EnterpriseLinkPro enterpriseLinkPro = new EnterpriseLinkPro("./cert.p12", "qwerty");

List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("function", "GetISO20022ForSign"));
params.add(new BasicNameValuePair("rid", "123456"));
params.add(new BasicNameValuePair("ticket", "JGFIGDMG5965SF44557548958345975934"));
params.add(new BasicNameValuePair("resultFormat", "XML"));
params.add(new BasicNameValuePair("msgId", "1234566333517"));

String result = enterpriseLinkPro.process(params);
$response = process_enterprise_link_pro( [
    function => "GetISO20022ForSign",
    rid => "123456",
    ticket => "JGFIGDMG5965SF44557548958345975934",
    resultFormat => "XML",
    msgId => "1234566333517"
], './cert.pem', 'qwerty' );
var enterpriseLinkPro = new EnterpriseLinkPro("./cert.p12", "qwerty");

var result = await enterpriseLinkPro.Process(new Dictionary<string, string>
    {
       { "function", "GetISO20022ForSign" },
       { "rid", "123456" },
       { "ticket", "JGFIGDMG5965SF44557548958345975934" },
       { "resultFormat", "XML" },
       { "msgId", "1234566333517" }
    }
);
Parametrs Apraksts
function* GetISO20022ForSign
rid* Rietumu ID numurs
ticket* Elektroniska caurlaide, ko piešķir, pieslēdzot kontu pakalpojumam sistēmā „iRietumu”, piemēram, ticket=JGFIGDMG5965SF44557548958345975934
resultFormat* XML
msgId* Pieprasītā maksājuma uzdevuma faila identifikators no oriģinālā maksājumu ierosināšanas ziņojuma (pain.001.001.03), par kuru tiek pieprasīts statuss.

* obligātie parametri

ISO 20022 XML formāta dokumentu noformēšana

Maksājumu ierosināšanas ziņojums pain.001.001.03

Vispārējās prasības

Dotu dokumentu jāizmanto kopā ar formāta aprakstu ISO 20022 Message Definition Report, jo dotais dokuments satur informāciju tikai par tiem ziņojumu elementiem, kas tiek izmantotas Bankā. Ja ziņojumi satur šajā dokumentā neaprakstītus elementus, tie tiks ignorēti.

Kodējums

AS Rietumu Banka atbalsta “UTF-8 without BOM kodējumu”.

Maksājuma ierosināšanas ziņojumu satura apraksts

Ziņojums satur divus obligātos blokus: Galvene (Header) un Maksājumu informācija (Payment Information).

Galvene (Header): Šis bloks tiek norādīts tikai vienu reizi un satur faila identificējošus elementus – maksājuma identifikators, ziņojuma izveides datums un laiks, maksājuma iniciējošā puse (pārstāvis).

Maksājumu informācija (Payment Information): Failā var būt norādīts viens (vai vairāki) maksājumu bloki. Katrs šāds bloks satur elementus, pēc kuriem tiek identificēts maksātājs (Debitors)- Debitors, Debitora konts, Maksājuma tips, maksājuma izpildes datums. Tāpat šajā blokā ir informācija par maksājumiem (Credit Transfers), kas satur informāciju par maksājuma saņemēju, saņēmēja banku, pārskaitījuma summu un maksājuma informāciju.

Zemāk parādītajā tabula aprakstīti ziņojumos izmantotie lauki sekojošā formātā:

ISO Index No. Or. Mult. Ziņojuma elements <XML tags> ISO Tips Komentāri par laukā ievadāmo informāciju
[1..1] + Message root

ISO Index No. – Ziņojuma elementa numurs. Numurs atbilst ISO 20022 XML Ziņojumu aprakstam, kurš ir atrodams vietnē www.iso20022.org zem “Catalogue of ISO 20022 messages” ar atsauci “pain.001.001.03”.

Or. – Norāda uz izvēlni. Ziņojumā var tikt iekļauts viens vai otrs elements.

Mult. – Norāda uz elementa izmantošanas obligātumu un šī elementa parādīšanās biežumu. Iespējamās vērtības un to nozīme:

Ziņojuma elements – Elementa nosaukums atbilstoši ISO 20022 XML.

XML tags – Atbilstošā elementa XML tags ziņojumā.

ISO Tips – XML tagā ievadītās informācijas apraksts.

Komentāri par laukā ievadāmo informāciju – Papildu komentāri par lauka aizpildīšanu.

Ziņojuma elementi

ISO Index No. Or. Mult. Ziņojuma elements <XML tags> ISO Tips Komentāri par laukā ievadāmo informāciju
Customer Credit Transfer Initiation <CstmrCdtTrfInitn>
1.0 [1..1] +GroupHeader <GrpHdr> Component
1.1 [1..1] ++MessageIdentification <MsgId> Max35Text Unikāls ziņojuma identifikators, ko piešķir ziņojuma radītājs. Pirmām 6 zīmes jāsakrīt ar Rietumu ID numuru.
1.2 [1..1] ++CreationDateTime <CreDtTm> ISODateTime (GGGG-MM-DDThh:mm:ss, piemēram: 2015-11-21T09:15:39).
1.6 [1..1] ++NumberOfTransactions <NbOfTxs> Max15NumericText Kopējais maksājumu skaits failā.
1.7 [0..1] ++ControlSum <CtrlSum> Decimal Number Kopējā maksājumu summa (neatkarīgi no valūtas). Piemērs 100EUR; 60USD; 50GBP- lauka vērtība 210.
1.8 + [1..1] ++Initiating Party <InitgPty> Party Identification Component Informācija par maksājumu iniciētāju - klienta pārstāvi. Tiek pieņemts, bet netiek izmantots.
9.1.0 [0..1] +++Name <Nm> Max140Text
9.1.12 [0..1] +++Identification <Id> Component
9.1.13 {Or [1..1] ++++OrganisationIdentification <OrgId> Component Organizācijas Identifikators.
9.1.14 [0..1] +++++BICOrBEI <BICOrBEI> Identifier
9.1.15 [0..n] +++++Other <Othr> Component
9.1.16 [1..1] ++++++Identification <Id> Max35Text
9.1.17 [0..1] ++++++SchemeName <SchmeNm> Choice Component
9.1.18 [1..1] +++++++Code <Cd> Code Ja tiek norādīts nodokļa maksātāja kods - TXID.
9.1.21 Or} [1..1] ++++PrivateIdentification <PrvtId> Component Privātpersonas identifikators.
9.1.27 [0..n] +++++Other <Othr> Component
9.1.28 [1..1] ++++++Identification <Id> Max35Text Privātpersonas personas kods.
9.1.29 [0..1] ++++++SchemeName <SchmeNm> Choice Component
9.1.30 [1..1] +++++++Code <Cd> Code Ja tiek norādīts personas kods - NIDN.
2.0 [1..n] +PaymentInformation <PmtInf> Component Maksājumu informācijas bloks.
2.1 [1..1] ++PaymentInformation Identification <PmtInfId> Max35Text Unikāls maksājuma bloka identifikators (piešķir maksājumu iniciators).
2.2 [1..1] ++PaymentMethod <PmtMtd> Code Tiek pieņemts tikai kods TRF.
2.4 [0..1] ++NumberOfTransactions <NbOfTxs> Max15NumericText Maksājumu skaits konkrētā <PmtInf> sadāļā.
2.5 [0..1] ++ControlSum <CtrlSum> Decimal Number Maksājumu kopsumma konkrētā <PmtInf> sadaļā, neatkarīgi no valūtas.
2.6 [0..1] ++PaymentTypeInformation <PmtTpInf> Component Elementu kopums kas norāda maksājuma tipu/prioritāti.
2.11 [0..1] +++LocalInstrument <LclInstrm> Choice Component
2.12 {Or [1..1] ++++Code <Cd> Code Maksājuma izpildes ātrums visiem maksājuma uzdevumiem dotajā blokā. SDCL - Ekspress, jebkura cita vērtība - Standarta. Ja šī informācija aizpildīta arī zemākā līmenī, lauks tiek ignorēts.
2.13 Or} [1..1] ++++Proprietary <Prtry> Max35Text Maksājuma prioritāte: NORM - Ekonomiskais; HIGH - Standarta; EXPR - Ekspress. Ja šī informācija aizpildīta arī zemākā līmenī (lauks 2.38), lauks tiek ignorēts.
2.17 [1..1] ++RequestedExecutionDate <ReqdExctnDt> ISODate Datums, kad maksājumi tiks nosūtīti izpildei. Ne tālāk kā 30 dienas nākotnē. Pagātnes datumi netiek pieņemti.
2.19 + [1..1] ++Debtor <Dbtr> Party Identification Component Dati par maksātāju. Maksātājs tiek identificēts pēc maksātāja konta numura (lauks. 2.20).
9.1.0 [0..1] +++Name <Nm> Max140Text Tiek pieņemts, bet netiek izmantots. Tiks izmantota informācija no Rietumu Bankas datu bāzes par klientu, balstoties uz maksātāja konta numura.
9.1.1 [0..1] +++PostalAddress <PstlAdr> Component Tiek pieņemts, bet netiek izmantots.
9.1.10 [0..1] ++++Country <Ctry> CountryCode Tiek pieņemts, bet netiek izmantots.
9.1.11 [0..7] ++++AdressLine <AdrLine> Max70Text Tiek pieņemts, bet netiek izmantots.
9.1.12 [0..1] +++Identification <Id> Choice Component Tiek pieņemts, bet netiek izmantots.
9.1.13 {Or [1..1] ++++OrganisationIdentification <OrgId> Component Tiek pieņemts, bet netiek izmantots. Tiks izmantota informācija no Rietumu Bankas datu bāzes par klientu, balstoties uz maksātāja konta numura (lauks. 2.20).
9.1.14 [0..1] +++++BICOrBEI <BICOrBEI> Identifier
9.1.15 [0..n] +++++Other <Othr> Component
9.1.16 [1..1] ++++++Identification <Id> Max35Text
9.1.17 [0..1] ++++++SchemeName <SchmeNm> Choice Component
9.1.18 [1..1] +++++++Code <Cd> Code
9.1.21 Or} [1..1] ++++PrivateIdentification <PrvtId> Component Tiek pieņemts, bet netiek izmantots. Tiks izmantota informācija no Rietumu Bankas datu bāzes par klientu, balstoties uz maksātāja konta numura (lauks. 2.20).
9.1.22 [0..1] +++++DateAndPlaceOfBirth <DtAndPlcOfBirth> Component
9.1.23 [1..1] ++++++BirthDate <BirthDt> ISODate
9.1.25 [1..1] ++++++CityOfBirth <CityOfBirth> Max35Text
9.1.26 [1..1] ++++++CountryOfBirth <CtryOfBirth> CountryCode
9.1.27 [0..n] +++++Other <Othr> Component
9.1.28 [1..1] ++++++Identification <Id> Max35Text
9.1.29 [0..1] ++++++SchemeName <SchmeNm> Choice Component
9.1.30 [1..1] +++++++Code <Cd> Code
2.20 + [1..1] ++DebtorAccount <DbtrAcct> Component Informācija par Maksātāja kontu, no kura tiks veikti darījumi.
1.1.0 [1..1] +++Identification <Id> Account Identification Component Maksātāja konta identifikators.
1.1.1 [1..1] ++++IBAN <IBAN> IBANIdentifier Konta numurs IBAN formātā. Šajā laukā tiek norādīts konta numurs no kura tiks veikti maksājumi.
1.1.11 [0..1] +++Currency <Ccy> Currency Code Tiek pieņemts, bet netiek izmantots. Maksājuma valūta tiks noteikta pēc katra maksājuma CCY.
2.21 + [1..1] ++DebtorAgent <DbtrAgt> Financial Institution Identification Component
6.1.0 [1..1] +++FinancialInstitutionIdentification <FinInstnId> Component
6.1.1 [0..1] ++++BIC <BIC> BICIdentifier Bankas BIC kods - RTMBLV2X
2.23 + [0..1] ++UltimateDebtor <UltmtDbtr> Party Identification Component Tiek pieņemts, bet netiek izmantots.
9.1.0 [0..1] +++Name <Nm> Max140Text
9.1.1 [0..1] +++PostalAddress <PstlAdr> Component
9.1.10 [0..1] ++++Country <Ctry> CountryCode
9.1.11 [0..7] ++++AdressLine <AdrLine> Max70Text
9.1.12 [0..1] +++Identification <Id> Choice Component
9.1.13 {Or [1..1] ++++OrganisationIdentification <OrgId> Component
9.1.14 [0..1] +++++BICOrBEI <BICOrBEI> Identifier
9.1.15 [0..n] +++++Other <Othr> Component
9.1.16 [1..1] ++++++Identification <Id> Max35Text
9.1.17 [0..1] ++++++SchemeName <SchmeNm> Choice Component
9.1.18 [1..1] +++++++Code <Cd> Code
9.1.21 Or} [1..1] ++++PrivateIdentification <PrvtId> Component
9.1.22 [0..1] +++++DateAndPlaceOfBirth <DtAndPlcOfBirth> Component
9.1.23 [1..1] ++++++BirthDate <BirthDt> ISODate
9.1.25 [1..1] ++++++CityOfBirth <CityOfBirth> Max35Text
9.1.26 [1..1] ++++++CountryOfBirth <CtryOfBirth> CountryCode
9.1.27 [0..n] +++++Other <Othr> Component
9.1.28 [1..1] ++++++Identification <Id> Max35Text
9.1.29 [0..1] ++++++SchemeName <SchmeNm> Choice Component
9.1.30 [1..1] +++++++Code <Cd> Code
9.1.33 [0..1] +++CountryOfResidence <CtryOfRes> CountryCode
2.24 [0..1] ++ChargeBearer <ChrgBr> Code Norāda uz pusi kura sedz ar darījumu saistīto komisijas maksu. Atļauts viens no kodiem: DEBT- komisijas maksā maksātājs; SHAR vai SLEV- komisijas maksā dalīti; CRED- komisijas maksā saņēmējs. Ja lauks netiek aizpildīts, tas tiek uzskatīts kā SHAR. Ja šī informācija aizpildīta arī zemākā līmenī (lauks 2.51), lauks tiek ignorēts.
2.27 [1..n] ++CreditTransferTransactionInformation <CrdtTrfTxInf> Component Katrs <CrdtTrfTxInf> bloks satur informāciju par vienu unikālu maksājuma uzdevumu.
2.28 [1..1] +++PaymentIdentification <PmtId> Component Maksājuma identifikācijas sadaļa.
2.29 [0..1] ++++InstructionIdentification <InstrId> Max35Text Tiek pieņemts, bet netiek izmantots.
2.3 [1..1] ++++End-To-EndIdentification <EndToEndId> Max35Text Unikālais maksajuma numurs. Tiek nodots saņēmēja bankā ja vien tas ir iespejams.
2.31 [0..1] +++PaymentTypeInformation <PmtTpInf> Component Satur informāciju par konkrēta maksājuma prioritāti.
2.33 [0..1] ++++ServiceLevel <SvcLvl> Choice Component Tiek pieņemts, bet netiek izmantots.
2.34 [1..1] +++++Code <Cd> Code
2.36 [0..1] ++++LocalInstrument <LclInstrm> Choice Component
2.38 [1..1] +++++Proprietary <Prtry> Max35Text Maksājuma prioritāte: NORM - Ekonomiskais; HIGH - Standarta; EXPR - Ekspress. Ja šī informācija aizpildīta arī augstākā līmenī (lauks 2.13), tad augstāka līmeņa lauks tiek ignorēts.
2.39 [0..1] ++++CategoryPurpose <CtgyPurp> Choice Component Tiek pieņemts, bet netiek izmantots.
2.4 [1..1] +++++Code <Cd> Code
2.42 [1..1] +++Amount <Amt> Maksajuma summa un valūta.
2.43 [1..1] ++++InstructedAmount <InstdAmt Ccy=“AAA”> Amount Darījuma summa un valūta. Piemērs, ja nepieciešams pārskaitīt 1000 EUR: <InstdAmt Ccy=“EUR”>1000</InstdAmt>. Ir obligāti janorāda gan summa, gan valūta.
2.51 [0..1] +++ChargeBearer <ChrgBr> Code Norāda uz pusi kura sedz ar darījumu saistīto komisijas maksu. Atļauts viens no kodiem: DEBT- komisijas maksā maksātājs; SHAR vai SLEV- komisijas maksā dalīti; CRED- komisijas maksā saņēmējs. Ja lauks netiek aizpildīts, tas tiek uzskatīts kā SHAR. (ja vien sugstākā līmenī (lauks 2.24) nav norādīts citādi)
2.70 + [0..1] +++UltimateDebtor <UltmtDbtr> Identification Tiek pieņemts, bet netiek izmantots.
9.1.0 [0..1] ++++Name <Nm> Max140Text
9.1.1 [0..1] ++++PostalAddress <PstlAdr> Component
9.1.10 [0..1] +++++Country <Ctry> CountryCode
9.1.11 [0..7] +++++AdressLine <AdrLine> Max70Text
9.1.12 [0..1] ++++Identification <Id> Choice Component
9.1.13 {Or [1..1] +++++OrganisationIdentification <OrgId> Component
9.1.14 [0..1 ++++++BICOrBEI <BICOrBEI> Identifier
9.1.15 [0..n] ++++++Other <Othr> Component
9.1.16 [1..1] +++++++Identification <Id> Max35Text
9.1.17 [0..1] +++++++SchemeName <SchmeNm> Choice Component
9.1.18 [1..1] ++++++++Code <Cd> Code
9.1.21 Or} [1..1] +++++PrivateIdentification <PrvtId> Component
9.1.22 [0..1] ++++++DateAndPlaceOfBirth <DtAndPlcOfBirth> Component
9.1.23 [1..1] +++++++BirthDate <BirthDt> ISODate
9.1.25 [1..1] ++++++CityOfBirth <CityOfBirth> Max35Text
9.1.26 [1..1] +++++++CountryOfBirth <CtryOfBirth> CountryCode
9.1.27 [0..n] ++++++Other <Othr> Component
9.1.28 [1..1] +++++++Identification <Id> Max35Text
9.1.29 [0..1] +++++++SchemeName <SchmeNm> Choice Component
9.1.30 [1..1] ++++++++Code <Cd> Code
9.1.33 [0..1] ++++CountryOfResidence <CtryOfRes> CountryCode
2.71 + [0..1] +++IntermediaryAgent1 <IntrmyAgt1> Financial Institution Identification Component Saņēmējbankas korespondentbanka.
6.1.0 [1..1] ++++FinancialInstitutionIdentification <FinInstnId> Component
6.1.1 [0..1] +++++BIC <BIC> BICIdentifier Bankas Identifikācijas kods - BIC. Norādīt tikai priekš SWIFT.
6.1.2 [0..1] +++++ClearingSystemMemberIdentification <ClrSysMmbId> Component Klīringa sistēma, kuras identifikators tiek norādīts. Jānorāda, ja norādītais BIC nav SWIFT.
6.1.3 [0..1] ++++++ClearingSystemIdentification <ClrSysId> Choice Component
6.1.4 [1..1] +++++++Code <Cd> Code Klīringa sistēmas identifikators no http://www.iso20022.org/external_code_list.page saraksta ExternalClearingSystemIdentification1Code. Jānorāda, ja norādītais BIC nav SWIFT.
6.1.6 [1..1] ++++++MemberIdentification <MmbId> Max35Text Korespondentbankas identifikators noteiktajā klīringa sistēmā. Jānorāda, ja norādītais BIC nav SWIFT.
6.1.7 [0..1] +++++Name <Nm> Max140Text Korespondentbankas nosaukums.
6.1.8 [0..1] +++++PostalAddress <PstlAdr> Component Korespondentbankas pasta adrese.
6.1.17 [0..1] ++++++Country <Ctry> CountryCode
6.1.18 [0..7] ++++++AdressLine <AdrLine> Max70Text Tiek izmantotas pirmās 140 zīmes, kopā ar bankas nosaukumu.
6.1.25 [0..1] ++++BranchIdentification <BrnchId> Component Tiek pieņemts, bet netiek izmantots.
6.1.26 [0..1] +++++Identification <Id> Max35Text
6.1.27 [0..1] +++++Name <Nm> Max140Text
6.1.28 [0..1] +++++PostalAddress <PstlAdr> Component
6.1.37 [0..1] ++++++Country <Ctry> CountryCode
6.1.38 [0..7] ++++++AdressLine <AdrLine> Max70Text
2.72 + [0..1] +++IntermediaryAgentAccount1 <IntrmyAgt1Acct> Cash Account Component Saņēmējbankas korespondentbankas konta numurs.
1.1.0 [1..1] ++++Identification <Id> Identification
1.1.1 {Or [1..1] +++++IBAN <IBAN> IBANIdentifier Tikai IBAN konta numuram.
1.1.2 Or} [1..1] +++++Other <Othr> Component
1.1.3 [1..1] ++++++Identification <Id> Max34Text
1.1.4 [0..1] ++++++SchemeName <SchmeNm> Choice Component
1.1.5 [1..1] +++++++Code <Cd> Code
2.73 + [0..1] +++IntermediaryAgent2 <IntrmyAgt2> Financial Institution Identification Component Tiek pieņemts, bet netiek izmantots.
2.74 + [0..1] +++IntermediaryAgentAccount2 <IntrmyAgt2Acct> Cash Account Component Tiek pieņemts, bet netiek izmantots.
2.77 + [0..1] +++CreditorAgent <CdtrAgt> Financial Institution Identification Component Saņēmēja banka
6.1.0 [1..1] ++++FinancialInstitutionIdentification <FinInstnId> Component
6.1.1 [0..1] +++++BIC <BIC> BICIdentifier Bankas Identifikācijas kods - BIC. Norādīt tikai priekš SWIFT.
6.1.2 [0..1] +++++ClearingSystemMemberIdentification <ClrSysMmbId> Component Klīringa sistēma, kuras identifikators tiek norādīts. Jānorada, ja norādītais BIC nav SWIFT.
6.1.3 [0..1] ++++++ClearingSystemIdentification <ClrSysId> Choice Component
6.1.4 [1..1] +++++++Code <Cd> Code Klīringa sistēmas identifikators no http://www.iso20022.org/external_code_list.page saraksta ExternalClearingSystemIdentification1Code. Jānorāda, ja norādītais BIC nav SWIFT.
6.1.6 [1..1] ++++++MemberIdentification <MmbId> Max35Text Saņēmējtbankas identifikators noteiktajā klīringa sistēmā.
6.1.7 [0..1] +++++Name <Nm> Max140Text Saņēmēja bankas nosaukums.
6.1.8 [0..1] +++++PostalAddress <PstlAdr> Component Saņēmēja bankas pasta adrese.
6.1.17 [0..1] ++++++Country <Ctry> CountryCode Valsts kods.
6.1.18 [0..7] ++++++AdressLine <AdrLine> Max70Text Tiek izmantotas pirmās 140 zīmes, kopā ar bankas nosaukumu.
2.78 + [0..1] +++CreditorAgentAccount <CdtrAgtAcct> Cash Account Component Saņēmējbankas konta numurs korespondentbankā.
1.1.0 [1..1] ++++Identification <Id> Account Identification Component
1.1.1 {Or [1..1] +++++IBAN <IBAN> IBANIdentifier Tikai IBAN konta numuram.
1.1.2 Or} [1..1] +++++Other <Othr> Component Ja konta numurs nav IBAN formātā.
1.1.3 [1..1] ++++++Identification <Id> Max34Text
2.79 + [0..1] +++Creditor <Cdtr> Party Identification Component Informācijas bloks par maksājuma saņēmēju (Kreditors).
9.1.0 [0..1] ++++Name <Nm> Max140Text Saņēmēja nosaukums/vārds uzvārds. SEPA maksājuma gadījumā lauka garums starpbanku posmā ir ierobežots līdz 70 zīmēm.
9.1.1 [0..1] ++++PostalAddress <PstlAdr> Component Saņēmēja pasta adrese.
9.1.10 [0..1] +++++Country <Ctry> CountryCode
9.1.11 [0..7] +++++AdressLine <AdrLine> Max70Text Tiek izmantotas pirmās 140 zīmes, kopā ar saņēmēja nosaukumu.
9.1.12 [0..1] ++++Identification <Id> Choice Component
9.1.13 {Or [1..1] +++++OrganisationIdentification <OrgId> Component Uzņēmuma identifikators.
9.1.14 [0..1] ++++++BICOrBEI <BICOrBEI> Identifier
9.1.15 [0..n] +++++++Other <Othr> Component
9.1.16 [1..1] ++++++++Identification <Id> Max35Text Uzņēmuma reģistrācijas numurs vai nodokļu maksātāja numurs.
9.1.17 [0..1] ++++++++SchemeName <SchmeNm> Choice Component
9.1.18 {Or [1..1] +++++++++Code <Cd> Code Ja tiek norādīts nodokļa maksātāja kods - TXID.
9.1.19 Or} [1..1] +++++++++Proprietary <Prtry> Max35Text
9.1.20 [0..1] ++++++++Issuer <Issr> Max35Text
9.1.21 Or} [1..1] ++++++PrivateIdentification <PrvtId> Component Privātpersonas Identifikators.
9.1.22 [0..1] +++++++DateAndPlaceOfBirth <DtAndPlcOfBirth> Component
9.1.23 [1..1] ++++++++BirthDate <BirthDt> ISODate
9.1.25 [1..1] ++++++++CityOfBirth <CityOfBirth> Max35Text
9.1.26 [1..1] ++++++++CountryOfBirth <CtryOfBirth> CountryCode Valsts kods.
9.1.27 [0..n] ++++++Other <Othr> Component
9.1.28 [1..1] +++++++Identification <Id> Max35Text Ja tiek norādīts personas kods - NIDN.
9.1.29 [0..1] +++++++SchemeName <SchmeNm> Choice Component
9.1.30 {Or [1..1] ++++++++Code <Cd> Code
9.1.31 Or} [1..1] ++++++++Proprietary <Prtry> Max35Text
9.1.32 [0..1] +++++++Issuer <Issr> Max35Text
9.1.33 [0..1] ++++CountryOfResidence <CtryOfRes> CountryCode Valsts kods.
2.80 + [0..1] +++CreditorAccount <CdtrAcct> Cash Account Component Informācija par maksājuma saņēmēja konta numuru (kreditējamais konts. OBLIGĀTI aizpildāms lauks.
1.1.0 [1..1] ++++Identification <Id> Account Identification Component
1.1.1 {Or [1..1] +++++IBAN <IBAN> IBANIdentifier Kreditējamais konts IBAN formātā. Obligāts maksājumiem Latvijā un SEPA maksājumiem.
1.1.2 Or} [1..1] +++++Other <Othr> Component
1.1.3 [1..1] ++++++Identification <Id> Max34Text Saņēmēja konts ne-IBAN formātā.
2.81 + [0..1] +++UltimateCreditor <UltmCdtr> Party Identification Component Tiek pieņemts, bet netiek izmantots.
9.1.0 [0..1] ++++Name <Nm> Max140Text
9.1.12 [0..1] ++++Identification <Id> Choice Component
9.1.13 {Or [1..1] +++++OrganisationIdentification <OrgId> Component
9.1.14 [0..1] ++++++BICOrBEI <BICOrBEI> Identifier
9.1.15 [0..n] +++++++Other <Othr> Component
9.1.16 [1..1] ++++++++Identification <Id> Max35Text
9.1.17 [0..1] ++++++++SchemeName <SchmeNm> Choice Component
9.1.18 [1..1] +++++++++Code <Cd> Code
9.1.21 Or} [1..1] ++++++PrivateIdentification <PrvtId> Component Privātpersonas identifikators.
9.1.22 [0..1] +++++++DateAndPlaceOfBirth <DtAndPlcOfBirth> Component
9.1.23 [1..1] ++++++++BirthDate <BirthDt> ISODate
9.1.25 [1..1] +++++++CityOfBirth <CityOfBirth> Max35Text
9.1.26 [1..1] ++++++++CountryOfBirth <CtryOfBirth> CountryCode
9.1.27 [0..n] ++++++Other <Othr> Component
9.1.28 [1..1] +++++++Identification <Id> Max35Text
9.1.29 [0..1] +++++++SchemeName <SchmeNm> Choice Component
9.1.33 [0..1] ++++CountryOfResidence <CtryOfRes> CountryCode
2.86 [0..1] +++Purpose <Purp> Choice Component
2.87 [1..1] ++++Code <Cd> ExternalPurposeCode
2.89 [0..10] +++RegulatoryReporting <RgltryRptg> Component Tiek izmantots AMK kodu ievadei, rubļu maksājumiem VO kodiem.
11.1.1 [0..1] ++++Authority <Authrty> Component
11.1.3 [0..1] +++++Country <Ctry> CountryCode Valsts kods (AMK gadījuma LV, Krievijas rubļu gadījumā RU).
11.1.4 [0..n] ++++Details <Dtls> Component
11.1.5 [0..1] +++++Type <Tp> Max35Text AMK - Ārējo maksājumu klasifikatora kods Latvijas gadījumā. VO - Valūtas operāciju kods Krievijas gadījumā.
11.1.7 [0..1] +++++Country <Ctry> CountryCode
11.1.8 [0..1] +++++Code <Cd> Code Precīzs informācijas/atskaites kods. AMK - 3 zīmes, VO - 5 zīmes utml.
11.1.10 [0..1] +++++Information <Inf> Max35Text
2.98 [0..1] +++RemittanceInformation <RmtInf> Component Maksājuma detaļas/mērķis.
2.99 {Or [0..1] ++++Unstructured <Ustrd> Max140Text Informācija saņēmējam (Maksājuma detaļas/mērķis) brīvā formā max 140 simboli. Nav atļauts aizpildīt vienlaicīgi ar strukturēto informāciju saņēmējam (Lauks 2.100). Elementu atļauts lietot tikai vienu reizi katrā maksājumā.
2.1 Or} [0..1] ++++Structured <Strd> Component Informācija saņēmējam (Maksājuma detaļas/mērķis) Strukturētā formātā. Nav atļauts aizpildīt vienlaicīgi ar nestrukutŗēto informāciju saņēmējam (Lauks 2.99). Elementu atļauts lietot tikai vienu reizi katrā maksājumā. Kopējais komponentē atspoguļotās informācijas garums nedrīkst pārsniegt 140 zīmes.
2.12 [0..1] +++++CreditorReferenceInformation <CdtrRefInf> Component
2.121 [0..1] ++++++Type <Tp> Component Kreditora noteiktās references tips.
2.122 [1..1] +++++++CodeOrProprietary <CdOrPrtry> Component
2.123 [1..1] ++++++++Code <Cd> Code
2.125 [0..1] ++++++++Issuer <Issuer> Max35Text Maksājuma references izsniedzējs.
2.126 [0..1] ++++++Reference <Ref> Max35Text Maksājuma references numurs.

Specifiskas informācijas ievadīšana

AMK koda norādīšana

XML paraugs:

<RgltryRptg>
    <Authrty>
        <Ctry>LV</Ctry>
    </Authrty>
    <Dtls>
        <Tp>AMK</Tp>
        <Cd>111</Cd>
    </Dtls>
</RgltryRptg>

Lai maksājumā norādītu AMK kodu, nepieciešams aizpildīt sadaļu „RegulatoryReporting” (lauks 2.89) ar sekojošu informāciju:

ISO Index No. Mult. Ziņojuma elements <XML tags> ISO Tips Komentāri par laukā ievadāmo informāciju
2.89 [0..10] +++RegulatoryReporting <RgltryRptg> Component
11.1.1 [0..1] ++++Authority <Authrty> Component
11.1.3 [0..1] +++++Country <Ctry> CountryCode Valsts kods - LV.
11.1.4 [0..n] ++++Details <Dtls> Component
11.1.5 [0..1] +++++Type <Tp> Max35Text Koda tips - AMK.
11.1.8 [0..1] +++++Code <Cd> Code Precīzs darījuma kods Piemēram: 111 - preču eksports imports.

Rubļu maksājums uz Krieviju

Lai norādītu korekti maksājuma izpildei nepieciešamo informāciju, jāaizpilda zemāk minētās sadaļas:

Saņēmēja bankas kods – BIK

ISO Index No. Mult. Ziņojuma elements <XML tags> ISO Tips Komentāri par laukā ievadāmo informāciju
2.77 + [0..1] +++CreditorAgent <CdtrAgt> Financial Institution Identification Component Saņēmēja banka.
6.1.0 [1..1] ++++FinancialInstitutionIdentification <FinInstnId> Component Finanšu institūcijas identifikācijas sadaļa.
6.1.2 [0..1] +++++ClearingSystemMemberIdentification <ClrSysMmbId> Component
6.1.3 [0..1] ++++++ClearingSystemIdentification <ClrSysId> Choice Component Klīringa sistēmas identifikators.
6.1.4 [1..1] +++++++Code <Cd> Code Konstants kods - RUCBC.
6.1.6 [1..1] ++++++MemberIdentification <MmbId> Max35Text Saņēmēja bankas BIK koda vērtība.

*Šajā sadaļā tiek norādīts arī saņēmēja bankas nosaukums un adrese.

Saņēmēja bankas korespondējošais konts

ISO Index No. Mult. Ziņojuma elements <XML tags> ISO Tips Komentāri par laukā ievadāmo informāciju
2.78 + [0..1] +++CreditorAgentAccount <CdtrAgtAcct> Cash Account Component Saņēmējbankas konta numurs korespondentbankā.
1.1.0 [1..1] ++++Identification <Id>
1.1.2 [1..1] +++++Other <Othr>
1.1.3 [1..1] ++++++Identification <Id> Saņēmēj bankas korespondentkonts (konta numurs).

Saņēmēja INN kods

ISO Index No. Mult. Ziņojuma elements <XML tags> ISO Tips Komentāri par laukā ievadāmo informāciju
2.79 + [0..1] +++Creditor <Cdtr> Party Identification Component
9.1.12 [0..1] ++++Identification <Id> Choice Component
9.1.13 [1..1] +++++OrganisationIdentification <OrgId> Component Uzņēmuma identifikators.
9.1.15 [0..n] +++++++Other <Othr> Component
9.1.16 [1..1] ++++++++Identification <Id> Max35Text INN kods (piemēram INN1234567890).
9.1.17 [0..1] ++++++++SchemeName <SchmeNm> Choice Component
9.1.19 [1..1] +++++++++Proprietary <Prtry> Max35Text Koda tips, konstante INN.

Saņēmēja KPP kods

ISO Index No. Mult. Ziņojuma elements <XML tags> ISO Tips Komentāri par laukā ievadāmo informāciju
2.79 + [0..1] +++Creditor <Cdtr> Party Identification Component
9.1.12 [0..1] ++++Identification <Id> Choice Component
9.1.13 [1..1] +++++OrganisationIdentification <OrgId> Component Uzņēmuma identifikators.
9.1.15 [0..n] +++++++Other <Othr> Component
9.1.16 [1..1] ++++++++Identification <Id> Max35Text KPP kods (piemēram KPP987654321).
9.1.17 [0..1] ++++++++SchemeName <SchmeNm> Choice Component
9.1.19 [1..1] +++++++++Proprietary <Prtry> Max35Text Koda tips, konstante KPP.

Valūtas operācijas kods (VO kods)

ISO Index No. Mult. Ziņojuma elements <XML tags> ISO Tips Komentāri par laukā ievadāmo informāciju
2.89 [0..10] +++RegulatoryReporting <RgltryRptg> Component
11.1.1 [0..1] ++++Authority <Authrty> Component Norāda uz informācijas saņēmēju (Piemēram valsts institūcija, kura pieprasa konrēto papildinformāciju par darījumu).
11.1.3 [0..1] +++++Country <Ctry> CountryCode Valsts kods - RU.
11.1.4 [0..n] ++++Details <Dtls> Component Precīza informācija par normatīvo prasību datiem.
11.1.5 [0..1] +++++Type <Tp> Max35Text Koda tips - VO. VO - Valūtas operčiju kods Krievijas gadījumā.
11.1.10 [0..1] +++++Code <Inf> Max35Text Valūtas operācijas kods (5 cipari).

Maksājumu statusa atbildes ziņojums pain.002.001.03

Maksājuma statusa ziņojumu satura apraksts

Ziņojums satur divus obligātos blokus: Galvene (Header) un Informācija par oriģinālo maksājumu uzdevumu failu.

Galvene (Header): Šis bloks tiek norādīts tikai vienu reizi un satur faila identificējošus elementus – Maksājuma Identifikators, ziņojuma izveides datums un laiks , maksājuma iniciējošā puse.

Informācija par oriģinālo maksājumu uzdevumu failu: No klienta saņemta failā var būt norādīts viens (vai vairāki) maksājumu bloki, un klients saņem attiecīgo struktūru maksājuma statuss reporta dokumentam.

Zemāk parādītajā tabula aprakstīti ziņojumos izmantotie lauki sekojošā formātā:

ISO Index No. Or. Mult. Ziņojuma elements <XML tags> ISO Tips Komentāri par laukā ievadāmo informāciju
[1..1] + Message root

ISO Index No. – Ziņojuma elementa numurs. Numurs atbilst ISO 20022 XML Ziņojumu aprakstam, kurš ir atrodams vietnē www.iso20022.org zem “Catalogue of ISO 20022 messages” ar atsauci “pain.001.001.03”.

Or. – Norāda uz izvēlni. Ziņojumā var tikt iekļauts viens vai otrs elements.

Mult. – Norāda uz elementa izmantošanas obligātumu un šī elementa parādīšanās biežumu. Iespējamās vērtības un to nozīme:

Ziņojuma elements – Elementa nosaukums atbilstoši ISO 20022 XML.

XML tags – Atbilstošā elementa XML tags ziņojumā.

ISO Tips – XML tagā ievadītās informācijas apraksts.

Komentāri par laukā ievadāmo informāciju – Papildu komentāri par lauka aizpildīšanu.

Ziņojuma elementi

ISO Index No. Mult. Ziņojuma elements <XML tags> ISO Tips Komentāri par laukā ievadāmo informāciju
0.0 [1..1] CustomerPaymentStatusReport <CstmrPmtStsRpt>
1.0 [1..1] +GroupHeader <GrpHdr> Component Ziņojuma informācija.
1.1 [1..1] ++MessageIdentification <MsgId> Max35Text Unikāls ziņojuma identifikators, ko piešķir ziņojuma radītājs.
1.2 [1..1] ++CreationDateTime <CreDtTm> ISODateTime Laiks un datums, kad ziņojums izveidots (GGGG-MMDDThh:mm:ss Piemēram: 2012-11-21T09:10:49).
1.3 [1..1] ++InitiatingParty <InitgPty> Component Finanšu institūcija kurai pieder debetējamais konts (Banka kura veiks maksājumu).
9.1.12 [1..1] +++Identification <Id> Component
9.1.13 [1..1] ++++OrganisationIdentification <OrgId> Component
9.1.14 [1..1] +++++BICOrBEI <BICOrBEI> Identifier Bankas BIC kods.
2 [1..1] +OriginalGroupInformationAndStatus <OrgnlGrpInfAndSts> Component Informācija par maksājuma iniciēšanas ziņojumu.
2.1 [1..1] ++OriginalMessageIdentification <OrgnlMsgId> Max35Text Maksājuma uzdevuma ziņojuma identifikātors no attiecīgā pain.001.001 faila.
2.2 [1..1] ++OriginalMessageNameIdentification <OrgnlMsgNmId> Max35Text Maksājuma uzdevuma ziņojuma shēmas identifikātors - pain.001.001.03.
2.6 [0..1] ++GroupStatus <GrpSts> TransactionGroupStatus3Code Statuss uz visām transakcijam. AS Rietumu Banka izmanto sekojošus kodus: RJCT - ja visa maksajumu paka tika atcelta. PDNG - apstrādē. PART - kaut 1 maksājuma apstrāde no pakas nav pabeigta. ACSC - visu maksājumu apstrāde pabeigta.
2.7 [0..n] ++StatusReasonInformation <StsRsnInf> Component
2.9 [0..1] +++Reason <Rsn> Component
2.10 [1..1] ++++Code <Cd> ExternalStatusReason1Code
2.12 [0..n] +++AdditionalInformation <AddtlInf> Max105Text Tekstuāla informācija par izpildes statusu.
3.0 [0..n] +OriginalPaymentInformationAndStatus <OrgnlPmtInfAndSts> Component Informācija par maksājuma iniciēšanas paciņu.
3.1 [1..1] ++OriginalPaymentInformationIdentification <OrgnlPmtInfId> Max35Text Oriģināls maksājuma paciņas identifikātors no (<PmtInfId>).
3.15 [0..n] ++TransactionInformationAndStatus <TxInfAndSts> Component Informācija par maksājuma iniciēšanas transakciju.
3.17 [0..1] +++OriginalInstructionIdentification <OrgnlInstrId> Max35Text Oriģināls transakcijas identifikātors.
3.18 [0..1] +++OriginalEndtoEndIdentification <OrgnlEndToEndId> Max35Text Oriģināls transakcijas end-to-end identifikātors.
3.19 [0..1] +++TransactionStatus <TxSts> TransactionIndividualStatus3Code Transakcijas izpildes statuss. AS Rietumu Banka izmanto sekojošus kodus: RJCT - maksājums atcelts. PDNG - maksājums apstrādē. ACSC - maksājuma apstrāde pabeigta.
3.20 [0..n] +++StatusReasonInformation <StsRsnInf> Component Informācija par transakcijas izpildes statusu.
3.21 [0..1] +++Originator <Orgtr> Component
9.1.12 [0..1] ++++Identification <Id> Component
9.1.13 [1..1] +++++OrganisationIdentification <OrgId> Component
9.1.14 [1..1] ++++++BICorBEI <BICOrBEI> AnyBICIdentifier
3.22 [0..1] ++++Reason <Rsn> Component Transakcijas statusa iemesla kods.
3.23 [1..1] +++++Code <Cd> ExternalStatusReason1Code Statusa kodi pieejami http://www.iso20022.org/External_Code_Lists_and_DSS.page External Code Lists spreadsheet. Ja statusa kods ir NARR, tad informāciju skatīt AddtlInf elementā.
3.25 [0..n] ++++AdditionalInformation <AddtlInf> Max105Text Tekstuāla informācija par transakcijas izpildes statusu un/vai kļūdu ziņojumi.
3.30 [0..1] +++AccountServicerReference <AcctSvcrRef> Max35Text Rietumu Bankas piešķirtais transakcijas references numurs.
3.32 [0..1] +++OriginalTransactionReference <OrgnlTxRef> Component Informācija papildus identificēšanai konkrētai transakcijai.
3.34 [0..1] ++++Amount <Amt> Component
3.35 [1..1] +++++InstructedAmount <InstdAmt Ccy=“AAA”> Amount
3.41 [1..1] ++++RequestedExecutionDate <ReqdExctnDt> DateTime
3.121 [1..1] ++++Debtor <Dbtr> Component
9.1.0 [1..1] +++++Name <Nm> Text
3.122 [1..1] ++++DebtorAccount <DbtrAcct>
1.1.0 [1..1] +++++Identification <Id>
1.1.1 [1..1] ++++++IBAN <IBAN> Identifier
1.1.11 [1..1] +++++Currency <Ccy> Code
3.123 [1..1] ++++DebtorAgent <DbtrAgt>
6.1.0 [1..1] +++++FinancialInstitutionIdentification <FinInstnId>
6.1.1 [1..1] ++++++BIC <BIC> Identifier
3.125 [0..1] ++++CreditorAgent <CdtrAgt>
6.1.0 [1..1] +++++FinancialInstitutionIdentification <FinInstnId>
6.1.1 [1..1] ++++++BIC <BIC> Identifier
6.1.2 [1..1] ++++++ClearingSystemMemberIdentification <ClrSysMmbId>
6.1.3 [0..1] +++++++ClearingSystemIdentification <ClrSysId>
6.1.4 [1..1] ++++++++Code <Cd> Code
6.1.6 [1..1] +++++++MemberIdentification <MmbId> Text
3.127 [1..1] ++++Creditor <Cdtr>
9.1.0 [1..1] +++++Name <Nm> Text
3.128 [1..1] ++++CreditorAccount <CdtrAcct>
1.1.0 [1..1] +++++Identification <Id>
1.1.1 [1..1] ++++++IBAN <IBAN> Identifier
1.1.2 [1..1] ++++++Other <Othr>
1.1.3 [1..1] +++++++Identification <Id> Text