Zeam supports two types of transaction execution: direct Stellar wallet transactions and Connect off-ramp payments.
Stellar wallet transaction
Send a payment directly from a wallet:
curl -s -X POST https://api.zeam.money/gw/v1/business/wallet/$WALLET_ID/transaction \
-H "Authorization: Bearer $BUSINESS_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"toPublicKey": "GDEST...DESTINATION_KEY",
"fromAsset": "USDC:GABC...",
"amount": "50.00",
"memo": "invoice-1234",
"memoType": "Text"
}' | jq
Request fields
| Field | Required | Description |
|---|
toPublicKey | Yes | Destination Stellar account (G...) |
fromAsset | Yes | Source asset (XLM, native, or CODE:ISSUER) |
amount | Yes | Decimal amount (up to 7 fractional digits, must be > 0) |
toAsset | No | Destination asset (omit for same-asset payment) |
sendMax | No | Maximum source amount for cross-asset payments (from a prior quote) |
memo | No | Stellar memo (≤ 28 bytes for Text type) |
memoType | No | Text, Hash, or ID (default: Text) |
Operation types
The gateway automatically selects the right Stellar operation:
- Payment — when
fromAsset and toAsset are the same (or toAsset is omitted)
- Strict Path Receive — when
fromAsset and toAsset differ. Populate sendMax from a prior /v1/stellar/quote.
Connect off-ramp execution
After obtaining a quote and funding the Stellar transaction:
curl -s -X POST https://api.zeam.money/gw/v1/connect-execute \
-H "Authorization: Bearer $CONNECT_TOKEN" \
-H "x-zeam-auth: $CONNECT_SECRET" \
-H 'Content-Type: application/json' \
-d '{
"quoteId": "'$QUOTE_ID'",
"txHash": "'$STELLAR_TX_HASH'"
}' | jq
Tracking status
Connect payment status
curl -s https://api.zeam.money/gw/v1/connect-status/$TRANSACTION_ID \
-H "Authorization: Bearer $CONNECT_TOKEN" \
-H "x-zeam-auth: $CONNECT_SECRET" | jq
Stellar transaction lookup
curl -s https://api.zeam.money/gw/v1/stellar/transaction/$TX_HASH \
-H "Authorization: Bearer $BUSINESS_TOKEN" | jq
Error handling
| Status | Meaning | Action |
|---|
200 | Transaction submitted successfully | Capture the transaction hash or ID |
400 | Invalid payload | Check required fields, asset format, and amount |
401 | Authentication failed | Re-authenticate and retry |
404 | Wallet or resource not found | Verify the wallet ID and permissions |
Never retry a POST transaction request that returned a 200. The transaction may have been submitted to the Stellar network. Use the transaction hash to check status instead.
Using the Go SDK
// Direct wallet transaction
result, err := client.Business().ExecuteWalletTransaction(ctx, session, walletID, business.WalletTransactionInput{
ToPublicKey: "GDEST...",
FromAsset: "USDC:GABC...",
Amount: "50.00",
Memo: "invoice-1234",
MemoType: "Text",
})
fmt.Println("Tx hash:", result.TxHash)