Transfer API Fundamentals
The Transfer API is built on REST principles, using standard HTTP methods and returning JSON-encoded responses. This guide covers the fundamentals you need to integrate successfully.
Base URL​
Production: https://wallet.paysera.com/transfer/rest/v1
The current API version is v2. The API uses REST principles with standard HTTP methods (GET, POST, PUT, DELETE) and JSON for requests and responses.
Request Format​
Content Type​
All POST and PUT requests must use JSON:
POST /transfer/rest/v1/transfers HTTP/1.1
Host: wallet.paysera.com
Content-Type: application/json
Character Encoding​
Always use UTF-8 encoding for request and response bodies:
Content-Type: application/json; charset=utf-8
Request Headers​
Required Headers​
Authorization: MAC id="client_id", ts="1234567890", nonce="random", mac="signature"
Content-Type: application/json
Optional Headers​
Accept: application/json
Accept-Language: en
User-Agent: YourApp/1.0
Request Body Example​
{
"amount": {
"amount": "100.00",
"currency": "EUR"
},
"beneficiary": {
"type": "bank",
"name": "John Doe",
"bank_account": {
"iban": "LT123456789012345678"
}
},
"payer": {
"account_number": "EVP9876543210"
},
"purpose": {
"details": "Payment for services"
},
"callback": {
"url": "https://your-server.com/webhooks/transfer"
}
}
Response Format​
Success Response​
Successful requests return HTTP status 200 with JSON body:
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"id": "239441503",
"status": "waiting",
"amount": {
"amount": "100.00",
"currency": "EUR"
},
"created_at": 1596014146,
"confirmation_url": "https://bank.paysera.com/transfer/confirm/abc123"
}
Response Structure​
- Always present - Fields that always exist
- Optional - Fields that may be
nullor missing entirely
If optional fields are null, they are omitted from the response entirely. Don't assume optional fields will always be present.
Example with Optional Fields​
{
"id": "123456",
"status": "done",
"amount": {
"amount": "50.00",
"currency": "EUR"
}
// Note: optional fields are omitted (not included as null)
}
Error Handling​
Error Response Structure​
When an error occurs, the API returns a non-200 status code with an error object:
{
"error": "error_code",
"error_description": "Human-readable description",
"error_uri": "https://docs.paysera.com/errors/error_code"
}
| Field | Type | Always Present | Description |
|---|---|---|---|
error | string | Yes | Machine-readable error code |
error_description | string | Usually | Human-readable description |
error_uri | string | Sometimes | Link to error documentation |
Common HTTP Status Codes​
| Status Code | Error Code | Description |
|---|---|---|
200 | - | Success |
400 | invalid_request | Malformed request or invalid JSON |
400 | invalid_parameters | Missing or invalid parameters |
401 | unauthorized | Authentication failed |
403 | forbidden | Insufficient permissions |
404 | not_found | Resource doesn't exist |
406 | not_acceptable | Unsupported format |
409 | invalid_state | Invalid state transition |
500 | internal_server_error | Server error - retry or contact support |
Common Patterns​
- Create Transfer
- Get Details
- List Transfers
- Revoke Transfer
POST /transfer/rest/v1/transfers HTTP/1.1
Host: wallet.paysera.com
Authorization: MAC id="...", ts="...", nonce="...", mac="..."
Content-Type: application/json
{
"amount": {
"amount": "100.00",
"currency": "EUR"
},
"beneficiary": {
"type": "bank",
"name": "John Doe",
"bank_account": {
"iban": "LT123..."
}
},
"payer": {
"account_number": "EVP9876543210"
},
"purpose": {
"details": "Payment description"
}
}
GET /transfer/rest/v1/transfers/239441503 HTTP/1.1
Host: wallet.paysera.com
Authorization: MAC id="...", ts="...", nonce="...", mac="..."
GET /transfer/rest/v1/transfers?limit=20&offset=0 HTTP/1.1
Host: wallet.paysera.com
Authorization: MAC id="...", ts="...", nonce="...", mac="..."
DELETE /transfer/rest/v1/transfers/239441503 HTTP/1.1
Host: wallet.paysera.com
Authorization: MAC id="...", ts="...", nonce="...", mac="..."
Additional Resources​
Support​
Need help with complex integrations?
Contact: tech_support@paysera.com