ASSIST | APIs | Railcard Data Management

Railcard Data Management
Revision B: 2026-03-19 10:57:56
Image to be added

ASSIST Subject: RSPS5232: 'Railcard Data Management'

Version: v3

Notes: Railcard Data Management
Railcard Data Management v3.jsonThu 19-Mar-2026 10:56:40

Home (Rev B)
Revision B: 2026-03-19 11:03:05

Page Content


Terminology

The following are key terms used throughout this documentation:

Term Description
Station Issued Railcards These Railcards have been issued at a Station these have a short character Railcard Number (~5 characters)
Retailer Issued Railcards These Railcards have been issued via a Retailer and have a longer Railcard Number (~15-16 characters)

Add/Maintain a Railcard

Resources:

Other (Rev B)
Revision B: 2026-03-27 14:49:34

Reference Data

Valid Railcard Types

The following table contains the valid Railcard Types accepted by the service:

Railcard Product code Description Subsidiary Railcard Product codes LTOT (Capri) codes
2TR Two Together Railcard 2TS, R2T ZMO, ZMT
DIS Disabled Persons Railcard DIC, AT1, AT2, AT3, AT4, AT5, AT6, SIP, DIR, DIT, DIU, DIV, DIW, DIX ZMM, ZNH, ZNU, ZNJ, ZNV
FAM Family & Friends Railcard F3R, FA3, FAN, RFF ZCS, ZNS, ZMK, ZCB
NEW Network Railcard NCP, RNW ZMU, ZCD
SRN Senior Railcard RSN, S3N, S3R, SRO ZCC, ZNR, ZCR, ZME
TST 26-30 Railcard TSX ZZB, ZZC
TSU 16-17 Saver RYP, TSW ZAG, ZAH
VET Veterans Railcard VEU, VEW, VEX ZAT, ZAU, ZAV, ZAW
YNG 16-25 Railcard Y3R, YN3, YNH ZCA, ZCT, ZNT, ZMA

Error handling (Rev B)
Revision B: 2026-04-22 07:57:00


Whilst every effort will be made to capture all errors which may be returned for these API resources on this page, if you are returned an error not recorded here, please provide details to RDG, including the request which generated the error and the error message itself, and we will investigate and add to this page.


RDG Error format

APIs on the RDG Developer Portal use the following common error format to contain and return these errors to consumers (See RDG Error Object data type):

{
    "errors": [
        {
            "code": "error_code",
            "message": "error message",
            "timestamp": "YYYY-MM-DDTHH:MM:SS",
            "context":
            {
                "{key}": "value"
            }
        }
    ]
}

The context object is an unspecified list of key value pairs, allowing new context information to be provided without requiring a schema change. There are currently no context fields added to Railcard Errors.

Known Error Cases

General

Code Message Comment
GBR-AUTH-2000 Security Error When RDG fails to process request due to client side or server side security failure
GBR-AUTH-2001 Unauthorised User When user’s token is invalid
GBR-AUTH-2002 Security validation: precondition failed -
GBR-AUTH-2003 Security validation: Bad request When request payload has failed to process
GBR_EXCEPTION_0000 Unknown Error Catch all for any unknown errors
GBR_EXCEPTION_0001 Undefined error by 3rd party system Unknown error from 3rd party APIs
GBR_EXCEPTION_3000 Invalid schema/ Invalid payload Bad request due to payload not conforming to the json/xml schema definition
GBR_EXCEPTION_3001 Internal Error Unable to complete operation
GBR_EXCEPTION_3006 Resource not found When API resource request is not found or not defined in the specification
GBR_EXCEPTION_3007 Method not allowed When API resource request doesn’t conform to the API specfication e.g. method GET is expected for a resource but POST or PUT call is made
GBR_EXCEPTION_3009 Unsupported media type When API resource request media type (e.g. application/json) doesn’t conform to the expected media type
GBR_EXCEPTION_3010 HTTP too many requests Rate-limit exceeded
GBR_EXCEPTION_3011 AWS S3 bad request error When AWS S3 throws error due to processing error of the request
GBR_EXCEPTION_3012 Invalid schema/ Invalid payload Bad request due to payload not conforming to the json/xml schema definition
GBR_EXCEPTION_3013 Invalid schema/ Invalid payload Bad request due to payload not conforming to the json/xml schema definition
GBR_EXCEPTION_3014 Forbidden Error When source system doesn’t allow access to a particular resource for a specfic client
GBR_EXCEPTION_3015 Validation Error [Email is valid] The structural conformation of email is checked and throws error if doesn’t match the built in REGEX pattern
GBR_EXCEPTION_3063 Expression error When any form of REGEX failed to excute due to incorrect inputs
GBR_EXCEPTION_3065 Retry exhausted, Redelivery Exhausted Retry component reaches the threshold number with respect to HTTP requests made
GBR_EXCEPTION_3066 Connectivity issue or service is not available When cannot reach the resource URL or underneath service doesn’t respond
GBR_EXCEPTION_3067 HTTP time out When the HTTP request gets timed out

Railcards

Code Message Comment
GBR_RAILCARDS_6110 This Railcard state is not updatable. Railcard: {{railcardNumber}}, State: {{railcardState}}
GBR_RAILCARDS_6111 Could not create cardholder for Railcard: {{railcardNumber}}, Cardholder Type: {{cardholderType}}
GBR_RAILCARDS_6112 Could not add Cardholder - Cardholder Type already exists for this Railcard. Railcard: {{railcardNumber}}, Cardholder Type: {{cardholderType}}
GBR_RAILCARDS_6113 Could not update Cardholder - Cardholder Type provided does not match existing Cardholder Type. Railcard: {{railcardNumber}}, Cardholder Type: {{cardholderType}}
GBR_RAILCARDS_6114 Invalid date-time field(s) passed.
GBR_RAILCARDS_6115 Railcard ID or Number is invalid. Railcard ID: {{railcardId}};
GBR_RAILCARDS_6116 Primary Cardholder is missing and is required. Railcard: {{railcardNumber}}
GBR_RAILCARDS_6117 Secondary Cardholder is missing and is required for this Railcard type. Railcard: {{railcardNumber}}, Railcard Type: {{railcardType}}
GBR_RAILCARDS_6118 Multiple matching Railcards found. Railcard: {{railcardNumber}}, Railcard Type: {{railcardType}}
GBR_RAILCARDS_6119 Client not found. Railcard: {{railcardNumber}}, Client IAM Id: {{clientId}}
GBR_RAILCARDS_6120 Invalid value for Railcard Type. Railcard: {{railcardNumber}} Type: {{railcardType}}
GBR_RAILCARDS_6121 Invalid value for Railcard State. State: {{railcardState}}
GBR_RAILCARDS_6122 Railcard already exists. Railcard Number: {{railcardNumber}};
GBR_RAILCARDS_6123 Railcard Number already exists. Railcard Number: {{railcardNumber}};
GBR_RAILCARDS_6124 Railcard Number is null.
GBR_RAILCARDS_6125 Railcard State is not an accepted state. State: {{railcardState}}
GBR_RAILCARDS_6126 Railcard type not Active. Railcard Number: {{railcardNumber}}, Railcard Type: {{railcardType}}
GBR_RAILCARDS_6127 Requested date cannot be in the future. Railcard: {{railcardNumber}}
GBR_RAILCARDS_6128 Secondary railcard holder not allowed for this railcard type. Railcard Number: {{railcardNumber}}, Railcard Type: {{railcardType}}
GBR_RAILCARDS_6129 Usable To date must not be earlier than Valid To. Railcard: {{railcardNumber}}
GBR_RAILCARDS_6130 Usable To date cannot be in the past. Railcard: {{railcardNumber}}
GBR_RAILCARDS_6131 Usable To date is required for requested Railcard type. Railcard: {{railcardNumber}}
GBR_RAILCARDS_6132 Valid From date must be earlier than Valid To. Railcard: {{railcardNumber}}
GBR_RAILCARDS_6133 Valid From date is null but must be provided. Railcard: {{railcardNumber}}
GBR_RAILCARDS_6134 Valid To date cannot be in the past. Railcard: {{railcardNumber}}
GBR_RAILCARDS_6135 Valid To date is null but must be provided. Railcard: {{railcardNumber}}
GBR_RAILCARDS_6136
GBR_RAILCARDS_6137
GBR_RAILCARDS_6138 Insufficient client privileges to perform request for Railcard: {{railcardNumber}}
GBR_RAILCARDS_6139 Cardholder not found. Railcard: {{railcardNumber}}, Cardholder Id: {{cardholderId}}
GBR_RAILCARDS_6149 Other exception in {{reason}} An unknown error has occurred, please report to RDG for investigation

Onboarding and Contact (Rev A)
Revision A: 2026-02-27 12:58:49

To request access to this API, please log a ticket with the Railcard ServiceDesk via portal or email

Providing details of your organisation, the API you are requesting access to and the reason for your requested access.

Your request will then be assessed to ensure you have sufficient justification and need to access and use this API.