API Reference · v1 · https://api.denaropay.com/v1

API
reference.

Full endpoint reference for the Denaro Pay REST API. All endpoints require HTTPS. JWT Bearer token required on authenticated routes.

← Documentation overview
§A — Auth
Registration, login, phone verification, token refresh. No authentication required on these endpoints.
MethodPathDescriptionAuth
POST/auth/registerRegister a new user account. Requires email, password, phone. Initiates KYC flow. Returns user object and triggers Persona KYC session.
POST/auth/loginAuthenticate and receive JWT access token and refresh token. Body: email, password, optional biometric_token. Returns access_token, refresh_token, expires_in.
POST/auth/verify-phoneVerify phone number via SMS OTP. Body: phone, otp_code. Required before wallet creation is enabled.
POST/auth/refreshExchange a valid refresh token for a new access token. Body: refresh_token. Returns new access_token and refresh_token pair.
POST/auth/logoutInvalidate the current access and refresh tokens. Requires active access token.JWT
§B — Wallet
USDC wallet operations — balance, address, and transaction history on Base L2.
MethodPathDescriptionAuth
GET/wallet/balanceGet current USDC balance including yield accrued today. Returns balance_usdc, yield_today, yield_apy, wallet_address.JWT
GET/wallet/addressGet the Base L2 wallet address for the authenticated user. Returns address, network, chain_id.JWT
GET/wallet/transactionsGet paginated transaction history. Query params: page, per_page (max 100), type (inbound|outbound|yield|card). Returns transaction array with Base explorer links.JWT
§C — Transfer
Send and request USDC. Every send requires a valid biometric session token.
MethodPathDescriptionAuth
POST/transfer/sendSend USDC to a wallet address. Body: to_address, amount_usdc, biometric_token. Biometric session token required. Triggers 2FA for amounts over $500. Returns transaction_id and tx_hash.JWT
POST/transfer/requestRequest USDC from another Denaro Pay user. Body: from_email or from_phone, amount_usdc, note. Returns payment_request_id.JWT
GET/transfer/estimateEstimate transfer fee and settlement time. Query params: to_address, amount_usdc. Returns fee_usdc, estimated_seconds, network.JWT
§D — KYC
Identity verification via Persona. KYC must complete before wallet and card are enabled.
MethodPathDescriptionAuth
POST/kyc/startInitiate KYC verification session via Persona. Returns persona_inquiry_id and redirect_url for the KYC flow. Status: pending.JWT
GET/kyc/statusGet current KYC status. Returns status: pending | approved | rejected. If rejected, returns rejection_reason.JWT
§E — Card
Visa card management via Marqeta. Virtual card creation and physical card ordering.
MethodPathDescriptionAuth
POST/card/createCreate virtual Visa card via Marqeta. Body: card_type (virtual|physical), design (noir|lime|ivory|prism). Physical card charges $24 USDC. Returns card_id, last_four, expiry, cvv (once only).JWT
GET/card/statusGet card status and details. Returns card_id, last_four, status (active|frozen|cancelled), design, card_type.JWT
POST/card/freezeFreeze or unfreeze card. Body: card_id, action (freeze|unfreeze). Returns updated status.JWT
GET/card/transactionsGet card transaction history. Query params: page, per_page. Returns array of card transactions with merchant name, amount, FX rate applied.JWT
§F — Yield
Morpho Blue yield accrual status and balance. Yield is automatic — no enable required.
MethodPathDescriptionAuth
POST/yield/enableEnable yield for the account (enabled by default on all new accounts). Body: enabled (boolean). Returns new yield_enabled status.JWT
GET/yield/balanceGet current yield accrual. Returns current_apy, accrued_today_usdc, accrued_total_usdc, last_block_accrual.JWT
GET/bot/statusGet CREST AI bot status. Returns active (boolean), current_session_pnl, connected_firm, connector (tradovate|rithmic), last_trade.JWT
POST/bot/startManually trigger a CREST AI session (within NY session window only). Body: account_id. Returns session_id.JWT
POST/bot/stopStop active CREST AI session. Body: session_id. Returns final_pnl and settlement status.JWT
§G — Subscription
CREST AI subscription management.
MethodPathDescriptionAuth
POST/subscription/createSubscribe to CREST AI at $99/month. Body: plan (crest_monthly). Charges USDC from wallet. Returns subscription_id, next_billing_date, status.JWT
GET/subscription/statusGet current subscription status. Returns plan, status (active|cancelled|past_due), next_billing_date, amount_usdc.JWT
POST/subscription/cancelCancel CREST AI subscription. Subscription remains active until end of billing period. Returns cancellation_effective_date.JWT