CSV Injection

CSV Injection

If your organizer does not use S-360 to inject and manage all or part of an event tickets, TIXNGO supports injecting tickets by uploading a CSV file in Backoffice.

This feature is a bit different if you are still using TIXNGO v3 or already migrated to the newest TIXNGO v4. Please be sure to refer to the corresponding section below:

TIXNGO V4

Screenshot 2025-05-27 162746-20250527-142747.png
TIXNGO V4 new CSV injection screen

Steps by step

  1. Use the provided CSV template if need (click on the this CSV template link)

  2. Fill the CSV with your ticket data. Please be sure that your file comply with the following constraints:

    1. The CSV file must be encoded in UTF-8.

    2. All dates must follow the RFC3339 standard for date and time.

    3. No more than 100’000 tickets can be imported at once

    4. Event(s) referenced must already exists in TIXNGO (use manual creation screen if needed before uploading)

    5. Please refrain from including "injection" in the file name

  3. Upload CSV file

  4. Submit

  5. Check the result in the table. Possible status are:

    • IN PROGRESS TIXNGO is currently processing the file you upload. Give it a bit of time and refresh the page later.

    • COMPLETED All tickets have been injected successfully. Good job! You can the download the output file for tracking purposes.

    • PARTIAL Some tickets have been injected successfully, but at least one failed. --> Please download the output and review the errors.

    • FAILED Not a single tickets could be injected. Something most probably wrong with the format or data in your file. → Please download the output and review the errors. Make sure to use the provided template and check the Troubleshooting section below.

Past injections, including input and output files, are kept for a period of 30 days. So be sure to download the output file if you need longer traceability.

Troubleshooting & detailed information

Typical errors

In case of errors, please check out some points below:

  • Make sure there are no spaces in any blank cells

  • Do not use any apostrophes on customers names. Instead you can use: `

  • The CSV file must be encoded in UTF-8 to make sure your data format is valid

  • Instead of leaving unused columns empty, please delete them from the file. These empty cells could cause errors of wrong formatting. 

  • When saving your CSV file using Excel, please be cautious of a common issue where quotation marks ("") may be doubled. This duplication can cause errors when uploading the file.

  • By ensuring that quotation marks are not doubled, you can prevent potential errors during the file upload process. To avoid this problem, follow these steps after saving the CSV file:

    1. Open the CSV file using a text editor or spreadsheet software.

    2. Search for any instances where quotation marks are doubled ("").

    3. Remove the duplicate quotation marks, leaving only single quotation marks (").

    4. Save the modified CSV file.

Fields detailed documentation

Variable Name Mandatory Variable Type Value length Variable usage/description Examples ticketId Yes string Unique identifier of this ticket in the organizer's ticketing system (typically technical ID) PLAY-12345678901234 eventId Yes string Unique identifier of the event PLAY-123456789012 ticketNumber Yes string Business, human readable, unique identifier of the ticket 12345678901 ticketCode Yes string Code for access control that will rendered as a QRcode 123456789012345678901234 activationRule No string Name of the activation rule to use for this ticket. If not provided or not matching a rule associated with the event, will use the one named 'DEFAULT'. DEFAULT dataCollectionRule No string Name of the data collection rule to use for this ticket. If not provided or not matching a rule associated with the event, will use the one named 'DEFAULT'. DEFAULT designRule No string Name of the design rule to use for this ticket. If not provided or not matching a rule associated with the event, will use the one named 'DEFAULT'. DEFAULT emailRule No string Name of the email rule to use for this ticket. If not provided or not matching a rule associated with the event, will use the one named 'DEFAULT'. DEFAULT usageRule No string Name of the usage rule to use for this ticket. If not provided or not matching a rule associated with the event, will use the one named 'DEFAULT'. DEFAULT purchaseDetails.fileNumber Yes string Purchase reference number in the ticketing system. 1122 purchaseDetails.purchaseDate Yes date time Date follows RFC 3339 standard Purchase date and time 2025-11-22T11:22:33.000Z purchaseDetails.price Yes number Price of the ticket 500 purchaseDetails.currency Yes string Currency following the ISO 4217 format CHF purchaseDetails.seatCategoryId No string Either: Unique identifier of the seat category corresponding to this ticket. This identifier should have a matching translation in the event metadata in order to be displayed properly on the mobile A custom value that will be displayed as is on the ticket. 1234567890 purchaseDetails.contingentId No string Unique identifier of the contingent from which this ticket is coming. For reference and display in Backoffice only, this is not visible on the mobile ticket. 1234567890 purchaseDetails.tariffId No string Either: Unique identifier of the tariff applied to this purchase. A custom value that will be displayed as is on the ticket. ADULT, CHILD ticketDetails.main No List Used to display custom information on the top of the ticket (first section). If it’s not empty, the key, and it’s value are required This cannot be used anymore to define the seating details (displayed in the “boxes” on the top of the ticket). The seatingDetails.* should be used for that. [{"key":"Custom","value":"Value", "lang":"en"}] ticketDetails.extra No List Used to display customer information in a “More information” section on the bottom of the ticket. If it’s not empty, the key, and it’s value are required [{"key":"re_entry","value":"Please be informed you cannot leave the stadium and then re-enter.", "lang":"en"}] ticketDetails.hidden No List If it’s not empty, the key, and it’s value are required [{"key":"hosp_room","value":"VIP1", "lang":"en"}] seatingDetails.seated Yes Boolean Set to true if the seating details below are available and can be displayed to the spectator on the ticket. Set to false for cases like parking tickets for instance. true seatingDetails.numbered Yes Boolean True when the ticket gives access to a numbered seat. true seatingDetails.area With condition Area to which the ticket gives access. Condition: This field is required if value of seatingDetails.seated is true Area 1 seatingDetails.level No Level to which the ticket gives access. 1 seatingDetails.externalEntrance No Name of the external entrance the spectator should use to access the venue. West seatingDetails.gate No Name of the gate the spectator should use to access the venue. A seatingDetails.block No Block to which the ticket gives access. AA seatingDetails.row No When seated, row in which the seat is located. 2 seatingDetails.seat With condition Seat number Condition: This field is required if value of seatingDetails.seated is true and seatingDetails.numbered is true 24Spectator's email spectatorDetails.firstName Yes Spectator's first name John spectatorDetails.lastName Yes Spectator's last name Doe spectatorDetails.email Yes Spectator's email jd@tixngo.io spectatorDetails.appLanguage Yes Spectator's preferred language. In ISO 639-1 format. en ticketHolder No Ticket holder data, optionnally submitted. If present, must provide at least firstName and lastName. All other values are saved as is and NOT validated against data collection rules { "firstName": "John", "lastName": "Doe" }

TIXNGO V3 DEPRECATED

Inject tickets by CSV file

  • Get an example template

Go to CSV Injection > Click CSV template at section 02

The minimal template contains all mandatory values that you need to inject tickets successfully to TIXNGO.

The full template contains all possible values that you can provide when injecting tickets to TIXNGO.

 

  • Upload CSV file

Go to CSV Injection > Choose file > Submit

What you should know:

General set-up:

  • CSV File Specifications:

    • Maximum tickets per CSV file: 20,000 tickets

    • The CSV file must be encoded in UTF-8.

    • All dates must follow the RFC3339 standard for date and time.


  • Template Options:

    • Minimal Required Fields Template (CSV Minimal Template): Contains the minimum required fields.

    • Complete Template (CSV Full Template): Includes all possible ticket fields to assist with CSV setup.

    • Multilingual Template (CSV Full Template for Multilingual): Supports injecting with multilingual option.

    • With these 3 templates, please exclude "injection" from the file name to avoid any error

    • When using the Multilingual option, please ensure that you save your CSV file with the suffix "-multilingual".

  • If you failed to inject your CSV file, check out some points below to figure out what's the rootcause:

    • The CSV file must be encoded in UTF-8 to make sure your data format is valid

    • Instead of leaving unused columns empty, please delete them from the file. These empty cells will cause the errors of wrong formatting. 

    • When saving your CSV file using Excel, please be cautious of a common issue where quotation marks ("") may be doubled. This duplication can cause errors when uploading the file.

    • By ensuring that quotation marks are not doubled, you can prevent potential errors during the file upload process. To avoid this problem, follow these steps after saving the CSV file:

      1. Open the CSV file using a text editor or spreadsheet software.

      2. Search for any instances where quotation marks are doubled ("").

      3. Remove the duplicate quotation marks, leaving only single quotation marks (").

      4. Save the modified CSV file.

Tracking status:

  • On this page, you will find a comprehensive list of all CSV injection jobs sent by the organizer, along with their respective statuses (COMPLETED/FAILED/IN PROGRESS).

  • It is essential for organizers to review the output file to verify the actual status of each injected ticket, whether it is ACCEPTED or REJECTED

  • Both the uploaded CSV file and the output file are available for download. The output file provides detailed information about the status of injected tickets, including any associated errors in case of failures.

  • For more details on each field of the file, please check here for better understanding.

More details

:question_mark: online activation method is only available if allow.activation-method.online = true, by default this setting key was set to false. TIXNGO mobile app supports offline activation perfectly, and we do not recommend using this activation method that requires our spectators must stay online during the gate opening. Variable Name Mandatory Variable Type Value length Variable usage/description Examples activationParameters.groupId No string 50 char The activation group to which the ticket belongs to. Tickets sharing the same activation id will have the same activation method & decryption code. activation-id activationParameters.method Yes string "online":question_mark:/"offline"/"beacon" The method using to activate the ticket. online : when activationTime is reached (backend clock), the backend activates the tickets and sends push notifications to trigger a GET /spectator/tickets on the app. offline: the mobile application activates the tickets when time is reaches (mobile clock). Online requires the user to be online, Offline does not. More on Ticket activation: 8- Understanding TIXNGO Activation flow offline activationParameters.time No string Date follows RFC 3339 standard If online is chosen, define the time at which the tickets are activated (decrypted). 2020-10-05T11:19:24+01:00  activationParameters.instanceId No string 128 char If offline is chosen, define the bluetooth instance id that the mobile app should listen to to get the decryption key. image No string 256 char The uri to the image that will be displayed to the user with its ticket. It must have a width:length ratio of X:Y (to be defined). (displayed on the "Ticket" view). https://r.tixngo.io/tng/Concert%20Asset%20300x240.png event.id Yes string 256 char ID representing the event (unique). event-id-101 event.address.site Yes string 200 char Name of the site the Event will take place. TIXNGO Stadium event.address.line1 No string 200 char Address line 1 event.address.line2 No string 200 char Address line 2 event.address.line3 No string 200 char Address line 3 event.address.city Yes string 200 char City where the event takes place Lausanne event.address.countryCode No string 200 char Country code for the Address CH, FR, DE, etc event.address.region No string 200 char Region where the Event takes place Bavaria event.address.zip Yes string 50 char Zip code where the Event takes place event.address.longitude No double double Longitude where the Event takes place event.address.latitude No double double Latitude where the Event takes place event.name Yes string 128 char Name of the Event “Team A vs Team B” event.startTime Yes string Date follows RFC 3339 standard Time at which the event starts. Used for app logic such as reminders etc... Date Format: 2022-12-12T16:11:00Z 2023-10-05T11:19:24+01:00  event.expirationDate No string Date follows RFC 3339 standard Time at which the event expire. Expired event cannot be used anymore. 2023-10-06T11:19:24+01:00  event.bluetoothPreparationRibbonDisplayTime No string Date follows RFC 3339 standard Time at which a ribbon displays on the mobile app to notify spectator turn on Bluetooth on the phone 2023-10-05T11:21:24+01:00 event.bluetoothPreparationRibbonEndTime No string Date follows RFC 3339 standard Time at which a ribbon disappear on the mobile app 2023-10-05T13:21:24+01:00 event.metadata No list list of key-value metadata Specific "key-value" fields provided to Organizer for special information about the event. For now we handle the reserved keys below. You can override all those keys if you put them (same name, case sensitive) in the ticket details hidden section of the ticket.  Reserved Keys : BARCODE_SIZE: value = Size of the barcode display on the Ticket (16 < x < 32) [mm] BARCODE_POSITION: value = Position of the barcode on the Ticket (LEFT, CENTER, RIGHT) RESALE_TICKETSHOP_URL: value = URL of ticket shop that use to resale a ticket (must include http or https) CANCEL_RESALE_TICKETSHOP_URL: value = URL of ticket shop that use to cancel a ticket (must include http or https) prohibited_items_image: value = URL of the prohibited items image prohibited_items_link: value = URL of the prohibited items link sponsorImage: value = URL of the sponsors image sponsorLink: value = URL of the sponsors link seat_map_image: value = URL of the seat map image seat_map_link: value = URL of the seat map link enable_covid_check: value = Enable or Disable COVID check functionality for given event EVENT_NUMBER: value = number of the event [{"key": "BARCODE_POSITION", "value": "CENTER"},{"key": "CANCEL_RESALE_TICKETSHOP_URL", "value": "https://ticketshop.secutix.com/account/tickets?cancelResaleTicketId="}, {"key": "RESALE_TICKETSHOP_URL", "value": "https://ticketshop.secutix.com/account/resale/resellTickets?ticketIds="}] event.group.id No string 256 char Id of the Group. Every Event with this Group ID will be part of that Group. GROUP-ID-101 event.group.name No string 128 char Name of the Group. CHAMPION LEAGUE event.group.image Yes string 256 char The Image of the Group (displayed on the "My Events" view). https://r.tixngo.io/tng/Concert%20Asset%20300x240.png purchaseDetails.price Yes double double The Ticket's price. (Example 30, 55.50, 120.55,..._) 45.50 purchaseDetails.currency Yes string 20 char The currency used in the transaction using ISO-4217 standard (example: CHF, VND, USD). EUR purchaseDetails.date Yes string Date follows RFC 3339 standard The date at which the Ticket was initially bought. 2023-10-04T11:19:24Z  purchaseDetails.priceCategory Yes string 512 char Examples of price category are adult, child, student, senior, VIP, etc. ADULT, CHILD, etc purchaseDetails.taxationNumber Yes string 512 char (UUID) taxation number of the Ticket. tax-num-1234 ticketDetails.main No list list of key-value metadata Free "key-value" fields usually used to define spectator seating information such as: gate:A, row:2, seat:7 (Displayed on the "front" of the Ticket). [{"key": "Gate", "value": "A"},{"key": "Row", "value": "54"}, {"key": "Seat", "value": "A5"}] ticketDetails.extra No list list of key-value metadata Free "key-value" fields usually used to define extra information (Displayed on the "back" of the Ticket). Reserved Keys : file_id : optional field set by the Organizer at injection. [{"key": "File", "value": "123"},{"key": "Special Note", "value": "No Re-Entry"}, {"key": "Parking", "value": "Included"}] ticketDetails.hidden No list list of key-value metadata Free "key-value" fields usually used to add hidden information, ex: used between Organizer and TIXnGO (Not displayed on the Ticket). Reserved Keys : transfer_extra : optional field set by the sender during a ticket transfer in transferOrder.extra background_color : optional field set by the Organizer at injection. Define the background color of the ticket. hosp_room: optional field set by the Organizer at injection. Define the hospitality room of the ticket. show_price: optional field set by the Organizer at injection. Define to show or not show the price on ticket extra  at_icon: optional field set by the Organizer at injection. Define to show extra icon on the top-left of ticket layout ticketDetailMainNotInBoxes: optional field set by the Organizer at injection. Define how many fields (of ticketDetails.main) that will not stay in boxes (count from the last one) specialColor: optional field set by the Organizer at injection. Define the horizontal stripe color on QRcode part ticket layout Furthermore, you can override the all the event.metadata keys on a per ticket level. [{"key": "background_color", "value": "#010101"},{"key": "show_price", "value": "false"}, {"key": "ticketDetailMainNotInBoxes", "value": "2"}] security.barcode Yes string 512 char Barcode of the Ticket. 1234567890 Deprecatedsecurity.clearanceLevel No integer integer Clearance level of the ticket. If 1 is chosen: the organizer require the spectator to provide its name,surname,gender. If 2 is chosen, then all field of SpectatorIdentity are required except for the passport and idcard number, only one of them is required. spectatorDetails.residenceCountry No string ISO Alpha-2 format Initial spectator's residence country. spectatorDetails.phoneNumber No string 50 char Initial spectator's phone number. spectatorDetails.email Yes string 256 char Initial spectator's email. user1234@domain.com spectatorDetails.firstName Yes string 50 char Initial spectator's first name. Michael spectatorDetails.lastName Yes string 100 char Initial spectator's last name. Harry spectatorDetails.gender No string 1 char (m/f/u/x) Initial spectator's gender. m, f, u or x (For Male, Female, Other, Unknown) m spectatorDetails.dateOfBirth No string Date follows RFC 3339 standard Initial spectator's birth date. spectatorDetails.nationality No string ISO Alpha-2 format Initial spectator's nationality. spectatorDetails.passportNumber No string 200 char Initial spectator's passport number. spectatorDetails.idCardNumber No string 200 char Initial spectator's ID card number. spectatorDetails.spectatorStatus No string "Activated" / "Not activatied" If the initial spectator is registered in the TIXnGO system. spectatorDetails.ticketHolder.identity.firstName No string 50 char Ticket Holder's first name. spectatorDetails.ticketHolder.identity.lastName No string 100 char Ticket Holder's last name. spectatorDetails.ticketHolder.identity.gender No string 1 char (m/f/u/x) Ticket Holder's gender m, f, u or x(For Male, Female, Other, Unknown) spectatorDetails.ticketHolder.identity.dateOfBirth No string Date follows RFC 3339 standard Ticket Holder's birth date. spectatorDetails.ticketHolder.identity.nationality No string ISO Alpha-2 format Ticket Holder's nationality. spectatorDetails.ticketHolder.identity.passportNumber No string 200 char Ticket Holder's passport number. spectatorDetails.ticketHolder.identity.idCardNumber No string 200 char Ticket Holder's ID card number. spectatorDetails.ticketHolder.identity.email No string 256 char Ticket Holder's email. spectatorDetails.ticketHolder.identity.phoneNumber No string 50 char Ticket Holder's phone number. spectatorDetails.ticketHolder.identity.birthCity No string 50 char Ticket Holder's birth city. spectatorDetails.ticketHolder.identity.birthCountry No string ISO Alpha-2 format Ticket Holder's birth country. spectatorDetails.ticketHolder.identity.residenceCountry No string ISO Alpha-2 format Ticket Holder's residence country. spectatorDetails.ticketHolder.identity.address.line1 No string 200 char TIcket Holder's address line 1. spectatorDetails.ticketHolder.identity.address.line2 No string 200 char Ticket Holder's address line 2. spectatorDetails.ticketHolder.identity.address.line3 No string 200 char Ticket Holder's address line 3. spectatorDetails.ticketHolder.identity.address.city No string 200 char Ticket Holder's residence city. spectatorDetails.ticketHolder.identity.address.countryCode No string 200 char Ticket Holder's country code. spectatorDetails.ticketHolder.identity.address.zip No string 50 char Ticket Holder's zip code. spectatorDetails.ticketHolder.extraInfo1 No string 100 char Free field of extra info about the Ticket Holder. spectatorDetails.ticketHolder.extraInfo2 No string 100 char Second free field of extra info about the Ticket Holder. spectatorDetails.ticketHolder.reason No string 512 char Reason of why the assignment happen. Can be modified later by the spectator. (Optional) spectatorDetails.organizerSpectatorPreference.allowPromoEmail No boolean boolean Default false. Spectator accept promotional email from TIXnGO. spectatorDetails.organizerSpectatorPreference.allowPromoThirdPartyEmail No boolean boolean Default false. Spectator accept promotional email from Third-Party. spectatorDetails.organizerSpectatorPreference.allowTracking No boolean boolean Default false. Spectator accept to be tracked and data matching. ticketId Yes string 256 char Ticket ID differentiating each ticket. It must be unique (UUID). tng-1234567890 lang No string 5 char ISO 639‑1 format The default language for the Ticket. Injection communications will be sent in this language. Example: fr, en, de, it, es transferRules.groupId No string 256 char Transfer rules can technically be different for every ticket. Organizer might want to chose to have different transfer rules for different types of ticket (ex: Adult, child, VIP, etc…). This GroupID is the Transfer rules group ID representing a group of transfer rules applied to certain tickets. If Organizers want to apply the same rules to every tickets, by default this groupID is set to the EventID and every ticket will be in this group. transferRules.maxNumberOfTransferPerTicketInGroupId No integer integer Total amount of transfers per Ticket (-1 feature is disabled). transferRules.assignTransferLimit No integer integer Define upper bound of ticket's transfer level for the "Assign" function transferRules.allowTransfer No boolean boolean Enables or Disables transfer functionality for given match (Send menu item in the ticket view hidden or displayed). transferRules.allowTransferMainApplicant No boolean boolean Enable or Disable transfer functionality for Main Applicant ticket's. transferRules.allowTransferAfterActivation No boolean boolean Enables or Disables transfer functionality for given match for Activated Tickets (Send menu item in the ticket view hidden or displayed). transferRules.allowTransferAfterActivationByBT No boolean boolean Enables or Disables transfer functionality for Checked Tickets (Send menu item in the ticket view hidden or displayed). transferRules.allowTransferAfterControl No boolean boolean Enables or Disables transfer functionality for given match for Controlled Tickets (Send menu item in the ticket view hidden or displayed). transferRules.allowReturnToOrganizer No boolean boolean Allow to release ticket to resale / allow ticket shop resale transferRules.allowReturnToOrganizerForInitialSpectator No boolean boolean Only Initial Spectator can release ticket to resale transferRules.keepOneInGroupId No boolean boolean Force ALL ticket wallet holders to keep at least 1 ticket per given Match. transferRules.keepOneAtInjectInGroupId No boolean boolean Force ticket wallet holder to whom tickets were originally injected to keep at least 1 ticket per given Match. E.g. all his transfer guests will be able to forward all the tickets they received. design.id No string 256 char The Design Id applies to the ticket. design.backgroundColor No string 7 char hexadecimal color code The background color of the corresponding design. design.secureColor No string 7 char hexadecimal color code The secure color of the corresponding design, which will be displayed on the event day. design.secureImage No string 256 char The secure image of the corresponding design, which will be displayed on the event day. ticketInjectionDate No string Date follows RFC 3339 standard The date at which the ticket was injected. mainApplicant No boolean boolean Optional Main Applicant flag (SecuTix) sortingKey No string 256 char A key to sort the tickets in the spectator view. The tickets will be sorted according to this key in alphabetical order. mobileAppId Yes string 256 char Mandatory Mobile Application App Id to use associated invitation email template (used by organizer using their own app or branded apps). io.tixngo.app contingent No string 256 char The type of contingent applies to the ticket