hmrc / domain Edit

Micro-library for typing and validating UK tax identifiers

Version Matrix


Build Status Download

Micro-library for typing and validating UK tax identifiers.

Identifier Types

Types are provided for many common tax identifiers, such as:

JSON handling

Reads and Writes have been provided for Play's JSON library for all identifiers, and format validation is present for some. JSON objects with multiple tax identifiers as properties can be serialized or deserialized to a TaxIds:

import play.api.libs.json._

implicit val format =  TaxIds.format(TaxIds.defaultSerialisableIds :_*)

val input =
          |"nino": "NM439088A",
          |"sautr": "some-sa-utr"
val taxIds = Json.parse(input).as[TaxIds]

taxIds.nino  // Some(NM439088A)
taxIds.saUtr // Some(some-sa-utr)
taxIds.ctUtr // None


Add the following to your SBT build:

libraryDependencies += "" % "domain" % "[INSERT VERSION]"

Use versions >=2.11.0 for Java 7 and Play json 2.3.x
Version 6.x.x is scala 2.12 only and adds Play 2.8 support. Version 7.x.x drops Play 2.6 and Play 2.7 support.


This code is open source software licensed under the Apache 2.0 License.