Licensing Last updated: 2026-11-10

Every ediFabric .NET call needs a serial key from your plan. Copy it from Your account after you sign up for Community or buy a plan. The same serial covers ediFabric .NET, Native, and Cloud. To evaluate without an account, use the demo serial key bd96a836feca45cb91c86ee65d281f52, which works for all three products and has a limited quota.

The examples come with the demo serial key in TrialSerialKey in Config.cs. When its quota runs out, paste your own serial there. For X12 that file is NET Framework 4.8/EdiFabric.Examples.X12.Common/Config.cs. The .NET 6 projects link it, so one edit covers both solutions.

Note

This article is for all EdiFabric versions >= 11.0.0. For older versions use EdiFabric.SerialKey.Set("Valid serial key"), or var token = EdiFabric.SerialKey.GetToken("Valid serial key"); // Save the token to cache ... // Retrieve the token from cache EdiFabric.SerialKey.SetToken("Valid token") instead.

Which call to use

Call one of these before you parse, generate, validate, or acknowledge. From ediFabric .NET 11.2.0, call License.EnsureToken on every plan. The examples call License.EnsureToken(Config.TrialSerialKey, 3600). License.SetSerial still works.

Plan What works Call this
Community License.EnsureToken or License.SetSerial. Online check on each operation. 250 operations per day. Non-production. Never expires. License.EnsureToken
Developer License.EnsureToken. It gets a token bound to this machine, which lasts about a day, and caches it on disk, so a restart reuses it. License.SetSerial also works. License.EnsureToken
Enterprise License.EnsureToken, or License.GetToken and License.SetToken. EnsureToken gets a self-service offline token, which lasts 30 days, caches it on disk, and refreshes it before it expires. Perpetual uses the same calls. A 1-year token (Enterprise) or a 5-year token (Perpetual) is available on request. License.EnsureToken, or License.SetToken on air-gapped hosts
// Every plan, from 11.2.0: gets, caches and refreshes the license; refreshes a token that expires within N seconds
License.EnsureToken(serial, seconds: 3600);

// Community: also works, an online check on each operation
License.SetSerial(serial);

// Enterprise and Perpetual: apply a token you store yourself, such as a long-lived token
License.SetToken(token);

One operation is one parse, generate, validate, or acknowledge call. The Community quota of 250 a day is shared across ediFabric .NET, Native, and Cloud. Past that, calls throw LicenseException with error 639.

Use of the product is subject to the EULA. Upgrading is a serial-key swap. With License.EnsureToken, there is nothing else to change.

Daily quota: 10,000 license calls

Developer and Enterprise allow up to 10,000 calls to the license server per day, shared across ediFabric .NET and Native. Every call that contacts the license server counts, including License.SetSerial, License.EnsureToken when it refreshes, and License.GetToken. Use License.EnsureToken on Developer and an offline token on Enterprise, so that your processes make as few license calls as possible.

Enterprise offline tokens are available during the trial with a 1-day token lifetime, which changes to 30 days after purchase.

The token cache

License.EnsureToken keeps the token it gets in a cache on the machine, so the next process, or the same one after a restart, reuses it instead of contacting the license server. On Community there is no token: it checks online on each operation and caches nothing. The cache is shared by ediFabric .NET and ediFabric Native on the same machine, and its files are readable only by your user account:

  • Windows: %LOCALAPPDATA%\EdiFabric\tokens
  • Linux: ~/.cache/edifabric/tokens, or $XDG_CACHE_HOME/edifabric/tokens when it is set
  • macOS: ~/Library/Caches/EdiFabric/tokens

Set the environment variable EDIFABRIC_TOKEN_CACHE to another folder before the process starts, or to none to turn the cache off. If the license server can't be reached, License.EnsureToken keeps using a valid cached token and tries again at most every 5 minutes. With no cached token, it throws LicenseException with error 640.

Developer: let EnsureToken cache the check

License.EnsureToken gets a token bound to this machine, which lasts about a day, and keeps it in the token cache, so a restart doesn't contact the license server again. Pass seconds to refresh early, before the token expires. A later network blip or a long batch keeps running on that token.

License.GetToken is not available on Developer. Calling it throws LicenseException with error 628. Use EnsureToken.

A seat is one environment: Community leases 3, Developer leases 3, Enterprise is unlimited.

Enterprise and Perpetual: run without internet

Once an offline token is set, by License.EnsureToken or License.SetToken, translation does not contact EdiFabric, and the EDI file is never part of a license call. There are two ways to get a token:

Option 1: self-service 30-day token Option 2: long-lived token
Best forHosts where one machine can reach the internetAir-gapped hosts, or when you don't want a refresh job
How you get itLicense.EnsureToken in each process, or License.GetToken from a scheduled jobSigned request form, after the trial or evaluation period
Lifetime30 days1 year on Enterprise, 5 years on Perpetual
AvailabilityImmediately after purchaseRegistered companies with professional email addresses. Non-refundable once issued

Option 1: self-service 30-day token

Retrieve the token on a machine that can reach the license server, store it, and apply it where the EDI runs.

A connected job writes a token to cache. Offline apps read that token and call SetToken.
  1. A small scheduled job on a machine with internet access calls License.GetToken(serial), for example once a day or once a week, well before the token expires.
  2. It saves the token somewhere all interfaces can read, such as a file share, a database table, Redis or a key vault.
  3. Each interface reads the current token when it starts and calls License.SetToken(token). No license call is made after that.
// Host with internet
var token = License.GetToken(serial);
// Save token to your cache

// Offline host
var token = cache.Get();
License.SetToken(token);

TokenFileCache.Set() in EdiFabric.Examples.X12.Common is a file-cache sample of that GetToken / SetToken pair. TokenFileCache.cs. Refresh before the token expires so a missed job does not stop processing. If GetToken fails repeatedly, contact support or support@edifabric.com.

Option 2: long-lived token

Use this for air-gapped hosts, or if you don't want to run a refresh job. Enterprise gets a 1-year token that runs to the end of your annual term plus 30 days. Perpetual gets a 5-year token that covers the versions released up to the end of your updates or maintenance, replaced free of charge before it expires. Long-lived tokens work with ediFabric .NET 11.2.0, ediFabric Native 1.2.0 and later. Apply it with License.SetToken in the same way.

  • Long-lived tokens are issued after the 14-day Enterprise trial, or 14 days after a Perpetual purchase, and once payment has cleared. They are non-refundable once issued.
  • Only registered legal entities can request one, using a signed request form and professional email addresses. Public and disposable email addresses are declined. How to request a token.
  • If you have internet access on one machine, Option 1 keeps you running until your long-lived token arrives.

Store every token as a secret, and tell us within 2 business days if one is exposed. What happens if a token leaks.

What leaves your network

  • Community. License.EnsureToken checks the serial with the license server when you translate.
  • Developer, Enterprise and Perpetual. License.EnsureToken checks only when the cached token is missing or inside the refresh window you set.
  • Enterprise and Perpetual. License.GetToken checks when you mint a token. License.SetToken applies a token you already have and does not call out.

Parse, generate, validate, and acknowledge run in your process. See the privacy policy.

When a license call fails

Failures throw LicenseException. ErrorCode is the number, and Message is the text.

Error 635 means no serial or token was set. Paste the serial into TrialSerialKey and call License.EnsureToken. Error 639 means the Community daily quota was exceeded. Upgrade at edifabric.com/pricing to continue.

Code Message
620 The token is invalid. Contact support@edifabric.com for assistance
628 The serial number is missing or incorrect. GetToken doesn't work with developer license. Contact support@edifabric.com for assistance
629 License was not installed. Contact support@edifabric.com for assistance
630 No license to use this version: it was released after the end of your maintenance, or after your plan's maximum version. Contact support@edifabric.com for assistance
631 The token has expired. Get and set a new token to continue. Contact support@edifabric.com for assistance
632 The token is missing. Set token to continue. Contact support@edifabric.com for assistance
633 Reached the maximum number of licenses. Set token to continue. Contact support@edifabric.com for assistance
634 Environment not recognized for licensing or reached the maximum number of licenses. Contact support@edifabric.com for assistance
635 Serial or token not found. Either set token or serial to continue. Contact support@edifabric.com for assistance
638 The operation is not supported by your license
639 Your license has reached its daily call limit. Upgrade your plan at edifabric.com to continue using the product.
640 The license server can't be reached and no valid token is cached. Check the internet connection, firewall and proxy settings, and try again.

Use the same EdiFabric 11 package in every project. Parser and buffer codes are listed in the X12 README.

What to do if there is no access to the Authentication API

Confirm that external calls to the Authentication API are not blocked from your environment. License.EnsureToken needs that path on every plan: on Community for each operation, and on the other plans to get and refresh tokens. Enterprise hosts that already have a token only need License.SetToken, which does not call out.

If you are setting firewall rules, allow the Authentication API:

Primary

  • Host: api.edination.com
  • IP: 104.211.12.89
  • Port: 443

Secondary

  • Host: api.edifabric.com
  • IP: floating

The Authentication API runs on more than one server, shared between Microsoft Azure and Amazon AWS. EdiFabric calls the Azure endpoint first when it acquires a token. If that endpoint does not respond after the configured timeout and retries, it calls the backup endpoint on AWS.

If both endpoints are down, or no token can be acquired at all, contact support or support@edifabric.com. We will send a temporary token. Install it on your servers as an environment variable or pass it to License.SetToken. EdiFabric then runs offline until connectivity to the Authentication API is restored.

License.SetToken(temporaryToken);

We also publish the temporary token on our X. Contacting us there is useful during an outage.