Skip to main content
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

FieldRequiredDescription
toPublicKeyYesDestination Stellar account (G...)
fromAssetYesSource asset (XLM, native, or CODE:ISSUER)
amountYesDecimal amount (up to 7 fractional digits, must be > 0)
toAssetNoDestination asset (omit for same-asset payment)
sendMaxNoMaximum source amount for cross-asset payments (from a prior quote)
memoNoStellar memo (≤ 28 bytes for Text type)
memoTypeNoText, 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

StatusMeaningAction
200Transaction submitted successfullyCapture the transaction hash or ID
400Invalid payloadCheck required fields, asset format, and amount
401Authentication failedRe-authenticate and retry
404Wallet or resource not foundVerify 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)