OTC Deals

Retrieve OTC deals, filter by status, currency, dates, and amount, and reconcile deal state changes using the OTC Deals API.

Retrieve OTC deals for reconciliation, operations review, or customer support by filtering the deal list and paging through the results.

Before you start

Complete these steps first:

  1. Authenticate with Verto and include the JWT in the Authorization header. See Authentication.
  2. Choose the filters your workflow needs, such as deal status, currency pair, reference ID, date range, or amount range.
  3. Set a pagination strategy using limit and skip so your integration can retrieve the full result set.
  4. Decide whether your workflow needs active deals only or archived deals as well.

When to use OTC deals

Use the OTC Deals API when you need to retrieve OTC deal records for operational workflows.

Common use cases include:

  • listing OTC deals created for a company
  • finding a deal by referenceId
  • reviewing deals by status, such as clientAccepted, expired, or settled
  • filtering deals by sell currency, buy currency, settlement date, creation date, or amount
  • including archived deals when you need a historical operational view

1. Retrieve the first page of deals

Call GET /deals with a limit and skip value. Use limit to control how many deals are returned and skip to choose where the result page starts.

curl --request GET 'https://api-otc-sandbox.vertofx.com/deals?limit=50&skip=0' \
  --header 'Authorization: Bearer <JWT>'

A successful response returns the total number of matching deals and an items array containing the current page of deal records.

{
  "totalCount": 1,
  "items": [
    {
      "id": "9f1f6c22-2d7d-4e71-a1a5-3a1d7f0c8a10",
      "createdAt": "2026-05-19T13:54:47.584Z",
      "modifiedAt": "2026-05-19T14:02:10.000Z",
      "companyId": "9134",
      "sellAmount": {
        "currency": "USD",
        "amount": 10000
      },
      "buyAmount": {
        "currency": "GBP",
        "amount": 7850
      },
      "sellToBuyFxRate": 0.785,
      "referenceId": "OTC-REF-001",
      "status": "clientAccepted",
      "isArchived": false,
      "inwardSettlementTime": {
        "date": "2026-05-20T10:00:00.000Z"
      },
      "outwardSettlementTime": {
        "date": "2026-05-20T14:00:00.000Z"
      }
    }
  ]
}

2. Filter deals for your workflow

Add query parameters to narrow the result set. You can combine filters to retrieve the exact deal records your workflow needs.

For example, this request returns client-accepted USD to GBP deals and sorts them by newest creation date first:

curl --request GET 'https://api-otc-sandbox.vertofx.com/deals?limit=50&skip=0&sellCurrency=USD&buyCurrency=GBP&status=clientAccepted&orderBy=createdDateDesc' \
  --header 'Authorization: Bearer <JWT>'

Common filters

FilterTypeUse it to
includeArchivedbooleanInclude archived deals. By default, archived deals are excluded.
sellCurrencystringReturn deals where this is the currency being sold.
buyCurrencystringReturn deals where this is the currency being bought.
referenceIdstringReturn deals matching a specific reference ID.
statusstringReturn deals with a specific deal status.
createdStartDatedate-timeReturn deals created on or after this value.
createdEndDatedate-timeReturn deals created on or before this value.
minimumAmountnumberReturn deals with an amount greater than or equal to this value.
maximumAmountnumberReturn deals with an amount less than or equal to this value.
baseCurrencystringReturn equivalent amounts in the specified currency.
orderBystringSort by creation date. Supported values are createdDateAsc and createdDateDesc. Defaults to createdDateDesc.

For the complete parameter list, see the GET /deals API reference.

3. Page through all matching deals

Use skip to move through each page of results. Keep the same limit and increase skip by the number of records already requested.

To retrieve the first 50 deals, set:

limit=50&skip=0

To retrieve the next page, set:

limit=50&skip=50

Continue requesting pages until your integration has processed the matching records returned by the API.

4. Reconcile deal status

Store id, referenceId, status, and settlement timestamps in your internal system. These fields help you match OTC deal state changes with your own records.

The status filter accepts these values:

StatusMeaning
awaitingClientResponseThe deal is waiting for the client to accept or reject it.
clientAcceptedThe client accepted the deal.
clientRejectedThe client rejected the deal.
expiredThe deal expired before acceptance.
inwardSettlementDoneThe inward settlement has been completed.
outwardSettlementDoneThe outward settlement has been completed.
settledThe deal has completed the settlement flow.

Use createdStartDate and createdEndDate when reconciling recently created deals. Use inward and outward settlement date filters when reconciling settlement activity rather than deal creation.

Troubleshooting

IssueWhat to check
The API returns 400Check query parameter names, date-time formatting, currency codes, status values, and pagination parameters.
Expected deals are missingConfirm whether archived deals should be included and set includeArchived if needed.
Pagination returns repeated recordsIncrease skip by the number of records already requested while keeping limit consistent.
Date filters return unexpected recordsUse ISO 8601 date-time values, such as 2026-05-19T13:54:47.584Z.

Next steps