Webhook signature and timestamp changes
Webhooks
- The HMAC key for
X-Zeam-Signaturechanged from the association id to theX-Webhook-Idvalue. Update your signature verification to key onX-Webhook-Id. - Deliveries now include
X-Webhook-Ts— the delivery timestamp as Unix milliseconds (UTC). Use it to reject stale deliveries and shrink your replay window. See Webhook security.
Breaking: payment endpoints, asset model, auth, and connector changes
Breaking changes that require integrator updates.Payments — endpoint split
POST /v1/payments/p2pandPOST /v1/payments/swapare removed. Use the dedicated variants:POST /v1/payments/p2p/own— same-asset transfer between your own wallets.POST /v1/payments/p2p/beneficiary— same-asset payment to a beneficiary’s CRYPTO destination.POST /v1/payments/swap/ownandPOST /v1/payments/swap/beneficiary— cross-asset equivalents.POST /v1/payments/p2p/own/multi— new. Sends multiple own-wallet transfers as one atomic Stellar transaction (all legs settle or fail together).
sendingAssetandreceivingAssetare renamed tosendingAssetCodeandreceivingAssetCodeacross all payment endpoints, including offramp. Supply a bare code (e.g.USDZ); the gateway resolves the issuer server-side.
- Added
GET /v1/assetsandGET /v1/assets/{assetCode}— the platform asset registry, listing each asset’s code and Stellar issuer. Use this to discover valid asset codes before submitting payments. - Removed
GET /v1/wallet-typesandGET /v1/networks. Wallet creation now only acceptswalletNameandassetCode; network, type, and custody are fixed platform-side.
- The
x-association-idheader is no longer read or required. The association is resolved server-side from the token’s registered client. Remove it from your requests. A valid token whose client has no registered association now returns403.
- The
countryquery parameter onGET /v1/connectorsis renamed tocountryIsoCode2(ISO 3166-1 alpha-2). Connector responses no longer include afeesarray; usePOST /v1/quotesfor authoritative pricing.
serviceCommissionis removed from the quote response.
countryIso→countryIsoCode2(ISO 3166-1 alpha-2);currencyCode→currencyIsoCode3(ISO 4217) on both input and response.- For
CRYPTOdestinations: supplynetworkName,assetSymbol, andwalletAddress. Internal ids (networkId,assetId,connectorId) are no longer accepted.
GET /v1/walletsnow accepts optionalassetCodeandnetworkNamefilters.- Wallet resources now include
accountNumberandnetworkNamein place of the internaltypeIdandnetworkIdfields.
Payments, transactions, and webhook management
Reworked the money-movement surface and aligned the documentation with the
implemented contract.Payments
- Added
POST /v1/payments/p2p(same-asset transfer),POST /v1/payments/swap(cross-asset transfer), andPOST /v1/payments/offramp(cash-out against a quote). Each is asynchronous and returns202 Acceptedwith atransactionRecordId; replaying anidempotencyKeyreturns the original result withisIdempotent: true. - Added
GET /v1/payments/enumsandGET /v1/payments/requirementsfor the off-ramp compliance vocabularies and per-connector field requirements. - Removed the transaction-intent model:
POST /v1/intents,GET /v1/intents/{intentId}, and the singlePOST /v1/paymentsare no longer part of the integrator surface.
- Added
GET /v1/transactionsandGET /v1/transactions/{transactionId}to track a submission to its outcome.
- Added
POST /v1/webhooks(register),GET /v1/webhooks/{webhookId}(retrieve), andDELETE /v1/webhooks/{webhookId}(deactivate) alongside listing.
- Protected routes now require the
x-association-idheader, whose value is returned asassociationIdwhen you issue a token.
- New guides: Register your application and Your first transaction.
- Expanded Webhooks with events, security, and troubleshooting, and added Use the Zeam docs with MCP.
- Documented sandbox off-ramp testing.
Resource expansion: wallets, beneficiaries, connectors
Extended the gateway’s REST surface with read and write operations across
wallets, beneficiaries, and connectors.Wallets
- Added
GET /v1/wallets/{walletId}— retrieve a single wallet. Balances are now embedded in the wallet resource (balancesarray) on List, Get, and Create responses, with best-effort enrichment from Horizon. - Added
GET /v1/wallet-types— reference list for validtypeIdvalues when creating a wallet. - Added
GET /v1/networks— reference list for validnetworkIdvalues when creating a wallet. POST /v1/walletsnow requiresassetCodefor the initial trustline.- Removed
GET /v1/wallets/{walletId}/balancesandGET /v1/wallets/{walletId}/transactions(use the embeddedbalancesfield on the wallet resource instead).
- Added
GET /v1/beneficiaries/{beneficiaryId}— retrieve a single beneficiary with full nested detail (individual or business sub-object, addresses, tags, and payment destinations). - Added
PATCH /v1/beneficiaries/{beneficiaryId}— update a beneficiary using merge semantics. - Added
GET /v1/beneficiaries/{beneficiaryId}/payment-destinations— list payment destinations for a beneficiary, with optionalmethodfilter. - Added
POST /v1/beneficiaries/{beneficiaryId}/payment-destinations— add a payment destination (BANK, MOBILE_MONEY, or CRYPTO). - Added
GET /v1/beneficiaries/{beneficiaryId}/payment-destinations/{destinationId}— retrieve a single payment destination. POST /v1/beneficiariesbody updated:individual,business,addresses, andtagsfields are now accepted. ThedisplayNamefield has been removed.
- Added
GET /v1/connectors/{connectorId}— retrieve a single connector with its full execution steps (not available from the list). Accepts an optionaltransactionTypequery parameter to scope step data.
Initial documentation
First release of the Zeam API Gateway developer documentation.
- Overview, API concepts, and quickstart.
- Authentication: the two-factor model, API keys, and access tokens.
- Sandbox and production promotion.
- Webhooks: registration through the business portal and listing via the API.
- Platform reference: conventions, errors, pagination, and rate limits.
- API reference generated from the gateway’s OpenAPI contract.