@abdemanaf46, should be less complex to identify an instrument as being a zero coupon bond.
The Instrument component has CouponType(1946) = 0 (Zero) and is part of all messages related to a security across all asset classes.
The InstrumentExtension component has the repeating group AttribGrp with InstAttribType(871) = 2 (Zero Coupon). It is available in a subset of message types in the pre-trade and post-trade area but not in the trade area.
@abdemanaf46, Hanno’s response should be your answer - a zero-coupon bond simply pays no interest during its lifetime but the investor receives full face value at maturity. CouponType(1946) appears in the Instrument component and thus appears in virtually every FIX security master and trading message.
What are you trying to communicate using the PaymentScheduleStep tags? Those tags were introduced to specify notional and rate steps of a payment stream, e.g. in an Interest Rate Swap. Bonds don’t have a “notional” and zero-coupons have no “rate”.
A correction that this needs to be incorporated for IRS, therefore for multi-legs we need to capture the coupontype as well. I did not see a legcoupontype field in Leg Instrument component block. Any suggestions?
@abdemanaf46: For defining a single IRS contract in FIX, don’t use the InstrumentLeg component for the streams. InstrumentLeg is intended to be used for trades involving 2 or more separate securities. An IRS contract is a single security with two payment streams and should be defined using two instances of the <StreamGrp> component within a single instance of <Instrument>.