.NET Core
AustralianAddress
Section titled “AustralianAddress”Class in Verifiabl
Structured Australian employee address. Country is omitted because AU2 identifies the jurisdiction.
public sealed class AustralianAddressInheritance: System.Object
Property
Address lines before the locality line, such as a unit and street. Empty lines are omitted from the encoded display value.
public IReadOnlyList<string>? Lines { get; set; }Returns: System.Collections.Generic.IReadOnlyList{System.String}
Suburb
Section titled “Suburb”Property
Suburb or locality.
public string? Suburb { get; set; }Returns: System.String
StateOrTerritory
Section titled “StateOrTerritory”Property
State or territory as supplied by the provider.
public string? StateOrTerritory { get; set; }Returns: System.String
Postcode
Section titled “Postcode”Property
Postcode as supplied by the provider.
public string? Postcode { get; set; }Returns: System.String
AustralianPiiFields
Section titled “AustralianPiiFields”Class in Verifiabl
Employee PII for an Australian payslip. Every field is optional and is carried only inside the encrypted AU2 barcode payload.
public sealed class AustralianPiiFieldsInheritance: System.Object
EmployeeName
Section titled “EmployeeName”Property
Employee full name as printed on the payslip.
public string? EmployeeName { get; set; }Returns: System.String
Position
Section titled “Position”Property
Employee position or job title.
public string? Position { get; set; }Returns: System.String
Department
Section titled “Department”Property
Employee department.
public string? Department { get; set; }Returns: System.String
EmployerName
Section titled “EmployerName”Property
Employer name as printed on the payslip. Used when Verifiabl.AustralianPiiFields.EmployerAbn
is absent.
public string? EmployerName { get; set; }Returns: System.String
EmployerAbn
Section titled “EmployerAbn”Property
Employer ABN as printed on the payslip. When supplied, this is encoded
instead of Verifiabl.AustralianPiiFields.EmployerName.
public string? EmployerAbn { get; set; }Returns: System.String
Property
Bank State Branch code as printed, including masking or separators.
public string? Bsb { get; set; }Returns: System.String
AccountNumber
Section titled “AccountNumber”Property
Payment account number as printed, including masking or separators.
public string? AccountNumber { get; set; }Returns: System.String
AccountName
Section titled “AccountName”Property
Payment account name as printed.
public string? AccountName { get; set; }Returns: System.String
Address
Section titled “Address”Property
Structured Australian address collapsed into one AU2 display field.
public AustralianAddress? Address { get; set; }Returns: Verifiabl.AustralianAddress
BarcodeErrorCorrectionLevel
Section titled “BarcodeErrorCorrectionLevel”Enum in Verifiabl
QR error-correction levels used by the barcode renderer.
public enum BarcodeErrorCorrectionLevelField
~7% damage recovery. Produces larger modules at the cost of damage tolerance.
Low = 0Returns: Verifiabl.BarcodeErrorCorrectionLevel
Medium
Section titled “Medium”Field
~15% damage recovery. The default ceiling.
Medium = 1Returns: Verifiabl.BarcodeErrorCorrectionLevel
Quartile
Section titled “Quartile”Field
~25% damage recovery, at the cost of a denser code.
Quartile = 2Returns: Verifiabl.BarcodeErrorCorrectionLevel
BarcodeLayout
Section titled “BarcodeLayout”Enum in Verifiabl
Badge arrangements for the barcode renderer.
public enum BarcodeLayoutVertical
Section titled “Vertical”Field
The navy “Secured by Verifiabl” header above the QR code. The default.
Vertical = 0Returns: Verifiabl.BarcodeLayout
Horizontal
Section titled “Horizontal”Field
A light-tinted “Secured by Verifiabl” frame to the right of the QR code, for short, wide spaces.
Horizontal = 1Returns: Verifiabl.BarcodeLayout
BarcodeParts
Section titled “BarcodeParts”Class in Verifiabl
The two values embedded in every locally generated barcode.
public sealed class BarcodePartsInheritance: System.Object
BarcodeParts(string, byte[])
Section titled “BarcodeParts(string, byte[])”Constructor
Pairs a Verifiabl reference with its encrypted PII ciphertext.
public BarcodeParts(string verifiablReference, byte[] encryptedPii)| Parameter | Type | Description |
|---|---|---|
verifiablReference |
System.String |
Verifiabl reference returned by Verifiabl.Client.VerifiablClient.RegisterNonPiiAsync(Verifiabl.Client.RegisterNonPiiRequest,System.Threading.CancellationToken) (or generated with Verifiabl.VerifiablReference.Generate for batches). |
encryptedPii |
System.Byte[] |
Encrypted PII ciphertext bytes from Verifiabl.VerifiablCrypto.EncryptPii(System.String,System.Byte[]). |
VerifiablReference
Section titled “VerifiablReference”Property
Verifiabl reference registered for this payslip.
public string VerifiablReference { get; }Returns: System.String
EncryptedPii
Section titled “EncryptedPii”Property
Encrypted PII ciphertext bytes.
public byte[] EncryptedPii { get; }Returns: System.Byte[]
BarcodePngResult
Section titled “BarcodePngResult”Class in Verifiabl
public sealed class BarcodePngResultInheritance: System.Object
Property
PNG image bytes.
public byte[] Png { get; }Returns: System.Byte[]
Property
Bitmap width in pixels.
public int Width { get; }Returns: System.Int32
Height
Section titled “Height”Property
Bitmap height in pixels.
public int Height { get; }Returns: System.Int32
Content
Section titled “Content”Property
The exact string encoded in the QR code.
public string Content { get; }Returns: System.String
ErrorCorrectionLevel
Section titled “ErrorCorrectionLevel”Property
Error-correction level actually used. Normally the configured ceiling
(Verifiabl.BarcodeSvgOptions.MaxErrorCorrection, default Medium); drops
below it only for unusually long PII so the code still fits the fixed frame.
public BarcodeErrorCorrectionLevel ErrorCorrectionLevel { get; }Returns: Verifiabl.BarcodeErrorCorrectionLevel
QrVersion
Section titled “QrVersion”Property
QR symbol version (1-40), for scanner-fixture attribution.
public int QrVersion { get; }Returns: System.Int32
ModulePx
Section titled “ModulePx”Property
Rendered size of one QR module, in output pixels.
public double ModulePx { get; }Returns: System.Double
Degraded
Section titled “Degraded”Property
True when the renderer had to trade scan robustness to fit the payload (error correction below the configured ceiling, or modules below the ideal size). False for essentially all real records. Log this to observe the long tail at scale.
public bool Degraded { get; }Returns: System.Boolean
BarcodeSvgOptions
Section titled “BarcodeSvgOptions”Class in Verifiabl
Options for Verifiabl.VerifiablBarcode.CreateSvg(Verifiabl.BarcodeParts,Verifiabl.BarcodeSvgOptions).
public sealed class BarcodeSvgOptionsInheritance: System.Object
Environment
Section titled “Environment”Property
API environment for the public QR scan URL. Defaults to production.
public VerifiablEnvironment Environment { get; set; }Returns: Verifiabl.VerifiablEnvironment
ScanBaseUrl
Section titled “ScanBaseUrl”Property
Advanced override for the public QR scan URL origin. Defaults to the selected environment’s scan URL origin. Must use https.
public Uri? ScanBaseUrl { get; set; }Returns: System.Uri
Layout
Section titled “Layout”Property
Badge arrangement (default: Verifiabl.BarcodeLayout.Vertical).
public BarcodeLayout Layout { get; set; }Returns: Verifiabl.BarcodeLayout
Property
Total badge width in SVG user units / px. Unless set, this is the
minimum for Verifiabl.BarcodeSvgOptions.Layout: 480 for the vertical layout and 940
for the horizontal layout. Both minimums render the QR code at the same
size.
public double Width { get; set; }Returns: System.Double
MaxErrorCorrection
Section titled “MaxErrorCorrection”Property
Highest QR error-correction level to use: Verifiabl.BarcodeErrorCorrectionLevel.Low,
Verifiabl.BarcodeErrorCorrectionLevel.Medium (the default), or
Verifiabl.BarcodeErrorCorrectionLevel.Quartile. The renderer still
steps below this only when the payload would not otherwise fit the fixed frame.
Medium (~15% damage recovery) balances module size and recovery. Choose Low (~7% recovery) to make dense payload modules larger, accepting less resilience to wear. Choose Quartile (~25% recovery) for documents expected to take heavy print wear, accepting a denser code (one or two QR versions larger).
public BarcodeErrorCorrectionLevel MaxErrorCorrection { get; set; }Returns: Verifiabl.BarcodeErrorCorrectionLevel
BarcodeSvgResult
Section titled “BarcodeSvgResult”Class in Verifiabl
Result of Verifiabl.VerifiablBarcode.CreateSvg(Verifiabl.BarcodeParts,Verifiabl.BarcodeSvgOptions).
public sealed class BarcodeSvgResultInheritance: System.Object
Property
Complete standalone SVG document.
public string Svg { get; }Returns: System.String
Property
Badge width in SVG user units / px.
public double Width { get; }Returns: System.Double
Height
Section titled “Height”Property
Badge height in SVG user units / px.
public double Height { get; }Returns: System.Double
Content
Section titled “Content”Property
The exact string encoded in the QR code.
public string Content { get; }Returns: System.String
ErrorCorrectionLevel
Section titled “ErrorCorrectionLevel”Property
Error-correction level actually used. Normally the configured ceiling
(Verifiabl.BarcodeSvgOptions.MaxErrorCorrection, default Medium); drops
below it only for unusually long PII so the code still fits the fixed frame.
public BarcodeErrorCorrectionLevel ErrorCorrectionLevel { get; }Returns: Verifiabl.BarcodeErrorCorrectionLevel
QrVersion
Section titled “QrVersion”Property
QR symbol version (1-40), for scanner-fixture attribution.
public int QrVersion { get; }Returns: System.Int32
ModulePx
Section titled “ModulePx”Property
Rendered size of one QR module, in output pixels.
public double ModulePx { get; }Returns: System.Double
Degraded
Section titled “Degraded”Property
True when the renderer had to trade scan robustness to fit the payload (error correction below the configured ceiling, or modules below the ideal size). False for essentially all real records. Log this to observe the long tail at scale.
public bool Degraded { get; }Returns: System.Boolean
EncryptedPii
Section titled “EncryptedPii”Class in Verifiabl
Result of Verifiabl.VerifiablCrypto.EncryptPii(System.String,System.Byte[]).
public sealed class EncryptedPiiInheritance: System.Object
Ciphertext
Section titled “Ciphertext”Property
AES-256-GCM ciphertext bytes to store or pass to the barcode and client APIs. The SDK applies Base32 or base64url encoding at the relevant output boundary.
public byte[] Ciphertext { get; }Returns: System.Byte[]
Metadata
Section titled “Metadata”Property
Server-side decryption metadata for the registration endpoints.
public EncryptionMetadata Metadata { get; }Returns: Verifiabl.EncryptionMetadata
EncryptionMetadata
Section titled “EncryptionMetadata”Class in Verifiabl
Decryption metadata stored server-side at registration time: the AES-GCM IV and authentication tag. Verifiabl finds the decryption key at verification time; no key identifier is sent.
public sealed class EncryptionMetadataInheritance: System.Object
Property
96-bit (12-byte) IV.
public required byte[] Iv { get; set; }Returns: System.Byte[]
Property
128-bit (16-byte) GCM authentication tag.
public required byte[] Tag { get; set; }Returns: System.Byte[]
NewZealandAddress
Section titled “NewZealandAddress”Class in Verifiabl
Structured New Zealand employee address. Country is omitted because NZ2 identifies the jurisdiction.
public sealed class NewZealandAddressInheritance: System.Object
Property
Address lines before the suburb and city lines, such as a unit and street. Empty lines are omitted from the encoded display value.
public IReadOnlyList<string>? Lines { get; set; }Returns: System.Collections.Generic.IReadOnlyList{System.String}
Suburb
Section titled “Suburb”Property
Suburb, when shown.
public string? Suburb { get; set; }Returns: System.String
Property
Town or city.
public string? City { get; set; }Returns: System.String
Postcode
Section titled “Postcode”Property
Postcode as supplied by the provider.
public string? Postcode { get; set; }Returns: System.String
NewZealandPiiFields
Section titled “NewZealandPiiFields”Class in Verifiabl
Employee PII for a New Zealand payslip. Every field is optional and is carried only inside the encrypted NZ2 barcode payload.
public sealed class NewZealandPiiFieldsInheritance: System.Object
EmployeeName
Section titled “EmployeeName”Property
Employee full name as printed on the payslip.
public string? EmployeeName { get; set; }Returns: System.String
IrdNumber
Section titled “IrdNumber”Property
Employee IRD number as printed, including masking or separators.
public string? IrdNumber { get; set; }Returns: System.String
Position
Section titled “Position”Property
Employee position or job title.
public string? Position { get; set; }Returns: System.String
Department
Section titled “Department”Property
Employee department.
public string? Department { get; set; }Returns: System.String
EmployerName
Section titled “EmployerName”Property
Employer name as printed on the payslip.
public string? EmployerName { get; set; }Returns: System.String
AccountNumber
Section titled “AccountNumber”Property
Payment account number as printed, including masking or separators.
public string? AccountNumber { get; set; }Returns: System.String
AccountName
Section titled “AccountName”Property
Payment account name as printed.
public string? AccountName { get; set; }Returns: System.String
Address
Section titled “Address”Property
Structured New Zealand address collapsed into one NZ2 display field.
public NewZealandAddress? Address { get; set; }Returns: Verifiabl.NewZealandAddress
Class in Verifiabl
Formats employee PII into Verifiabl’s compact plaintext wire format and back.
The wire format is a pipe-delimited plaintext string. It is encrypted before being embedded in the barcode and is never sent to the Verifiabl API in plaintext.
Verifiabl.Pii.Format(Verifiabl.PiiFields) retains the existing P2 compatibility layout.
Verifiabl.Pii.FormatAustralian(Verifiabl.AustralianPiiFields) and
Verifiabl.Pii.FormatNewZealand(Verifiabl.NewZealandPiiFields) write the AU2 and NZ2
jurisdiction profiles.
Legacy P1 plaintext remains readable through Verifiabl.Pii.Parse(System.String) for existing
documents, but cannot be generated.
public static class PiiInheritance: System.Object
Format(PiiFields)
Section titled “Format(PiiFields)”Method
Format employee PII as the current P2 plaintext. The result is what you
encrypt with Verifiabl.VerifiablCrypto.EncryptPii(System.String,System.Byte[]) before embedding it
in a barcode.
public static string Format(PiiFields fields)| Parameter | Type | Description |
|---|---|---|
fields |
Verifiabl.PiiFields |
Returns: System.String
FormatAustralian(AustralianPiiFields)
Section titled “FormatAustralian(AustralianPiiFields)”Method
Format Australian employee PII as the fixed-arity AU2 plaintext paired
with au.payslip.v2.
public static string FormatAustralian(AustralianPiiFields fields)| Parameter | Type | Description |
|---|---|---|
fields |
Verifiabl.AustralianPiiFields |
Returns: System.String
FormatNewZealand(NewZealandPiiFields)
Section titled “FormatNewZealand(NewZealandPiiFields)”Method
Format New Zealand employee PII as the fixed-arity NZ2 plaintext paired
with nz.payslip.v2.
public static string FormatNewZealand(NewZealandPiiFields fields)| Parameter | Type | Description |
|---|---|---|
fields |
Verifiabl.NewZealandPiiFields |
Returns: System.String
Parse(string)
Section titled “Parse(string)”Method
Parse Verifiabl’s compact PII wire format back into named fields. Empty
segments are left null, mirroring Verifiabl’s scan-time behaviour.
Useful for round-trip testing your integration; not needed in the normal issuance flow.
public static PiiFields Parse(string plaintext)| Parameter | Type | Description |
|---|---|---|
plaintext |
System.String |
Returns: Verifiabl.PiiFields
Exceptions
| Type | Condition |
|---|---|
System.FormatException |
The input is not a valid P1 or P2 PII string. |
PiiFields
Section titled “PiiFields”Class in Verifiabl
Employee PII fields carried in the encrypted barcode payload. All fields are optional; omitted fields are encoded as empty segments and skipped by Verifiabl.
P2 values must contain valid Unicode and must not contain the pipe character
| (the wire delimiter) or Unicode General Categories Cc (control), Cf
(format), Zl (line separator), or Zp (paragraph separator). The complete P2
plaintext, including framing and delimiters, is limited to 1024 UTF-8 bytes
when written. Values are preserved without Unicode normalization.
public class PiiFieldsInheritance: System.Object
EmployeeName
Section titled “EmployeeName”Property
Employee full name as printed on the payslip.
public string? EmployeeName { get; set; }Returns: System.String
Position
Section titled “Position”Property
Employee position or job title.
public string? Position { get; set; }Returns: System.String
Department
Section titled “Department”Property
Employee department.
public string? Department { get; set; }Returns: System.String
EmployerAbn
Section titled “EmployerAbn”Property
Employer Australian Business Number.
public string? EmployerAbn { get; set; }Returns: System.String
Property
Bank State Branch code of the payment account.
public string? Bsb { get; set; }Returns: System.String
AccountNumber
Section titled “AccountNumber”Property
Payment account number.
public string? AccountNumber { get; set; }Returns: System.String
AccountName
Section titled “AccountName”Property
Payment account name.
public string? AccountName { get; set; }Returns: System.String
Address
Section titled “Address”Property
Optional unstructured address, preserved verbatim. P2 has no address-specific limit; the complete newly written P2 plaintext, including framing and delimiters, is limited to 1024 UTF-8 bytes.
public string? Address { get; set; }Returns: System.String
PreparedV2Payslip
Section titled “PreparedV2Payslip”Class in Verifiabl
A locally encrypted v2 issuance, with a persistent self-managed reference.
public sealed class PreparedV2PayslipInheritance: System.Object
VerifiablReference
Section titled “VerifiablReference”Property
Persist with the registration for self-managed retries across processes.
public string VerifiablReference { get; }Returns: System.String
Registration
Section titled “Registration”Property
Self-managed request; also suitable for a batch record with this reference.
public RegisterNonPiiRequest Registration { get; }Returns: Verifiabl.Client.RegisterNonPiiRequest
ApiManagedRegistration
Section titled “ApiManagedRegistration”Property
The API-managed flow allocates its own reference and cannot retry ambiguous failures.
public RegisterAndBuildBarcodeRequest ApiManagedRegistration { get; }Returns: Verifiabl.Client.RegisterAndBuildBarcodeRequest
BarcodeParts(string)
Section titled “BarcodeParts(string)”Method
Pair the registration response reference with this issuance’s ciphertext.
public BarcodeParts BarcodeParts(string reference)| Parameter | Type | Description |
|---|---|---|
reference |
System.String |
Returns: Verifiabl.BarcodeParts
ScanUrlOptions
Section titled “ScanUrlOptions”Class in Verifiabl
Options for Verifiabl.VerifiablBarcode.BuildScanUrl(Verifiabl.BarcodeParts,Verifiabl.ScanUrlOptions).
public sealed class ScanUrlOptionsInheritance: System.Object
Environment
Section titled “Environment”Property
API environment for the public QR scan URL. Defaults to production.
public VerifiablEnvironment Environment { get; set; }Returns: Verifiabl.VerifiablEnvironment
ScanBaseUrl
Section titled “ScanBaseUrl”Property
Advanced override for the public QR scan URL origin. Defaults to the selected environment’s scan URL origin. Must use https. This URL is printed on payslip documents and cannot be changed after issuance.
public Uri? ScanBaseUrl { get; set; }Returns: System.Uri
V2Issuance
Section titled “V2Issuance”Class in Verifiabl
Recommended jurisdiction-specific v2 path; low-level APIs remain available.
public static class V2IssuanceInheritance: System.Object
PrepareAustralian(AustralianPiiFields, AustralianPayslipV2, DateTimeOffset, byte[], string?)
Section titled “PrepareAustralian(AustralianPiiFields, AustralianPayslipV2, DateTimeOffset, byte[], string?)”Method
Validate and encrypt an Australian v2 payslip using the AU2 PII profile.
public static PreparedV2Payslip PrepareAustralian(AustralianPiiFields pii, AustralianPayslipV2 payslip, DateTimeOffset issuedAt, byte[] key, string? verifiablReference = null)| Parameter | Type | Description |
|---|---|---|
pii |
Verifiabl.AustralianPiiFields |
|
payslip |
Verifiabl.Client.AustralianPayslipV2 |
|
issuedAt |
System.DateTimeOffset |
|
key |
System.Byte[] |
|
verifiablReference |
System.String |
Returns: Verifiabl.PreparedV2Payslip
PrepareNewZealand(NewZealandPiiFields, NewZealandPayslipV2, DateTimeOffset, byte[], string?)
Section titled “PrepareNewZealand(NewZealandPiiFields, NewZealandPayslipV2, DateTimeOffset, byte[], string?)”Method
Validate and encrypt a New Zealand v2 payslip using the NZ2 PII profile.
public static PreparedV2Payslip PrepareNewZealand(NewZealandPiiFields pii, NewZealandPayslipV2 payslip, DateTimeOffset issuedAt, byte[] key, string? verifiablReference = null)| Parameter | Type | Description |
|---|---|---|
pii |
Verifiabl.NewZealandPiiFields |
|
payslip |
Verifiabl.Client.NewZealandPayslipV2 |
|
issuedAt |
System.DateTimeOffset |
|
key |
System.Byte[] |
|
verifiablReference |
System.String |
Returns: Verifiabl.PreparedV2Payslip
VerifiablBarcode
Section titled “VerifiablBarcode”Class in Verifiabl
Builds the payload and scan URL embedded in Verifiabl barcodes, and renders the branded “Secured by Verifiabl” QR badge as SVG.
public static class VerifiablBarcodeInheritance: System.Object
PdfPayloadXmpNamespace
Section titled “PdfPayloadXmpNamespace”Field
XMP namespace for the PDF metadata copy of the barcode payload. The namespace is permanent: it is embedded in already-issued PDFs, so it must not change.
Write the barcode payload (Verifiabl.VerifiablBarcode.BuildPayload(Verifiabl.BarcodeParts)) into the payslip
PDF’s XMP metadata in addition to the QR code, so a verifier can read the
payload even when the QR itself cannot be scanned. Both hold the identical
encrypted 2|verifiablReference|&lt;Base32 ciphertext&gt; value by default; never
write plaintext PII to metadata, which is not encrypted. Write the value
with any PDF toolchain that can set a custom XMP property; the SDK only
provides the keys.
public const string PdfPayloadXmpNamespace = "https://verifiabl.io/ns/"Returns: System.String
PdfPayloadXmpProperty
Section titled “PdfPayloadXmpProperty”Field
XMP property name for the PDF metadata copy of the payload.
public const string PdfPayloadXmpProperty = "payload"Returns: System.String
BuildPayload(BarcodeParts)
Section titled “BuildPayload(BarcodeParts)”Method
Build the default v2 barcode payload: 2|&lt;verifiablReference&gt;|&lt;Base32 ciphertext&gt;.
This is the bare wire format, and the value to write into the PDF’s XMP
metadata. For QR codes intended to be scanned by phones, prefer
Verifiabl.VerifiablBarcode.BuildScanUrl(Verifiabl.BarcodeParts,Verifiabl.ScanUrlOptions), which carries the same reference and
ciphertext as a public scan-redirect URL.
public static string BuildPayload(BarcodeParts parts)| Parameter | Type | Description |
|---|---|---|
parts |
Verifiabl.BarcodeParts |
Returns: System.String
BuildScanUrl(BarcodeParts, ScanUrlOptions?)
Section titled “BuildScanUrl(BarcodeParts, ScanUrlOptions?)”Method
Build the URL encoded into Verifiabl QR codes. The default is:
https://v.verifiabl.io/v/&lt;verifiablReference&gt;#2.&lt;Base32 ciphertext&gt;.
The scan URL sends scanners to Verifiabl instead of exposing raw ciphertext
in a phone camera preview.
The ciphertext rides in the fragment, which no client transmits to a
server, so it cannot reach a request log at Verifiabl or at any
intermediary. Every character stays inside the URI-safe Base32 or
base64url alphabets plus ., which keeps scanners treating this as a URL and
offering tap-to-open rather than showing it as plain text.
public static string BuildScanUrl(BarcodeParts parts, ScanUrlOptions? options = null)| Parameter | Type | Description |
|---|---|---|
parts |
Verifiabl.BarcodeParts |
|
options |
Verifiabl.ScanUrlOptions |
Returns: System.String
CreateSvg(BarcodeParts, BarcodeSvgOptions?)
Section titled “CreateSvg(BarcodeParts, BarcodeSvgOptions?)”Method
Render the branded Verifiabl barcode as a standalone SVG suitable for embedding in a payslip PDF.
Takes the Verifiabl reference from Verifiabl.Client.VerifiablClient.RegisterNonPiiAsync(Verifiabl.Client.RegisterNonPiiRequest,System.Threading.CancellationToken)
and the encrypted PII ciphertext from Verifiabl.VerifiablCrypto.EncryptPii(System.String,System.Byte[]).
SVG scales to any size without losing quality; if your document pipeline
needs a raster image, use Verifiabl.VerifiablBarcode.CreatePng(Verifiabl.BarcodeParts,Verifiabl.BarcodeSvgOptions,System.Int32) rather than rasterising
the SVG yourself, so module edges stay crisp and scannable.
public static BarcodeSvgResult CreateSvg(BarcodeParts parts, BarcodeSvgOptions? options = null)| Parameter | Type | Description |
|---|---|---|
parts |
Verifiabl.BarcodeParts |
|
options |
Verifiabl.BarcodeSvgOptions |
Returns: Verifiabl.BarcodeSvgResult
CreatePng(BarcodeParts, BarcodeSvgOptions?, int)
Section titled “CreatePng(BarcodeParts, BarcodeSvgOptions?, int)”Method
Render the branded Verifiabl barcode as a PNG.
The PNG is composited deterministically from a pre-rasterised frame plus
exact pixel-aligned QR modules - no vector rasteriser and no native
dependencies - so the same record produces the byte-identical raster in
every Verifiabl SDK. Because the frame is pre-rasterised, PNG output
exists only at pixel widths 480, 720, 960 and 1440 for the vertical
layout, and 940, 1410, 1880 and 2820 for the horizontal layout. Both
width sets render the QR code at the same sizes. The physical print
size is set where the image is placed in the PDF. If you need a
different size, prefer Verifiabl.VerifiablBarcode.CreateSvg(Verifiabl.BarcodeParts,Verifiabl.BarcodeSvgOptions), which scales
continuously. Verifiabl.BarcodeSvgOptions.Width is ignored here;
pixelWidth controls the bitmap size.
public static BarcodePngResult CreatePng(BarcodeParts parts, BarcodeSvgOptions? options = null, int pixelWidth = 0)| Parameter | Type | Description |
|---|---|---|
parts |
Verifiabl.BarcodeParts |
The Verifiabl reference and encrypted PII ciphertext. |
options |
Verifiabl.BarcodeSvgOptions |
Scan URL, layout and error-correction options. |
pixelWidth |
System.Int32 |
Output bitmap width in pixels. The default, 0, selects 720 for the vertical layout and 1410 for the horizontal layout. |
Returns: Verifiabl.BarcodePngResult
VerifiablCrypto
Section titled “VerifiablCrypto”Class in Verifiabl
PII encryption helper.
Verifiabl decrypts barcode ciphertext with AES-256-GCM using a 96-bit IV and a
128-bit authentication tag. Verifiabl.VerifiablCrypto.EncryptPii(System.String,System.Byte[]) returns the IV, tag, and
ciphertext as bytes; the SDK applies the required encoding when it sends an API
request or builds a barcode.
Each provider has its own encryption key, so a ciphertext can only be decrypted with the key of the provider that issued it.
Key handling rules (ISO 27001-aligned, these are your obligations as a provider): the 32-byte key must come from a KMS or secrets manager — never hard-code it, commit it, or log it. The formatted plaintext string is PII; keep it in memory only, never log it or persist it.
On .NET Framework (the net472 build) AES-GCM is provided by Microsoft.Bcl.Cryptography and is supported on Windows only.
public static class VerifiablCryptoInheritance: System.Object
EncryptPii(string, byte[])
Section titled “EncryptPii(string, byte[])”Method
Encrypt a formatted PII string with AES-256-GCM. The GCM authentication tag, returned in the metadata, lets the verifier detect any tampering with the ciphertext at scan time.
Every call draws a fresh random IV, which is what keeps AES-256-GCM safe
under one key. Never store the returned
Verifiabl.EncryptedPii.Metadata and send it again with different
content: registration rejects a repeated IV as
Verifiabl.Client.VerifiablIvReuseException, or in a batch as an error
result matched by Verifiabl.Client.BatchRecordResult.IsIvReused.
public static EncryptedPii EncryptPii(string plaintext, byte[] key)| Parameter | Type | Description |
|---|---|---|
plaintext |
System.String |
The formatted string from Verifiabl.Pii.Format(Verifiabl.PiiFields). |
key |
System.Byte[] |
Your 32-byte provider encryption key. |
Returns: Verifiabl.EncryptedPii
VerifiablEndpoints
Section titled “VerifiablEndpoints”Class in Verifiabl
Issuer API and public scan URL origins for each Verifiabl environment.
public static class VerifiablEndpointsInheritance: System.Object
ProductionIssuerBaseUrl
Section titled “ProductionIssuerBaseUrl”Field
Production issuer API origin used by issuing integrations.
public const string ProductionIssuerBaseUrl = "https://register.verifiabl.io"Returns: System.String
ProductionScanBaseUrl
Section titled “ProductionScanBaseUrl”Field
Production origin of the public QR scan URL printed on documents.
public const string ProductionScanBaseUrl = "https://v.verifiabl.io"Returns: System.String
SandboxIssuerBaseUrl
Section titled “SandboxIssuerBaseUrl”Field
Sandbox issuer API origin, selected via Verifiabl.VerifiablEnvironment.Sandbox.
public const string SandboxIssuerBaseUrl = "https://register.sandbox.verifiabl.io"Returns: System.String
SandboxScanBaseUrl
Section titled “SandboxScanBaseUrl”Field
Sandbox origin of the public QR scan URL.
public const string SandboxScanBaseUrl = "https://v.sandbox.verifiabl.io"Returns: System.String
VerifiablEnvironment
Section titled “VerifiablEnvironment”Enum in Verifiabl
The Verifiabl API environment a client or barcode targets.
public enum VerifiablEnvironmentProduction
Section titled “Production”Field
Production endpoints. The default.
Production = 0Returns: Verifiabl.VerifiablEnvironment
Sandbox
Section titled “Sandbox”Field
Sandbox endpoints, for integration testing with sandbox credentials.
Sandbox = 1Returns: Verifiabl.VerifiablEnvironment
VerifiablException
Section titled “VerifiablException”Class in Verifiabl
Base type for every failure a Verifiabl API call can report, so one
catch (VerifiablException) covers the whole surface.
Caller mistakes still surface as System.ArgumentException before
anything is sent, and a cancellation you requested still surfaces as
System.OperationCanceledException; neither is a Verifiabl failure.
public abstract class VerifiablException : Exception, ISerializableInheritance: System.Object → System.Exception
Implements: System.Runtime.Serialization.ISerializable
VerifiablReference
Section titled “VerifiablReference”Class in Verifiabl
Helpers for Verifiabl references: the 22-character base64url identifiers embedded in every barcode. References are issued by the API and must be used verbatim.
public static class VerifiablReferenceInheritance: System.Object
Length
Section titled “Length”Field
Exact length of a Verifiabl reference in base64url characters.
public const int Length = 22Returns: System.Int32
Generate()
Section titled “Generate()”Method
Generate a fresh Verifiabl reference: 16 cryptographically random bytes (128 bits) encoded as 22 base64url characters without padding. Matches the server’s algorithm, so a provider-generated reference is indistinguishable from one issued by the API.
Use this for Verifiabl.Client.VerifiablClient.RegisterNonPiiBatchAsync(System.Collections.Generic.IEnumerable{Verifiabl.Client.BatchRecord},System.Threading.CancellationToken), where
providers generate their own references up-front so a whole pay run can be
submitted in one request. Single-record registration does not need it; the
API generates a reference for you and returns it.
public static string Generate()Returns: System.String
IsValid(string?)
Section titled “IsValid(string?)”Method
True when value is a well-formed Verifiabl reference.
public static bool IsValid(string? value)| Parameter | Type | Description |
|---|---|---|
value |
System.String |
Returns: System.Boolean