Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

If your organizer does not use S-360 to inject and manage tickets, TnG provides another solution which is CSV injection to allow the organizer to inject up to 20'000 tickets at a time.all or part of an event tickets, TIXNGO supports injecting tickets by uploading a CSV file in Backoffice.

Note

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:

Table of Contents
minLevel2
maxLevel2
outlinefalse
stylenone
typelist
printabletrue

TIXNGO V4

...

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:

    • Status
      colourYellow
      titleIn progress
      TIXNGO is currently processing the file you upload. Give it a bit of time and refresh the page later.

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

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

    • Status
      colourRed
      titleFailed
      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:

  • 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

Expand
titleUnderstand each fields in CSV

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

Unique identifier of the seat category corresponding to this ticket.

1234567890

purchaseDetails.contingentId

No

string

Unique identifier of the contingent from which this ticket is coming.

1234567890

purchaseDetails.tariffId

No

string

Unique identifier of the tariff applied to this purchase.

ADULT, CHILD

ticketDetails.main

Status
colourYellow
titledeprecated

No

List

If it’s not empty, the key, and it’s value are required

Not recommend to use this setting key
please using V4 properties:

  • seatingDetails.area

  • seatingDetails.level

  • seatingDetails.externalEntrance

  • seatingDetails.gate

  • seatingDetails.block

  • seatingDetails.row

  • seatingDetails.seat

to have better look & feel on Back-office

Image Added

Code Block
languagejson
[{"key":"Seat","value":"13", "lang":"en"}]

ticketDetails.extra

No

List

If it’s not empty, the key, and it’s value are required

Code Block
languagejson
[{"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

Code Block
languagejson
[{"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.

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

Code Block
languagejson
{
  "firstName": "John",
  "lastName": "Doe"
}

TIXNGO V3
Status
colourYellow
titledeprecated

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: (lightbulb)

  • CSV File Specifications:

    • Maximum tickets

    injected
    • per CSV file:

    20000 ticketsThis page list all CSV injection jobs that were sent by the organizer and its status
    • 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".

  • (lightbulb) 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: (tick)

  • 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)

  • Two templates are available, a minimal required fields template and a complete template with all possible ticket fields to help with the CSV setup.
  • Organizers must check

    .

  • It is essential for organizers to review the output file to

    make sure

    verify the actual status of each

    ticket injected (ACCEPTED/REJECTED)

    injected ticket, whether it is ACCEPTED or REJECTED

  • Both the uploaded CSV file and the output

    files

    file are

    downloadable. Output file contains the details of ticket injected status as well as any error associated with its failure.The CSV file must be UTF-8 encoded

    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

Expand
titleUnderstand each fields in CSV

(question) 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 th

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)/"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: /wiki/spaces/TNG/pages/48627957

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 whe

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

Status
subtletrue
colourYellow
titleDeprecated
security.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.ticpassportNumber

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.allowRetu

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 alphabetic

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