Memo Bank API
1.0

Welcome! You can use the Memo Bank API to check your current accounts, fetch your transactions, make payments, create IBANs or payment cards, and access all Memo Bank

If you're a third-party payment service provider complying with PSD2, perhaps you'd be more interested in our NextGenPSD2 API. If that's the case, please contact us at openbanking@memo.bank.

This is the documentation for version 1.0 of the API. Last update on Oct 10, 2022.

Base URL
https://api.memo.bank

Getting started

To get started with our API, talk to your banker first. He or she will have to activate the API feature on your Memo Bank workspace.

Once your banker has granted you an API access, you can then setup your authentication using our web interface. To do so, navigate to Company Settings > API connections in your Memo Bank workspace. Note that only owners and administrators have access to this page.

As an output of this process, you'll have three pieces allowing you to authenticate requests on the API:

  1. a certificate and its SHA256 thumbprint
  2. a secret
  3. a cryptographic private key.

Sandboxes are available as an option, please contact your banker if you need one.

Authentication

Our authentication is based on JSON Web Token (JWT) and JSON Web Signature (JWS).

No matter which coding language you're using, there should be a library to handle the cryptographic part for you. All you need is to feed it the right header and payload claims.

In the JWT header:

  • alg must be RS256, as we require a RSA-SHA256 signature.
  • typ must be JWT.
  • x5t#S256 is the SHA256 thumbprint of the certificate, which you can find on the user interface.

In the JWT payload:

  • sub must be the method of the request, followed by a space and the full path, including query params.
  • aud must be the domain on which you do the request, e.g. api.memo.bank.
  • iat must be the timestamp at which you created the token. Note that we accept only 5 seconds of difference with the server time, to mitigate clock skew.
  • jti must be a unique identifier for the token. It must be different for each request, we suggest you should use V4 UUIDs.
  • sec must be the secret information you obtained during the setup process on the user interface. This is a custom claim, not covered by the JWT specification.
  • dig#S256 must be a base64url_encoding(sha_256(body)), to be provided only if the request has a body, so for example it is not necessary on GET requests (see base64url_encoding). This is a custom claim, not covered by the JWT specification.

The JWT must then be signed with the private key you generated during the setup (see Getting started), and included in the HTTP headers of the request, as a standard bearer token Authorization: Bearer <token>.

Example JWT header and payload.

{
  "alg": "RS256",
  "typ": "JWT",
  "x5t#S256": "3A14ZcxIaasp4RHaYReL7wevm3oDzn7ZqmgqScCMY74"
}
{
  "sub": "POST /v1/transfers",
  "aud": "api.memo.bank",
  "iat": 1657055009,
  "jti": "5525620b-9dcd-4562-8c6c-60984f46cb48",
  "sec": "a2029d646c94406d2945b7a2b31e4fb3ff09a6d0ae29144380775b5471c4e846",
  "dig#S256": "lW6N_kO2gPMsMkzXyn028gWwrnaN0kJaiy7FMJcR0Ek"
}

Idempotent requests

The API supports idempotency for safely retrying requests without accidentally performing the same operation twice. This is useful when an API call is disrupted in transit and you do not receive a response. For example, if a request to create a transfer does not go through due to a network connection error, you can retry the request with the same idempotency key to guarantee that no more than one transfer is created.

To perform an idempotent request, provide an additional Idempotency-Key request header. We recommend using a V4 UUID. Reusing the key in subsequent requests will return the same response code and body as the original request along with an additional HTTP header Idempotent-Replayed: true. This applies to both success and error responses.

Idempotency keys will persist in the API for 24 hours. If an original request is still being processed when an idempotency key is reused, the API will return a 409 Conflict error. Subsequent requests must be identical to the original request or the API will return a 422 Unprocessable Entity error. We don't support setting an idempotency key on GET and DELETE requests, as these requests are inherently idempotent.

curl --request POST \
  --url https://api.memo.bank/v1/transfers \
  --header 'Authorization: Bearer ***' \
  --header 'Idempotency-Key: 19b390d1-e7d4-4e27-abe2-49cac9b41ba1' \
  --header 'Content-Type: application/json' \
  --data '{...}'

Errors

The API uses standard HTTP response codes to indicate the success or failure of requests. Codes in the 2xx range indicate success; codes in the 4xx and 5xx ranges indicate errors. The format of error messages is unified, and can be distinguished by their code key. The message is a plain English explanation of the problem.

{
  "code": "error_code",
  "message": "Example error message.",
}

Versioning and backwards compatibility

The API is versioned by path (/v1/...). When we introduce breaking changes, we will increase this version number. We'll of course continually make backward-compatible changes without increasing the version number.

Examples of things we do not consider breaking include:

  • Adding new API resources.
  • Adding new optional request parameters to existing API methods.
  • Adding new properties to existing API responses. We will occasionally move response fields in the API, and will continue to return the existing field in its previous location, while removing it from this documentation.
  • Changing the order of properties in existing API responses.
  • Changing the length or format of opaque strings, such as object IDs, error messages, and other human-readable strings. Strings that are marked as const or enum in this documentation will not change.
  • Adding new EventType or ResourceType enum values for webhooks.
  • Adding new TransactionSource enum values for transactions.

Get an account

GET /v1/accounts/{id}

Path parameters

  • id string(uuid) Required

    ID of the account.

Responses

  • 200 object

    OK

    • id string(uuid) Required

      ID of the account.

    • name string Required

      Name of the account, as seen in the Memo Bank interface.

    • status string Required

      Status of the account.

      Values are active or closed.

    • balance integer(int64) Required

      Balance of the account, in cents. It represents the available money on the account at the time of the request. Note that authorized overdrafts are not included in the balance.

    • currency string Required

      Currency of the account balance, in ISO 4217 format.

    • iban string Required

      Main IBAN of the account.

    • is_main boolean Required

      Flag indicating if this account is the main account of your workspace.

GET /v1/accounts/{id}
curl \
 -X GET https://api.memo.bank/v1/accounts/c70bd7bc-58e0-4fdb-8c1f-70186e0de587 \
 -H "Authorization: Bearer $ACCESS_TOKEN"
Response example (200)
{
  "id": "db2b50c0-a943-4eb1-a69f-fa37f112daa8",
  "name": "Main account",
  "status": "active",
  "balance": 42,
  "currency": "EUR",
  "iban": "FR7617338000017498690379033",
  "is_main": true
}

List all accounts

GET /v1/accounts

Query parameters

  • page integer(int32)

    Index of the requested page.

    Minimum value is 1. Default value is 1.

  • size integer(int32)

    Number of elements per page in response.

    Minimum value is 1, maximum value is 100. Default value is 10.

Responses

  • 200 object

    OK

    • results array[object] Required

      Elements of the page.

      • id string(uuid) Required

        ID of the account.

      • name string Required

        Name of the account, as seen in the Memo Bank interface.

      • status string Required

        Status of the account.

        Values are active or closed.

      • balance integer(int64) Required

        Balance of the account, in cents. It represents the available money on the account at the time of the request. Note that authorized overdrafts are not included in the balance.

      • currency string Required

        Currency of the account balance, in ISO 4217 format.

      • iban string Required

        Main IBAN of the account.

      • is_main boolean Required

        Flag indicating if this account is the main account of your workspace.

    • has_prev boolean Required

      Flag indicating if there is a previous page.

    • has_next boolean Required

      Flag indicating if there is a next page.

GET /v1/accounts
curl \
 -X GET https://api.memo.bank/v1/accounts \
 -H "Authorization: Bearer $ACCESS_TOKEN"
Response example (200)
{
  "results": [
    {
      "id": "db2b50c0-a943-4eb1-a69f-fa37f112daa8",
      "name": "Main account",
      "status": "active",
      "balance": 42,
      "currency": "EUR",
      "iban": "FR7617338000017498690379033",
      "is_main": true
    }
  ],
  "has_prev": true,
  "has_next": true
}

List all IBANs

GET /v1/ibans

Query parameters

  • account_id string(uuid)

    ID of the account.

  • page integer(int32)

    Index of the requested page.

    Minimum value is 1. Default value is 1.

  • size integer(int32)

    Number of elements per page in response.

    Minimum value is 1, maximum value is 100. Default value is 10.

Responses

  • 200 object

    OK

    • results array[object] Required

      Elements of the page.

      • id string(uuid) Required

        ID of the IBAN.

      • account_id string(uuid) Required

        ID of the account this IBAN belongs to.

      • iban string Required

        Actual value of the IBAN.

      • name string Required

        Name of the IBAN.

      • status string Required

        Status of the IBAN. It determines if an IBAN accepts incoming or outgoing transfers.

        Values are active or inactive.

      • type string Required

        Flag indicating if this IBAN is the main IBAN of an account, or a virtual IBAN. Please note that main IBANs cannot be updated or deleted.

        Values are main or virtual.

    • has_prev boolean Required

      Flag indicating if there is a previous page.

    • has_next boolean Required

      Flag indicating if there is a next page.

GET /v1/ibans
curl \
 -X GET https://api.memo.bank/v1/ibans \
 -H "Authorization: Bearer $ACCESS_TOKEN"
Response example (200)
{
  "results": [
    {
      "id": "fe98f29d-5165-45ff-83f9-d7aa83e970b5",
      "account_id": "de2284c3-0360-4e4a-b10d-771f75b772d4",
      "iban": "FR27590171083068762111832788",
      "name": "customer no12345",
      "status": "active",
      "type": "main"
    }
  ],
  "has_prev": true,
  "has_next": true
}

Body Required

  • account_id string(uuid) Required

    ID of the account.

  • name string Required

    Custom name of the new IBAN, as seen in the Memo Bank interface.

Responses

  • 201 object

    Created

    • id string(uuid) Required

      ID of the IBAN.

    • account_id string(uuid) Required

      ID of the account this IBAN belongs to.

    • iban string Required

      Actual value of the IBAN.

    • name string Required

      Name of the IBAN.

    • status string Required

      Status of the IBAN. It determines if an IBAN accepts incoming or outgoing transfers.

      Values are active or inactive.

    • type string Required

      Flag indicating if this IBAN is the main IBAN of an account, or a virtual IBAN. Please note that main IBANs cannot be updated or deleted.

      Values are main or virtual.

POST /v1/ibans
curl \
 -X POST https://api.memo.bank/v1/ibans \
 -H "Authorization: Bearer $ACCESS_TOKEN" \
 -H "Content-Type: application/json" \
 -d '{"account_id":"29883c3d-0b11-4c38-91b0-af9018cc5b14","name":"customer no12345"}'
Request example
{
  "account_id": "29883c3d-0b11-4c38-91b0-af9018cc5b14",
  "name": "customer no12345"
}
Response example (201)
{
  "id": "fe98f29d-5165-45ff-83f9-d7aa83e970b5",
  "account_id": "de2284c3-0360-4e4a-b10d-771f75b772d4",
  "iban": "FR27590171083068762111832788",
  "name": "customer no12345",
  "status": "active",
  "type": "main"
}

Get an IBAN

GET /v1/ibans/{id}

Path parameters

  • id string(uuid) Required

    ID of the IBAN.

Responses

  • 200 object

    OK

    • id string(uuid) Required

      ID of the IBAN.

    • account_id string(uuid) Required

      ID of the account this IBAN belongs to.

    • iban string Required

      Actual value of the IBAN.

    • name string Required

      Name of the IBAN.

    • status string Required

      Status of the IBAN. It determines if an IBAN accepts incoming or outgoing transfers.

      Values are active or inactive.

    • type string Required

      Flag indicating if this IBAN is the main IBAN of an account, or a virtual IBAN. Please note that main IBANs cannot be updated or deleted.

      Values are main or virtual.

GET /v1/ibans/{id}
curl \
 -X GET https://api.memo.bank/v1/ibans/c70bd7bc-58e0-4fdb-8c1f-70186e0de587 \
 -H "Authorization: Bearer $ACCESS_TOKEN"
Response example (200)
{
  "id": "fe98f29d-5165-45ff-83f9-d7aa83e970b5",
  "account_id": "de2284c3-0360-4e4a-b10d-771f75b772d4",
  "iban": "FR27590171083068762111832788",
  "name": "customer no12345",
  "status": "active",
  "type": "main"
}

Delete an IBAN

DELETE /v1/ibans/{id}

This operation permanently deletes an IBAN from your account.

Path parameters

  • id string(uuid) Required

    ID of the IBAN.

Responses

DELETE /v1/ibans/{id}
curl \
 -X DELETE https://api.memo.bank/v1/ibans/c70bd7bc-58e0-4fdb-8c1f-70186e0de587 \
 -H "Authorization: Bearer $ACCESS_TOKEN"

Update an IBAN

PATCH /v1/ibans/{id}

This operation allows you to update an IBAN name or change its status. Only provided parameters have an affect on the current state of an IBAN.

Path parameters

  • id string(uuid) Required

    ID of the IBAN.

Body Required

  • name string

    New IBAN name.

  • status string

    New IBAN status.

    Values are active or inactive.

Responses

  • 200 object

    OK

    • id string(uuid) Required

      ID of the IBAN.

    • account_id string(uuid) Required

      ID of the account this IBAN belongs to.

    • iban string Required

      Actual value of the IBAN.

    • name string Required

      Name of the IBAN.

    • status string Required

      Status of the IBAN. It determines if an IBAN accepts incoming or outgoing transfers.

      Values are active or inactive.

    • type string Required

      Flag indicating if this IBAN is the main IBAN of an account, or a virtual IBAN. Please note that main IBANs cannot be updated or deleted.

      Values are main or virtual.

PATCH /v1/ibans/{id}
curl \
 -X PATCH https://api.memo.bank/v1/ibans/fe98f29d-5165-45ff-83f9-d7aa83e970b5 \
 -H "Authorization: Bearer $ACCESS_TOKEN" \
 -H "Content-Type: application/json" \
 -d '{"name":"string","status":"active"}'
Request example
{
  "name": "string",
  "status": "active"
}
Response example (200)
{
  "id": "fe98f29d-5165-45ff-83f9-d7aa83e970b5",
  "account_id": "de2284c3-0360-4e4a-b10d-771f75b772d4",
  "iban": "FR27590171083068762111832788",
  "name": "customer no12345",
  "status": "active",
  "type": "main"
}

Get a transaction

GET /v1/transactions/{id}

Path parameters

  • id string(uuid) Required

    ID of the transaction.

Responses

  • 200 object

    OK

    • id string(uuid) Required

      Unique ID of the transaction.

    • reference string(uuid) Required

      Reference of the money movement. In case you initiate a transfer between two of your own accounts, both transactions (debit and credit) will have the same reference, it can be safely used to correlate them.

    • account_id string(uuid) Required

      ID of the account this transaction belongs to.

    • amount integer(int64) Required

      Amount of the transaction, in cents. The amount is always positive, use direction to give it a sign.

    • currency string Required

      Currency of the transaction amount, in ISO 4217 format.

    • direction string Required

      Direction of the transaction.

      Values are debit or credit.

    • request_date string(date-time) Required

      Date at which the transaction has been requested, in ISO8601 format.Usually the same as the execution date, except for scheduled transfers and transfer requests.

    • execution_date string(date-time) Required

      Date at which the transaction processing has started or will start, in ISO8601 format. For debits, that’s when the money is removed from the available balance of the account.

    • accounting_date string(date-time)

      Date at which the transaction has been confirmed, in ISO8601 format. For credits, that’s when the money is credited from the available balance of the account.

    • counterparty_name string Required

      Name of the counterparty.

    • Internal note attached to this transfer, visible only to yourself.

    • status string Required

      Current status of the transaction.

      Values are scheduled, authorized, confirmed, rejected, or canceled.

    • batch_id string(uuid)

      ID of the batch this transaction belongs to, if any.

    • attachment_count integer(int32)

      Number of documents attached to this transaction.

    • source object Required

      Source of the transaction. Please refer to the OpenAPI source file for more details. We may add additional possible source types over time; your application should be able to handle such additions gracefully.

      • type string

        Values are bank_account_remuneration, card_deferred, card_withdrawal, collection_incoming, collection_outgoing, collection_incoming_return, collection_outgoing_return, debt_purchase_application_fees, debt_purchase_disbursement, debt_purchase_interests, debt_purchase_repayment, diverse_operation, loan_application_fees, loan_disbursement, loan_guarantee_fee, loan_repayment, maintenance_transfer, overdraft_agios, overdraft_application_fees, subscription, transfer_incoming, transfer_outgoing, transfer_incoming_return, transfer_outgoing_return, or wire_transfer_incoming.

GET /v1/transactions/{id}
curl \
 -X GET https://api.memo.bank/v1/transactions/c70bd7bc-58e0-4fdb-8c1f-70186e0de587 \
 -H "Authorization: Bearer $ACCESS_TOKEN"
Response example (200)
{
  "id": "fe98f29d-5165-45ff-83f9-d7aa83e970b5",
  "reference": "fe98f29d-5165-45ff-83f9-d7aa83e970b5",
  "account_id": "708683cb-60f6-464a-a62f-be2e339c34aa",
  "amount": 42,
  "currency": "EUR",
  "direction": "debit",
  "request_date": "2022-05-04T09:42:00+00:00",
  "execution_date": "2022-05-04T09:42:00+00:00",
  "accounting_date": "2022-05-04T09:42:00+00:00",
  "counterparty_name": "string",
  "internal_note": "phone bill",
  "status": "scheduled",
  "batch_id": "dc47b1ee-1bd7-4072-8d1b-27ff4297b33e",
  "attachment_count": 42,
  "source": {
    "type": "bank_account_remuneration"
  }
}

List all transactions

GET /v1/transactions

Query parameters

  • account_id string(uuid)

    Filter transactions by account.

  • page integer(int32)

    Index of the requested page.

    Minimum value is 1. Default value is 1.

  • size integer(int32)

    Number of elements per page in response.

    Minimum value is 1, maximum value is 100. Default value is 10.

  • start_date string(date-time)

    Filter transactions by accounting date (inclusive greater than), in ISO8601 format.

  • end_date string(date-time)

    Filter transactions by account date (exclusive lower than), in ISO8601 format.

  • reference string(uuid)

    Filter transactions by reference.

  • Filter transactions by local IBAN. Allows for example to list all incoming and outgoing transactions that passed through a given virtual IBAN.

  • batch_id string(uuid)

    Filter transactions by transaction batch.

  • order_by string

    Sort transactions in ascending or descending order.

    Values are execution_date or -execution_date. Default value is -execution_date.

Responses

  • 200 object

    OK

    • results array[object] Required

      Elements of the page.

      • id string(uuid) Required

        Unique ID of the transaction.

      • reference string(uuid) Required

        Reference of the money movement. In case you initiate a transfer between two of your own accounts, both transactions (debit and credit) will have the same reference, it can be safely used to correlate them.

      • account_id string(uuid) Required

        ID of the account this transaction belongs to.

      • amount integer(int64) Required

        Amount of the transaction, in cents. The amount is always positive, use direction to give it a sign.

      • currency string Required

        Currency of the transaction amount, in ISO 4217 format.

      • direction string Required

        Direction of the transaction.

        Values are debit or credit.

      • request_date string(date-time) Required

        Date at which the transaction has been requested, in ISO8601 format.Usually the same as the execution date, except for scheduled transfers and transfer requests.

      • execution_date string(date-time) Required

        Date at which the transaction processing has started or will start, in ISO8601 format. For debits, that’s when the money is removed from the available balance of the account.

      • accounting_date string(date-time)

        Date at which the transaction has been confirmed, in ISO8601 format. For credits, that’s when the money is credited from the available balance of the account.

      • counterparty_name string Required

        Name of the counterparty.

      • Internal note attached to this transfer, visible only to yourself.

      • status string Required

        Current status of the transaction.

        Values are scheduled, authorized, confirmed, rejected, or canceled.

      • batch_id string(uuid)

        ID of the batch this transaction belongs to, if any.

      • attachment_count integer(int32)

        Number of documents attached to this transaction.

      • source object Required

        Source of the transaction. Please refer to the OpenAPI source file for more details. We may add additional possible source types over time; your application should be able to handle such additions gracefully.

        • type string

          Values are bank_account_remuneration, card_deferred, card_withdrawal, collection_incoming, collection_outgoing, collection_incoming_return, collection_outgoing_return, debt_purchase_application_fees, debt_purchase_disbursement, debt_purchase_interests, debt_purchase_repayment, diverse_operation, loan_application_fees, loan_disbursement, loan_guarantee_fee, loan_repayment, maintenance_transfer, overdraft_agios, overdraft_application_fees, subscription, transfer_incoming, transfer_outgoing, transfer_incoming_return, transfer_outgoing_return, or wire_transfer_incoming.

    • has_prev boolean Required

      Flag indicating if there is a previous page.

    • has_next boolean Required

      Flag indicating if there is a next page.

GET /v1/transactions
curl \
 -X GET https://api.memo.bank/v1/transactions \
 -H "Authorization: Bearer $ACCESS_TOKEN"
Response example (200)
{
  "results": [
    {
      "id": "fe98f29d-5165-45ff-83f9-d7aa83e970b5",
      "reference": "fe98f29d-5165-45ff-83f9-d7aa83e970b5",
      "account_id": "708683cb-60f6-464a-a62f-be2e339c34aa",
      "amount": 42,
      "currency": "EUR",
      "direction": "debit",
      "request_date": "2022-05-04T09:42:00+00:00",
      "execution_date": "2022-05-04T09:42:00+00:00",
      "accounting_date": "2022-05-04T09:42:00+00:00",
      "counterparty_name": "string",
      "internal_note": "phone bill",
      "status": "scheduled",
      "batch_id": "dc47b1ee-1bd7-4072-8d1b-27ff4297b33e",
      "attachment_count": 42,
      "source": {
        "type": "bank_account_remuneration"
      }
    }
  ],
  "has_prev": true,
  "has_next": true
}

List all attachments

GET /v1/attachments

Query parameters

  • transaction_id string(uuid)

    Filter attachments by transaction.

  • page integer(int32)

    Index of the requested page.

    Minimum value is 1. Default value is 1.

  • size integer(int32)

    Number of elements per page in response.

    Minimum value is 1, maximum value is 100. Default value is 10.

Responses

  • 200 object

    OK

    • results array[object] Required

      Elements of the page.

      • id string(uuid) Required

        ID of the attachment.

      • transaction_ids array[string(uuid)] Required

        IDs of the transactions this document is attached to. Contains at least one value but multiple values when the document is attached to a transaction batch.

      • filename string Required

        Name of the attached file.

      • size integer(int64) Required

        Size of the attached file in bytes.

      • mime_type string Required

        Mime type of the attached file.

      • date string(date-time) Required

        Date at which the file has been attached to a transaction.

    • has_prev boolean Required

      Flag indicating if there is a previous page.

    • has_next boolean Required

      Flag indicating if there is a next page.

GET /v1/attachments
curl \
 -X GET https://api.memo.bank/v1/attachments \
 -H "Authorization: Bearer $ACCESS_TOKEN"
Response example (200)
{
  "results": [
    {
      "id": "db2b50c0-a943-4eb1-a69f-fa37f112daa8",
      "transaction_ids": [
        "20588f37-0ca6-4abd-80ae-1964d601b516"
      ],
      "filename": "document.pdf",
      "size": 42,
      "mime_type": "application/pdf",
      "date": "2022-05-04T09:42:00+00:00"
    }
  ],
  "has_prev": true,
  "has_next": true
}

Create an attachment

POST /v1/attachments

This operation allows you to upload and attach a document to a transaction.

Body

Responses

  • 201 object

    Created

    • id string(uuid) Required

      ID of the attachment.

    • transaction_ids array[string(uuid)] Required

      IDs of the transactions this document is attached to. Contains at least one value but multiple values when the document is attached to a transaction batch.

    • filename string Required

      Name of the attached file.

    • size integer(int64) Required

      Size of the attached file in bytes.

    • mime_type string Required

      Mime type of the attached file.

    • date string(date-time) Required

      Date at which the file has been attached to a transaction.

POST /v1/attachments
curl \
 -X POST https://api.memo.bank/v1/attachments \
 -H "Authorization: Bearer $ACCESS_TOKEN" \
 -H "Content-Type: multipart/form-data" \
 -F "document=@file" \
 -F "transaction_id=3439bd9a-077a-4c02-8bd7-f14eadf8975b"
Request example
{
  "document": "@file",
  "transaction_id": "3439bd9a-077a-4c02-8bd7-f14eadf8975b"
}
Response example (201)
{
  "id": "db2b50c0-a943-4eb1-a69f-fa37f112daa8",
  "transaction_ids": [
    "20588f37-0ca6-4abd-80ae-1964d601b516"
  ],
  "filename": "document.pdf",
  "size": 42,
  "mime_type": "application/pdf",
  "date": "2022-05-04T09:42:00+00:00"
}

Get an attachment

GET /v1/attachments/{id}

This operation uses content negotiation to request either a JSON representation of the attachment, or the actual document. Check the OpenAPI specification for more details.

Path parameters

  • id string(uuid) Required

    ID of the attachment.

Responses

  • 200 object

    OK

    • id string(uuid) Required

      ID of the attachment.

    • transaction_ids array[string(uuid)] Required

      IDs of the transactions this document is attached to. Contains at least one value but multiple values when the document is attached to a transaction batch.

    • filename string Required

      Name of the attached file.

    • size integer(int64) Required

      Size of the attached file in bytes.

    • mime_type string Required

      Mime type of the attached file.

    • date string(date-time) Required

      Date at which the file has been attached to a transaction.

GET /v1/attachments/{id}
curl \
 -X GET https://api.memo.bank/v1/attachments/c70bd7bc-58e0-4fdb-8c1f-70186e0de587 \
 -H "Authorization: Bearer $ACCESS_TOKEN"
Response example (200)
{
  "id": "db2b50c0-a943-4eb1-a69f-fa37f112daa8",
  "transaction_ids": [
    "20588f37-0ca6-4abd-80ae-1964d601b516"
  ],
  "filename": "document.pdf",
  "size": 42,
  "mime_type": "application/pdf",
  "date": "2022-05-04T09:42:00+00:00"
}

Delete an attachment

DELETE /v1/attachments/{id}

Path parameters

  • id string(uuid) Required

    ID of the attachment.

Responses

DELETE /v1/attachments/{id}
curl \
 -X DELETE https://api.memo.bank/v1/attachments/c70bd7bc-58e0-4fdb-8c1f-70186e0de587 \
 -H "Authorization: Bearer $ACCESS_TOKEN"

Create a transfer

POST /v1/transfers

This operation allows you to initiate a transfer from your account to any other account on the SEPA network using its IBAN.

Body Required

  • amount integer(int64) Required

    Amount of the transfer, in cents.

    Minimum value is 1.

  • currency string Required

    Currency of the amount, in ISO 4217 format.

  • Name of the beneficiary. Will be used to create the beneficiary if one doesn't already exist with the beneficiary_iban, will be ignored otherwise. If you know the beneficiary exists, you don't need to provide a name here.

  • beneficiary_iban string Required

    IBAN of the beneficiary. Note that when you perform a transfer between your own accounts, you can't use a virtual IBAN.

  • local_iban string Required

    IBAN to be used as the source of the transfer. Can be the main IBAN of an account or a virtual IBAN. Note that when you perform a transfer between your own accounts, you can't use a virtual IBAN.

  • Determines whether to use an instant transfer (available in a few seconds on the beneficiary account), or a standard transfer (1-3 business days). By default, try to perform an instant transfer if possible for this beneficiary, and use a standard transfer otherwise.

    Values are standard_only, instant_only, or instant_if_available. Default value is instant_if_available.

  • message string

    Message attached to this transfer, visible by all involved parties.

  • Internal note attached to this transfer, visible only to yourself.

Responses

  • 200 object

    OK

    • id string(uuid) Required

      ID of the transfer

    • reference string(uuid) Required

      Unique reference, can be used to correlate with the resulting Transaction.

    • amount integer(int64) Required

      Amount of the transfer, in cents.

    • currency string Required

      Currency of the amount, in ISO 4217 format.

    • local_iban string Required

      IBAN to be used as a source, can be the main IBAN of an account or a virtual IBAN.

    • beneficiary_name string Required

      Name of the beneficiary.

    • beneficiary_iban string Required

      IBAN of the beneficiary.

    • transfer_type string Required

      Type of the transfer.

      Values are standard or instant.

    • message string

      Message attached to this transfer, visible by all involved parties.

    • Internal note attached to this transfer, visible only to yourself.

POST /v1/transfers
curl \
 -X POST https://api.memo.bank/v1/transfers \
 -H "Authorization: Bearer $ACCESS_TOKEN" \
 -H "Content-Type: application/json" \
 -d '{"amount":500,"currency":"EUR","beneficiary_name":"John Doe","beneficiary_iban":"FR2512739000308553756377J95","local_iban":"FR6430003000509825397888D64","type_strategy":"instant_if_available","message":"invoice no12345","internal_note":"phone bill"}'
Request example
{
  "amount": 500,
  "currency": "EUR",
  "beneficiary_name": "John Doe",
  "beneficiary_iban": "FR2512739000308553756377J95",
  "local_iban": "FR6430003000509825397888D64",
  "type_strategy": "instant_if_available",
  "message": "invoice no12345",
  "internal_note": "phone bill"
}
Response example (200)
{
  "id": "61b05c4f-3f72-4951-8c30-a2a9faaa5184",
  "reference": "ab004cfc-99fb-4ba9-bc9c-70982f853cb1",
  "amount": 500,
  "currency": "EUR",
  "local_iban": "FR6430003000509825397888D64",
  "beneficiary_name": "John Doe",
  "beneficiary_iban": "FR2512739000308553756377J95",
  "transfer_type": "standard",
  "message": "invoice no12345",
  "internal_note": "phone bill"
}

Handle an event

POST /event

Body Required

  • id string(uuid) Required

    ID of this event. Must be used for idempotence: an event with the same ID can be sent multiple times in case of error, but should only be processed once.

  • date string(date-time) Required

    Event creation date, in ISO8601 format.

  • event_type string Required

    Type of event. We may add additional possible types over time; your application should be able to handle such additions gracefully.

    Values are account_created, account_updated, account_closed, attachment_created, attachment_deleted, iban_created, iban_updated, iban_deleted, transaction_scheduled, transaction_authorized, transaction_confirmed, transaction_rejected, or transaction_canceled.

  • resource_type string Required

    Type of the resource referenced by this event. We may add additional possible source types over time; your application should be able to handle such additions gracefully.

    Values are account, attachment, iban, or transaction.

  • resource_id string(uuid) Required

    ID of the resource referenced by this event.

Responses

POST event
Request example
{
  "id": "ad8340e7-0675-4182-9c95-520e7c9a72a3",
  "date": "2022-05-04T09:42:00+00:00",
  "event_type": "account_created",
  "resource_type": "account",
  "resource_id": "5400f1ad-788c-4bef-9ded-4d7afd8472d7"
}