User Tools

Site Tools


uwcfsmoneytransfer

UWCFSMoneyTransfers

API for receipt/payment of MoneyPolo money transfers



Service address

Test web service address (for testing purposes) https://testapi.moneypolo.com:26443/UWCFSMoneyTransfer.asmx

Real web service address https://api.moneypolo.com:26442/UWCFSMoneyTransfer.asmx

Please note, that test and prod keys are different from each other. Working key will be issued by MoneyPolo company at the end of the testing period.



Security

Every transmitted request must be signed by the secret key. Issuance of the key by the company MayzusFS to the Client is performed at the beginning of testing. The key is changed at the transfer to the production version of the service.



Request format

All the requests to the service are sent by standard tools by means of the SOAP webservice.

ATTENTION! Any response of the system may be considered successful only if the object of the response does not contain errors!



Methods

RegisterClient

The method is applied for initial registration of the client in the MoneyPolo money transfer system.

Request parameters:

Name Type Description
PersonRUID Int32 RUID of the client (Remote User ID - unique identificator on the merchant side)
FirstName string Client name
LastName string Client surname
BirthDate date Client date of birth in the format YYYY-MM-DD
CitizenshipCountry string Client citizenship country code
DocumentNumber string Client passport number
DocumentIssueDate date Passport issue date in the format YYYY-MM-DD
DocumentExpireDate date Passport expire date in the format YYYY-MM-DD
DocumentAuthority string Issuing authority
Phone string Client telephone number in the format 00n1…n12
BirthCountry string
BirthCity string
StayCountry string
* OtherName string
ZipCode string
Region string
City string
Address string
ResidentialCountryCode string Country code of client residence (2-chars country code)

Request signature hash structure:

PersonRUID + FirstName + LastName + BirthDate 
+ CitizenshipCountry + DocumentNumber + 
+ DocumentIssueDate + DocumentExpireDate + DocumentAuthority + 
+ Phone + BirthCountry + BirthCity + StayCountry + OtherName 
+ ZipCode + Region + City + Address + ResidentialCountryCode  + *key

Response parameters:

Name Type Description
UserID int Unique identifier of the client in the transfer system MoneyPolo
Approved int Toggle 0/1, if the client documents were checked or not. Only after check of the documents the client may send / receive the transfers.


SaveClient

The method is applied for changing the client data in the MoneyPolo money transfer system.

Request parameters:

Name Type Description
UserID int Identifier of the client in the transfer system MoneyPolo (it is obtained in the result of calling the method RegisterClient)
FirstName string Client name
LastName string Client surname
BirthDate date Client date of birth in the format YYYY-MM-DD
CitizenshipCountry string Client citizenship country code
DocumentNumber string Client passport number
DocumentIssueDate date Passport issue date in the format YYYY-MM-DD
DocumentExpireDate date Passport expire date in the format YYYY-MM-DD
DocumentAuthority string Issuing authority
Phone string Client telephone number in the format 00n1…n12
BirthCountry string
BirthCity string
StayCountry string
* OtherName string
ZipCode string
Region string
City string
Address string

Request signature hash structure:

UserID + FirstName + LastName + BirthDate
+ CitizenshipCountry + DocumentNumber + 
+ DocumentIssueDate + DocumentExpireDate + DocumentAuthority + 
+ Phone + BirthCountry + BirthCity + StayCountry
+ OtherName + ZipCode + Region + City + Address + *key

Response parameters:

Name Type Description
UserID int Unique identifier of the client in the transfer system MoneyPolo
Approved int Toggle 0/1, if the client documents were checked or not. Only after check of the documents the client may send / receive the transfers.


CheckClient

The method is applied for check of client data in the MoneyPolo money transfer system.

Request parameters:

Name Type Description
UserID int Unique identifier of the client in the transfer system MoneyPolo

Request signature hash structure:

UserID + *key

Response parameters:

Name Type Description
UserID int Unique identifier of the client in the transfer system MoneyPolo
FirstName string Client name
LastName string Client surname
BirthDate date Client date of birth in the format YYYY-MM-DD
DocumentNumber string Client passport number
CitizenshipCountry string Client citizenship country code
DocumentIssueDate date Passport issue date in the format YYYY-MM-DD
DocumentExpireDate date Passport expire date in the format YYYY-MM-DD
Approved int Toggle 0/1, if the client documents were checked or not. Only after check of the documents the client may send / receive the transfers.


GetReceiverList

The method is applied for obtaining the list of previous recipients of the transfers for particular client.

Request parameters:

Name Type Description
UserID int Unique identifier of the client in the transfer system MoneyPolo

Request signature hash structure:

UserID + *key

Response parameters:

Name Type Description
UserID int Unique identifier of the client in the transfer system MoneyPolo
ReceiverID int Identifier of receiver
FirstName string Client name
LastName string Client surname
BirthDate date Client date of birth in the format YYYY-MM-DD
DocumentNumber string Client passport number
DocumentIssueDate date Passport issue date in the format YYYY-MM-DD
DocumentExpireDate date Passport expire date in the format YYYY-MM-DD
DocumentAuthority string Issuing authority
OtherName string
StayCountry string
BirthCountry string
BirthCity string
Zip string
Region string
City string
Address string
Phone string
Email string


SaveReceiver

The method is applied for changing the recipient data in the MoneyPolo money transfer system

Request parameters:

Name Type Description
Receiver object Object of the recipient (see method GetReceiverList)

* You pass 0 (zero) as value of ReceiverID field in case you creating new receiver.

Request signature hash structure:

UserID + ReceiverID + FirstName + LastName + OtherName 
+ BirthDate + DocumentNumber 
+ DocumentIssueDate + DocumentExpireDate + DocumentAuthority 
+ BirthCountry + BirthCity + StayCountry 
+ Zip + Region + City + Address + Email + Phone + *key

Response parameters:

Name Type Description
ReceiverID int Unique identifier of receiver


GetCurrencyList

The method is applied for obtaining the currency list with which the system works.
The methods works without parameters.

Request signature hash structure:

*key


In return the service sends the object with the attribute Count, the value of which indicates the quantity of currencies in the system. If the value of the attribute Count is more than zero the a element Currencies contains the elements of the currencies.

List of attributes of the element currency:

Name Type Description
ID int Currency identifier
Code string Currency code
Description string Full denomination of the currency
MinimalBill int Minimal banknote


GetLimits

The method is applied for obtaining the limits for the particular client

Request parameters:

Name Type Description
UserID intClient identifier in the transfer system MoneyPolo
CurrencyCode string Currency code

Request signature hash structure:

UserID + CurrencyCode + *key

In return the service send back the object with three attributes. The values of the attributes are always calculated in the currency for which the request had been sent.

Response parameters:

Name Type Description
BranchLimit decimal Limit at the current moment for this branch (Every user of API is a virtual branch for the system)
ClientLimit decimal Limit for the current client (UserID)
DocumentReuiredFrom decimal Threshold amount, when the client sends the amount >= the limit is to ascertain that the actual data of the client are saved in the system and actual scans of the client documents are loaded.


GetCountryList

The method is applied for obtaining the list of countries with which the system works.

Request parameters:

Name Type Description
CurrencyCode string

Request signature hash structure:

CurrencyCode + *key

In return the service will send back the object with attribute Сount, the value of which indicates the quantity of countries that work with this currency. If the attribute value is more then zero the element Countries will contain the elements of records of countries.

List of attributes of the element country:

Name Type Description
ID int Country identifier
Code string Country code
Description string Full name of the country
RegionsCount int Quantity of regions in the country


GetRegionList

The method is applied for obtaining the list of regions for particular country.

Request parameters:

Name Type Description
CountryID int ID of the country

Request signature hash structure:

CountryID + *key

In return the service will send back the object with the attribute Сount, the value of which is the quantity of regions for the country that operate with the currency. If the value of the attribute count is more than zero the element Regions will contain the elements of records of regions.

List of attributes of the element region:

Name Type Description
ID int Region identifier
Description string Full name of the region


GetCityList

The method is applied for obtaining the list of cities for particular country (region).

Request parameters:

Name Type Description
CountryID int ID of the country
RegionID int ID of the region. optional, default - 0
CurrencyCode string Currency code
* Filter string Search filter. optional

Request signature hash structure:

CountryID + RegionID + CurrencyCode + Filter + *key

In return the service will send back the object with the attribute Сount, the value of which is the quantity of cities for the country/region that operate with this currency. If the value of attribute count is more than zero the element Cities will contain the elements of records of cities.

The response may contain the optional parameter CountryInfo The parameter may contain in the form of the formatted text the information text of the payment system concerning the transfers to another contry.

List of attributes of the element city:

Name Type Description
ID int City identifier
Description string Full name of the city


GetBankList

The method is applied for obtaining the list of banks for particular city.

Request parameters:

Name Type Description
CityID int ID of the city
CurrencyCode string Currency code
Amount decimal Amount of transfer
* Filter string Search filter. optional

Request signature hash structure:

CityID + CurrencyCode + Amount + Filter + *key

In return the service will send back the object with the attribute Сount, the value of which is the quantity of banks of the city that work with this currency. If the value of the attribute count is more than zero the element Banks will contain the elements of record of banks.

List of attributes of the element bank:

Name Type Description
ID int Bank identifier (on test environment, always use value 673310 as BankID for any requests)
Name string Full name of the bank
Address string
WorkingHours string
WorkingDays string
Currencies string Currencies bank works with
Phone string
RemoteID Uint Bank identifier in the recipient’s payment system.
PSCODE string Payment system code of actual bank
ApproximateComission decimal Approximate commission for the actual bank for indicated in the request amount and currency
PayoutType string Payout type. Separated by ; (Example: BANK;CASH) * important: if point only have BANK payout type defined, you must fill in all PayoutBank* fields in Check/AddOutgoing methods!
BankDataPrefilled string
PayoutBankName string Used for BANK payout type
PayoutBankBranch string Used for BANK payout type
PayoutBankBranchCode string Used for BANK payout type


GetComission

The method is applied for commission calculation

Request parameters:

Name Type Description
Amount decimal Amount of transfer
CurrencyCode string Currency code
BankID int ID of the bank
ComissionIncluded int 0/1 toggle if the commission is included or not
UserID int ID of sender (* optional)
Discount string Discount code (*optional)
AutoProcess string (1/0) Automatic process marker. (*optional) For more information about autoprocess details and limits, please, contact technical support.

Request signature hash structure:

BankID + ComissionIncluded + CurrencyCode + Amount + UserID
+ Discount + AutoProcess + *key

Calculated commission is returned in the attribute TransactionFee. In case of the commission is included in the transfer amount the system will recalculate the sent amount in such a way that new amount of transfer including the commission would not exceed the stated by the client amount of money and would be divisible by the minimal banknote of the currency (the system does not operate with coins).

Response parameters:

Name Type Description
TransactionFee decimal Commission for transfer
TransactionAmount decimal In case if the parameter ComissionIncluded was transferred with the value «1», in the value if the attribute there will be indicated the amount that will be sent to the recipient.
BankName string
BankAddress string
BankCode string
BankHeadOfficeInfo string Information about head office of the bank
BankInfo string Information about bank


CheckOutgoing

The method is applied for checking the outgoing transfer

Request parameters:

Name Type Description
Amount decimal Amount of transfer
CurrencyCode string Currency code
BankID int ID of the bank
ComissionIncluded int 0/1 toggle if the commission is included or not
UserID int ID of sender
ReceiverID int ID of receiver
Discount string Discount code (*optional)
AutoProcess string (1/0) Automatic process marker. (*optional) For more information about autoprocess details and limits, please, contact technical support.

Request signature hash structure:

UserID + ReceiverID + BankID + ComissionIncluded + CurrencyCode + Amount
+ Discount + AutoProcess + *key

The response of the server shall be checked for availability of errors, in case of absence of errors the check is successful and the service will send back the attribute TransactionFee that contain the commission for transfer in the transfer system MoneyPolo

Response parameters:

Name Type Description
TransactionFee decimal Commission for transfer
TransactionFeeOriginal decimal internal
DiscountError string Error when using the discount


AddOutgoing

The method is applied for location new outgoing transfer in the system

Request parameters:

Name Type Description
Amount decimal Amount of transfer
CurrencyCode string Currency code
BankID int ID of the bank
ComissionIncluded int 0/1 toggle if the commission is included or not
UserID int ID of sender
ReceiverID int ID of receiver
Discount string Discount code (*optional)
AutoProcess string (1/0) Automatic process marker. (*optional) For more information about autoprocess details and limits, please, contact technical support.
OriginOfFunds string additional info related to the source of funds
* UniqueID int32 optional. ([0-9]*) Unique ID (Int32) of request from Merchant. If system receive request with same UniqueID, that was used before – it will ignore current variables in request and return the same answer as before .
PurposeOfFunds string additional info related to the purpose of transfer
SenderIsPoliticallyExposedText string * leave empty if next field is equal to 0
SenderIsPoliticallyExposed string 0/1 flag
PayoutTypeCode string Payout type. Available payout type for bank see in GetBankList method. Leave empty if payout type is CASH
PayoutBankName string Used for BANK payout type
PayoutBankAccountNumber string Used for BANK payout type
PayoutBankBranch string Used for BANK payout type
PayoutBankBranchCode string Used for BANK payout type
OriginOfFundsCode string Origin of funds code (see GetTechnicalLists). in case of “OTHER” option is selected, client must specify details into field OriginOfFunds.
PurposeOfFundsCode string Purpose of funds code (see GetTechnicalLists). in case of “OTHER” option is selected, client must specify details into field PurposeOfFunds.
PayoutBankCurrencyOfAcc string Used for BANK payout type
PayoutBankCity string Used for BANK payout type
MerchantDocumentID string optional. Request ID from the Merchant. If system receives the request with the same MerchantDocumentID, which was previously used, it will be returned with already existing transaction data. Use it to re-process transaction in case if previous request was failed. System will ignore it in case if UniqueID is filled.

Request signature hash structure:

UserID + ReceiverID + BankID + ComissionIncluded + CurrencyCode + Amount
+ Discount + AutoProcess + OriginOfFunds + UniqueID + PurposeOfFunds 
+ SenderIsPoliticallyExposedText + SenderIsPoliticallyExposed 
+ PayoutTypeCode + PayoutBankName + PayoutBankAccountNumber 
+ PayoutBankBranch + PayoutBankBranchCode + OriginOfFundsCode 
+ PurposeOfFundsCode + PayoutBankCurrencyOfAcc + PayoutBankCity 
+ MerchantDocumentID + *key

The service response shall be checked for availability of the errors, in case of absence of errors the check is successful and the service will send back the attribute TransferID

Response parameters:

Name Type Description
TransferID int ID of the transfer in the transfer system MoneyPolo
TransferNumber string Transfer reference number for receiver, if not empty
CustomerStatementRequired string If equals to “1”, you need to call SaveCustomerStatement for actual transfer. Transaction will be checked by AML
SecurityCode string Can be used as an additional number/code/pin that the receiver of funds has to provide in order to receive money in the specific branch.


CheckIncoming

The method is applied for checking the existence of incoming transfer in the system

Request parameters:

Name Type Description
ReferenceNumber string Transfer identifier in the system (supplied by the system of sender)
CurrencyCode string Currency code
Amount decimal Amount of transfer
UserID int ID of receiver
FirstName string Name of receiver
LastName string Surname of receiver
DocumentNumber string Passport number of receiver

Request signature hash structure:

ReferenceNumber + CurrencyCode + Amount + UserID
 + FirstName + LastName + DocumentNumber + *key

It is necessary to check the response of the service for availability of errors, in case of absence of errors the check is successful and the service will send back the attribute TransferID which contains the ID of the transfer in the transfer system MoneyPolo

Other response parameters:

Name Type Description
ReceiverFirstName string
ReceiverLastName string
SenderFirstName string
SenderLastName string


PayIncoming

The method is applied for obtaining and payment of incoming transfer in the system

Request parameters:

Name Type Description
UserID int ID of receiver
TransferID int ID of the transfer in the system (obtained from the response of the method CheckIncoming)
ReferenceNumber string Transfer identifier in the system (supplied by the system of sender)
CurrencyCode string Currency code
Amount decimal Amount of transfer

Request signature hash structure:

UserID + TransferID + ReferenceNumber + CurrencyCode + Amount + *key

In the response of the service it is necessary to check the availability of the errors and Status attribute. In case of absence of errors and Status value equal to “PAID”, the payment was done successfully.


GetOutgoingInfo

The method is applied for obtaining the information about outgoing transfer in the system

Request parameters:

Name Type Description
TransferID int Identifier of the transfer in the system

Request signature hash structure:

TransferID + *key

In the response of the service it is necessary to check the availability of the errors. In case of absence of errors, there will be present the attribute Status in the value of which there will be the information about actual status of the transfer. The system has ability to send automatic notifications about transfer status change, in that case, this is the method you must call after receiving notification. Otherwise the system-sender shall request at regular intervals itself or upon request of users the transfer status by means of this method. (The table of possible transfer statuses is set below in the document)

Response parameters:

Name Type Description
Status string Transfer status
TransferNumber string Number of the transfer for identification in the payment system


GetDiscountList

The method is applied for obtaining the list of possible discounts for the client.

Request parameters:

Name Type Description
UserID int ID of the client

Request signature hash structure:

UserID + *key

In order to apply a discount its code (attribute Code) shall be transferred to the methods of calculation of commission (GetComission + it is necessary to transfer ClientID), checking (CheckOutgoing) and location (AddOutgoing) of the transfer.


GetBankFields

The method is applied for obtaining the list of obligatory fields for sending the transfer to the particular bank.

Request parameters:

Name Type Description
BankID int ID of the bank

Request signature hash structure:

BankID + *key

In return the service sends back the object with the attribute count, the value of which is the quantity of found obligatory fields. If the value of the attribute count is more than zero the element BankFields contains the elements of fields.

List of attributes of BankField:

Name Type Description
Name string Field name (key field)
* Caption string
* CaptionRussian string
* Mask string Regular expression by means of which the clearing center checks the set value, often only by means of regular expression it is possible to understand what should be in the field
* Comment string
* CommentRussian string
* Example string Example of filling

All attributes except name may be not field.

In the methods CheckOutgoing and AddOutgoing there is optional field AdditionalFields to which actually shall be added the transfer fields in the format name=value##name1=value1#nameX=valueX where name – field Name from the object BankField.

Next fields are to be filled but we have them in the corresponding methods SaveClient/SaveReceiver in other words if these fields are present in the list of obligatory fields and they were not yet filled in the corresponding method previously they must be obligatory saved by the sender (SaveClient) and consequently by the recipient (SaveReceiver)

sSurName — Client.OtherName
sBirthday — Client.BirthDate
sCountry - Client.Country
sZipCode - Client.Zip
sRegion - Client.Region
sCity - Client.City
sAddress - Client.Address
sPhone - Client.Phone
sIDnumber - Client.DocumentNumber
sIDdate - Client.DocumentIssueDate
sIDwhom - Client.DocumentAuthority
sIDexpireDate — Client.DocumentExpireDate
bSurName — Receiver.OtherName
bBirthday — Receiver.BirthDate
bCountry - Receiver.Country
bZipCode - Receiver.Zip
bRegion - Receiver.Region
bCity - Receiver.City
bAddress - Receiver.Address
bPhone - Receiver.Phone
bIDnumber - Receiver.DocumentNumber
bIDdate - Receiver.DocumentIssueDate
bIDwhom - Receiver.DocumentAuthority
bIDexpireDate - Receiver.DocumentExpireDate

all other received fields GetBankFields – it is necessary to try to fill them and further on summarize in the format key=meaning##key2=meaning2 and send to the field AdditionalFields of the corresponding method.

In course of time the fields that will be met most often in AdditionalFields will be added to the necessary methods or will be written statically if the situation conditions will allow that.


GetHistory

The method is applied for obtaining the history of sent transfers

Request parameters:

Name Type Description
UserID int Identifier of a user in the system

Request signature hash structure:

UserID + *key

In the return the service will send back the object with the attribute Сount, the value of which is the quantity of transfers of the user. If the value of the attribute count is more than zero the element Tranfers will contain the elements of record of the transfers.

Response parameters:

Name Type Description
ID int Transfer identifier
Type string Transfer type (IN/OUT)
TransferNumber string Transfer number
State string Transfer state
Amount decimal
Currency string
Date string Date of sending
Time string Time of sending
CorrespondentID int Correspondent identifier – of recipient/sender (depending upon transfer type)
CorrespondentFirstName string
CorrespondentLastName string
CorrespondentBirthDate string
CorrespondentCountryID int Identifier of the correspondent country
CorrespondentCountry string
CorrespondentCityID int Correspondent city identifier
CorrespondentCity string
CorrespondentBankID int Correspondent bank identifier
CorrespondentBankName string
CorrespondentBankAddress string
PaymentType string Code of payment type of the transfer
IsTemplate string Toggle, that the sent transfer is a template


SetTemplate

The method is applied for setting the toggle of the template on the transfer

Request parameters:

Name Type Description
UserID int Identifier of a user in the system
TransferID int Identifier of a transfer in the system

Request signature hash structure:

UserID + TransferID + *key

After successful setting of the toggle on the transfer it may be used when sending by template.


RemoveTemplate

The method is used for resetting the toggle of the template on the transfer Request parameters:

Name Type Description
UserID int Identifier of a user in the system
TransferID int Identifier of a transfer in the system

Request signature hash structure:

UserID + TransferID + *key

After successful resetting of the toggle on the transfer it can not be used when sending by template but it will continue to appear in the history of the transfers of the user.


LockOutgoing

The method is applied for blocking the transfer for introducing amendments

Request parameters:

Name Type Description
TransferID int Identifier of the transfer in the system
OperatorID int Identifier of the operator, on default = 0

Request signature hash structure:

TransferID + OperatorID + *key

In case of successful blocking of the transfer in the response of the service there will be returned the field Status with the value CHANGE. After that the transfer may be amended by means of the method ChangeOutgoing.


UnlockOutgoing

The method is applied for release of the blocking of the transfer

Request parameters:

Name Type Description
TransferID int Identifier of the transfer in the system
OperatorID int Identifier of the operator, on default = 0

Request signature hash structure:

TransferID + OperatorID + *key

In case of successful release of the blocking of transfer in the response of the service there will be returned the field Status with the status value that was applied to the transfer prior to block setting.


ChangeOutgoing

The method is applied for recording the modifications in the sent transfer on the side of payment

Request parameters:

Name Type Description
TransferID int Identifier of the transfer in the system
OperatorID int Identifier of the operator, on default = 0

Request signature hash structure:

TransferID + OperatorID + *key

The typical script of implementation of this method – the user sends the transfer to the recipient and commits an error in the name or surname. At the delivery point the recipient is refused to be paid the transfer referring to the committed error. The user has the possibility to correct the information about recipient (method SaveReceiver), after that he blocks the transfer, sends the enquiry for modification and unblocks the transfer. In the result the operator at the delivery point immediately sees amendments in the initials (any data) of the recipient.

In case of successful amendment of the transfer in the response of the service there will be returned the field Status with the value CHANGE. After completing the work on amendment of the transfer it shall be unblocked by means of method UnlockOutgoing


GetOperationsByDate

The method is applied for obtaining the list of all transfers made by agent operations by exact date

Request parameters:

Name Type Description
Date string Date to search operations in
OperatorID int Operator ID, 0 by default

Request signature hash structure:

Date + OperatorID + *key

In the return the service will send back the object with the attribute Сount, the value of which is the quantity of operations that meet the filters. If the value of the attribute count is more than zero the element Operations will contain the elements of record of the transfers.

List of attributes of the element Operation:

Name Type Description
ID int Transfer ID
Type string Transfer type (IN/OUT)
TransferNumber string
State string Transfer actual status
Amount decimal
Currency string
Date string Sending date
Time string Sending time
OperatorID int operator ID
CardNumber int Client card number


GetIncomingInfo

The method is applied for obtaining information about incoming transfer

Request parameters:

Name Type Description
TransferID int Identifier of the transfer in the system

Request signature hash structure:

TransferID + *key

In the response of the service it is necessary to check the availability of the errors. In case of absence of errors, there will be present the attribute Status in the value of which there will be the information about actual status of the transfer.

Response parameters:

Name Type Description
Status string
TransferNumber string


CheckIncomingByReference

The method is applied for checking the existence of incoming transfer in the system

Request parameters:

Name Type Description
ReferenceNumber int Transfer identifier in the system (supplied by the system of sender)
CurrencyCode string * optional. Currency code
Amount decimal * optional (but required for some cases, like Unistream transfers). Amount of transfer

Request signature hash structure:

ReferenceNumber + CurrencyCode + Amount + *key

It is necessary to check the response of the service for availability of errors, in case of absence of errors the check is successful and the service will send back the attribute TrasnferReady which contains the value 1 or 0, which means true/false.

Other response parameters:

Name Type Description
TrasnferReady int 1/0
ReceiverFirstName string
ReceiverLastName string
ReceiverPhone string
SenderFirstName string
SenderLastName string
SenderPhone string
SenderBirthDate string
OriginCountryCode string
TargetCountryCode string
OriginCity string
TargetCity string
CurrencyCode string
Amount decimal


GetCountryListNoCurrency

The method is applied for obtaining the list of countries with which the system works.

Request signature hash structure:

*key

In return the service will send back the object with attribute Сount, the value of which indicates the quantity of countries that work with this currency. If the attribute value is more then zero the element Countries will contain the elements of records of countries.

List of attributes of the element country:

Name Type Description
ID int Country identifier
Code string
Description string Full name of the country
RegionsCount int Quantity of regions in the country


GetCityListNoCurrency

The method is applied for obtaining the list of cities for particular country (region).

Request parameters:

Name Type Description
CountryID int ID of the country
RegionID int ID of the region, fill 0 by default.
Filter string * optional. search filter.

Request signature hash structure:

CountryID + RegionID + Filter + *key

In return the service will send back the object with the attribute Сount, the value of which is the quantity of cities for the country/region that operate with this currency. If the value of attribute count is more than zero the element Cities will contain the elements of records of cities.

The response may contain the optional parameter CountryInfo. The parameter may contain in the form of the formatted text the information text of the payment system concerning the transfers to another contry.

List of attributes city:

Name Type Description
ID int city ID
Description string full name of the city


GetTechnicalLists

The method is applied for obtaining technical lists.

Method has no input parameters.

Request signature hash structure:

*key

In return the service will send back the list of objects. Lists:

  • OriginOfFundsList — contains objects UWCFSMoneyTransferOriginOfFunds.
  • PurposeOfFundsList — contains objects UWCFSMoneyTransferPurposeOfFunds.

List of fields of objects UWCFSMoneyTransferOriginOfFunds and UWCFSMoneyTransferPurposeOfFunds:

Name Type Description
Code string Element code
Description string Element description



SaveCustomerStatement

The method is applied for saving customer statement when it is required by system AML rules.

List of request object:

Name Type Description
UserID int ID of a user in the system
TransferID int ID of the transfer in the system
AgentFirstName string Name of the operator conducting the survey
AgentLastName string Surname of the operator conducting the survey
ClientFirstName string
ClientLastName string
ClientBirthDate string
ClientSex string M/F
ClientBirthPlace string
ClientCitizenship string
ClientDocumentNumber string
ClientDocumentAuthority string
ClientAddressPermanent string
ClientAddressCorrespondent string
ClientPhone string
ClientEmail string
TransactionPurpose string Purpose of transaction
TransactionSource string Source of fund
TransactionInfo string Additional information
CorrespondentName string Receiver's name and surname

Request signature hash structure:

UserID + TransferID + AgentFirstName + AgentLastName 
+ ClientFirstName + ClientLastName + ClientBirthDate
+ ClientSex + ClientBirthPlace + ClientCitizenship 
+ ClientDocumentNumber + ClientDocumentAuthority
+ ClientAddressPermanent + ClientAddressCorrespondent 
+ ClientPhone + ClientEmail
+ TransactionPurpose + TransactionSource + TransactionInfo 
+ CorrespondentName + *key

As result of successfull request method will return an ID of saved statement.



Code samples

PHP sample

mt.connector.php
<?php
class MT
{
    protected $service;
 
    private $algo = 'sha512';
 
    private $merchantCode = 'PUT YOUR MERCHANT CODE HERE';
    private $addr = 'https://testapi.moneypolo.com:26443/UWCFSMoneyTransfer.asmx?wsdl';
    private $key = 'PUT YOUR MERCHANT KEY HERE';
 
    public $data = array();
 
    /**
    * Constructs the service
    */
    public function __construct ()
    {
        try
        {
			//DEBUG: array('trace' => 1)
            $this->service = new SoapClient($this->addr, array('trace' => 1));
        }
        catch (Exception $e)
        {
            return $e->getMessage();
        }
    }
 
    /**
    * Provides managment of errors calling the service's methods
    */
    public function __call($name, $arguments)
    {
        $result = false;
        $max_retries = 5;
        $retry_count = 0;
 
        while(!$result && $retry_count < $max_retries)
        {
            try
            {
                $result = parent::__call($name, $arguments);
            }
            catch(SoapFault $fault)
            {
                if($fault->faultstring != 'Could not connect to host')
                {
                    throw $fault;
                }
            }
            sleep(1);
            $retry_count++;
        }
        if ($retry_count == $max_retries)
        {
            throw new SoapFault('Could not connect to host after 5 attempts');
        }
        return $result;
    }
 
    public function Prepare_Data($request, $signatureData)
    {
        $this->data['request'] = array();	
 
	$this->data['request'] = $request;
 
        $this->data['sign']['MerchantCode'] = $this->merchantCode;
 
        $signString = $signatureData . $this->key; // build $signatureData for each method as described in documentation. http://wiki.moneypolo.com/doku.php/uwcfsmoneytransfer
 
        $this->data['sign']['Sign'] = strtoupper(
            hash($this->algo, $signString)
        );
        return true;
    }
 
    public function Send($methodName = 'GetServiceTypesList')
    {
		$result = $this->service->{$methodName}($this->data);
		//echo "REQUEST:\n" . htmlspecialchars($this->service->__getLastRequest()) . "\n";
		//echo "RESPONSE:\n" . htmlspecialchars($this->service->__getLastResponse()) . "\n";
        return $result;
    }
}
mt.php
<?php
$timezone = 'Europe/Prague';
date_default_timezone_set($timezone);
 
require_once ('./mt.connector.php');
$MTRequest = new MT();
 
$request = array();
$request['CountryID'] = '2135';
$request['RegionID'] = '0';
 
$signatureData = implode('', $request); // read documentation about signature structure for each webmethod!
 
if($MTRequest->Prepare_Data($request, $signatureData)) 
{
    $result = $MTRequest->Send('GetCityListNoCurrency');
}
 
echo '<h1>Result</h1><pre>';
print_r($result);
echo '</pre>';



C# sample

using System.Text;
using System.Security.Cryptography;
 
...
 
string key = "PUT YOUR MERCHANT KEY HERE";
 
// MT here is the webreference to https://testapi.moneypolo.com:26443/UWCFSMoneyTransfer.asmx
MT.UWCFSMoneyTransferSoapClient ws = new MT.UWCFSMoneyTransferSoapClient();
MT.UWCFSMoneyTransferGetComissionRequest request = new MT.UWCFSMoneyTransferGetComissionRequest();
MT.Signature sign = new MT.Signature();
MT.UWCFSMoneyTransferGetComissionResponse response;
 
request.Amount = 100M;
request.BankID = 673309;
request.ComissionIncluded = 0;
request.CurrencyCode = "USD";
 
sign.MerchantCode = "PUT YOUR MERCHANT CODE HERE";
string hashData = request.BankID.ToString() + request.ComissionIncluded.ToString() + request.CurrencyCode + request.Amount.ToString() + request.UserID.ToString() + key;
sign.Sign = HASH.getHash512(hashData).ToUpper();
 
response = ws.GetComission(request, sign);
 
...
 
public static class HASH
    {
        public static string getHash512(string data)
        {
            string hash = "";
 
            UTF8Encoding enc = new UTF8Encoding();
            SHA512Managed sha = new SHA512Managed();
            byte[] dataBytes = enc.GetBytes(data);
            byte[] hashBytes = sha.ComputeHash(dataBytes);
 
            foreach (byte b in hashBytes)
            {
                hash += String.Format("{0:x2}", b);
            }
 
            return hash;
        }
    }



Sending transfer flow

  1. Check all the necessary data of the client. Fields for name, surname, date of birth, passport number, ISO code of the country, date of passport issue, date of passport expiry and phone must be filled.
  2. If the client does not have the assigned PSUSERID – it is necessary to send the request RegisterClient and check the attribute APPROVED. If the attribute value is equal to «1» - the client has already been registered and checked, it is possible to pass to step 4. If the value is equal to «0» - the client is registered, but is waiting for approval of the documents by the operator. To inform the client that he can not send the transfers before the checking procedure.
  3. If the client already has PSUSERID — it is necessary to send the request CheckClient and compare the results with local data. If the data are same but attribute APPROVED == '0' it is necessary to inform the client that he can not send the transfers before checking procedure. If the data are different it is necessary to send request SaveClient and transfer new data of the client regardless the value of attribute APPROVED.
  4. When using test environment, you can make money transfers only to MoneyPolo branches (for example to Prague or London). We can't guarantee that money transfers to partner systems will be working in test environment.
  5. Obtain currencies by GetCurrencyList
  6. Obtain countries by GetCountryList
  7. Obtain cities by GetCityList
  8. Obtain banks by GetBankList
  9. Calculate the commission by GetComission
  10. Obtain the list of recipients by GetReceiverList
  11. Save the chosen recipient by SaveReceiver. If the list of recipients in previous step was empty (the client is sending the transfer for the first time) this request will just add first recipient to the client (parameter PSRECEIVERID is not transferred).
  12. Check the transfer by CheckOutgoing
  13. Create transfer in the system by AddOutgoing



Payout transfer flow

  1. Check all the necessary data of the client. Fields for name, surname, date of birth, passport number, code of the country, date of passport issue, date of passport expiry and phone must be filled.
  2. If the client does not have the assigned PSUSERID – it is necessary to send request RegisterClient and check the attribute APPROVED. If the attribute value is equal to «1» - the client has already been registered and checked, it is possible to pass to step 4. If the value is equal to «0» - the client is registered, but is waiting for approval of the documents by the operator. To inform the client that he can not send the transfers before the checking procedure.
  3. If the client already has PSUSERID — it is necessary to send request CheckClient and compare the results with local data. If the data are same but attribute APPROVED == '0' it is necessary to inform the client that he can not send the transfers before checking procedure. If the data are different it is necessary to send request SaveClient and transfer new data of the client regardless the value of attribute APPROVED.
  4. Obtain the list of currencies by GetCurrencyList
  5. Check the transfer by CheckIncoming
  6. Payout transfer by PayIncoming



Error codes

Code Description
-10000 Internal error during processing of incoming parameters.
-9999 Error of communication with the transfer system
-9998 Unknown method of API
-9997 Failed to change the condition of the transfer
-9996 Failed to read the key of the client
-9995 Wrong key of the client
-9994 Wrong ID of the client
-9993 Error during operation with data base
-9992 Nonexistent code of the country
-9991 Attempt to enter the number of the document that has already been assigned to another user of the system
-9990 Nonexistent code of the currency
-9989 Nonexistent code of the country for the country of birth
-9988 Nonexistent code of the country for the country of residence
-9987 Nonexistent client
-9986 The client is not checked / not approved by the operator
-9985 The transfer is not found
-9984 The transfer is already processed
-9983 Recipient data dose not coincide with the data indicated in the transfer
-9982 The recipient with such data already exists
-9981 The operation is denied for safety reasons. Contact the support team of the company MayzusFS
-9980 The map is not found
-9979 Wrong pin
-9978 The data contain forbidden signs that are not included into the table Latin 2
-9977 Insufficient balance on the account for performing the operation
-9976 Failed to pay the transfer, contact the support team of the company MayzusFS
-9975 Wrong calculation of the amount indicated in the currency, check the rates
-9974 The transfer is in the condition that does not allow to perform this operation
-9900 Field PSUSERID is obligatory
-9901 Field FNAME is obligatory
-9902 Field LNAME is obligatory
-9903 Field BDATE is obligatory
-9904 Field PASSNUM is obligatory
-9905 Field CCOUNTRY is obligatory
-9906 Field LNAME is obligatory
-9907 Field BDATE contains inadmissible date
-9908 Field COUNTRY is obligatory
-9909 Field CITY is obligatory
-9910 Field BANK is obligatory
-9911 Field AMOUNT is obligatory
-9912 Field COMINC is obligatory
-9913 Field PASSDATE contains inadmissible date
-9914 Field PASSEXPDATE contains inadmissible date
-9915 Field PSRECEIVERID is obligatory
-9916 Field REFNUM is obligatory
-9917 Field PASSEXPDATE is obligatory
-9918 Field VARIABLE_SYMBOL is obligatory
-9919 Field TRANSFERID is obligatory
-9920 The passport validity is expired
-9921 The validity period of the passport has not come
-9922 Date of expiry must exceed the date of issue
-9923 The transfer amount must be divisible by banknotes. The system does nor operate with coins.
-9924 Error when opening the client account
-9925 Field ReferenceNumber is obligatory
-9926 Field Phone is obligatory
-9927 Field PersonRUID is obligatory
-9928 Field OperatorID is obligatory
-9929 Field CardNumber is obligatory
-9930 Field Pin is obligatory
-9931 Field Language contains unsupported language
-9932 Field DocumentAuthority is obligatory
-9933 Field StayCountry is obligatory
-9934 Field Address is obligatory
-606 Invalid request signature



Possible statuses of transfer

Code Description
NEWTERM New transfer set from the user terminal
NEWOPER New transfer set by the operator
CHECKED Confirmed transfer (ready for cash transactions or waiting the transfer to the bank)
PAID The transfer is paid
PROCESS Reserved for further using
ERROR Error of transfer processing
SENT Reserved for further using
DONE All transfer operations are over
RETURN Transfer to return
NEWINWARD New incoming transfer
REQRETURN The transfer is inquired for return
PAIDRETURN The transfer was returned
CHANGE The transfer is blocked for modifications
NEWAPI New transfer set through API
CANCEL The transfer was canceled
PAYREADY The transfer is ready for payment and sending
PSRETURN The transfer is returned by the partner system and ready for processing
uwcfsmoneytransfer.txt · Last modified: 2018/11/21 13:40 by Dmitry Karpenko