Back to .md Directory

IATA BCBP Standard Compliance

**Implementation Guide:** IATA Resolution 792 - Bar Coded Boarding Pass (BCBP)

May 2, 2026
1 downloads
9 views
ai
View source

IATA BCBP Standard Compliance

Standard Information

Implementation Guide: IATA Resolution 792 - Bar Coded Boarding Pass (BCBP)
Version: 8 (Effective: June 1, 2020) βœ…
Previous Version: Version 7 Implementation Guide
Official Reference: IATA Common Use Standards

Compliance Status

βœ… Fully Implemented

Mandatory Items (60 characters)

  • Format Code (1 char) - 'M' or 'S'
  • Number of Legs (1 char)
  • Passenger Name (20 chars)
  • Electronic Ticket Indicator (1 char)
  • PNR Code (7 chars)
  • From City Airport Code (3 chars)
  • To City Airport Code (3 chars)
  • Operating Carrier Designator (3 chars)
  • Flight Number (5 chars)
  • Date of Flight - Julian Date (3 chars)
  • Compartment Code (1 char)
  • Seat Number (4 chars)
  • Check-In Sequence Number (5 chars)
  • Passenger Status (1 char)
  • Field Size of Variable Size Field (2 chars - hex)

Conditional Items

  • Beginning of Version Number (1 char)
  • Version Number (1 char)
  • Unique Conditional Items Size (2 chars - hex)
  • Passenger Description / Gender Code (1 char) - Version 8 compliant with "X" and "U" support
  • Source of Check-In (1 char)
  • Source of Boarding Pass Issuance (1 char)
  • Date of Issue of Boarding Pass (4 chars)
  • Document Type (1 char)
  • Airline Designator of Boarding Pass Issuer (3 chars)
  • Baggage Tag License Plate Numbers (13 chars each, up to 3 tags)
  • Airline Numeric Code (3 chars)
  • Document Serial Number (10 chars)
  • Selectee Indicator (1 char)
  • International Document Verification (1 char)
  • Marketing Carrier (3 chars)
  • Frequent Flyer Airline Designator (3 chars)
  • Frequent Flyer Number (16 chars)
  • ID/AD Indicator (1 char)
  • Free Baggage Allowance (3 chars)
  • Fast Track (1 char)
  • Airline Individual Use (variable)

Repeated Conditional Items (for additional legs)

  • All segment fields properly parsed from conditional section

Security Data

  • Beginning of Security Data indicator '>' (1 char)
  • Type of Security Data (1 char)
  • Length of Security Data (2 chars - hex)
  • Security Data (variable length)

βœ… Supported Barcode Formats

According to IATA Resolution 792, BCBP can be encoded in:

  • PDF417 (most common)
  • Aztec
  • QR Code
  • Data Matrix

Note: This library decodes the ASCII data structure regardless of the barcode symbology used.

πŸ“‹ Version Information

Important: There are two different "versions" related to BCBP:

  1. IATA Implementation Guide Version (Document)

    • Current: Version 8 (June 1, 2020) βœ…
    • Previous: Version 7 (June 1, 2018)
    • This is the specification document version
  2. Boarding Pass Format Version (Data Field)

    • Single character field in the boarding pass data
    • Located at the start of conditional items
    • Values: "5", "6", "7", etc.
    • Indicates conditional items structure version
    • Parsed and stored in BoardingPass.version

πŸ†• Version 8 Changes (Effective June 1, 2020)

Field 15 - Passenger Description / Gender Code:

  • Added "X" = Unspecified gender
  • Added "U" = Undisclosed gender
  • Existing codes (M, F, 0-9) remain valid

Status: βœ… Fully supported - the library already parses this field correctly

⚠️ Known Limitations

  1. Field Validation: The parser does not validate field values against IATA code tables (e.g., airport codes, carrier codes)
  2. Date Conversion: Julian dates are not automatically converted to calendar dates
  3. Year Rollover: End-of-year date handling (Dec 31 β†’ Jan 1) may need special handling in your application
  4. Non-Standard Formats: Some airlines may use proprietary variations that don't strictly follow IATA standard

πŸ”§ Recent Updates

  • Version 8 Compliance: Updated to IATA Resolution 792 Version 8 (June 2020) - supports new gender codes X and U
  • Segment Parsing: Fixed critical bug where subsequent flight segments incorrectly used mandatory parsing instead of conditional
  • Loop Bounds: Fixed off-by-one errors in bag tag and segment loops
  • Error Handling: Improved error messages for conditional parsing failures
  • Documentation: Added comprehensive field documentation and IATA standard references

πŸ“š References

Testing

The library includes test cases for:

  • Single-leg boarding passes (M1)
  • Multi-leg boarding passes (M2, M3)
  • Various airlines and formats
  • Security data variations
  • Conditional items edge cases

To run tests:

swift test

Version History

  • 2.0.2 - CocoaPods naming update
    • Renamed CocoaPods pod from BoardingPassKit to BoardingPassParser to avoid conflicts
    • Swift Package Manager remains as BoardingPassKit
    • No functional changes, packaging update only
  • 2.0.1 - Patch release with improved configuration options
    • Enhanced data processing with configurable trim options
    • Better handling of empty strings and whitespace
    • Improved debugging capabilities
  • 2.0.0 - Major release with new configuration options
    • Added trimLeadingZeroes, trimWhitespace, and emptyStringIsNil configuration options
    • Backward compatible with v1.x
    • Enhanced data quality and consistency
  • 1.2.0 - IATA Resolution 792 Version 8 compliance (June 2020 standard)
    • Supports new gender codes "X" (Unspecified) and "U" (Undisclosed)
    • Updated documentation and field descriptions
  • 1.1.0 - Critical parsing bug fixes, IATA Version 7 compliance verified
  • 1.0.0 - Initial IATA BCBP implementation

Related Documents