Product FAQ
Answers about the balance API
Product boundaries, transfer behavior, time-aware balances, and deployment options.
Product and delivery
What is XferAPI?
XferAPI is a balance and ledger API for app-defined credits, points, coins, and other units. It stores accounts and executes balanced, traceable transfers.
Is XferAPI a payment processor or crypto wallet?
No. It does not collect payments, custody funds or crypto, provide exchange, or settle external currency.
Is the service hosted?
Yes. The standard product is an XferAPI-operated HTTPS API and management console.
Where is the hosted service deployed?
The hosted XferAPI service currently operates in the United States. If you have data residency, latency, or regional deployment requirements, contact [email protected] to discuss options.
Can XferAPI run in a private environment?
Yes, through contact sales. XferAPI provides deployment, upgrades, and service in an agreed private environment under a managed commercial engagement.
Is XferAPI used in production?
Yes. As of July 2026, XferAPI and its production predecessor are used by more than 100 organizations, from small businesses to large enterprises. In aggregate, they have completed more than 464 million successful balance transfers and moved over 300 billion customer-defined units. These figures include managed private deployments; they are not hosted-service-only metrics, payment volume, or monetary value. Organization identities and individual usage are not disclosed.
What production history does XferAPI build on?
XferAPI evolved from a predecessor ledger system that operated in production for 3.5 years. Across the production reconciliation records retained for that system, no reconciliation discrepancy was identified during that period, and its persisted transfer and account records supported routine reconciliation and audit review. This describes the predecessor system; it is not current Hosted-service uptime, an availability commitment, an SLA, or independent audit assurance.
Security and operations
How does XferAPI protect service access?
Production service traffic uses HTTPS. API keys select one ledger, carry explicit read and write scopes, and are stored only as one-way hashes. Console sessions are server-side and use HttpOnly cookies. Request correlation IDs and Console audit events support investigation of security-sensitive operations.
How is customer data separated?
A ledger is the accounting isolation boundary for accounts, assets, vocabulary, platform accounts, transfers, records, and service keys. A managed private deployment follows the data, network, and infrastructure boundary documented in its deployment specification.
How does XferAPI test transfer correctness and recovery?
Automated suites exercise the production /v1 router, scoped API keys, MySQL-backed transfers, exact retries, reversals, time-aware balances, and deliberately persisted intermediate states. After concurrent work and recovery settle, the verifier reconciles persisted State, Record, and Account rows and checks zero-sum consistency for each ledger and asset. This is correctness evidence from isolated test environments, not an uptime commitment, production throughput benchmark, or proof of multi-host failover.
What service or compliance commitments apply?
Public material does not claim a specific uptime, latency, recovery objective, compliance certification, or throughput guarantee. Any such commitment applies only when expressly documented in the applicable service agreement or private-deployment specification.
Plans and configuration limits
How many ledgers can a workspace create?
Free, Basic, Pro, and Max workspaces can create 2, 5, 20, and 50 ledgers respectively. Enterprise capacity is agreed separately. Every ledger counts, including a disabled ledger.
How many assets can one ledger configure?
Each ledger can add 2, 5, 10, or 20 additional asset codes on Free, Basic, Pro, or Max. The exact built-in points code does not count. A ledger that omits points does not receive a hidden free slot. Enterprise capacity is custom.
How many platform accounts can one ledger configure?
Free, Basic, Pro, and Max include 3, 10, 25, and 50 additional platform account definitions per ledger. The built-in -1 and -2 definitions do not count, and system account 0 is not a platform account. Each range counts once and may contain 1–20 IDs. Enterprise capacity is custom.
What happens to existing resources after a downgrade?
They remain operational. Existing workspaces, ledgers, assets, platform account definitions, and complete ranges can still be used, queried, edited, reordered, enabled, disabled, and re-enabled. XferAPI blocks only another creation while the relevant current-plan limit is reached. Traffic quota, rate, burst, and entries per transfer change when the downgrade takes effect.
How many Free workspaces may one user own?
A user may create up to two Free workspaces they own. Workspaces joined only as a member do not count. If paid workspaces later downgrade and leave the owner above two, those workspaces keep working; the owner simply cannot create another Free workspace while at or above the limit.
Transfers and balances
What identifies one transfer?
The caller-owned transfer ID and scene identify one operation inside a ledger. Keep that pair and the complete payload stable for concurrent delivery and exact retries of the same operation.
Can one transfer have several sources or destinations?
Yes. A transfer can be N-to-M as long as source and destination totals match independently for every asset.
What happens after an uncertain HTTP response?
For a timeout, disconnect, invalid or missing envelope, internal_error, service_unavailable, or transfer_state_conflict, resend the exact original transfer ID, scene, and payload directly. Do not create a new ID or make a read request first.
When must a retry use a new transfer ID?
For POST /v1/transfers, insufficient_balance and execution-time amount_out_of_range are the terminal transaction failure codes. The original ID-and-scene pair can never later succeed, so fix the business condition and start the next attempt with a new transfer ID. transfer_already_reversed means the pair is already closed, while idempotency_conflict means it belongs to another payload.
Can I reuse the request after a limit response?
Yes. rate_limit_exceeded, quota_exceeded, and billing_suspended do not start a new transfer. After backoff or remediation, resend the same transfer ID, scene, and exact payload.
How does reversal work?
Reversal applies the inverse balance changes for the whole transfer and moves its existing records to their reversal state. If reversal arrives before the transfer, an empty tombstone prevents that later transfer from executing.
Time and accounts
Can value start later or expire?
Yes. Destination entries accept Unix-second start and expiry boundaries. Reads and deductions evaluate availability at that boundary; physical cleanup of expired batches is lazy.
What is a platform account?
It is a ledger-owned negative-ID account range for issuance, spending, fees, settlement, or another platform flow. An entry point can deterministically distribute transfers across its configured ID range.
Which amount type is supported?
Amounts are positive signed-64-bit integer base units encoded as decimal JSON strings. JavaScript backends can convert them directly to BigInt without losing precision.
Does XferAPI decide reward rules or usage pricing?
No. Your application decides why and how much value moves. XferAPI validates and records the resulting accounting operation.
Have an integration or deployment question?
Share the balance flow, expected account topology, and delivery requirements.
Contact XferAPI