Skip to main content

Create transfer

POST https://wallet.paysera.com/transfer/rest/v1/transfers

Create transfer in the system. Created transfer is invisible and will be deleted if no more actions are performed.

Authorization​

This endpoint requires MAC (Message Authentication Code) authentication.

Authorization Header Format:

Authorization: MAC id="CLIENT_ID", ts="TIMESTAMP", nonce="RANDOM_STRING", mac="MAC_HASH", ext="body_hash=BODY_HASH"

Example:

Authorization: MAC id="a9b8c7d6e5f4g3h2", ts="1234567890", nonce="xyz123abc456def", mac="dGhpcyBpcyBhIHJhbmRvbSBtYWMgaGFzaCB2YWx1ZQ==", ext="body_hash=cmFuZG9tQm9keUhhc2hWYWx1ZQ%3D%3D"

For more details, see the Authentication section.

Request Body​

FieldTypeRequiredDescription
bank_keystringAn optional parameter that specifies the bank key to be used for routing the transfer. If provided, the transfer will only be created if the specified bank key matches an available routing option. This acts as a safeguard to ensure that transfers are executed through the correct banking route. If an incorrect or non-matching bank key is specified, the transfer request will be rejected. If the parameter is not provided, routing will proceed as normal without this additional validation.
amountobject✓Amount to transfer
beneficiaryobject✓Recipient details
payerobject✓Sender details
final_beneficiaryobjectThis is used where available (for example in SEPA transfers) to provide information about final beneficiary of transfered funds. Just ignore if it's not required in your case
perform_atintegerTimestamp when Transfer should be perfomed. Leave empty to perform as soon as possible
charge_typestringIt's used only for some bank transfers. It's used when banks could charge additional commissions in between payer and beneficiary bank or when beneficiary bank could charge additional commissions. SHA is shared, OUR is payer side. For OUR commission is greater but beneficiary should not be charged - whole specified amount should reach beneficiary. Unfortunatelly, this is still not the case for some rare conditions
urgencystringFor SEPA transfers, standard means that transfer is made from your IBAN, it's processed only in work days. urgent means that transfer is made from our IBAN and is faster to reach the beneficiary
notificationsobject
purposeobjectTransfer purpose and details
passwordobjectIt's used only for internal Paysera transfers. Ignore if not explicitly needed
cancelablebooleanIndicates if the transfer can be canceled. Defaults to true. When you set it to false always wait for the statuses ready, processing or done, as it's transfer statuses from which this parameter starts working.
auto_currency_convertbooleanIndicates if currency convert could be used. Defaults to false.
auto_charge_related_cardbooleanIndicates if related card can be charged. Defaults to false.
auto_process_to_donebooleanIndicates if the transfer should be processed automatically if possible. Defaults to true.
reserve_untilintegerOnly for internal Paysera transfers. Designates the time when, if not confirmed, transfer funds will return to sender. UNIX timestamp
callbackobjectWebhook configuration for receiving real-time transfer status updates.
validation_groupsarrayWhen simulating the transfer, you can specify validation groups to skip all other validations. Defaults to null.

amount​

FieldTypeRequiredDescription
amountstring✓Transfer amount
currencystring✓Currency code (ISO 4217), 3 characters

beneficiary​

FieldTypeRequiredDescription
typestring✓Beneficiary type: paysera, payza, webmoney, tax, bank, privatbank, single_window. The matching *_account object must be provided for the given type — for example bank_account when the type is bank. No other *_account can be provided in this case
namestringBeneficiary name (required when transfer is made to other bank)
person_typestringnatural or legal. This is optional and designates whether beneficiary is legal entity or a person
addressobjectBeneficiary address. Accepts address_line and country_code only
additional_informationobjectBeneficiary city and country. Required on transfers that are not SEPA
identifiersobjectIt's optional and should be provided if you know identifier (like company code, personal code etc.) of beneficiary. KPP and TAX code could be required in Russia
client_identifierobjectBeneficiary identification type - legal document that verifies the identity of the account. Only one identification type is allowed
bank_accountobjectProvide when type is bank
paysera_account, payza_account, webmoney_account, tax_account, privatbank_account, single_window_accountobjectProvide the one matching type

beneficiary.address​

FieldTypeRequiredDescription
address_linestringAddress line. This is the street address only — the city and the country belong in additional_information and are ignored if placed here
country_codestringCountry code. This is not used when creating a transfer — the beneficiary's country must be supplied in additional_information.country

beneficiary.additional_information​

FieldTypeRequiredDescription
typestring✓natural or legal. Designates whether beneficiary is legal entity or a person
citystringBeneficiary city, for example London
countrystringUse upper case ISO 3166-1 alpha-2 codes, for example US
statestringBeneficiary state
postal_codestringBeneficiary postcode
bank_branch_codestringBank branch code

beneficiary.bank_account​

FieldTypeRequiredDescription
ibanstringIBAN number
account_numberstringAccount number
country_codestringWe use ISO 3166-1 alpha-2 for country codes. This is not required if IBAN is specified. This is the country of the beneficiary bank, not of the beneficiary
bicstringThis should be SWIFT bank code, if available for that transfer
bank_codestringThis is local bank code and depends on Country. It's not required if IBAN is provided
sort_codestringSort code
bank_titlestringBank title
bank_addressobjectBank address. Accepts address_line and country_code
correspondent_bankobjectAccepts account_number, bank_code and bank_title

payer​

FieldTypeRequiredDescription
account_numberstring✓This is your account number in Paysera system
referencestringOnly used for tax transfers
first_namestring
last_namestring
mobile_phone_numberstring
birth_datestringFor example 1999-07-05
country_codestringFor example LT
regionstring
citystring
streetstring
housestring
apartmentstring
birth_country_codestringFor example UA
documentobjectAccepts type (passport, identity_card, residence_permit), series, number, issued_date and issuer

purpose​

FieldTypeRequiredDescription
detailsstringTransfer purpose details. Always required, unless it's SEPA transfer and reference is specified
referencestringIt's used only for SEPA transfers instead of description. You could always just provide the description field
vo_codestringVO code is used only for transfers to Russia
ocr_codestringOCR code is used for transfers to Norway, Sweden, Finland and Denmark
codestringcash_in, cash_out, payment or app_transfer. Leave this one empty unless explicitly required to fill
purpose_codestringPurpose code is to classify the nature of the transfer. See /public/transfer/rest/v1/purpose-codes for a list of codes. Optional unless required for specific destinations
details_optionsobjectAccepts preserve (boolean). For some countries, like Great Britain, details can be really short. In such cases we usually put a link to our page where beneficiary could find all the details of the transfer. In some cases it's important that beneficiary would receive original details, as it could include reference number etc. This field controls this behaviour

Example​

Request​

Endpoint: POST https://wallet.paysera.com/transfer/rest/v1/transfers
Content-Type: application/json
Authorization: MAC id="CLIENT_ID", ts="TIMESTAMP", nonce="RANDOM_STRING", mac="MAC_HASH", ext="body_hash=BODY_HASH"
{
"amount": {
"amount": "100.00",
"currency": "EUR"
},
"beneficiary": {
"type": "bank",
"name": "John Doe",
"bank_account": {
"iban": "LT123456789012345678"
}
},
"payer": {
"account_number": "EVP7654321"
},
"purpose": {
"details": "Payment for services"
}
}

Response​

{
"id": "12345678",
"hash": "abc123def456",
"status": "done",
"created_at": 1729425600,
"performed_at": 1729425660,
"amount": {
"amount": "100.00",
"currency": "EUR"
},
"beneficiary": {
"type": "bank",
"name": "John Doe",
"bank_account": {
"iban": "LT123456789012345678"
}
},
"payer": {
"account_number": "EVP7654321"
},
"cancelable": true,
"allowed_to_cancel": true,
"initiator": {
"user_id": 321
},
"out_commission": {
"amount": "0.50",
"currency": "EUR"
}
}

AUTHORIZATION: HTTP

REQUEST

Base URL
https://wallet.paysera.com
Body REQUIRED
{
"amount": {
"amount": "100.00",
"currency": "EUR"
},
"beneficiary": {
"type": "bank",
"name": "John Doe",
"bank_account": {
"iban": "LT123456789012345678"
}
},
"payer": {
"account_number": "EVP7654321"
},
"purpose": {
"details": "Payment for services"
}
}

RESPONSE

Transfer created successfully
{
"id": "12345678",
"hash": "abc123def456",
"status": "done",
"created_at": 1729425600,
"performed_at": 1729425660,
"amount": {
"amount": "100.00",
"currency": "EUR"
},
"beneficiary": {
"type": "bank",
"name": "John Doe",
"bank_account": {
"iban": "LT123456789012345678"
}
},
"payer": {
"account_number": "EVP7654321"
},
"cancelable": true,
"allowed_to_cancel": true,
"initiator": {
"user_id": 321
},
"out_commission": {
"amount": "0.50",
"currency": "EUR"
}
}