Skip to main content

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).

Getting started

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 privileges

Access 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.

Welcome

Returns a welcome message with a link to documentation and socials.

Responses

Response Schema: application/json
hello
string
docs
string
twitter
string

Response samples

Content type
application/json
{}

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:
BearerAuth

Responses

Response Schema: application/json
Array
currency
string (Currency)
Enum: "eur" "usd" "gbp" "isk"

Three-letter ISO currency code, in lowercase.

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

curl https://api.monerium.dev/tokens \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Response samples

Content type
application/json
[
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    }
]

Authentication

Endpoints that handle user creation, authorization, and authentication.

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-urlencoded
required
One of
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 code_verifier. You must use the same code_verifier when requesting an access token.

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.
If present, must match one of the registered redirect URLs exactly.

The Authorization Code will be available in the code URL parameter, like so: https://your-app.com/monerium?code=AUTHORIZATION_CODE

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 address property. Must include the 0x prefix.

email
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

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

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:
BearerAuth

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.

email
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 https://api.monerium.dev/auth/context \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Response samples

Content type
application/json
{
  • "userId": "a78d8ff2-e51f-11ed-9e13-cacb9390199c",
  • "email": "user@example.com",
  • "name": "user@example.com",
  • "roles": [ ],
  • "auth": {
    },
  • "defaultProfile": "a78d8ff2-e51f-11ed-9e13-cacb9390199c",
  • "profiles": [
    ]
}

Sign up

Requires extra privileges

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:
BearerAuth
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
email
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

Content type
application/json
{
  • "email": "user@example.com"
}

Response samples

Content type
application/json
{
  • "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:

client IDs

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
One of
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 code_challenge when a customer/user enters the partner authorization flow. Read more about code challenges for PKCE

redirect_uri
required
string

The same redirect_uri that was used to acquire the authorization_code.

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:

Authorization: Bearer EoWmpc2uSZar6h2bKgh
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

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

Content type
application/json
{
  • "access_token": "EoWmpc2uSZar6h2bKgh",
  • "expires_in": 3600,
  • "refresh_token": "cowYzCowQxGPUl4p15iwKA",
  • "token_type": "Bearer"
}

Profiles

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

Requires extra privileges

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:
BearerAuth
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
One of
object

Details for an individual

firstName
required
string

First name

lastName
required
string

Last name

address
required
string

Street and building number where the person lives.

postalCode
required
string

Postal code where the person lives.

city
required
string

City where the person lives.

country
required
string (CountryCode) = 2 characters

Two-letter country code ISO 3166-1 alpha-2 where the person lives

countryState
string

State/County where the person lives.

nationality
required
string (CountryCode) = 2 characters

Two-letter country code ISO 3166-1 alpha-2 for the person's nationality.

birthday
required
string <date> ^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|1\d|2\d|3[01])...

The person's birthday in the format "YYYY-MM-DD" where:

  • YYYY = date-fullyear = 4DIGIT
  • MM = date-month = 2DIGIT; 01-12
  • DD = date-mday = 2DIGIT; 01-28, 01-29, 01-30, 01-31 based on month/year.
required
object (IdDocument)

Details of the ID document used to verify the person's identity.

Responses

Response Schema: application/json
object

Request samples

Content type
application/json
Example
{
  • "personal": {
    }
}

Response samples

Content type
application/json
{ }

Submit profile form

Requires extra privileges

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:
BearerAuth
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
One of
object (PersonalForm)

Form for an individual

occupation
required
string
Enum: "OCCUPATION_STUDENT" "OCCUPATION_EMPLOYED" "OCCUPATION_SELF_EMPLOYED" "OCCUPATION_UNEMPLOYED" "OCCUPATION_RETIRED"

The occupation code representing the individual's current employment status.

profession
required
string
Enum: "PROF_ACCOUNTANCY" "PROF_ADMINISTRATIVE" "PROF_AGRICULTURE" "PROF_ARTS_MEDIA" "PROF_BROKER_DEALER" "PROF_CATERING_HOSPITALITY" "PROF_CHARITY" "PROF_CONSTRUCTION_REAL_ESTATE" "PROF_DEALER_HIGH_VALUE_GOODS" "PROF_DEALER_PRECIOUS_METALS" "PROF_EDUCATION" "PROF_EMERGENCY_SERVICES" "PROF_EXTRACTIVE_INDUSTRY" "PROF_FIN_SERVICES_BANKING" "PROF_FIN_SERVICES_INSURANCE" "PROF_FIN_SERVICES_OTHER" "PROF_FIN_SERVICES_PRIVATE_BANKING" "PROF_GAMBLING" "PROF_GOVERNMENT" "PROF_HEALTHCARE_MEDICAL" "PROF_INFORMATION_TECHNOLOGY" "PROF_LEGAL" "PROF_MANUFACTURING" "PROF_MARKETING" "PROF_MILITARY_DEFENCE" "PROF_MONEY_SERVICE_BUSINESS" "PROF_PENSIONER" "PROF_PUBLIC_PROCUREMENT" "PROF_RETAIL_SALES"

The profession code representing the individual's professional field.

fundOrigin
required
string
Enum: "FUND_ORIGIN_SALARY" "FUND_ORIGIN_DIVIDENDS" "FUND_ORIGIN_INHERITANCE" "FUND_ORIGIN_SAVINGS" "FUND_ORIGIN_INVESTMENT" "FUND_ORIGIN_GIFT" "FUND_ORIGIN_MINING" "FUND_ORIGIN_REAL_ESTATE" "FUND_ORIGIN_LOAN"

The code representing the origins of the individual's funds.

annualIncome
required
string
Enum: "ANNUAL_INCOME_UNDER_10K" "ANNUAL_INCOME_10K_TO_50K" "ANNUAL_INCOME_50K_TO_150K" "ANNUAL_INCOME_150K_TO_300K" "ANNUAL_INCOME_OVER_300K"

The code representing the individual's annual income range.

monthlyTurnover
required
string
Enum: "TURNOVER_UNDER_10K" "TURNOVER_10K_TO_50K" "TURNOVER_50K_TO_150K" "TURNOVER_150K_TO_500K" "TURNOVER_OVER_500K"

The code representing the individual's monthly turnover range.

monthlyTransactionCount
required
string
Enum: "TRANSACTION_COUNT_LESS_THAN_5" "TRANSACTION_COUNT_5_TO_50" "TRANSACTION_COUNT_50_TO_100" "TRANSACTION_COUNT_100_TO_200" "TRANSACTION_COUNT_OVER_200"

The code representing the number of transactions the individual makes each month.

activities
required
Array of strings
Items Enum: "ACTIVITY_COMMERCE_SELLING" "ACTIVITY_COMMERCE_BUYING" "ACTIVITY_INVESTING_CRYPTO" "ACTIVITY_OTHER"

List of codes representing the individual's financial activities.

activityOther
string

A description of the other activity if the code ACTIVITY_OTHER is chosen.

publicFunction
required
boolean

Indicates whether the individual holds a politically exposed person (PEP) status.

fundOwner
required
boolean

Indicates whether the individual is the owner of the funds.

Responses

Response Schema: application/json
object

Request samples

Content type
application/json
Example
{
  • "personal": {
    }
}

Response samples

Content type
application/json
{ }

Submit profile verifications

Requires extra privileges

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:
BearerAuth
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
One of
Array of objects (PersonalVerifications)

Verifications for an individual

Array
kind
required
string
Enum: "idDocument" "facialSimilarity" "proofOfResidency" "deviceIntelligence" "enhancedDueDiligence"

The type of the verification.

required
Array of objects

Responses

Response Schema: application/json
object

Request samples

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

Response samples

Content type
application/json
{ }

Profiles

Retrieves a list of all profiles that your application has access to.

Authorizations:
BearerAuth
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
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:

  • created: The profile has been created but no details have been submitted.
  • pending: The details have been submitted and are being processed.
  • approved: The profile is active and all Monerium services are supported.
  • rejected: The applicant details did not meet the compliance requirements of Monerium. Details can be fixed and re-submitted for processing.
  • blocked: Monerium is unable to offer the applicant services because of compliance reasons. Details cannot be re-submitted.

Request samples

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

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

Profile

Retrieves details about a single profile.

Authorizations:
BearerAuth
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:

  • created: The profile has been created but no details have been submitted.
  • pending: The details have been submitted and are being processed.
  • approved: The profile is active and all Monerium services are supported.
  • rejected: The applicant details did not meet the compliance requirements of Monerium. Details can be fixed and re-submitted for processing.
  • blocked: Monerium is unable to offer the applicant services because of compliance reasons. Details cannot be re-submitted.

Request samples

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

Content type
application/json
{
  • "id": "4f079ef8-6d26-11eb-9bc8-acde48001122",
  • "kind": "personal",
  • "name": "Jane Doe",
  • "state": "pending"
}

Addresses

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.

Addresses

List of addresses that have been connected. You can filter the addresses by the chain they are connected to.

Authorizations:
BearerAuth
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
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

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

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

Address

Get details for a single address by using the address public key after the address has been successfully linked to Monerium.

Authorizations:
BearerAuth
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

curl https://api.monerium.dev/addresses/0x59cFC408d310697f9D3598e1BE75B0157a072407 \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Accept: application/vnd.monerium.api-v2+json"

Response samples

Content type
application/json
{
  • "profile": "a78d8ff2-e51f-11ed-9e13-cacb9390199c",
  • "address": "0x59cFC408d310697f9D3598e1BE75B0157a072407",
  • "chains": [
    ]
}

Balances

Retrieves the balance for an address on a given chain.

Authorizations:
BearerAuth
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 eur is used. Can be used multiple times to get multiple currencies.

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 https://api.monerium.dev/balances/ethereum/0x59cFC408d310697f9D3598e1BE75B0157a072407 \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Response samples

Content type
application/json
{
  • "address": "0x59cFC408d310697f9D3598e1BE75B0157a072407",
  • "chain": "ethereum",
  • "balances": [
    ]
}

IBANs

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

Requires extra privileges

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:
BearerAuth
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
object

Request samples

Content type
application/json
{
  • "address": "0x59cFC408d310697f9D3598e1BE75B0157a072407",
  • "chain": "ethereum"
}

Response samples

Content type
application/json
{ }

IBANs

List of IBANs that have been created. You can filter by the address, or the chain they are connected to.

Authorizations:
BearerAuth
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
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

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

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

IBAN

Get details for a single IBAN.

Authorizations:
BearerAuth
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

curl https://api.monerium.dev/ibans/EE73I9684012278810458214196 \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Accept: application/vnd.monerium.api-v2+json"

Response samples

Content type
application/json
{
  • "iban": "EE127310138155512606682602",
  • "bic": "EAPFESM2XXX",
  • "profile": "a78d8ff2-e51f-11ed-9e13-cacb9390199c",
  • "address": "0x59cFC408d310697f9D3598e1BE75B0157a072407",
  • "chain": "ethereum"
}

Move IBAN

Requires extra privileges

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:
BearerAuth
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
object

Request samples

Content type
application/json
{
  • "address": "0x59cFC408d310697f9D3598e1BE75B0157a072407",
  • "chain": "ethereum"
}

Response samples

Content type
application/json
{ }

Orders

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:
BearerAuth
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
string (Currency)
Enum: "eur" "usd" "gbp" "isk"

Three-letter ISO currency code, in lowercase.

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.

Redeem order is when tokens are burned on blockchain and sent to bank.

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
string (Currency)
Enum: "eur" "usd" "gbp" "isk"

Three-letter ISO currency code, in lowercase.

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:

  • placed: The order has been created but not yet processed.
  • pending: The order is awaiting fulfillment (e.g., review, minting/burning tokens, or sending/receiving SEPA payment).
  • processed: The order has been completed successfully.
  • rejected: The order was rejected, possibly due to compliance reasons or insufficient funds.
required
object

Request samples

Content type
application/json
{
  • "id": "a78d8ff2-e51f-11ed-9e13-cacb9390199c",
  • "address": "0x59cFC408d310697f9D3598e1BE75B0157a072407",
  • "currency": "eur",
  • "chain": "ethereum",
  • "kind": "redeem",
  • "amount": "1000",
  • "counterpart": {
    },
  • "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

Content type
application/json
{
  • "id": "8c0fd7b1-01da-11ed-89c1-52c47a86c354",
  • "kind": "redeem",
  • "profile": "a78d8ff2-e51f-11ed-9e13-cacb9390199c",
  • "address": "0x59cFC408d310697f9D3598e1BE75B0157a072407",
  • "chain": "ethereum",
  • "currency": "eur",
  • "amount": "999",
  • "counterpart": {
    },
  • "memo": "Powered by Monerium",
  • "state": "rejected",
  • "meta": {
    }
}

Orders

Retrieves all orders for the caller profile. Query parameters can be used to filter and sort the result.

Authorizations:
BearerAuth
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:

  • pending: The order is being processed (e.g., review, minting/burning tokens, or sending/receiving SEPA payment).
  • processed: The order has been completed successfully.
  • rejected: The order was rejected, possibly due to compliance reasons or insufficient funds.
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
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
string (Currency)
Enum: "eur" "usd" "gbp" "isk"

Three-letter ISO currency code, in lowercase.

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:

  • placed: The order has been created but not yet processed.
  • pending: The order is awaiting fulfillment (e.g., review, minting/burning tokens, or sending/receiving SEPA payment).
  • processed: The order has been completed successfully.
  • rejected: The order was rejected, possibly due to compliance reasons or insufficient funds.
required
object

Request samples

curl https://api.monerium.dev/orders \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Accept: application/vnd.monerium.api-v2+json"

Response samples

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

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:
BearerAuth
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
string (Currency)
Enum: "eur" "usd" "gbp" "isk"

Three-letter ISO currency code, in lowercase.

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:

  • placed: The order has been created but not yet processed.
  • pending: The order is awaiting fulfillment (e.g., review, minting/burning tokens, or sending/receiving SEPA payment).
  • processed: The order has been completed successfully.
  • rejected: The order was rejected, possibly due to compliance reasons or insufficient funds.
required
object

Request samples

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

Content type
application/json
{
  • "id": "8c0fd7b1-01da-11ed-89c1-52c47a86c354",
  • "kind": "redeem",
  • "profile": "a78d8ff2-e51f-11ed-9e13-cacb9390199c",
  • "address": "0x59cFC408d310697f9D3598e1BE75B0157a072407",
  • "chain": "ethereum",
  • "currency": "eur",
  • "amount": "999",
  • "counterpart": {
    },
  • "memo": "Powered by Monerium",
  • "state": "rejected",
  • "meta": {
    }
}

Files

Share files with Monerium.

File upload

Upload documents for KYC onboarding and order support.

Authorizations:
BearerAuth
Request Body schema: multipart/form-data
required
file
required
string (file)

Path to the file.

Maximum length filename: 100
Maximum size: 5 MB
Allowed file types: PDF, JPEG

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

curl --form file='@doc.pdf' https://api.monerium.dev/files

Response samples

Content type
application/json
{
  • "id": "3ebc51a8-044f-11ed-8b1f-4a76448b7b21",
  • "name": "doc.pdf",
  • "type": "application/pdf",
  • "size": 595101,
  • "hash": "f2d8e62b44c59079536910eeb595f91833874a44aafc42c73c80588d91e7796b",
  • "meta": {
    }
}

Webhooks

Receive notifications with webhooks.

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/json
required
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

Content type
application/json
{
  • "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/json
required
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

Content type
application/json
{
  • "type": "profile.updated",
  • "timestamp": "2024-07-29T12:21:58.777884Z",
  • "data": {
    }
}

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/json
required
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

Content type
application/json
{
  • "type": "iban.updated",
  • "timestamp": "2024-07-29T12:21:58.777884Z",
  • "data": {
    }
}

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:
BearerAuth
Request Body schema: application/json
required
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 whsec_.

Responses

Request samples

Content type
application/json
{}

Changelog

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.

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:

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:

2024-08-09:

2024-07-15:

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.