iBanFirst API (1.4.0)

Download OpenAPI description
Languages
Servers
https://demo.ibanfirst.com/api/

Accounts

Each of your accounts has its own specific currency and IBAN. The API allows you to get details and balances about each account in real time.

Note : accounts are also labelled as wallets in the iBanFirst API.

Operations

Financial movements

The API allows you to retrieve all financial movements from your accounts.

Operations

Beneficiaries

A beneficiary can be either your own account in another bank or a third party recipient account. Beneficiaries can be created or deleted through the API.

Note : beneficiaries are also labelled as externalBankAccounts in the iBanFirst API.

Operations

Payments

Sending funds from one of your iBanFirst accounts to your own external bank account or a third-party recipient involves two steps:

  1. Generate the payment object with the 'Create payment' method.
    A unique id is assigned to each payment.

  2. Use the 'Confirm Payment' method to send the payment for processing. When you confirm a payment, make sure you have sufficient funds in your account balance.

Caution: Payments are automatically rolled to the next closest working days if not confirmed in the scheduled date of operation. If the balance of your account is not sufficient to cover the payment amount, funds may be locked-in by iBanFirst.

Operations

Trades

The API provides a deliverable FX facility and deliverable FX liquidity. You will become counterparty to iBanFirst and can market and sell deliverable FX services to corporate and private clients as well as using such services on their behalf.

FX trades are always made between two accounts of a unique counterparty. iBanFirst will automatically debit the source account and credit the delivery account at the date specified in the FX trade instructions. If the delivery date has been scheduled, the delivery is automatically processed in the morning before 00:30 am Paris time. If the delivery date is today (TOD), the funds is available on your account by the next 20mn.

A FX trades also involves an amount, which includes both the numeric amount and the currency in order to define if this amount is the nominal to be bought or sold, for example: '100000.00+GBP'.

Operations

Ask for a quote

Request

Read-only service to ask for a real-time quote.

Bodyapplication/jsonrequired
currencyPairstring(^[A-Z]{6}$)(CurrencyPair)^[A-Z]{6}$required

A String representing two concatenated Three-digit ISO 4217 Currency Code of a currency. This String only contains capitalized letters.

Example: "EURUSD"
sidestringrequired

The side representing the quote. S to sell and B to buy.

Enum"B""S"
amountobject(Amount)required

Representation of an amount.

amount.​valuestring(^((\-){?})[0-9]{12}((\.[0-9]{1-7}){?})$)(QuotedDecimal)^((\-){?})[0-9]{12}((\.[0-9]{1-7}){?})$required

A String representing a formatted floating number.

Example: "2.257"
amount.​currencystring(^[A-Z]{3}$)(Currency)^[A-Z]{3}$required

A String representing the Three-digit ISO 4217 Currency Code of a currency. This String only contains capitalized letters.

Example: "USD"
deliveryDatestring(^[0-9]{4}\-[0-9]{2}\-[0-9]{2}$)(Date)^[0-9]{4}\-[0-9]{2}\-[0-9]{2}$required

A String representing a date by its year, month and day in month.

Example: "2016-01-01"
curl -i -X POST \
  https://demo.ibanfirst.com/api/quotes \
  -H 'Content-Type: application/json' \
  -d '{
    "currencyPair": "EURUSD",
    "side": "B",
    "amount": {
      "value": "2.257",
      "currency": "USD"
    },
    "deliveryDate": "2016-01-01"
  }'

Responses

OK

Bodyapplication/json
idstring(^[A-Za-z0-9]{*}$)(ID)^[A-Za-z0-9]{*}$

A String representing the id of an object. This string contains alpha-numeric characters, including the capital ones.

Example: "Na5Dv6E"
appliedRatestring(^((\-){?})[0-9]{12}((\.[0-9]{1-7}){?})$)(QuotedDecimal)^((\-){?})[0-9]{12}((\.[0-9]{1-7}){?})$

A String representing a formatted floating number.

Example: "2.257"
currencyPairstring(^[A-Z]{6}$)(CurrencyPair)^[A-Z]{6}$

A String representing two concatenated Three-digit ISO 4217 Currency Code of a currency. This String only contains capitalized letters.

Example: "EURUSD"
sourceAmountobject(Amount)

Representation of an amount.

deliveredAmountobject(Amount)

Representation of an amount.

createdDatestring(^((19[0,99]|2[0-9]{3})\-(0[1-9]|1[012])\-([012][0-9]|3[01])\ ([01][0-9]|2[0-3])\:([0-5][0-9])\:([0-5][0-9]))$)(Datetime)^((19[0,99]|2[0-9]{3})\-(0[1-9]|1[012])\-([01...

A String representing a date by its year, month, day in month, hour, minute and second.

Example: "2016-01-01 00:00:00"
deliveryDatestring(^[0-9]{4}\-[0-9]{2}\-[0-9]{2}$)(Date)^[0-9]{4}\-[0-9]{2}\-[0-9]{2}$

A String representing a date by its year, month and day in month.

Example: "2016-01-01"
Response
application/json
{ "id": "Na5Dv6E", "appliedRate": "2.257", "currencyPair": "EURUSD", "sourceAmount": { "value": "2.257", "currency": "USD" }, "deliveredAmount": { "value": "2.257", "currency": "USD" }, "createdDate": "2016-01-01 00:00:00", "deliveryDate": "2016-01-01" }

Create trade

Request

This service allows you to execute trades on the real-time Forex market. The delivery date must be within the next two business days.

Bodyapplication/jsonrequired
currencyPairstring(^[A-Z]{6}$)(CurrencyPair)^[A-Z]{6}$required

A String representing two concatenated Three-digit ISO 4217 Currency Code of a currency. This String only contains capitalized letters.

Example: "EURUSD"
sidestringrequired

The side repressenting the trade. S to sell and B to buy.

Enum"B""S"
amountobject(Amount)required

Representation of an amount.

amount.​valuestring(^((\-){?})[0-9]{12}((\.[0-9]{1-7}){?})$)(QuotedDecimal)^((\-){?})[0-9]{12}((\.[0-9]{1-7}){?})$required

A String representing a formatted floating number.

Example: "2.257"
amount.​currencystring(^[A-Z]{3}$)(Currency)^[A-Z]{3}$required

A String representing the Three-digit ISO 4217 Currency Code of a currency. This String only contains capitalized letters.

Example: "USD"
deliveryDatestring(^[0-9]{4}\-[0-9]{2}\-[0-9]{2}$)(Date)^[0-9]{4}\-[0-9]{2}\-[0-9]{2}$required

A String representing a date by its year, month and day in month.

Example: "2016-01-01"
sourceWalletIdstring(^[A-Za-z0-9]{*}$)(ID)^[A-Za-z0-9]{*}$

A String representing the id of an object. This string contains alpha-numeric characters, including the capital ones.

Example: "Na5Dv6E"
deliveryWalletIdstring(^[A-Za-z0-9]{*}$)(ID)^[A-Za-z0-9]{*}$

A String representing the id of an object. This string contains alpha-numeric characters, including the capital ones.

Example: "Na5Dv6E"
tagstring<= 76 characters

A custom wording for the trade.

curl -i -X POST \
  https://demo.ibanfirst.com/api/trades \
  -H 'Content-Type: application/json' \
  -d '{
    "currencyPair": "EURUSD",
    "side": "B",
    "amount": {
      "value": "2.257",
      "currency": "USD"
    },
    "deliveryDate": "2016-01-01",
    "sourceWalletId": "Na5Dv6E",
    "deliveryWalletId": "Na5Dv6E",
    "tag": "string"
  }'

Responses

OK

Bodyapplication/json
idstring(^[A-Za-z0-9]{*}$)(ID)^[A-Za-z0-9]{*}$

A String representing the id of an object. This string contains alpha-numeric characters, including the capital ones.

Example: "Na5Dv6E"
appliedRatestring(^((\-){?})[0-9]{12}((\.[0-9]{1-7}){?})$)(QuotedDecimal)^((\-){?})[0-9]{12}((\.[0-9]{1-7}){?})$

A String representing a formatted floating number.

Example: "2.257"
currencyPairstring(^[A-Z]{6}$)(CurrencyPair)^[A-Z]{6}$

A String representing two concatenated Three-digit ISO 4217 Currency Code of a currency. This String only contains capitalized letters.

Example: "EURUSD"
sourceAmountobject(Amount)

Representation of an amount.

deliveredAmountobject(Amount)

Representation of an amount.

createdDatestring(^((19[0,99]|2[0-9]{3})\-(0[1-9]|1[012])\-([012][0-9]|3[01])\ ([01][0-9]|2[0-3])\:([0-5][0-9])\:([0-5][0-9]))$)(Datetime)^((19[0,99]|2[0-9]{3})\-(0[1-9]|1[012])\-([01...

A String representing a date by its year, month, day in month, hour, minute and second.

Example: "2016-01-01 00:00:00"
deliveryDatestring(^[0-9]{4}\-[0-9]{2}\-[0-9]{2}$)(Date)^[0-9]{4}\-[0-9]{2}\-[0-9]{2}$

A String representing a date by its year, month and day in month.

Example: "2016-01-01"
tagstring<= 76 characters

A custom wording for the trade.

Response
application/json
{ "id": "Na5Dv6E", "appliedRate": "2.257", "currencyPair": "EURUSD", "sourceAmount": { "value": "2.257", "currency": "USD" }, "deliveredAmount": { "value": "2.257", "currency": "USD" }, "createdDate": "2016-01-01 00:00:00", "deliveryDate": "2016-01-01", "tag": "string" }

Get trades by status

Request

Retrieve the list of executed trades filtered by status.

Path
statusstringrequired

A code representing the status of the trades you want to get.

Enum"all""planified""rejected""finalized""canceled""refused""blocked""waitingconfirmation"
Query
fromDatestring(YYYY-MM-DD)

The starting date to search trades.

toDatestring(YYYY-MM-DD)

The ending date to search trades.

pagestring

Index of the page.

Default "1"
per_pagestring

Number of items returned.

Default "50"
sortstring

A code representing the order of rendering objects.

Enum"ASC""DESC"
curl -i -X GET \
  'https://demo.ibanfirst.com/api/trades/_{status}?fromDate=string&page=1&per_page=50&sort=ASC&toDate=string'

Responses

OK

Bodyapplication/jsonArray [
idstring(^[A-Za-z0-9]{*}$)(ID)^[A-Za-z0-9]{*}$

A String representing the id of an object. This string contains alpha-numeric characters, including the capital ones.

Example: "Na5Dv6E"
appliedRatestring(^((\-){?})[0-9]{12}((\.[0-9]{1-7}){?})$)(QuotedDecimal)^((\-){?})[0-9]{12}((\.[0-9]{1-7}){?})$

A String representing a formatted floating number.

Example: "2.257"
currencyPairstring(^[A-Z]{6}$)(CurrencyPair)^[A-Z]{6}$

A String representing two concatenated Three-digit ISO 4217 Currency Code of a currency. This String only contains capitalized letters.

Example: "EURUSD"
sourceAmountobject(Amount)

Representation of an amount.

deliveredAmountobject(Amount)

Representation of an amount.

createdDatestring(^((19[0,99]|2[0-9]{3})\-(0[1-9]|1[012])\-([012][0-9]|3[01])\ ([01][0-9]|2[0-3])\:([0-5][0-9])\:([0-5][0-9]))$)(Datetime)^((19[0,99]|2[0-9]{3})\-(0[1-9]|1[012])\-([01...

A String representing a date by its year, month, day in month, hour, minute and second.

Example: "2016-01-01 00:00:00"
deliveryDatestring(^[0-9]{4}\-[0-9]{2}\-[0-9]{2}$)(Date)^[0-9]{4}\-[0-9]{2}\-[0-9]{2}$

A String representing a date by its year, month and day in month.

Example: "2016-01-01"
tagstring<= 76 characters

A custom wording for the trade.

]
Response
application/json
[ { "id": "Na5Dv6E", "appliedRate": "2.257", "currencyPair": "EURUSD", "sourceAmount": {}, "deliveredAmount": {}, "createdDate": "2016-01-01 00:00:00", "deliveryDate": "2016-01-01", "tag": "string" } ]

Get trade details

Request

Retrieve the details of a specific trade.

Path
idstringrequired

The code identifying the trade you want.

curl -i -X GET \
  'https://demo.ibanfirst.com/api/trades/{id}'

Responses

OK

Bodyapplication/json
idstring(^[A-Za-z0-9]{*}$)(ID)^[A-Za-z0-9]{*}$

A String representing the id of an object. This string contains alpha-numeric characters, including the capital ones.

Example: "Na5Dv6E"
appliedRatestring(^((\-){?})[0-9]{12}((\.[0-9]{1-7}){?})$)(QuotedDecimal)^((\-){?})[0-9]{12}((\.[0-9]{1-7}){?})$

A String representing a formatted floating number.

Example: "2.257"
currencyPairstring(^[A-Z]{6}$)(CurrencyPair)^[A-Z]{6}$

A String representing two concatenated Three-digit ISO 4217 Currency Code of a currency. This String only contains capitalized letters.

Example: "EURUSD"
sourceAmountobject(Amount)

Representation of an amount.

deliveredAmountobject(Amount)

Representation of an amount.

createdDatestring(^((19[0,99]|2[0-9]{3})\-(0[1-9]|1[012])\-([012][0-9]|3[01])\ ([01][0-9]|2[0-3])\:([0-5][0-9])\:([0-5][0-9]))$)(Datetime)^((19[0,99]|2[0-9]{3})\-(0[1-9]|1[012])\-([01...

A String representing a date by its year, month, day in month, hour, minute and second.

Example: "2016-01-01 00:00:00"
deliveryDatestring(^[0-9]{4}\-[0-9]{2}\-[0-9]{2}$)(Date)^[0-9]{4}\-[0-9]{2}\-[0-9]{2}$

A String representing a date by its year, month and day in month.

Example: "2016-01-01"
tagstring<= 76 characters

A custom wording for the trade.

Response
application/json
{ "id": "Na5Dv6E", "appliedRate": "2.257", "currencyPair": "EURUSD", "sourceAmount": { "value": "2.257", "currency": "USD" }, "deliveredAmount": { "value": "2.257", "currency": "USD" }, "createdDate": "2016-01-01 00:00:00", "deliveryDate": "2016-01-01", "tag": "string" }

Documents

The API allows you to access your documents stored on the iBanFirst platform through a one-time access link.

Documents must be generated on the platform before being available through the API.

Operations

Webhooks

1. WHAT IS A WEBHOOK ?

  • Webhooks are events based real-time notifications providing updates on transactions and removing the need for periodic polling.

  • Webhook notifications are sent as HTTPS POST requests to a URL of your choice.

2. SUBSCRIPTIONS

  • Each webhook subscription allows you to receive notifications for one or more event types.

  • You may have multiple active subscriptions at the same time.

  • Available payment events : PAYMENT_CREATED PAYMENT_PLANIFIED PAYMENT_FINALIZED PAYMENT_WAITING_SIGNATURE PAYMENT_AWAITING_CONFIRMATION PAYMENT_CANCELED PAYMENT_BLOCKED PAYMENT_WAITING_JUSTIFICATION

  • Trade events : coming soon

3. IMPLEMENTATION

  • Delivery and retries
    • Webhooks may not be delivered in order, so your implementation should not assume sequential delivery.
    • If a notification fails (error code HTTP 400 or 500), it will be retried twice, with a 60-second delay between attempts. This means a maximum of 3 delivery attempts per event.
  • Acknowledgement
    • We recommend responding with a HTTP 204 code (No Content) to acknowledge receipt of a notification.
  • Whitelisting
    • To ensure webhooks reach your URL, you may need to whitelist the following IP (production and demo): 51.158.86.1.

4. SECURITY

  • Each webhook notification includes an HMAC-256 signature in the request header to let you validate its authenticity.
    • To verify the signature, recontruct the signed message by concatenating the exact timestamp and request raw body as received : x-ibanfirst-timestamp.{Body}.
    • Compute an HMAC-SHA256 hash of this string using the subscription secret key and compare the result with the x-ibanfirst-signature provided in the request header.
    • You must reject the notification if the signatures does not match.
  • Recommended best practices :
    • Always validate the signature before processing any webhook.
    • Webhook payloads must be stored on a private server to protect sensitive data.

5. WEBHOOK NOTIFICATION CONTENT

For a payment (see get payment details) :

{
 "event": "PAYMENT_PLANIFIED",
 "payload": {
    "id": "Mck0OMkzOQ",
    "status": "planified",
    "createdDate": "2025-12-03 10:45:25",
    "desiredExecutionDate": "2025-12-03",
    "executionDate": null,
    "amount": {
      "value": "11.00",
      "currency": "EUR"
    },
    "tag": "Automation",
    "externalBankAccountId": "NmgdNDU5",
    "sourceWalletId": "NjgtNjgz",
    "sourceWalletNumber": null,
    "communication": "documentation ",
    "priorityPaymentOption": "normal",
    "feePaymentOption": "SEPA",
    "feePaymentAmount": {
      "value": "1.00",
      "currency": "EUR"
    }
  },
"webhookId": "e35b6e8d-67ef-4973-945d-c3190a60d0aa"
}
Operations

Logs

Operations