Changelog
Changes to the merchant-facing API contract and to the documentation that describes it, newest first.
How to read the version numbers. They track the contract, not the prose:
| Bump | Means |
|---|---|
Major (2.0.0) | A breaking change — an endpoint, field, or behavior your integration relies on no longer works the same way. |
Minor (1.3.0) | Something added or extended — a new endpoint, request field, response field, status, or error code. Existing integrations keep working. |
Patch (1.3.1) | Clarification or correction to the docs with no change in API behavior. |
Entries describe what changed for an integration. Where a change is only visible on gateways with a specific arrangement (platform-billed, open-amount, cashout API), the entry says so — if that does not apply to your gateway, nothing changed for you.
Unreleased
Nothing yet.
1.7.0 — 2026-08-04
Open-amount payments — below-minimum deposits now settle
- Changed. On an open-amount payment, the first on-chain deposit settles
the payment whatever its size. At or above the gateway minimum it resolves
SUCCESS; below the minimum it resolvesMISMATCH, with the minimum standing in as the expected amount. Funds are captured and credited either way. Previously a below-minimum deposit was documented as ignored, leaving the paymentPENDINGfor a later, larger one — there is no second chance to top up. See Create payment → Open-amount payments. - Changed.
deviationUsdon verify now appears for open-amount payments onMISMATCH— the signed shortfall against the minimum (e.g."-2"for $8 received against a $10 minimum). It remains absent onSUCCESS. - Added.
expiresAt(RFC 3339) on the public payment object — the payment's authoritative deadline. Drive countdowns from it rather than re-derivingcreatedAt + timeoutSecondsclient-side.
1.6.0 — 2026-08-03
Platform-billed gateways create open-amount payments only
- Changed. On a platform-billed gateway,
POST /payments(fixed amount) now returns403. These gateways create open-amount payments only. If you need fixed-amount payments as well, use a separate standard gateway alongside it. See Error codes. - Changed.
checkAmountDeviationjoinstxFeePayer,commissionFeePayer,overAcceptableDiff,underAcceptableDiff, andacceptableDiffKindin the set of request fields ignored on a platform-billed gateway — the arrangement fixes them. - Changed. Where an arrangement limits the offered assets to specific stable
assets, that restriction applies to open-amount payments only. Assets
outside it are dropped from the offers, and a create with none remaining is
rejected with
422. - Clarified.
POST /payments/open-amountaccepts noassets[]override — offers are always the gateway's enabled-asset list at current prices.
1.5.0 — 2026-07-27
Open-amount payments and platform-billed gateways
- Added. POST
/payments/open-amount— creates a payment with no fixed amount, where the payer chooses how much to send. For donations, tips, top-ups, and pay-what-you-want flows. Deliberately a separate endpoint, not a flag: there is noamount, and no fee-payer or tolerance fields. The response shape is identical to the fixed-amount create ({ paymentUid, paymentUrl }). Available per gateway by arrangement; otherwise it returns403. See Create payment. - Added.
openAmount(boolean) andminAmountUsd(decimal string) on the public payment object. WhenopenAmountistrue, each offer'samount/totalValueare0placeholders and must not be shown as a figure to send. - Added.
403 forbiddenon/payments/open-amountwhen the gateway is not provisioned for open-amount payments — see Error codes. - Added. Platform-billed gateways documented on Create payment and Settlement / Cashout: Finomesh covers the network fee and commission on every payment, billed separately rather than deducted per payment.
- Changed. On verify, open-amount payments carry
no
expectedAmount, andamount/amountUsdread0until the deposit confirms.
1.4.0 — 2026-07-20
Transaction inquiry
- Added. POST
/payments/{id}/inquiry— submit a customer's transaction hash against a payment that never resolved on its own. The hash is verified on-chain against every deposit address the payment holds; on a match the payment enters the normal crediting pipeline and your webhook fires. A recovery path for "my customer says they paid but the payment is stillPENDING", not part of the normal flow — attempts are limited. See Submit transaction inquiry. - Note. Inquiry is the one exception to the standard error envelope: its
verdicts — including rejections such as
wrong_recipient— return200 OKwith aresultCodeindata. Only transport and auth failures use the usual error codes. See Error codes and the endpoint's result codes. - Added. Inquiry documented as an escalation step in Reconciliation.
1.3.0 — 2026-07-15
Cashout approval over the API
- Added. GET
/merchant/settlements— list your cashouts with an optionalstatusfilter, pluslimit/page/afterpaging. Use?status=PENDING_APPROVALto find what is waiting, andpagination.totalto count without pulling every row. - Added. POST
/merchant/settlements/{id}/approve— release a parked cashout entirely over the API (2FA required), instead of approving it in the dashboard. - Replaced. The
requesterIdentitystring added in 1.2.0 is superseded bymetadata— a free-form one-level JSON object echoed back on read and shown to the approver key by key. Total size capped at 4 KB; arequesterkey is shown first. - Clarified.
REJECTEDis a cancellation performed by an operator — approval is the only cashout action you take over the API. See Cashout API.
1.2.0 — 2026-07-14
Cashout approval cap
- Added. A per-gateway cashout approval cap (a USD ceiling, set in the
dashboard). With a cap set, any API cashout whose USD value is strictly
greater than the cap is created as
PENDING_APPROVALinstead ofREQUESTED: funds are reserved but not dispatched until a team member approves it. Approving moves it toREQUESTED; rejecting returns the funds to your available balance. - Added.
requesterIdentity(optional, ≤ 128 chars) on create — identifies who or what initiated the cashout, shown to the approver when a request parks. (Replaced bymetadatain 1.3.0.) - Action required if you set a cap.
POST /merchant/settlementsgains a fifth status. If your integration switches onstatus, handlePENDING_APPROVAL(as "pending, not yet dispatched") before enabling the cap. With no cap configured, behavior is unchanged and the status never appears. See Cashout API → Approval cap. - Clarified.
Idempotency-Keystill returns the original settlement id on replay while a request is parked — poll the status or list endpoint rather than re-POSTing.
1.1.0 — 2026-07-08
Estimate cashout fee
- Added. POST
/merchant/settlements/estimate-fee— a dry run that returns the exactfeeLockedandnetAmounta real create of the same body would produce, but creates nothing: no settlement, no address-book entry, no balance claimed. Same body as create minuslabel. Being read-only it needs noIdempotency-Key(it still carries a body to sign). See Estimate cashout fee and Cashout API. - Changed. The destination
addresson the fee quote is now validated for the asset's chain (EVM EIP-55 checksum, TRON/UTXO base58check). A malformed address returns422 validation_errorbefore any fee is quoted, matching create. - Added. Fee-efficiency guidance on Create settlement: every settlement is a separate on-chain transaction paying its own network fee, so one larger cashout costs less than several partial ones.
1.0.0 — 2026-07-07
Documentation baseline
- Reorganized the documentation into a developer-journey structure: Get Started, Core Concepts, Accept Payments, Cashout / Settlements, API Reference, Testing, and Resources.
- Split the Introduction into Overview, Payment Flow, Payment Statuses, and Environments; moved Authentication under API Reference.
- Added Core Concepts pages: Checkout Modes, Callback vs Webhook, Amount Deviation, Settlement / Cashout.
- Added a dedicated Cashout / Settlements section (Overview, Enable, Signing Requests, Get Balances, Create Settlement, Get Settlement Status, Cashout Errors).
- Added Reconciliation under Accept Payments.
- Added a Testing section (Sandbox Overview, Test Payment Scenarios, Test Webhooks, Test API Mode, Test Cashout).
- Added Resources: Security Checklist, FAQ, Glossary, Changelog.
- Split Error Codes and Rate Limits into their own API Reference pages.
- Standardized request, response, header, parameter, and error tables across the API reference; every error table now has a How to fix column.
- Made example URLs environment-aware so sandbox and production hosts are never mixed up.
- Old URLs (
/quickstart,/authentication,/guides/*) redirect to their new locations.