Bellow you can find detailed specification of transmissible and receivable data.

If it's available (there is PHP with required version in your server), we strongly advise to use libwebtopay library to generate requests and process callbacks.

Structure of request data

You should send data of the form in GET or POST method. Address: https://www.paysera.com/pay/

There are always 2 fields sent: data and sign.

Example of the URL address: https://www.paysera.com/pay/?data=your_DATA_parameter&sign=your_SIGN_parameter

Generating request fields from parameters

  1. All parameters are joined to URL-encoded string. For example:
    ['param1' => 'abc', 'param2' => 'Some string with symbols %=&']
    'param1=abc&param2=Some+string+with+symbols+%25%3D%26'
    
    In PHP language this is done by function http_build_query
  2. Result string is encoded in base64 encoding. For example:
    'param1=abc&param2=Some+string+with+symbols+%25%3D%26'
    'cGFyYW0xPWFiYyZwYXJhbTI9U29tZStzdHJpbmcrd2l0aCtzeW1ib2xzKyUyNSUzRCUyNg=='
    
    In PHP language this is done by function base64_encode
  3. In the result string symbols "/" are replaced with "_", and symbols "+" with "-". We get similar to base64 encoding, which is safe to send in URL without further processing. For example:
    'MViDYlV7V0iHR2w2OkJjRFFpY11hizJDhk+EZjl/'
    'MViDYlV7V0iHR2w2OkJjRFFpY11hizJDhk-EZjl_'
    
    In PHP language this is done by function str_replace or strtr.
  4. The final result string is signed - the sign parameter is generated. Algorithm to generate sign parameter:
    sign = md5(data + password)
    Here md5 is cryptographic hash function, data - encoded parameters, password - your project password.

Extra parameters for recurring payments of PIS

There is an option to create recurring payments by providing additional data in the request. After that the bank will execute PIS payment automatically by defined period and frequency. Only a couple of banks provide this option: SEB and Swedbank

Parameter
Length
Required
Description
If a PIS payment method is provided, it is possible to add additional parameters to make a periodic payment:
periodic_payments_frequency
255
No
The frequency at which the periodic payment will be performed.

Available frequencies for all enabled periodic payment methods:
weekly
monthly
quarterly
semiannual
annual

Available frequencies for some enabled periodic payment methods:
daily
every_working_day
last_day_of_month
last_working_day_of_month

periodic_payments_start_date
10
No
The date at which periodic payments will begin.
The date format should be yyyy-mm-dd.
periodic_payments_end_date
10
No
The date at which periodic payments will end.
The date format should be yyyy-mm-dd.

Request parameters

Parameter
Length
Required
Description
projectid
11
Yes
Unique project number. Only activated projects can accept payments.
orderid
40
Yes
Order number from your system.
accepturl
255
Yes
Full address (URL), to which the client is directed after a successful payment.
Seller should not rely on accepturl to confirm an order. Instead, order confirmation on the Seller side should be done per callbackurl.
cancelurl
255
Yes
Full address (URL), to which the client is directed after he clicks the link to return to the shop.
callbackurl
255
Yes
Full address (URL), to which a seller will get information about performed payment.

Script must return text "OK". Only then our system will register, that information about the payment has been received.

If there is no answer "OK", the message will be sent 4 times (when we get it, after an hour, after three hours and after 24 hours).
version
9
Yes
The version number of Paysera system specification (API).
lang
3
No
It is possible to indicate the user language (ISO 639-2/B: LIT, RUS, ENG, etc.). If Paysera does not support the selected language, the system will automatically choose a language according to the IP address or ENG language by default.
amount
11
No
Amount in cents the client has to pay.
currency
3
No
Payment currency (i.e USD, EUR, etc.) you want the client to pay in. If the selected currency cannot be accepted by a specific payment method, the system will convert it automatically to the acceptable currency, according to the currency rate of the day. Payamount and paycurrency answers will be sent to your website.
payment
20
No
Payment type. If provided, the payment will be made by the method specified (for example by using the specified bank). If not specified, the payer will be immediately provided with the payment types to choose from. You can get payment types in real time by using WebToPay library.
country
2
No
Payer's country (LT, EE, LV, GB, PL, DE). All possible types of payment in that country are immediately indicated to the payer, after selecting a country.
paytext
255*
No
Payment purpose visible when making the payment. If not specified, default text is used:
Payment for goods and services (for nb. [order_nr]) ([site_name]).

If you specify the payment purpose, it is necessary to include the following variables, which will be replaced with the appropriate values in the final purpose text:

[order_nr] - payment number.
[site_name] or [owner_name] - website address or company name.
p_firstname
255
No
Payer's name. Requested in the majority of payment methods. Necessary for certain payment methods.
p_lastname
255
No
Payer's surname. Requested in the majority of payment methods. Necessary for certain payment methods.
p_email
255
No
Payer's email address is necessary. If the email address is not received, the client will be requested to enter it. Paysera system will inform the payer about the payment status by this address.
p_street
255
No
Payer's address, to which goods will be sent (e.g.: Pilaitės pr. 16). Necessary for certain payment methods.
p_city
255
No
Payer's city, to which goods will be sent (e.g.: Vilnius). Necessary for certain payment methods.
p_state
255
No
Payer's state code (necessary, when buying in USA). Necessary for certain payment methods.
p_zip
20
No
Payer's postal code. Lithuanian postal codes can be found here . Necessary for certain payment methods.
p_countrycode
20
No
Payer's country code. The list with country codes can be found here . Necessary for certain payment methods.
test
1
No
The parameter, which allows to test the connection. The payment is not executed, but the result is returned immediately, as if the payment has been made. To test, it is necessary to activate the mode for a particular project by logging in and selecting: "Projects and Activities" -> "My Projects" -> "Project Settings" -> "Paysera Checkout Settings" and check the box for "Allow Test Payments".
only_payments
0
No
Show only those payment methods that are separated by commas.
disallow_payments
0
No
Hide payment methods separated by comma.
time_limit
19
No
The parameter indicating the final date for payment; the date is given in “yyyy-mm-dd HH:MM:SS” format. The minimum value is 15 minutes from the current moment; the maximum value is 3 days. Note: works only with certain payment methods.
personcode
255
No
This parameter can be used for user authentication. If the user’s identification number is transferred, together with callback Paysera will return personcodestatus parameter, which will indicate whether the personal code corresponds to the transferred one. To enable this feature, log in to your Project, navigate to Projects and Activities → My Projects → Project settings → Paysera Checkout settings, and check the box "For a payment to be collected, the payer must provide their national identification number (personal code)."
developerid
11
No
In case you are labeled as a developer in our system, you have to transfer this parameter in your installed project (projects). The value of the parameter - your unique user number.
buyer_consent
1
No

Can be set to 0 or 1. If it is set to 1, the payer can skip the additional step where he needs to accept consent using PIS payment. If this parameter is used, additional text is required to be added to your page:

Buyer consent text in other languages provided below the table**

If PIS payment method provided, it is possible to add additional parameters to receive payment to specific IBAN account:
beneficiary_country
255
No
Beneficiary country (e.g.: LT, EE, LV, GB, PL, DE...). Necessary for certain PIS payment methods.
beneficiary_town
255
No
Beneficiary town (e.g.: Vilnius). Necessary for certain PIS payment methods.
beneficiary_street
255
No
Beneficiary street (e.g.: Pilaitės pr. 16). Necessary for certain PIS payment methods.
beneficiary_building
255
No
Beneficiary building. Necessary for certain PIS payment methods.
beneficiary_postcode
255
No
Beneficiary postal code. Necessary for certain PIS payment methods.
beneficiary_country_subdivision
255
No
Beneficiary country subdivision. Necessary for certain PIS payment methods.
beneficiary_bank_name
255
No
Beneficiary bank name. Necessary for certain PIS payment methods.
beneficiary_name
255
No
Beneficiary name. Necessary for certain PIS payment methods.
beneficiary_iban
255
No
Beneficiary IBAN number to which the payment will be received. Necessary for certain PIS payment methods.
beneficiary_bic
255
No
Beneficiary BIC/swift code. Necessary for certain PIS payment methods.

* Final length may vary depending on payment type specification

** Buyer consent text:

Callback

For more information on callbacks - see the chapter Callback .