Licensing Last updated: 2026-11-10

ediFabric Native checks the license on parse, build, split, and merge. Copy the serial 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.

Call the license function for your plan before you translate. Buffers are UTF-8, pointer + length. The C signatures are in the Native introduction.

Which call to use

Plan What works Call this
Community ensure_token or set_serial. Online check on each operation. 250 operations per day. Non-production. 3 seats. Never expires. ensure_token
Developer ensure_token. It gets a token bound to this machine, which lasts about a day, and caches it on disk, so a restart reuses it. set_serial also works. get_token is not available (error 628). 3 seats. ensure_token
Enterprise ensure_token, or get_token and set_token. ensure_token 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. Unlimited seats. ensure_token, or set_token on air-gapped hosts
ensure_token(serial, seconds)        // every plan, from 1.2.0: refresh a token that expires within seconds

set_serial(serial)                    // Community: also works, an online check on each operation

get_token(serial) → token             // Enterprise, Perpetual: mint a token to store yourself
set_token(token)                      // Enterprise, Perpetual: apply a stored or long-lived token, no license call

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, the call returns error 639. A seat is one environment.

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 set_serial, ensure_token when it refreshes, and get_token. Use ensure_token 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. Use of the product is subject to the EULA. Upgrading is a serial-key swap. With ensure_token, there is nothing else to change.

The token cache

ensure_token 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, ensure_token keeps using a valid cached token and tries again at most every 5 minutes. With no cached token, it fails with error 640.

Community

Sign up free. No credit card. The plan never expires.

ensure_token(serial, 0)    // each process start; set_serial(serial) also works
  • Online check on each operation. The machine needs internet when it translates.
  • 250 operations per day, three seats, non-production evaluation.
  • You may not redistribute the library or the model files.

Developer

For production use by an individual or a small team. ensure_token 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 before the token expires, so a later outage or a long batch keeps running.

ensure_token(serial, 3600)           // refresh if the cached token expires within 3600 seconds
  • 3 seats. At the limit, a new environment takes the oldest lease from a previous day.
  • get_token returns error 628 on this plan.
  • You may process your own EDI in a product you operate. Processing other companies' files as a service requires Enterprise or Perpetual, and redistributing the library inside a product you sell requires the OEM rider on Enterprise.

Enterprise and Perpetual

Once an offline token is set, by ensure_token or set_token, translation runs offline, 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 itensure_token in each process, or get_token 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

Mint tokens on a machine that can reach the Authentication API, store them, and apply them wherever EDI runs:

  1. A small scheduled job on a machine with internet access calls get_token(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 set_token(token). No license call is made after that.
get_token(serial) → token        // store it; refresh before it expires
set_token(token)                 // every process, including offline hosts

Query get_token_expiration (UTC ticks; 0 means none) and refresh with get_token before the token expires. validate_token checks a token without caching it.

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

Plan details

  • Unlimited seats.
  • Perpetual is Enterprise rights bought once, excluding Cloud. The serial does not expire. Updates and support after the first year are optional maintenance.
  • OEM, for shipping the library inside a product you sell, is quoted on top of Enterprise.

License API

Entry point Signature Purpose
set_serial int set_serial(byte* serial, int len) Community. Online check on each operation.
ensure_token int ensure_token(byte* serial, int len, int seconds) Every plan, from 1.2.0. Gets a token, or checks online on Community, and keeps it in the token cache. seconds is the refresh window: a token that expires within it is refreshed.
get_token int get_token(byte* serial, int len, byte* out, int cap, int* outLen) Enterprise. Fetch a signed token. Grow the buffer and retry when the call returns 1.
set_token int set_token(byte* token, int len) Enterprise. Apply a token for this process. No license call.
validate_token int validate_token(byte* token, int len) Validate a token without caching it.
get_token_expiration int get_token_expiration(long* expUtc) Token expiry as UTC ticks. 0 means none.
get_app_version int get_app_version(int* version) Library application version.

0 is success. Error 635 means no serial or token was set. Error 628 means the serial is missing or incorrect, including get_token on a Developer license. Error 631 means the token expired. The full list is in the Native introduction.

Authentication API

set_serial, ensure_token, and get_token reach the Authentication API over HTTPS. set_token does not. Allow these hosts if you set firewall rules:

Primary

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

Secondary

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

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

If both endpoints are down, or no token can be acquired, contact support or support@edifabric.com. We will send a temporary token. Pass it to set_token so Native keeps running until the Authentication API is reachable again. We also publish that token on our X.

set_token(temporaryToken)