Monerium API (2.0.0-beta)
Download OpenAPI specification:Download
API for developers to integrate Monerium payments, wallets, and user onboarding functionalities into their applications.
We have created new, more intuitive version 2 endpoints. We are not introducing backward-breaking changes to the version 1 of the Monerium API.
Version 2 is in beta, you may notice changes before the final release.
We recommend using this version now, as it will soon become a stable release.
Endpoints or responses that have not been implemented are marked with WIP (Work In Progress).
Monerium offers a sandbox test environment for developers to integrate and test their applications:
- Sandbox API URL:
https://api.monerium.dev
- Sandbox web app:
https://sandbox.monerium.dev
Before onboarding users via your application, you must register your application with Monerium.
When you are ready to go live, then you can register your application in our production environment:
- Production API URL:
https://api.monerium.app
- Production web app:
https://monerium.app
To access the version 2 of the Monerium API, you may need to specify the Accept header in your requests.
This header ensures that you are using the correct version of the API. See the endpoint documentation for details where this is required.
The Accept header must have the value application/vnd.monerium.api-v2+json
.
Below are examples using curl and JavaScript (Fetch API).
curl -X GET 'https://api.monerium.dev/profiles' \
-H 'Accept: application/vnd.monerium.api-v2+json' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN'
fetch('https://api.monerium.dev/profiles', {
method: 'GET',
headers: {
'Accept': 'application/vnd.monerium.api-v2+json',
'Authorization': 'Bearer YOUR_ACCESS_TOKEN'
}
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
Authentication context
The difference between V1 and V2 API is how the endpoints handle the caller identity. In V2 most endpoints take the profile ID from the authentication context, meaning that when client credentials are used the requests are returning data for the application user profile. In order to fetch data for other authorized profiles the caller can set the profile UUID value in the request arguments. See specific endpoint documentation for details.
Extra privileges
Some endpoints are marked with the following label:
Requires extra privilegesAccess to these endpoints need to be granted to your app by the Monerium team.
Monerium can offer applicable partners a KYC reliance or sharing agreement that can streamline the onboarding process for its customers. It is worth noting that Monerium is always ultimately responsible for conducting due diligence and monitoring the business relationship. If you are interested in such capabilities, please contact us in our discord channel.
Tokens
Information about the emoney tokens with tickers, symbols, decimals, token contract address and the chain information, we currently support Ethereum, Polygon and Gnosis.
Token addresses and details here: /docs/tokens/
Authorizations:
Responses
Response Schema: application/json
currency | |
ticker | any Enum: "EUR" "GBP" "USD" "ISK" The traditional currency abbreviation. |
symbol | any Enum: "EURe" "GBPe" "USDe" "ISKe" The official symbol of the token used in DeFi platforms. |
Ethereum (string) or Gnosis (string) or Polygon (string) or Arbitrum (string) or Sepolia (string) or Chiado (string) or Amoy (string) or Arbitrum Sepolia (string) (Chain) | |
address | string The address of the token. |
decimals | string Number of decimals used in the asset. |
Request samples
- CLI
curl https://api.monerium.dev/tokens \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
Response samples
- 200
- 401
- 403
[- {
- "currency": "eur",
- "ticker": "EUR",
- "symbol": "EURe",
- "chain": "ethereum",
- "address": "0x3231cb76718cdef2155fc47b5286d82e6eda273f",
- "decimals": 18
}, - {
- "currency": "gbp",
- "ticker": "GBP",
- "symbol": "GBPe",
- "chain": "ethereum",
- "address": "0x7ba92741bf2a568abc6f1d3413c58c6e0244f8fd",
- "decimals": 18
}, - {
- "currency": "isk",
- "ticker": "ISK",
- "symbol": "ISKe",
- "chain": "ethereum",
- "address": "0xc642549743a93674cf38d6431f75d6443f88e3e2",
- "decimals": 18
}, - {
- "currency": "usd",
- "ticker": "USD",
- "symbol": "USDe",
- "chain": "ethereum",
- "address": "0xbc5142e0cc5eb16b47c63b0f033d4c2480853a52",
- "decimals": 18
}, - {
- "currency": "eur",
- "ticker": "EUR",
- "symbol": "EURe",
- "chain": "polygon",
- "address": "0x18ec0A6E18E5bc3784fDd3a3634b31245ab704F6",
- "decimals": 18
}, - {
- "currency": "gbp",
- "ticker": "GBP",
- "symbol": "GBPe",
- "chain": "polygon",
- "address": "0x75792CBDb361d80ba89271a079EfeE62c29FA324",
- "decimals": 18
}, - {
- "currency": "isk",
- "ticker": "ISK",
- "symbol": "ISKe",
- "chain": "polygon",
- "address": "0xf1bBf27A9D659D326efBfa5D284EBaeFB803983D",
- "decimals": 18
}, - {
- "currency": "usd",
- "ticker": "USD",
- "symbol": "USDe",
- "chain": "polygon",
- "address": "0x64E97c1a6535afD4a313eF46F88A64a34250B719",
- "decimals": 18
}
]
Authorization
Users must grant your application authorization to access their data.
This endpoint issues a Temporary Redirect (HTTP 307) to the Authorization Code Flow where users can sign up, onboard, connect their wallets and authorize your app to access to their data.
Use the Authorization Code Flow client_id
and the other parameters below to redirect users to the Monerium onboarding screen.
Upon authorization, users will be redirected back to your application redirect_uri
with an authorization code
in the query parameters.
Alternatively a "Sign in with Ethereum" (SIWE) flow can be used for existing Monerium customers. In this case the payload must include a valid EIP-4361 message and signature. On successful authorization the authorization code is returned at once.
This authorization code is then used to request an access token via the token endpoint.
Additional material:
Request Body schema: application/x-www-form-urlencodedrequired
client_id required | string <UUID> (AuthClientID) ^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab... The Authorization Code Flow client ID of your application. |
code_challenge required | string Generated challenge from the Read more about code challenges for PKCE |
code_challenge_method | string Value: "S256" Method used to generate the challenge (e.g., S256). The PKCE spec defines two methods, S256 and plain. Monerium only supports S256. |
redirect_uri | string The URL to which will redirect the browser after authorization has been granted by the user. Required if there are more then one redirect URL's registered. The Authorization Code will be available in the Only URLs with the HTTPS-scheme are supported with the exception of http://localhost. |
state | string Recommended. The state parameter will be included when redirecting back to your application. It can be used to store request-specific data and/or prevent CSRF attacks. |
address | string (Address) ^0x[0-9a-fA-F]{40}$ You can force what address is to be linked in the Authorization Flow. |
signature | string In redirect to Monerium flow the address in the connect wallet step can be automatically linked by including same the signature used for Link Address. The address will be automatically linked and the user continues to the next step. You must then also include the |
boolean You can prefill the email field for login and sign up steps to ensure the user uses the correct email. | |
skip_kyc | boolean You can skip the KYC onboarding steps in the Authorization Flow and use the the details, additional data, and verifications API endpoints after you have gotten the authorization. |
skip_create_account | boolean You can skip the connect wallet and request IBAN steps in the Authorization Flow and use the Link Address and Request IBAN API endpoints after you have gotten the authorization |
Ethereum (string) or Gnosis (string) or Polygon (string) or Arbitrum (string) or Sepolia (string) or Chiado (string) or Amoy (string) or Arbitrum Sepolia (string) (Chain) |
Responses
Request samples
- Authorization code flow
- SIWE
curl -i 'https://api.monerium.dev/auth' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'code_challenge=9Y__uhKapn7GO_ElcaQpd8C3hdOyqTzAU4VXyR2iEV0' \ --data-urlencode 'client_id=a08bfa22-e6d6-11ed-891c-2ea11c960b3f' \ --data-urlencode 'redirect_uri=http://localhost:3000' \ --data-urlencode 'code_challenge_method=S256'
Authorization
Same as POST /auth using a GET request with the same properties as query parameters.
Request samples
- CLI
curl https://api.monerium.dev/auth?code_challenge=9Y__uhKapn7GO_ElcaQpd8C3hdOyqTzAU4VXyR2iEV0&client_id=a08bfa22-e6d6-11ed-891c-2ea11c960b3f&redirect_uri=http://localhost:3000&code_challenge_method=S256
Context
The authentication context provides details about the currently authenticated user, including the method of authentication, their roles, and information on the profiles they are authorized to access.
Note that the context is used for every authenticated request. By default results are returned by the caller profile. Meaning that applications using client credentials must specify the profile ID in the query parameters to get the correct results.
Authorizations:
Responses
Response Schema: application/json
userId | string <UUID> (UUID) ^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab... Unique identifier of the User. |
string <email> An email address associated with the account. | |
name | string The user name or alias. You can treat this as metadata. |
roles | Array of strings Default: [] Items Value: "admin" List of Role |
object Information about how the user was authenticated. | |
defaultProfile | string <UUID> (UUID) ^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab... Unique identifier of the default profile. The default profile allows the API consumer to use the simpler API endpoints omitting the profile ID from the structure. |
Array of objects (ProfileSummary) List containing information about every profiles accessible to the User. |
Request samples
- curl
curl https://api.monerium.dev/auth/context \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
Response samples
- 200
- 401
{- "userId": "a78d8ff2-e51f-11ed-9e13-cacb9390199c",
- "email": "user@example.com",
- "name": "user@example.com",
- "roles": [ ],
- "auth": {
- "method": "password",
- "subject": "user@example.com",
- "verified": true
}, - "defaultProfile": "a78d8ff2-e51f-11ed-9e13-cacb9390199c",
- "profiles": [
- {
- "id": "a78d8ff2-e51f-11ed-9e13-cacb9390199c",
- "kind": "corporate",
- "name": "user@example.com",
- "perms": [
- "read"
]
}
]
}
Sign up
Create a user and profile by submitting the user's email address that your platform has validated. The user can also use the email address to generate a password and authenticate to the monerium app. The Monerium API will return a profile UUID that you will use to submit all of the customer's details.
Your app will be automatically authorized to access the user data.
Authorizations:
header Parameters
Accept required | string Example: application/vnd.monerium.api-v2+json Accept header to specify API version 2 |
Request Body schema: application/json
email required | string <email> An email address used as username to authenticate. |
Responses
Response Schema: application/json
string <email> The user's email. | |
profile | string <UUID> (UUID) ^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab... The UUID for the new profile. |
Request samples
- Payload
- CLI
{- "email": "user@example.com"
}
Response samples
- 201
- 403
{- "email": "user@example.com",
- "profile": "a78d8ff2-e51f-11ed-9e13-cacb9390199c"
}
Access token
API users can authenticate themselves by providing an OAuth 2.0 access token.
You get two types of client_id
when you register your app:
NOTE: You must use the correct client_id
when picking the authorization flow.
You get the following error when you are using the wrong client_id for the grant_type:
{
"code": 400,
"status": "Bad Request",
"message": "The client is not authorized to request a token using this method."
}
Authorization Code Flow and refresh token
For mobile and web apps that cannot securely store a client secret without exposing it to the users.
Your application acquires an authorization code
through the PKCE authorization flow.
you can use this authorization code to obtain an access_token
and a refresh_token
using grant_type=authorization_code
.
The access token can then be used to authenticate all requests for the following hour, after which the token must be refreshed using the refresh_token
with grant_type=refresh_token
.
Client Credentials Authorization
Client credentials can be used when application is acting on its own behalf. When performing requests on behalf of the user, the authorization code flow should be used instead. While the client credentials give the application the possibility to access user data today, this will change in the future, and not all endpoints will be available for client credentials.
Request an access_token
by using the client_id
and client_secret
with grant_type=client_credentials
.
The access token can then be used to authenticate all requests for the following hour, after which you can get a new one.
Request Body schema: application/x-www-form-urlencoded
client_id required | string <UUID> (AuthClientID) ^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab... The Authorization Code Flow client ID of your application. |
grant_type required | string Value: "authorization_code" |
code required | string The authorization code that was acquired from authorization flow. |
code_verifier required | string The randomized string that was used to create the |
redirect_uri required | string The same |
Responses
Response Schema: application/json
access_token | string The token that must be used to authenticate API requests. Example of using the access token in a request header:
|
expires_in | integer The duration in seconds for which the access token is valid. |
refresh_token | string A token used to obtain a new access token after the current one expires. |
token_type | string The type of token returned. In this case, it is always 'Bearer'. |
Request samples
- Auth code
- Refresh token
- Client credentials
curl --location --request POST 'https://api.monerium.dev/auth/token' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'grant_type=authorization_code' \ --data-urlencode 'client_id=a08bfa22-e6d6-11ed-891c-2ea11c960b3f' \ --data-urlencode 'code=BvTYQprmQzKt8YSn3xsTWQ' \ --data-urlencode 'code_verifier=KO2yF8CUSxU8KJepixDmXdiCOFTMMZFLDmVjNd4J2VhbFUSSgU1lXl0aYyWYK8hIZIEH9bEBDeJ78CIuNoeOIcZOybzzqFlIGedtclJ7ZTKF6GmRBZ4fdMvg6OXnf2dl' \ --data-urlencode 'redirect_uri=http://localhost:3000'
Response samples
- 200
- 400
{- "access_token": "EoWmpc2uSZar6h2bKgh",
- "expires_in": 3600,
- "refresh_token": "cowYzCowQxGPUl4p15iwKA",
- "token_type": "Bearer"
}
Customers are represented by profiles whose identifier is the profile ID created at sign up. The profile can be either personal or corporate. A profile owns most resources, such as IBANs and addresses.
Submit profile details
Submit the required compliance information to onboard a customer.
For KYC Sharing Model: Complete KYC data including details, form and verifications is required.
For KYC Reliance Model: Only the details are required. Enhanced due diligence can be added as a verification when needed.
Note:
- Ensure all required details are included based on the profile kind ('personal' or 'corporate').
- Once a profile is approved, you cannot change the profile kind.
- Profile status notifications are available through webhooks.
Authorizations:
path Parameters
profile required | string <UUID> (UUID) ^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab... Example: a78d8ff2-e51f-11ed-9e13-cacb9390199c The ID of the profile |
header Parameters
Accept required | string Example: application/vnd.monerium.api-v2+json Accept header to specify API version 2 |
Request Body schema: application/json
object Details for an individual | |||||||||||||||||||||
|
Responses
Response Schema: application/json
Request samples
- Payload
- CLI
{- "personal": {
- "firstName": "Jane",
- "lastName": "Doe",
- "address": "Pennylane 123",
- "postalCode": "7890",
- "city": "Liverpool",
- "country": "FR",
- "countryState": "Merseyside",
- "nationality": "FR",
- "birthday": "1990-05-15",
- "idDocument": {
- "number": "A1234566788",
- "kind": "passport"
}
}
}
Response samples
- 202
- 400
- 401
- 403
- 409
{ }
Submit profile form
Submit the banking form for an individual or company.
For KYC Sharing Model: Form is required.
For KYC Reliance Model: Form is not required.
Note:
- Ensure all required details are included based on the profile kind ('personal' or 'corporate').
- Once a profile is approved, you cannot change the profile kind.
- Profile status notifications are available through webhooks.
Authorizations:
path Parameters
profile required | string <UUID> (UUID) ^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab... Example: a78d8ff2-e51f-11ed-9e13-cacb9390199c The ID of the profile |
header Parameters
Accept required | string Example: application/vnd.monerium.api-v2+json Accept header to specify API version 2 |
Request Body schema: application/json
object (PersonalForm) Form for an individual | |||||||||||||||||||||
|
Responses
Response Schema: application/json
Request samples
- Payload
- CLI
{- "personal": {
- "occupation": "OCCUPATION_EMPLOYED",
- "profession": "PROF_ACCOUNTANCY",
- "fundOrigin": "FUND_ORIGIN_SALARY",
- "annualIncome": "ANNUAL_INCOME_UNDER_10K",
- "monthlyTurnover": "TURNOVER_UNDER_10K",
- "monthlyTransactionCount": "TRANSACTION_COUNT_LESS_THAN_5",
- "activities": [
- "ACTIVITY_COMMERCE_SELLING"
], - "activityOther": "farming airdrops",
- "publicFunction": true,
- "fundOwner": true
}
}
Response samples
- 202
- 400
- 401
- 403
- 409
{ }
Submit profile verifications
Submit verifications for an individual or company.
For KYC Sharing Model: Verifications are required
For KYC Reliance Model:
Enhanced due diligence can be submitted as a verification (using enhancedDueDiligence
kind).
Note:
- Ensure all required details are included based on the profile kind ('personal' or 'corporate').
- Once a profile is approved, you cannot change the profile kind.
- Profile status notifications are available through webhooks.
Authorizations:
path Parameters
profile required | string <UUID> (UUID) ^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab... Example: a78d8ff2-e51f-11ed-9e13-cacb9390199c The ID of the profile |
header Parameters
Accept required | string Example: application/vnd.monerium.api-v2+json Accept header to specify API version 2 |
Request Body schema: application/json
Array of objects (PersonalVerifications) Verifications for an individual | |||||
Array
|
Responses
Response Schema: application/json
Request samples
- Payload
- CLI
{- "personal": [
- {
- "kind": "idDocument",
- "documents": [
- {
- "name": "string",
- "side": "back",
- "fileId": "a78d8ff2-e51f-11ed-9e13-cacb9390199c"
}
]
}
]
}
Response samples
- 202
- 400
- 401
- 403
- 409
{ }
Profiles
Retrieves a list of all profiles that your application has access to.
Authorizations:
query Parameters
state | string (ProfileState) Enum: "created" "pending" "approved" "rejected" "blocked" Example: state=pending Filter the list on the state of profiles |
kind | string (ProfileKind) Enum: "corporate" "personal" Example: kind=personal Filter the list on the kind of profiles |
header Parameters
Accept required | string Example: application/vnd.monerium.api-v2+json Accept header to specify API version 2 |
Responses
Response Schema: application/json
Array of objects (Profiles) | |||||||||
Array
|
Request samples
- CLI
curl https://api.monerium.dev/profiles?state=approved&kind=personal \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -H "Accept: application/vnd.monerium.api-v2+json"
Response samples
- 200
- 401
- 403
{- "profiles": [
- {
- "id": "4f079ef8-6d26-11eb-9bc8-acde48001122",
- "kind": "personal",
- "name": "Jane Doe",
- "state": "pending"
}
]
}
Profile
Retrieves details about a single profile.
Authorizations:
path Parameters
profile required | string <UUID> (UUID) ^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab... Example: a78d8ff2-e51f-11ed-9e13-cacb9390199c The ID of the profile |
header Parameters
Accept required | string Example: application/vnd.monerium.api-v2+json Accept header to specify API version 2 |
Responses
Response Schema: application/json
id | string Unique identifier of the profile. The Profile ID is the main identifier used to represent ownership of other API resources |
kind | string (ProfileKind) Enum: "corporate" "personal" String identifier specifying the type of the profile. |
name | string The Profile name. This can be a corporate or an individual. |
state | string (ProfileState) Enum: "created" "pending" "approved" "rejected" "blocked" The state of the profile lifecycle:
|
Request samples
- CLI
curl https://api.monerium.dev/profiles/4f079ef8-6d26-11eb-9bc8-acde48001122 \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -H "Accept: application/vnd.monerium.api-v2+json"
Response samples
- 200
- 401
- 403
{- "id": "4f079ef8-6d26-11eb-9bc8-acde48001122",
- "kind": "personal",
- "name": "Jane Doe",
- "state": "pending"
}
A blockchain address, often called a public key or wallet address, is a unique identifier within a blockchain that serves as a destination for sending, receiving, or storing digital assets, such as the EURe onchain fiat token.
Link address
A blockchain address, often called a public key or wallet address, is a unique identifier within a blockchain that serves as a destination for sending, receiving, or storing digital assets, such as the EURe onchain fiat token.
The customer's address is linked to Monerium to request an IBAN for it and perform cross-chain transactions. Linking the address requires a signature to prove that the customer owns the address.
Externally Owned Accounts (EOAs) can generate offchain 65 byte signatures with the user having control of the account via a private key managed by a software wallet like MetaMask or a hardware wallet like Ledger.
Smart Contract Accounts (SCAs) or Smart Accounts (SAs), are different from EOAs as they are smart contracts (code) immutably linked to the blockchain like the Safe wallet. Monerium supports ERC-1271: Standard Signature Validation Method for Contracts, which can be implemented in two ways.
- Offchain: The signatures are collected offchain and set in the "signature" field of the request. For multisig wallets, the signatures are concatenated in a 65 byte array.
- Onchain: The signatures are collected and validated onchain by the smart contract. The "signature" field in the request is set to "0x" and the Monerium infrastructure will verify the onchain with the connected SCA. The SCA emits an event
SignMsg(bytes32 indexed msgHash)
after signing that the Monerium infrastructure validates the signature and completes connecting the wallet.
Authorizations:
header Parameters
Accept required | string Example: application/vnd.monerium.api-v2+json Accept header to specify API version 2 |
Request Body schema: application/json
profile | string <UUID> (UUID) ^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab... Profile ID that owns the address. |
address required | string (Address) ^0x[0-9a-fA-F]{40}$ The public key of the blockchain account. |
required | Ethereum (string) or Gnosis (string) or Polygon (string) or Arbitrum (string) or Sepolia (string) or Chiado (string) or Amoy (string) or Arbitrum Sepolia (string) (Chain) |
message required | string Fixed message to be signed with the private key corresponding to the given address. |
required | EOA address (string) or Safe onchain (string) or Safe offchain (string) |
Responses
Response Schema: application/json
Response Schema: application/json
Request samples
- Payload
- CLI
- JS
{- "profile": "a78d8ff2-e51f-11ed-9e13-cacb9390199c",
- "address": "0x59cFC408d310697f9D3598e1BE75B0157a072407",
- "chain": "ethereum",
- "message": "I hereby declare that I am the address owner.",
- "signature": "0x5rc0b4cb4efbb577cb0c19d1cb23c7cc4912d2138b3267ee4799c88a68e203a5d568bec12f5da2b3a416f9bb03257b472a1605bf489bcdb805c2c029c212d3a5120505f52546da16217f630339cd332d6049f11cf15a1a82939663a58b02d129c40607c0c290ace726c89c35228b6485f5d3796d6c10df5b8a0de196092797bfe7e1f"
}
Response samples
- 201
- 202
- 400
- 401
- 403
{ }
Addresses
List of addresses that have been connected. You can filter the addresses by the chain they are connected to.
Authorizations:
query Parameters
profile | string <UUID> (UUID) ^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab... Example: profile=a78d8ff2-e51f-11ed-9e13-cacb9390199c Return addresses for a given profile ID. By default the caller profile ID is used. |
Ethereum (string) or Gnosis (string) or Polygon (string) or Arbitrum (string) or Sepolia (string) or Chiado (string) or Amoy (string) or Arbitrum Sepolia (string) (Chain) Example: chain=ethereum Filter the list on the chain |
header Parameters
Accept required | string Example: application/vnd.monerium.api-v2+json Accept header to specify API version 2 |
Responses
Response Schema: application/json
Array of objects (AddressObject) | |||||||
Array
|
Request samples
- CLI
curl https://api.monerium.dev/addresses?profile=a78d8ff2-e51f-11ed-9e13-cacb9390199c&chain=ethereum \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -H "Accept: application/vnd.monerium.api-v2+json"
Response samples
- 200
- 401
- 403
{- "addresses": [
- {
- "profile": "a78d8ff2-e51f-11ed-9e13-cacb9390199c",
- "address": "0x59cFC408d310697f9D3598e1BE75B0157a072407",
- "chains": [
- "ethereum"
]
}
]
}
Address
Get details for a single address by using the address public key after the address has been successfully linked to Monerium.
Authorizations:
path Parameters
address required | string (Address) ^0x[0-9a-fA-F]{40}$ Example: 0x59cFC408d310697f9D3598e1BE75B0157a072407 The public key of the blockchain account. |
header Parameters
Accept required | string Example: application/vnd.monerium.api-v2+json Accept header to specify API version 2 |
Responses
Response Schema: application/json
profile | string <UUID> (UUID) ^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab... The profile id that owns the address |
address | string (Address) ^0x[0-9a-fA-F]{40}$ The public key of the blockchain account. |
Array of Ethereum (string) or Gnosis (string) or Polygon (string) or Arbitrum (string) or Sepolia (string) or Chiado (string) or Amoy (string) or Arbitrum Sepolia (string) (Chain) list of chains that this address has been connected to |
Request samples
- CLI
curl https://api.monerium.dev/addresses/0x59cFC408d310697f9D3598e1BE75B0157a072407 \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -H "Accept: application/vnd.monerium.api-v2+json"
Response samples
- 200
- 401
- 403
{- "profile": "a78d8ff2-e51f-11ed-9e13-cacb9390199c",
- "address": "0x59cFC408d310697f9D3598e1BE75B0157a072407",
- "chains": [
- "ethereum"
]
}
Balances
Retrieves the balance for an address on a given chain.
Authorizations:
path Parameters
address required | string (Address) ^0x[0-9a-fA-F]{40}$ Example: 0x59cFC408d310697f9D3598e1BE75B0157a072407 Address |
required | Ethereum (string) or Gnosis (string) or Polygon (string) or Arbitrum (string) or Sepolia (string) or Chiado (string) or Amoy (string) or Arbitrum Sepolia (string) (Chain) Example: ethereum Chain name |
query Parameters
currency | string (Currency) Enum: "eur" "usd" "gbp" "isk" Currency to return the balance for. If not provided |
Responses
Response Schema: application/json
address | string (Address) ^0x[0-9a-fA-F]{40}$ The public key of the blockchain account. |
Ethereum (string) or Gnosis (string) or Polygon (string) or Arbitrum (string) or Sepolia (string) or Chiado (string) or Amoy (string) or Arbitrum Sepolia (string) (Chain) | |
Array of objects The amount owned of currency |
Request samples
- curl
curl https://api.monerium.dev/balances/ethereum/0x59cFC408d310697f9D3598e1BE75B0157a072407 \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
Response samples
- 200
- 401
- 403
{- "address": "0x59cFC408d310697f9D3598e1BE75B0157a072407",
- "chain": "ethereum",
- "balances": [
- {
- "currency": "eur",
- "amount": "123.45"
}
]
}
Monerium connects any web3 wallet to any euro bank account with a personal IBAN. All incoming euro payments are automatically minted as EURe tokens to the linked address. Sending EURe to traditional bank accounts is just as easy. With a signature from the wallet, the EURe is burned and sent as a euro to any bank account from the IBAN that is linked to the address.
Request IBAN
Create an IBAN for a specified address and chain. All incoming EUR payments will automatically be routed to the linked address on that chain. Any linked address can use this IBAN for outgoing payments.
Authorizations:
header Parameters
Accept required | string Example: application/vnd.monerium.api-v2+json Accept header to specify API version 2 |
Request Body schema: application/json
address required | string (Address) ^0x[0-9a-fA-F]{40}$ The public key of the blockchain account. |
required | Ethereum (string) or Gnosis (string) or Polygon (string) or Arbitrum (string) or Sepolia (string) or Chiado (string) or Amoy (string) or Arbitrum Sepolia (string) (Chain) |
Responses
Response Schema: application/json
Request samples
- Payload
- CLI
{- "address": "0x59cFC408d310697f9D3598e1BE75B0157a072407",
- "chain": "ethereum"
}
Response samples
- 202
- 304
- 400
- 401
- 403
{ }
IBANs
List of IBANs that have been created. You can filter by the address, or the chain they are connected to.
Authorizations:
query Parameters
profile | string <UUID> (UUID) ^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab... Example: profile=a78d8ff2-e51f-11ed-9e13-cacb9390199c Return the list for the profile ID. By default the caller profile is used. |
Ethereum (string) or Gnosis (string) or Polygon (string) or Arbitrum (string) or Sepolia (string) or Chiado (string) or Amoy (string) or Arbitrum Sepolia (string) (Chain) Example: chain=ethereum Filter the list on the chain |
header Parameters
Accept required | string Example: application/vnd.monerium.api-v2+json Accept header to specify API version 2 |
Responses
Response Schema: application/json
Array of objects (IBANObject) | |||||||||||
Array
|
Request samples
- CLI
curl https://api.monerium.dev/ibans?profile=a78d8ff2-e51f-11ed-9e13-cacb9390199 \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -H "Accept: application/vnd.monerium.api-v2+json"
Response samples
- 200
- 401
- 403
{- "ibans": [
- {
- "iban": "EE127310138155512606682602",
- "bic": "EAPFESM2XXX",
- "profile": "a78d8ff2-e51f-11ed-9e13-cacb9390199c",
- "address": "0x59cFC408d310697f9D3598e1BE75B0157a072407",
- "chain": "ethereum"
}
]
}
IBAN
Get details for a single IBAN.
Authorizations:
path Parameters
iban required | string (IBAN) ^(?:[A-Z]{2}[0-9]{2}(?:\s?[0-9A-Z]{4}){1,7}\s... Example: EE127310138155512606682602 The IBAN is a unique identifier for a bank account across different countries and includes a two-letter country code, two check digits, and a number of alphanumeric characters. It may include spaces for readability but should be stored without spaces. |
header Parameters
Accept required | string Example: application/vnd.monerium.api-v2+json Accept header to specify API version 2 |
Responses
Response Schema: application/json
iban | string (IBAN) ^(?:[A-Z]{2}[0-9]{2}(?:\s?[0-9A-Z]{4}){1,7}\s... The IBAN is a unique identifier for a bank account across different countries and includes a two-letter country code, two check digits, and a number of alphanumeric characters. It may include spaces for readability but should be stored without spaces. |
bic | string The Bank Identifier Code (BIC) is an 8 or 11-character code used to identify banks and financial institutions worldwide. It includes a bank code, country code, location code, and optional branch code. |
profile | string <UUID> (UUID) ^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab... The profile id that owns the IBAN |
address | string (Address) ^0x[0-9a-fA-F]{40}$ The address that this IBAN is connected to |
Ethereum (string) or Gnosis (string) or Polygon (string) or Arbitrum (string) or Sepolia (string) or Chiado (string) or Amoy (string) or Arbitrum Sepolia (string) (Chain) |
Request samples
- CLI
curl https://api.monerium.dev/ibans/EE73I9684012278810458214196 \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -H "Accept: application/vnd.monerium.api-v2+json"
Response samples
- 200
- 401
- 403
{- "iban": "EE127310138155512606682602",
- "bic": "EAPFESM2XXX",
- "profile": "a78d8ff2-e51f-11ed-9e13-cacb9390199c",
- "address": "0x59cFC408d310697f9D3598e1BE75B0157a072407",
- "chain": "ethereum"
}
Move IBAN
Move an existing IBAN to a specified address an chain. All incoming EUR payments will automatically be routed to the address on that chain.
Authorizations:
path Parameters
iban required | string (IBAN) ^(?:[A-Z]{2}[0-9]{2}(?:\s?[0-9A-Z]{4}){1,7}\s... Example: EE127310138155512606682602 The IBAN is a unique identifier for a bank account across different countries and includes a two-letter country code, two check digits, and a number of alphanumeric characters. It may include spaces for readability but should be stored without spaces. |
header Parameters
Accept required | string Example: application/vnd.monerium.api-v2+json Accept header to specify API version 2 |
Request Body schema: application/json
address required | string (Address) ^0x[0-9a-fA-F]{40}$ The public key of the blockchain account. |
required | Ethereum (string) or Gnosis (string) or Polygon (string) or Arbitrum (string) or Sepolia (string) or Chiado (string) or Amoy (string) or Arbitrum Sepolia (string) (Chain) |
Responses
Response Schema: application/json
Request samples
- Payload
- CLI
{- "address": "0x59cFC408d310697f9D3598e1BE75B0157a072407",
- "chain": "ethereum"
}
Response samples
- 200
- 400
- 401
- 403
{ }
An order represents an instruction to transfer funds to and from a wallet address. The transfer can occur either within the blockchain ecosystem (cross-chain) or between the blockchain address and a traditional bank account via SEPA.
Place order
An order represents an instruction to transfer funds from one account to another. The transfer can occur within the blockchain ecosystem (cross-chain) or from a blockchain account to a traditional bank account via SEPA.
An order requires a signature from the wallet owner to authorize the processing of the order. The wallet owner signs a specific message to prove ownership and consent for the transaction.
Attaching a supporting document for amounts above 15,000 EUR is required. Supporting document can be an invoice or an agreement.
Authorizations:
Request Body schema: application/json
id | string <UUID> (UUID) ^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab... The unique identifier of the order. |
address required | string (Address) ^0x[0-9a-fA-F]{40}$ The address to redeem from. Can be any Monerium linked address. |
currency required | |
required | Ethereum (string) or Gnosis (string) or Polygon (string) or Arbitrum (string) or Sepolia (string) or Chiado (string) or Amoy (string) or Arbitrum Sepolia (string) (Chain) |
kind required | string Value: "redeem" Identifier specifying the nature of the order. |
amount required | string The quantity of money sent, represented as a series of digits, possibly followed by a decimal point and up to two additional digits. The amount must be a non-negative value. |
required | object (Counterpart) The counterpart represents the other party involved in a financial transaction, such as the recipient of a payment or the payer. The counterpart can be either an individual or a corporate. It includes identifying information such as account details, name, and country. |
required | IBAN (string) or Cross-chain transaction (string) A string message that the wallet owner must sign to authorize the processing of the order. This signed message verifies the consent of the wallet owner, ensuring that the transaction can proceed securely and legitimately. |
required | EOA address (string) or Safe onchain (string) or Safe offchain (string) |
memo | string (Memo) [ 5 .. 140 ] characters UTF-8 Payment reference / memo. Can be used as filter parameters when querying orders. |
supportingDocumentId | string <UUID> (UUID) ^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab... File ID, required for orders with amount greater or equal to €15,000. |
Responses
Response Schema: application/json
id required | string <UUID> ^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab... The ID of the order. |
kind required | string Enum: "issue" "redeem" Issue orders are created when payment is received and the token, e.g. EURe, is minted to the specified address and chain. Redeem orders are created for sending outgoing payments. The tokens, e.g. EURe, are burned from the specified address and chain and then sent to the Counterpart. |
profile required | string <UUID> (UUID) ^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab... Unique identifier of the profile involved in the order. |
address required | string (Address) ^0x[0-9a-fA-F]{40}$ The public key of the blockchain account. |
required | Ethereum (string) or Gnosis (string) or Polygon (string) or Arbitrum (string) or Sepolia (string) or Chiado (string) or Amoy (string) or Arbitrum Sepolia (string) (Chain) |
currency required | |
amount required | string The order amount. |
required | object (Counterpart) The counterpart represents the other party involved in a financial transaction, such as the recipient of a payment or the payer. The counterpart can be either an individual or a corporate. It includes identifying information such as account details, name, and country. |
memo required | string (Memo) [ 5 .. 140 ] characters UTF-8 Payment reference / memo. Can be used as filter parameters when querying orders. |
state required | string Enum: "placed" "pending" "processed" "rejected" The state of the order:
|
required | object |
Request samples
- Payload
- CLI
- JS
{- "id": "a78d8ff2-e51f-11ed-9e13-cacb9390199c",
- "address": "0x59cFC408d310697f9D3598e1BE75B0157a072407",
- "currency": "eur",
- "chain": "ethereum",
- "kind": "redeem",
- "amount": "1000",
- "counterpart": {
- "identifier": {
- "standard": "iban",
- "iban": "EE127310138155512606682602"
}, - "details": {
- "firstName": "Satoshi",
- "lastName": "Nakamoto",
- "country": "FR"
}
}, - "message": "Send EUR 1 to EE127310138155512606682602 at 2024-07-12T12:02:49Z",
- "signature": "0x5rc0b4cb4efbb577cb0c19d1cb23c7cc4912d2138b3267ee4799c88a68e203a5d568bec12f5da2b3a416f9bb03257b472a1605bf489bcdb805c2c029c212d3a5120505f52546da16217f630339cd332d6049f11cf15a1a82939663a58b02d129c40607c0c290ace726c89c35228b6485f5d3796d6c10df5b8a0de196092797bfe7e1f",
- "memo": "Powered by Monerium",
- "supportingDocumentId": "a78d8ff2-e51f-11ed-9e13-cacb9390199c"
}
Response samples
- 200
- 401
- 403
{- "id": "8c0fd7b1-01da-11ed-89c1-52c47a86c354",
- "kind": "redeem",
- "profile": "a78d8ff2-e51f-11ed-9e13-cacb9390199c",
- "address": "0x59cFC408d310697f9D3598e1BE75B0157a072407",
- "chain": "ethereum",
- "currency": "eur",
- "amount": "999",
- "counterpart": {
- "identifier": {
- "standard": "iban",
- "iban": "EE127310138155512606682602"
}, - "details": {
- "firstName": "Satoshi",
- "lastName": "Nakamoto",
- "country": "FR"
}
}, - "memo": "Powered by Monerium",
- "state": "rejected",
- "meta": {
- "placedAt": "2024-07-29T12:21:58.777884Z",
- "processedAt": "2024-07-29T12:21:58.777884Z",
- "rejectedReason": "Declined due to insufficient funds.",
- "supportingDocumentId": "3ebc51a8-044f-11ed-8b1f-4a76448b7b21"
}
}
Orders
Retrieves all orders for the caller profile. Query parameters can be used to filter and sort the result.
Authorizations:
query Parameters
address | string (Address) ^0x[0-9a-fA-F]{40}$ Example: address=0x798728D5410aB4FB49d2C277A49baC5048aB43ca Get all orders belonging to a specific blockchain address. |
txHash | string Example: txHash=0x692ff12125b71c167b3ea90bddb3b28edd60941851cb0cdd852cc3b6d79311cd The blockchains transaction hash. |
profile | string <UUID> (UUID) ^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab... Example: profile=123e4567-e89b-12d3-a456-426614174000 The profile ID which the order belongs to. By default the caller profile ID is used. |
memo | string (Memo) [ 5 .. 140 ] characters Example: memo=Powered by Monerium UTF-8 Payment reference / memo. Can be used as filter parameters when querying orders. |
state | string Enum: "pending" "processed" "rejected" Get all orders in a particular state:
|
header Parameters
Accept required | string Example: application/vnd.monerium.api-v2+json Accept header to specify API version 2 |
Responses
Response Schema: application/json
Array of objects (Order) | |||||||||||||||||||||||
Array
|
Request samples
- curl
curl https://api.monerium.dev/orders \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -H "Accept: application/vnd.monerium.api-v2+json"
Response samples
- 200
- 401
- 403
{- "orders": [
- {
- "id": "8c0fd7b1-01da-11ed-89c1-52c47a86c354",
- "kind": "redeem",
- "profile": "a78d8ff2-e51f-11ed-9e13-cacb9390199c",
- "address": "0x59cFC408d310697f9D3598e1BE75B0157a072407",
- "chain": "ethereum",
- "currency": "eur",
- "amount": "999",
- "counterpart": {
- "identifier": {
- "standard": "iban",
- "iban": "EE127310138155512606682602"
}, - "details": {
- "firstName": "Satoshi",
- "lastName": "Nakamoto",
- "country": "FR"
}
}, - "memo": "Powered by Monerium",
- "state": "rejected",
- "meta": {
- "placedAt": "2024-07-29T12:21:58.777884Z",
- "processedAt": "2024-07-29T12:21:58.777884Z",
- "rejectedReason": "Declined due to insufficient funds.",
- "supportingDocumentId": "3ebc51a8-044f-11ed-8b1f-4a76448b7b21"
}
}
]
}
Order
Retrieve the details of an existing order. Supply the unique order ID from either an order creation or the order list, and Monerium will return the corresponding order information
Authorizations:
path Parameters
orderId required | string The ID of the order |
header Parameters
Accept required | string Example: application/vnd.monerium.api-v2+json Accept header to specify API version 2 |
Responses
Response Schema: application/json
id required | string <UUID> ^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab... The ID of the order. |
kind required | string Enum: "issue" "redeem" Issue orders are created when payment is received and the token, e.g. EURe, is minted to the specified address and chain. Redeem orders are created for sending outgoing payments. The tokens, e.g. EURe, are burned from the specified address and chain and then sent to the Counterpart. |
profile required | string <UUID> (UUID) ^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab... Unique identifier of the profile involved in the order. |
address required | string (Address) ^0x[0-9a-fA-F]{40}$ The public key of the blockchain account. |
required | Ethereum (string) or Gnosis (string) or Polygon (string) or Arbitrum (string) or Sepolia (string) or Chiado (string) or Amoy (string) or Arbitrum Sepolia (string) (Chain) |
currency required | |
amount required | string The order amount. |
required | object (Counterpart) The counterpart represents the other party involved in a financial transaction, such as the recipient of a payment or the payer. The counterpart can be either an individual or a corporate. It includes identifying information such as account details, name, and country. |
memo required | string (Memo) [ 5 .. 140 ] characters UTF-8 Payment reference / memo. Can be used as filter parameters when querying orders. |
state required | string Enum: "placed" "pending" "processed" "rejected" The state of the order:
|
required | object |
Request samples
- curl
curl https://api.monerium.dev/orders/b48f7ca4-e51f-11ed-9e13-cacb9390199c \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -H "Accept: application/vnd.monerium.api-v2+json"
Response samples
- 200
- 401
- 403
{- "id": "8c0fd7b1-01da-11ed-89c1-52c47a86c354",
- "kind": "redeem",
- "profile": "a78d8ff2-e51f-11ed-9e13-cacb9390199c",
- "address": "0x59cFC408d310697f9D3598e1BE75B0157a072407",
- "chain": "ethereum",
- "currency": "eur",
- "amount": "999",
- "counterpart": {
- "identifier": {
- "standard": "iban",
- "iban": "EE127310138155512606682602"
}, - "details": {
- "firstName": "Satoshi",
- "lastName": "Nakamoto",
- "country": "FR"
}
}, - "memo": "Powered by Monerium",
- "state": "rejected",
- "meta": {
- "placedAt": "2024-07-29T12:21:58.777884Z",
- "processedAt": "2024-07-29T12:21:58.777884Z",
- "rejectedReason": "Declined due to insufficient funds.",
- "supportingDocumentId": "3ebc51a8-044f-11ed-8b1f-4a76448b7b21"
}
}
File upload
Upload documents for KYC onboarding and order support.
Authorizations:
Request Body schema: multipart/form-datarequired
file required | string (file) Path to the file. Maximum length filename: 100 |
Responses
Response Schema: application/json
id | string File ID |
name | string File name |
type | string File type |
size | integer File size |
hash | string |
object |
Request samples
- CLI
curl --form file='@doc.pdf' https://api.monerium.dev/files
Response samples
- 200
- 401
- 403
{- "id": "3ebc51a8-044f-11ed-8b1f-4a76448b7b21",
- "name": "doc.pdf",
- "type": "application/pdf",
- "size": 595101,
- "hash": "f2d8e62b44c59079536910eeb595f91833874a44aafc42c73c80588d91e7796b",
- "meta": {
- "uploadedBy": "6d510620-f6c9-11ec-81c1-62a51ab3b761",
- "createdAt": "2024-07-15T15:03:11.990387Z",
- "updatedAt": "2024-07-15T15:03:11.990387Z"
}
}
Subscription created Webhook
This notification is used to validate if receiver is able to handle webhook notifications.
Your webhook endpoint must respond with a 200 OK
status code to indicate successful receipt.
If the delivery fails, the subscription won't be created.
Request Body schema: application/jsonrequired
type | string Value: "subscription.created" The type of the event. |
timestamp | string <date-time> (TimeStamp) ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?Z... The timestamp in RFC3339 format. It includes the date, time to the second, and optional fractional seconds, followed by 'Z' to indicate UTC time. |
Responses
Request samples
- Payload
- CURL
{- "type": "subscription.created",
- "timestamp": "2024-07-29T12:21:58.777884Z"
}
Profile updated Webhook
This notification represents a profile's state update.
It's send as a POST request to the endpoint specified during subscription creation.
The cURL example contain the example payload and headers that are sent. Headers description:
webhook-id
: unique ID of webhook notification.webhook-timestamp
: UNIX timestamp of webhook notification.webhook-signature
: signature is a minified JSON payload encrypted using the secret key via the HMAC-SHA256 scheme, prefixed with "v1,".
Your webhook endpoint must respond with a 200 OK
status code to indicate successful receipt.
If the delivery fails, Monerium will retry with exponential backoff up to 10 times over 12 hours.
Request Body schema: application/jsonrequired
type | string Value: "profile.updated" The type of the event. |
timestamp | string <date-time> (TimeStamp) ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?Z... The timestamp in RFC3339 format. It includes the date, time to the second, and optional fractional seconds, followed by 'Z' to indicate UTC time. |
object (Profile) |
Responses
Request samples
- Payload
- CURL
{- "type": "profile.updated",
- "timestamp": "2024-07-29T12:21:58.777884Z",
- "data": {
- "id": "4f079ef8-6d26-11eb-9bc8-acde48001122",
- "kind": "personal",
- "name": "Jane Doe",
- "state": "pending"
}
}
IBAN updated Webhook
This notification represents an IBAN update.
It's send as a POST request to the endpoint specified during subscription creation.
The cURL example contain the example payload and headers that are sent. Headers description:
webhook-id
: unique ID of webhook notification.webhook-timestamp
: UNIX timestamp of webhook notification.webhook-signature
: signature is a minified JSON payload encrypted using the secret key via the HMAC-SHA256 scheme, prefixed with "v1,".
Your webhook endpoint must respond with a 200 OK
status code to indicate successful receipt.
If the delivery fails, Monerium will retry with exponential backoff up to 10 times over 12 hours.
Request Body schema: application/jsonrequired
type | string Value: "iban.updated" The type of the event. |
timestamp | string <date-time> (TimeStamp) ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?Z... The timestamp in RFC3339 format. It includes the date, time to the second, and optional fractional seconds, followed by 'Z' to indicate UTC time. |
object (IBANObject) |
Responses
Request samples
- Payload
- CURL
{- "type": "iban.updated",
- "timestamp": "2024-07-29T12:21:58.777884Z",
- "data": {
- "iban": "EE127310138155512606682602",
- "bic": "EAPFESM2XXX",
- "profile": "a78d8ff2-e51f-11ed-9e13-cacb9390199c",
- "address": "0x59cFC408d310697f9D3598e1BE75B0157a072407",
- "chain": "ethereum"
}
}
Create subscription
Create webhook subscription to receive notifications like profile update on specified endpoint. Subscription created notification is sent during subscription creation to validate if receiver is able to handle further notifications.
Authorizations:
Request Body schema: application/jsonrequired
url | string The URL where the notification will be sent. |
secret | string A secret key used to verify the authenticity of webhook notifications.
Each notification is sent with a webhook-signature header, which contains a minified JSON payload encrypted using the secret key via the HMAC-SHA256 scheme.
The secret key must be a base64-encoded, random value between 24 and 64 bytes, prefixed with |
Responses
Request samples
- Payload
- CLI
{- "secret": "whsec_mUt3nH+3wx/djdHf8RHn9yJMMiAhq10b"
}
2024-11-11:
- GET/POST /auth changes to query parameters.
- added
email
: You can prefill the email field for login and sign up steps to ensure the user uses the correct email. - added
skip_kyc
: You can skip the KYC onboarding steps in the Authorization Flow and use the the details, additional data, and verifications API endpoints after you have gotten the authorization. - changed
skip_create_account
: changed skipCreateAccount to snake case for consistency.
- added
2024-10-22:
- WIP GET /orders - We're updating the orders response to return an object with an orders key containing an array of all orders. This new structure makes it easier to handle pagination and extend the response with additional metadata in the future. We plan to release this upgrade within 5th of November.
2024-10-07:
- POST /orders - Introduced a short format IBAN in the message.
2024-10-04:
- Webhook for Subscription notification - A notification that is used to validate if webhook receiver can handle further notifications.
- PUT /profiles/{profile}/form - profile form is extracted from profile details into a separate endpoint.
- PUT /profiles/{profile}/verifications - profile verifications is extracted from profile details into a separate endpoint.
- Arbitrum and Arbitrum Sepolia chains supported.
2024-09-27
- GET /balances - added a new endpoint to retrieve the account balances. Removed the deprecated
GET /profiles/{profile}/balances
endpoint.
2024-09-09
- POST /auth - removed required
version=v2
argument from the request. Clarified required parameters for the oauth flow.
2024-08-30
- POST /auth - added required
version=v2
and Sign in with Ethereum (SIWE) flow.
2024-08-19:
- PUT /profiles/{profile}/details - added form and verifications for personal and corporate profiles (WIP).
2024-08-09:
- POST /webhooks - A new endpoint to register webhook subscription and receive notifications like profile updates.
- Webhook for Profile notifications - A webhook notification about profile updates.
2024-07-15:
- PATCH /ibans/{iban} - Changed from PUT to PATCH request.
- PUT /profiles/{profile}/details - added 409 response when submitting details for an already approved profile.
2024-06-20:
- POST /auth/signup - Added a 304 response when trying to sign up existing users. This will require explicit authorization from the user using the authorization flow.
- PUT /ibans/{iban} - New endpoint released to move existing IBANs to another wallet address.