# IG deal confirms: turning a deal reference into a result

Independent and unofficial. Not affiliated with or endorsed by any broker or platform named here. Educational only: nothing here is advice, and nothing here recommends a broker or a trade.

This is the markdown version of https://openbrokerapi.com/guides/ig-deal-confirms, written from the same records as that page.

Risk warning: CFDs and spread bets are complex instruments and come with a high risk of losing money rapidly due to leverage. You can lose money on these products, and each provider publishes its own loss figure under FCA rules. You should consider whether you understand how they work and whether you can afford to take the high risk of losing your money. Automated and API trading can amplify losses through bugs, connectivity failures and runaway orders.

A create call on IG hands back a deal reference, not a fill, and the client then reads the confirm for that reference. The rate limits, the session and the streaming cap that go with it.

- Checked: 2026-10-12
- For: Python hobbyists and quants
- About: [IG](https://openbrokerapi.com/brokers/ig)

## Steps

### 1. A create call gives you a deal reference, not a fill

This is the single thing that trips up a first IG integration. You send the request that creates a position and you get a response back with an HTTP success code. That response is a deal reference: an identifier for the instruction, not a statement that anything was filled. The instruction can still be rejected afterwards. If your code treats the create response as a fill, it will report trades that never happened, and it will double up when you retry.

Status: verified. Source: [labs.ig.com](https://labs.ig.com/reference/positions-otc.html), checked 2026-10-12.

### 2. Read the confirm for that reference before you assume anything

The second call is the one that tells you what happened. You take the deal reference from the first response and read IG's confirm endpoint for it. The confirm carries the status of the deal and, where it was rejected, a reason. Treat the pattern as two steps that both have to succeed: create, then confirm. Log the deal reference before you make the second call, so that a crash between the two leaves you something to reconcile with rather than a gap.

Status: verified. Source: [labs.ig.com](https://labs.ig.com/reference/confirms-deal-reference.html), checked 2026-10-12.

### 3. What we have not verified, and why

On 23 September 2026 IG's endpoint reference would not open when this site tried to read it, so this page was first written without it. On 12 October 2026 the reference opened at addresses ending .html, and two things were read there: the create call on /positions/otc answers with a dealReference and nothing else, and GET /confirms/{dealReference} returns a deal confirmation with a dealStatus and a reason. The rest of the endpoint level detail is still not restated on this page: request bodies, the other fields of the confirm and the full list of status and reason values. Open IG's own REST trading API reference for that detail, and treat it, not this page, as the authority. The endpoint records on this site carry what was read there, each with its date.

Status: unverified. Source: [labs.ig.com](https://labs.ig.com/rest-trading-api-reference.html), no checked date recorded.

### 4. The session expires, on a 12 hour rolling window

An IG session hands you a CST token and an X-SECURITY-TOKEN, and both are sent on subsequent requests. IG's FAQ says the two tokens stay valid for 12 hours between calls, and that all tokens are invalidated during weekend maintenance. IG's REST trading API guide gives a different figure: 6 hours at first, extended up to 72 hours while in use. Either way a long running process cannot log in once at deployment and forget about it. Build re-authentication in from the start, and do not scatter the login call through your code: one place that owns the two tokens, refreshes them, and hands them out. Read your key, username and account identifier from environment variables on your own machine. Nothing on this site ever asks you for a real key, username or password.

Status: verified. Source: [labs.ig.com](https://labs.ig.com/faq.html), checked 2026-10-12.

### 5. The rate limits that actually bite

IG publishes separate allowances for trading and non trading requests, and the confirm pattern spends two requests per order rather than one. Trading requests: 100 per minute per account. Non trading requests: 30 per minute per account. Non trading requests: 60 per minute per application. The per application limit is the one people forget. Run three accounts through one API key and they share it. A polling loop that reads prices or positions on a timer will reach 60 a minute long before your order flow reaches 100.

Status: verified. Source: [labs.ig.com](https://labs.ig.com/faq.html), checked 2026-10-12.

### 6. Streaming is capped at 40 subscriptions

If you are polling to avoid the non trading limit, streaming is the usual answer, but it has a cap of its own: 40 subscriptions. Asked whether the streaming limit can be increased, IG's FAQ answers that it may be managed by unsubscribing and subscribing as required, and asks you not to open several connections at once. That is a design constraint, not a support ticket. Forty subscriptions is the budget, so decide early which instruments and which account level updates are worth one, rather than subscribing to everything and discovering the ceiling in production.

Status: verified. Source: [labs.ig.com](https://labs.ig.com/faq.html), checked 2026-10-12.

### 7. Before you point this at money

Use a demo account. Nothing on this site has been run against a live or demo IG account by us, so every badge here stays Test pending until a recorded dated demo run exists. Reconcile rather than trust: keep every deal reference you sent and the confirm you read back for it, so that an outage leaves you a list to check rather than a guess.

Status: verified. Source: [labs.ig.com](https://labs.ig.com/faq.html), checked 2026-10-12.

## Sources

- Status: verified. Source: [IG Labs FAQ](https://labs.ig.com/faq.html), checked 2026-10-12.
- Status: verified. Source: [IG REST trading API reference: /positions/otc](https://labs.ig.com/reference/positions-otc.html), checked 2026-10-12.
- Status: verified. Source: [IG REST trading API reference: /confirms/{dealReference}](https://labs.ig.com/reference/confirms-deal-reference.html), checked 2026-10-12.
- Status: verified. Source: [IG REST trading API reference](https://labs.ig.com/rest-trading-api-reference.html), checked 2026-10-12.
- Status: verified. Source: [IG REST trading API guide](https://labs.ig.com/rest-trading-api-guide.html), checked 2026-10-12.
- Status: verified. Source: [IG-Group official Java sample, RestAPI.java (deprecated Aug 2024)](https://raw.githubusercontent.com/IG-Group/ig-webapi-java-sample/master/ig-webapi-java-client/src/main/java/com/iggroup/webapi/samples/client/RestAPI.java), checked 2026-09-23.
- Status: verified. Source: [trading-ig rest.py (community)](https://raw.githubusercontent.com/ig-python/trading-ig/master/trading_ig/rest.py), checked 2026-09-23.

## More on the IG API

- [IG API quickstart](https://openbrokerapi.com/brokers/ig/quickstart): From credentials to a first call on a demo account, step by step.
- [IG API error codes](https://openbrokerapi.com/errors/ig): 132 decoded, each with what it means, and the fix where the source gives one.
- [IG API endpoints](https://openbrokerapi.com/brokers/ig/endpoints): 49 documented, each with its method, path, parameters and source.
- [IG messages](https://openbrokerapi.com/brokers/ig/messages): 5 documented, each with its fields and source.
- [IG API page](https://openbrokerapi.com/brokers/ig): The full record: access, authentication, limits and the source for each.
- [ChatGPT trading bot with the IG API, the safe way](https://openbrokerapi.com/guides/ai-trading-bot-ig-chatgpt): Guide
- [Get your IG trade history into a spreadsheet](https://openbrokerapi.com/guides/ig-trade-history): Guide
- [IG demo API key: how to get one and what it allows](https://openbrokerapi.com/guides/ig-demo-api-key): Guide
- [IG streaming with Python](https://openbrokerapi.com/guides/ig-lightstreamer-python): Guide

## Licence and how to cite

The records behind this page are all rights reserved. This file is the page itself, at its own address, in another format. It is not part of the CC BY 4.0 downloads listed at https://openbrokerapi.com/data. Quote from it with a link to the page.

Cite as: IG deal confirms: turning a deal reference into a result. Broker API Hub, https://openbrokerapi.com/guides/ig-deal-confirms, newest check 2026-10-12.

Where you rely on a single figure, cite the source and the checked date printed beside it as well. Where this page and a broker's own documentation differ, the documentation wins.
