That's a tricky problem...are you using VB6 or VB7?
When you say the order server sees the 15 new orders, is it correct to assume the client (API) assigns the order ID's and invokes an event when the order is submitted, or does it submit the order and generate the event when it received a reply (confirmation of the order) from the server?
If it's the latter, you could use a network sniffer to verify that all of the responses are arriving back from the server as expected.
In other cases, or perhaps in all cases, there are "issues" with COM eventing and method calls, due to the nature of its single-threading model used with VB (e.g. methods and events are delivered via the thread's "Windows Message Que" and sometimes those calls can dissapear or not appear as/when expected.
I recommend using VB7 as it has better threading support, and maybe an Ack/AckTimeout retry mechanism for delivering messages between the lowest level of the API and your client application...if you have control over the API source...if not, then you may have to try and implement some kind of timeout mechanism in the client application, then when it occurs, poll the API and fetch the open-orders list to re-sync with the event driven client.
Just some ideas...if you have more info maybe I can come up with other/better suggestions.