Stellar Smart Account Payments
Stellar Contract Payments enable payments from Stellar to EVM and Solana chains via Soroban smart contract addresses (C-addresses). Users pay by invoking a contract's pay() function with a unique memo, and the system triggers cross-chain payout once payment is detected.
API Host: https://intentapiv4.rozo.ai/functions/v1
Supported Routes
Stellar (1500)
USDC
Base (8453)
USDC
Stellar (1500)
USDC
BNB Chain (56)
USDT
Stellar (1500)
USDC
BNB Chain (56)
USDC
Stellar (1500)
USDC
Ethereum (1)
USDT
Stellar (1500)
USDC
Ethereum (1)
USDC
Stellar (1500)
USDC
Arbitrum (42161)
USDC
Stellar (1500)
USDC
Polygon (137)
USDC
Stellar (1500)
USDC
Solana (501)
USDC
Overview
When using stellar_payin_contracts intent:
A unique Soroban contract address (
receiverAddressContract) and memo (receiverMemoContract) are generatedUser invokes the contract's
pay()function with the amount and memoSystem monitors the contract for the payment
Cross-chain payout is triggered once payment is detected
Payment Intent Types
stellar_payin_contracts
User pays by invoking a Soroban contract's pay() function with a unique memo.
Create Payment with Contract Intent
Request
Response
Key Response Fields
source.receiverAddressContract
The Soroban contract address to invoke pay() on
source.receiverMemoContract
The unique memo to pass to the pay() function
source.amount
Total amount to pay (includes fee)
source.fee
Fee amount deducted from the source payment
destination.amount
Amount the receiver will get on the destination chain
How to Pay
After creating a payment, the user invokes the Soroban contract's pay() function:
Contract
source.receiverAddressContract
CAQPKW5AUPEA4C7OERZRUCBWT5RZDSETO4PR5REVRC5MT4CF3PBSKXQC
sender
The user's Stellar address
CBHK...NE4R
amount
source.amount in stroops (multiply by 10^7)
10100000 for 1.01 USDC
memo
source.receiverMemoContract
memo_1775314581279
On-chain, the invocation looks like:
The system detects this contract invocation and triggers the cross-chain payout to the destination address.
Combining with Any Amount
You can combine Stellar Contract Payments with Any Amount for flexible top-up flows:
When using anyAmount with contract payments, any amount between $0.02 - $10,000 USDC is accepted.
Register Transaction Hash (Optional)
For faster payment tracking and accurate sender information, you can pre-register the transaction hash and sender address after the user submits their payment:
Request
Response
Payment Flow
Supported Tokens
Currently only USDC is supported as the source token on Stellar for contract payments.
USDC
CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75
Error Handling
paymentNotFound
Payment ID does not exist
paymentNotUpdatable
Payment is not in a status that allows updates
invalidRequest
Missing or invalid request parameters
Best Practices
Pre-register transactions: Use the
/payinendpoint to registertxHashandfromAddressimmediately after the user submits their payment. This ensures accurate tracking.Poll for status: After creating a payment, poll
GET /payments/{id}to check for status updates. Look forpayment_payin_completedandpayment_payout_completed.Handle expiration: Payments expire after 1 hour. Ensure your UI communicates this to users.
Last updated

