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 callOne 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/tokenswhen 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_tokenreturns 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 for | Hosts where one machine can reach the internet | Air-gapped hosts, or when you don't want a refresh job |
| How you get it | ensure_token in each process, or get_token from a scheduled job | Signed request form, after the trial or evaluation period |
| Lifetime | 30 days | 1 year on Enterprise, 5 years on Perpetual |
| Availability | Immediately after purchase | Registered 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:
- 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. - It saves the token somewhere all interfaces can read, such as a file share, a database table, Redis or a key vault.
- 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 hostsQuery 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)