How to mint a Skyfire KYAPay token backed by USDC
Fund a Skyfire wallet with USDC on Base, then POST to https://api.skyfire.xyz/api/v1/tokens with a skyfire-api-key to mint kya, pay or kya-pay JWTs that lock funds for settlement.
Skyfire KYAPay tokens are signed JSON Web Tokens that combine a verified agent identity with a pre-committed USDC payment authorization. Buyers create three token types: kya (identity only), pay (payment authorization only) and kya-pay (identity plus payment). Pay and kya-pay tokens reserve the committed amount in the buyer wallet at creation so sellers can charge after delivery. Kya tokens cannot be charged.
As of September 2026, buyers mint tokens by sending an HTTP POST to https://api.skyfire.xyz/api/v1/tokens with a skyfire-api-key header and a JSON body that includes the token type and buyerTag. For pay and kya-pay tokens the request must include tokenAmount. Onboarded sellers use a sellerServiceId from Skyfire’s Directory. Enterprise buyers can target external sellers by passing sellerDomainOrUrl; external tokens are kya-only and use a shorter default expiry.
Wallet funding methods available in the Skyfire dashboard include card funding (instant), USDC on Base (near-instant and low cost) and ACH or wire transfers on paid plans (one to three business days). The service provisions a Buyer Agent and buyer wallet at signup. A Sandbox and Playground are available for testing against nonproduction endpoints.
Token creation enforces amount and expiry rules. TokenAmount must be greater than zero, less than or equal to the buyer wallet balance, and greater than or equal to any seller minimum. Skyfire documentation shows a small example commit of “0.005” USD units. For Directory sellers the default expiry is 24 hours and expiresAt must fall between 10 seconds and 24 hours. External enterprise tokens default to a five-minute expiry and cannot be used to pre-commit funds with a standard buyer API key.
If a token creation request violates amount or expiry bounds, the API returns validation or payment-required errors. Because pay and kya-pay tokens reserve funds at creation, creating a token with a too-small tokenAmount will cause later charge attempts to fail, while creating one with a larger tokenAmount keeps those funds reserved until a charge succeeds or the token expires.
The buyer-seller exchange follows four steps: the buyer presents the JWT to the seller, the seller verifies the token signature and claims, the seller delivers the product or service, and the seller issues Charge Token calls to settle up to the committed amount. Charges on a single token can be split across multiple Charge Token requests. Tokens that were validated before expiry remain chargeable during a 24-hour grace period after expiry. After the charge window closes, settlement typically completes within a three-hour window but may take up to about 51 hours in total. Cumulative charges on a token that exceed $1.00 trigger earlier settlement within the three-hour window.
Seller-side verification requires caching Skyfire’s JWKS from https://app.skyfire.xyz/.well-known/jwks.json for about 60 minutes and rejecting expired tokens at verify time. External sellerDomainOrUrl requests only support kya tokens for standard keys; pay and kya-pay require an onboarded sellerServiceId or enterprise credentials.
Operational issues reported in Skyfire documentation include attempting to create tokens with insufficient wallet balance or below a seller minimum, assuming external domains accept pay tokens on standard keys, and accepting already-expired JWTs without validating expiry. The documentation recommends testing in the Playground: fund a wallet with USDC on Base, mint a small kya-pay token against a Directory sellerServiceId, then run the present → verify → deliver → charge sequence to confirm settlement before production automation.
All API calls and behavior described reflect Skyfire’s public documentation and developer endpoints as of September 2026.








