TeslaPay Api Specification (1.0.3)

Download OpenAPI specification:

Core API V1

Api version 2 with Legal entity support here

Changelog

You can follow and get to know the latest API changes and improvements here.

LHS Brackets filtering support

For example, GET /clients/?filter=age[gte]21 or (email[eq]"a@a.com" and CreateDate[eq]2019-01-31) would find all the items where the age is greater than or equals to 21 or email equals a@a.com and CreateDate equals 31 Jan 2019. Default the logical operator and. LIKE operator with SQL pattern supported, but ESCAPE option NOT supported. For available filter fields, and their types see endpoint description

Notations

Operator Bracket Notation
N/A [range]
N/A [like]
= [eq]
!= [ne]
> [gt]
>= [gte]
< [lt]
<= [lte]
and and
or or

Datatypes

Type format
string Value in double quotes. ex: email[like]"%.com"
date Date as defined by yyyy-mm-dd
number Integer number with no thousand delimiters

Response codes

HTTP Code Description
200 Request completed successfully
400 Invalid request. Show message box with "OK" button. Message text from response field failure_message and concatenate with text "Error: detail.error_id". Title should be filled from detail.title
408 Execution timeout. Retry same request later
Other Show message box with "OK" button. Message text: "We apologize for any inconveniences caused, please contact TeslaPay Customer Support via 'Messaging' section. Error code: detail.error_id ". Title should be filled from detail.title

Client

Client operations. Work in progress (WIP)

Create client

This operation create client.

Authorizations:
basicMab
header Parameters
x-request-id
required
string <= 64 characters

Request id. Will act as an idempotency key

x-partner-code
required
string <= 255 characters
Deprecated

The unique identifier of the external system

Request Body schema: application/json
required

Create client

client_type
required
string
Value: "PERSON"

Client type

required
object (PersonModel)

Person attributes

Responses

Request samples

Content type
application/json
{
  • "client_type": "PERSON",
  • "client": {
    }
}

Response samples

Content type
application/json
{
  • "client_type": "PERSON",
  • "client": {
    }
}

List clients

This operation retrieves list of the partner clients.

Filter fields
Field Type
email string
contact_mobile_number string
external_id string

Filter example with limit/offset:

GET /v1/clients/?limit=300&offset=0&filter=contact_mobile_number[eq]"%2B37129207562";create_date[gte]2019-07-13;create_date[lte]2019-07-16

Authorizations:
basicMab
query Parameters
offset
integer <int64> (offsetType) [ 0 .. 2147483647 ]

The number of items to skip before starting to collect the result set.

limit
integer <int64> (limitType) [ 1 .. 100 ]

The numbers of items to return.

filter
string

LHS filter expression.

header Parameters
x-partner-code
required
string <= 255 characters
Deprecated

The unique identifier of the external system

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Update client data

This operation update client info

Authorizations:
basicMab
path Parameters
clientId
required
string <= 64 characters

The unique identifier of the client

header Parameters
x-request-id
required
string <= 64 characters

Request id. Will act as an idempotency key

x-partner-code
required
string <= 255 characters
Deprecated

The unique identifier of the external system

Request Body schema: application/json
required

Update client.

client_type
required
string
Value: "PERSON"

Client type

required
object (PersonUpdateModel)

Person update model

Responses

Request samples

Content type
application/json
{
  • "client_type": "PERSON",
  • "client": {
    }
}

Response samples

Content type
application/json
{
  • "client_type": "PERSON",
  • "client": {
    }
}

Webhooks

TeslaPay pushes events to an HTTPS endpoint you register with us, so you do not have to poll for changes. Everything below applies to every delivery; the events themselves are documented under Webhooks at the end of this page.

Registration is done by TeslaPay on your behalf -- there is no self-service API for it. Tell us the URL, which events you want, and (if you want to verify signatures) collect our public key. All events you subscribe to arrive at that one URL.

Event catalogue

Every event type is {resource}.{action}.

event_type Fired when
corp_reg.status_changed Company registration moved to a different status
private_reg.status_changed Private person registration moved to a different status

The catalogue is configuration-driven and grows without a change to this specification, so accept unknown event_type values gracefully -- log and acknowledge them rather than failing. Your subscription filter decides which of them you receive; it matches exact types (private_reg.status_changed), a whole resource (private_reg.*), an action across resources (*.status_changed), or everything (*).

Delivery request

POST to your URL with Content-Type: application/json; charset=utf-8 and these headers:

Header Description
X-Webhook-Event-Type Same value as the event_type body property
X-Webhook-Message-Id Same value as the event_id body property
X-Webhook-Event-Version Payload contract version. Always 1 today
X-Webhook-Timestamp Queueing time, 7 fractional digits, no Z or offset
X-Webhook-Signature Body signature, base64. Absent if signing is not configured
Nonce Random 63-bit integer, per attempt. Note: not X-Webhook-Nonce
User-Agent MAB-Webhooks/1.0

Verifying the signature

X-Webhook-Signature is an RSASSA-PKCS1-v1_5 signature over SHA-256, base64-encoded with the standard alphabet. The signed input is the raw request body bytes, and nothing else -- no timestamp, nonce, method or URL is mixed in. So verification is:

  1. Read the raw body before any JSON parsing or re-serialization. Re-serializing changes bytes and breaks the signature.
  2. Base64-decode X-Webhook-Signature.
  3. Verify against SHA-256 of those bytes using the TeslaPay public key.

Because the timestamp and nonce are outside the signature, a captured request stays valid forever. Signature verification proves origin, not freshness -- rely on event_id deduplication for replay safety.

Retries and your response

Any 2xx acknowledges the event and the response body is discarded. 408, 429 and any 5xx, plus network errors and read timeouts, are retried with exponential backoff (base * exponent^attempt) until the configured attempt limit, after which the delivery is abandoned. Every other 4xx is permanent and never retried.

Acknowledge as soon as the event is durably stored and process it afterwards: a slow receiver hits the delivery timeout and gets retried, which shows up as duplicates.

Idempotency and ordering

Deduplicate on event_id, which is stable across retries of the same event. It is a UUID v7, so sorting event ids from the same source reproduces emission order.

Delivery is per subscription: if two endpoints subscribe to the same event, each gets its own message with its own event_id. Order is not guaranteed across resources, and a retried event can arrive after a later one -- use occurred_at to reconcile, and treat handlers as idempotent.

What the payload does and does not contain

The payload identifies what changed, not the new state: there are no amounts, currencies, accounts or names in it. Read the resource back through this API when you need its content.

data.id is the external identifier registered for the document through the partner API, and is omitted when there is none.

Client registration status changed Webhook

Delivered when a client registration application moves to a different status.

Current resources in this family:

resource Meaning action values
corp_reg Company registration status_changed
private_reg Private person registration status_changed

Only genuine status transitions are delivered: an update that leaves the mapped status unchanged produces no event, and there are no created / updated / deleted events for this family. data.status is the status after the change; the previous status is not carried, so keep the last value you saw if you need the transition.

header Parameters
X-Webhook-Event-Type
required
string <= 100 characters
Example: private_reg.status_changed

Event type of the delivered event. Always equal to the event_type body property.

X-Webhook-Message-Id
required
string <uuid>
Example: f8bb710b-f047-da81-7000-019fa534494e

Unique identifier of this delivery. Always equal to the event_id body property -- use it as the idempotency key. One source change produces one message per subscribed endpoint, so the same change reaches two receivers under two different ids.

X-Webhook-Event-Version
required
integer <int32>
Example: 1

Payload contract version. Always 1 for the shape described here.

X-Webhook-Timestamp
required
string
Example: 2026-07-27T19:52:59.1234567

Time the message was queued, with 7 fractional digits. Two caveats: it is the queueing time, not the change time -- use the occurred_at body property for that; and it carries no Z suffix or UTC offset, unlike occurred_at.

X-Webhook-Signature
string

Signature of the raw request body. Absent when no signing key is configured for the installation. Verification recipe in the Webhooks tag description.

Nonce
required
integer <int64>
Example: 4821739065512340000

Random 63-bit integer, regenerated per delivery attempt. Note the header is named Nonce, not X-Webhook-Nonce. It is not covered by X-Webhook-Signature and is not remembered between attempts, so it cannot be used for replay detection -- deduplicate on event_id instead.

Request Body schema: application/json
required

The registration status event.

event_id
required
string <uuid>

Unique identifier of this event, also sent as X-Webhook-Message-Id. Use it as the idempotency key. It is a UUID v7, so lexicographic order matches emission order for events from the same source.

event_type
required
string <= 100 characters

Event type, always {resource}.{action}.

resource
required
string <= 100 characters

Resource segment of event_type: corp_reg or private_reg.

action
required
string
Value: "status_changed"

Action segment of event_type.

occurred_at
required
string <date-time>

Time the change was committed, ISO-8601 UTC with exactly three fractional digits and a literal Z.

required
object

Event data.

Responses

Request samples

Content type
application/json
Example

Private person registration finished review.

{
  • "event_id": "F8BB710B-F047-DA81-7000-019FA534494E",
  • "event_type": "private_reg.status_changed",
  • "resource": "private_reg",
  • "action": "status_changed",
  • "occurred_at": "2026-07-27T19:52:58.943Z",
  • "data": {
    }
}

Client account

Create account

This operation create client account

Authorizations:
basicMab
path Parameters
clientId
required
string <= 64 characters

The unique identifier of the client

header Parameters
x-request-id
required
string <= 64 characters

Request id. Will act as an idempotency key

x-partner-code
required
string <= 255 characters
Deprecated

The unique identifier of the external system

Responses

Response samples

Content type
application/json
{
  • "id": "LT023190000201000613",
  • "type": "payment",
  • "iban": "LT023190000201000613",
  • "bic": "TEUALT22XXX",
  • "status": "active"
}

Accounts

List client accounts

Authorizations:
basicMab
path Parameters
clientId
required
string <= 64 characters

The unique identifier of the client

header Parameters
x-partner-code
required
string <= 255 characters
Deprecated

The unique identifier of the external system

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Account

Get client account

Authorizations:
basicMab
path Parameters
clientId
required
string <= 64 characters

The unique identifier of the client

accountId
required
string

Unique identifier of the account

header Parameters
x-partner-code
required
string <= 255 characters
Deprecated

The unique identifier of the external system

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "type": "payment",
  • "iban": "string",
  • "bic": "string",
  • "status": "active"
}

Account balance

Get client account balance

Authorizations:
basicMab
path Parameters
clientId
required
string <= 64 characters

The unique identifier of the client

accountId
required
string

Unique identifier of the account

query Parameters
date
string <date>

Balance date

currency
string (currencyType) = 3 characters

Balance currency

header Parameters
x-partner-code
required
string <= 255 characters
Deprecated

The unique identifier of the external system

Responses

Response samples

Content type
application/json
Example
[
  • {
    }
]

Account statement

Get client account statement

Authorizations:
basicMab
path Parameters
clientId
required
string <= 64 characters

The unique identifier of the client

accountId
required
string

Unique identifier of the account

query Parameters
date_from
required
string <date>

Statement begin date

date_to
required
string <date>

Statement end date

currency
string (currencyType) = 3 characters

Statement currency

header Parameters
x-partner-code
required
string <= 255 characters
Deprecated

The unique identifier of the external system

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Manage account

Manage client account

Authorizations:
basicMab
path Parameters
clientId
required
string <= 64 characters

The unique identifier of the client

accountId
required
string

Unique identifier of the account

operation
required
string (AccountOperationModel)
Enum: "enable" "disable" "close"

Account operation

header Parameters
x-partner-code
required
string <= 255 characters
Deprecated

The unique identifier of the external system

Responses

Response samples

Content type
application/json
{
  • "result": "OK"
}

Transfer

SEPA fee

Calculate SEPA transfer fee.

Authorizations:
basicMab
path Parameters
accountId
required
string

The unique identifier of the account

header Parameters
x-partner-code
required
string <= 255 characters
Deprecated

The unique identifier of the external system

Request Body schema: application/json
required

Fee calculate parameters

required
object

Parameters of operation, used to calculate fee

Responses

Request samples

Content type
application/json
{
  • "parameters": {
    }
}

Response samples

Content type
application/json
{
  • "fee": {
    },
  • "parameters": {
    }
}

Create SEPA

Create SEPA transfer

Authorizations:
basicMab
path Parameters
accountId
required
string

Unique identifier of the account

header Parameters
x-request-id
required
string <= 64 characters

Request id. Will act as an idempotency key

x-partner-code
required
string <= 255 characters
Deprecated

The unique identifier of the external system

Request Body schema: application/json
required

Account transfer

id
required
string <= 64 characters

Unique identifier of the transfer

amount
required
integer <int64> (amountType) [ 1 .. 2147483647 ]

Amount specified in minor units of currency

description
string <= 140 characters

Transfer reference the recipient will see

recipient_name
required
string <= 70 characters

Name of the fund recipient

recipient_iban
required
string <= 32 characters

IBAN of the fund recipient

recipient_country
required
string <= 2 characters

Country of the fund recipient, uses ISO 3661 alpha-2 Codes

recipient_address
required
string <= 140 characters

Address of the fund recipient

ip
string (ipType) [ 7 .. 15 ] characters

A string containing the IP address of the client from whom the request was received.

Responses

Request samples

Content type
application/json
{
  • "id": "A-a10903fb-f67d-49ca-af15-dd3748a791d9",
  • "amount": 203,
  • "description": "A. Test 2020-12-21T17:40:12.458Z",
  • "recipient_name": "Ellis Grant PhD",
  • "recipient_iban": "GB33BUKB20201555555555",
  • "recipient_country": "LV",
  • "recipient_address": "7410 VonRueden Turnpike",
  • "ip": "109.110.0.1"
}

Response samples

Content type
application/json

Payment created

{
  • "id": "A-a10903fb-f67d-49ca-af15-dd3748a791d9",
  • "amount": 203,
  • "fee": {
    },
  • "description": "A. Test 2020-12-21T17:40:12.458Z",
  • "recipient_name": "Ellis Grant PhD",
  • "recipient_iban": "GB33BUKB20201555555555",
  • "recipient_country": "LV",
  • "recipient_address": "7410 VonRueden Turnpike",
  • "beneficiary_bank": {
    },
  • "status": "inprogress",
  • "processing_date": "2020-12-21T17:40:21Z",
  • "ip": "109.110.0.1"
}

SEPA transfers

List SEPA transfers.

Filter fields

Field Type
processing_date date

Filter example with limit/offset:

GET /v1/accounts/LT773190000201000136/transfers/sepa?limit=50&offset=2&filter=processing_date[gte]2020-12-21%20and%20processing_date[lt]2020-12-22

Authorizations:
basicMab
path Parameters
accountId
required
string

Unique identifier of the account

query Parameters
id
string

Unique identifier of the transfer

offset
integer <int64> (offsetType) [ 0 .. 2147483647 ]

The number of items to skip before starting to collect the result set.

limit
integer <int64> (limitType) [ 1 .. 100 ]

The numbers of items to return.

filter
string

LHS filter expression.

header Parameters
x-partner-code
required
string <= 255 characters
Deprecated

The unique identifier of the external system

Responses

Response samples

Content type
application/json
Example

Transaction information

[
  • {
    }
]

Currency list World

Get available transfer currency list

Authorizations:
basicMab
path Parameters
accountId
required
string <= 64 characters

The unique identifier of the account

header Parameters
x-partner-code
required
string <= 255 characters
Deprecated

The unique identifier of the external system

Responses

Response samples

Content type
application/json
{
  • "currencies": [
    ]
}

World fee

Calculate World transfer fee

Authorizations:
basicMab
path Parameters
accountId
required
string

The unique identifier of the account

header Parameters
x-partner-code
required
string <= 255 characters
Deprecated

The unique identifier of the external system

Request Body schema: application/json
required

Fee calculate parameters

object

Parameters of operation, used to calculate fee

Responses

Request samples

Content type
application/json
{
  • "parameters": {
    }
}

Response samples

Content type
application/json
{
  • "fee": {
    },
  • "parameters": {
    }
}

Create World

Create World transfer

Authorizations:
basicMab
path Parameters
accountId
required
string

Unique identifier of the account

header Parameters
x-request-id
required
string <= 64 characters

Request id. Will act as an idempotency key

x-partner-code
required
string <= 255 characters
Deprecated

The unique identifier of the external system

Request Body schema: application/json
required

Transfer

id
required
string <= 64 characters

Unique identifier of the transfer

amount
required
integer <int64> (amountType) [ 1 .. 2147483647 ]

Amount specified in minor units of currency

currency
required
string (currencyType) = 3 characters

Currency in ISO 4217 alpha-3 format

priority
string (priorityType)
Default: "standard"
Enum: "standard" "urgent"

Transfer priority

charges_type
required
string (chargesType)
Enum: "ben" "our" "sha"

Transfer charges type

description
required
string <= 140 characters

Transfer reference the recipient will see

recipient_name
required
string <= 70 characters

Name of the fund recipient

recipient_account
required
string <= 32 characters

Account of the fund recipient

recipient_country
required
string <= 2 characters

Country of the fund recipient, uses ISO 3661 alpha-2 Codes

recipient_address
required
string <= 140 characters

Address of the fund recipient

required
object (BicBankDataModel)

Bank data

ip
string (ipType) [ 7 .. 15 ] characters

A string containing the IP address of the client from whom the request was received.

Responses

Request samples

Content type
application/json
{
  • "id": "A-df3788ff-9465-4089-976c-1d3cd43295ce",
  • "amount": 202,
  • "currency": "EUR",
  • "charges_type": "sha",
  • "priority": "standard",
  • "description": "A. Test 2020-12-19T18:57:06.025Z",
  • "recipient_name": "Clayton Hills",
  • "recipient_account": "GB33BUKB20201555555555",
  • "recipient_country": "LV",
  • "recipient_address": "3726 King Fall",
  • "beneficiary_bank": {
    },
  • "ip": "109.110.0.1"
}

Response samples

Content type
application/json
{
  • "id": "A-df3788ff-9465-4089-976c-1d3cd43295ce",
  • "amount": 202,
  • "currency": "EUR",
  • "fee": {
    },
  • "priority": "standard",
  • "charges_type": "sha",
  • "description": "A. Test 2020-12-19T18:57:06.025Z",
  • "recipient_name": "Clayton Hills",
  • "recipient_account": "GB33BUKB20201555555555",
  • "recipient_country": "LV",
  • "recipient_address": "3726 King Fall",
  • "beneficiary_bank": {
    },
  • "status": "inprogress",
  • "processing_date": "2020-12-19T18:58:58Z",
  • "ip": "109.110.0.1"
}

World transfers

List world transfers

Filter fields

Field Type
processing_date date

Filter example with limit/offset:

GET /v1/accounts/LT773190000201000136/transfers/world?limit=50&offset=2&filter=processing_date[gte]2020-12-21%20and%20processing_date[lt]2020-12-22

Authorizations:
basicMab
path Parameters
accountId
required
string

Unique identifier of the account

query Parameters
id
string

Unique identifier of the transfer

offset
integer <int64> (offsetType) [ 0 .. 2147483647 ]

The number of items to skip before starting to collect the result set.

limit
integer <int64> (limitType) [ 1 .. 100 ]

The numbers of items to return.

filter
string

LHS filter expression.

header Parameters
x-partner-code
required
string <= 255 characters
Deprecated

The unique identifier of the external system

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Internal fee

Calculate Internal transfer fee.

Authorizations:
basicMab
path Parameters
accountId
required
string

The unique identifier of the account

header Parameters
x-partner-code
required
string <= 255 characters
Deprecated

The unique identifier of the external system

Request Body schema: application/json
required

Fee calculate parameters

required
object

Parameters of operation, used to calculate fee

Responses

Request samples

Content type
application/json
{
  • "parameters": {
    }
}

Response samples

Content type
application/json
{
  • "fee": {
    },
  • "parameters": {
    }
}

Create internal

Create Internal transfer

Authorizations:
basicMab
path Parameters
accountId
required
string

Unique identifier of the account

header Parameters
x-request-id
required
string <= 64 characters

Request id. Will act as an idempotency key

x-partner-code
required
string <= 255 characters
Deprecated

The unique identifier of the external system

Request Body schema: application/json
required

Account transfer

id
required
string <= 64 characters

Unique identifier of the transfer

amount
required
integer <int64> (amountType) [ 1 .. 2147483647 ]

Amount specified in minor units of currency

currency
required
string (currencyType) = 3 characters

Currency in ISO 4217 alpha-3 format

description
string <= 140 characters

Transfer reference the recipient will see. Ignored for transfers between own accounts.

recipient_name
string <= 70 characters

Name of the fund recipient

recipient_iban
required
string <= 32 characters

IBAN of the fund recipient

ip
string (ipType) [ 7 .. 15 ] characters

A string containing the IP address of the client from whom the request was received.

Responses

Request samples

Content type
application/json
{
  • "id": "A-{{$guid}}",
  • "amount": 500004,
  • "currency": "EUR",
  • "description": "A. Test {{$isoTimestamp}}",
  • "recipient_name": "{{$randomFullName}}",
  • "recipient_iban": "LT503190000201000137",
  • "ip": "109.110.0.1"
}

Response samples

Content type
application/json
Example

Transfer created and processed

{
  • "id": "A-408bacca-22ac-45e7-9296-7fae7403ba8b",
  • "amount": 504,
  • "currency": "EUR",
  • "description": "A. Test 2021-01-29T13:26:39.096Z",
  • "recipient_name": "Wilbur Prosacco",
  • "recipient_iban": "LT503190000201000137",
  • "status": "done",
  • "processing_date": "2021-01-29T13:26:45Z",
  • "ip": "109.110.0.1"
}

Internal transfers

List Internal transfers.

Filter fields

Field Type
processing_date date

Filter example with limit/offset:

GET /v1/accounts/LT773190000201000136/transfers/internal?limit=50&offset=2&filter=processing_date[gte]2020-12-21%20and%20processing_date[lt]2020-12-22

Authorizations:
basicMab
path Parameters
accountId
required
string

Unique identifier of the account

query Parameters
id
string

Unique identifier of the transfer

offset
integer <int64> (offsetType) [ 0 .. 2147483647 ]

The number of items to skip before starting to collect the result set.

limit
integer <int64> (limitType) [ 1 .. 100 ]

The numbers of items to return.

filter
string

LHS filter expression.

header Parameters
x-partner-code
required
string <= 255 characters
Deprecated

The unique identifier of the external system

Responses

Response samples

Content type
application/json
Example

No transfers found

[ ]

Services

Create attachment

Attachment end point WIP

Authorizations:
basicMab
header Parameters
x-request-id
required
string <= 64 characters

Request id. Will act as an idempotency key

x-partner-code
required
string <= 255 characters
Deprecated

The unique identifier of the external system

Request Body schema: multipart/form-data
required

Add object attachment. Sample request:

  POST /v1/attachments/ HTTP/1.1

  x-request-id: ce19969a-fd00-46cc-8870-5b2209c61fa0
  Content-Type: multipart/form-data; boundary=--------------------------037086576027847505154119
  Content-Length: 13873950
  ----------------------------037086576027847505154119
  Content-Disposition: form-data; name="file"; filename="attachment.pdf"

  <.....>
  ----------------------------037086576027847505154119
  Content-Disposition: form-data; name="metadata"

  {
    "document_type": "PASSPORT",
    "document_number": "1XA43652",
    "country": "LV",
    "issued_at": "2020-12-31",
    "expired_at": "2030-12-31",
    "additional": "Some data"
  }
  ----------------------------037086576027847505154119--
required
object (AttachmentMetadataModel)

Attachment metadata

file
required
string <binary>

File

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "expired_at": "2019-08-24T14:15:22Z",
  • "metadata": {
    }
}

Check IBAN

IBAN validation

path Parameters
iban
required
string
Example: GB33BUKB20201555555555

IBAN for validation

Responses

Response samples

Content type
application/json
{
  • "bic": "BUKBGB22XXX",
  • "bank": "BARCLAYS BANK UK PLC",
  • "address": "United Kingdom, Leicester",
  • "country": "GB",
  • "sepa": true
}

System

Healthcheck

Healthcheck

Responses

Response samples

Content type
application/json
{
  • "result": "string"
}