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​
| Field | Type | Required | Description |
|---|---|---|---|
bank_key | string | An 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. | |
amount | object | ✓ | Amount to transfer |
beneficiary | object | ✓ | Recipient details |
payer | object | ✓ | Sender details |
final_beneficiary | object | This 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_at | integer | Timestamp when Transfer should be perfomed. Leave empty to perform as soon as possible | |
charge_type | string | It'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 | |
urgency | string | For 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 | |
notifications | object | ||
purpose | object | Transfer purpose and details | |
password | object | It's used only for internal Paysera transfers. Ignore if not explicitly needed | |
cancelable | boolean | Indicates 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_convert | boolean | Indicates if currency convert could be used. Defaults to false. | |
auto_charge_related_card | boolean | Indicates if related card can be charged. Defaults to false. | |
auto_process_to_done | boolean | Indicates if the transfer should be processed automatically if possible. Defaults to true. | |
reserve_until | integer | Only for internal Paysera transfers. Designates the time when, if not confirmed, transfer funds will return to sender. UNIX timestamp | |
callback | object | Webhook configuration for receiving real-time transfer status updates. | |
validation_groups | array | When simulating the transfer, you can specify validation groups to skip all other validations. Defaults to null. |
Example​
Request​
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"
},
"payer": {
"account_number": "EVP7654321"
},
"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"
},
"payer": {
"account_number": "EVP7654321"
},
"commission": {
"amount": "0.50",
"currency": "EUR"
}
}