Base URL: https://api.stellarsend.io (or http://localhost:8080 in local development)
All protected endpoints require Authorization: Bearer <jwt>.
Public endpoints: /health, /api/auth/register, /api/auth/login, /api/rates, /api/payment-requests/:id.
All API endpoints return JSON conforming to standard success and error response envelopes:
{
"success": true,
"data": { ... }
}{
"success": false,
"error": {
"code": "ERROR_CODE",
"message": "Human-readable description"
}
}| Method | Path | Auth | Description |
|---|---|---|---|
GET |
/health |
No | Health check and background loop status |
POST |
/api/auth/register |
No | Register new user account |
POST |
/api/auth/login |
No | Authenticate user and receive JWT |
POST |
/api/payments/quote |
Yes | Get path payment DEX quote |
POST |
/api/payments/send |
Yes | Relay signed Stellar payment transaction |
POST |
/api/payments/batch |
Yes | Relay signed batch payment transaction |
GET |
/api/payments/:id |
Yes | Get internal payment record and Stellar details |
GET |
/api/transactions |
Yes | List authenticated user transactions (paginated) |
GET |
/api/transactions/:id |
Yes | Get single transaction by UUID |
GET |
/api/accounts/:address |
Yes | Fetch Stellar account info from Horizon |
GET |
/api/accounts/:address/balances |
Yes | Fetch Stellar account balances |
GET |
/api/rates |
No | Get exchange rate (?from=&to=) |
GET |
/api/subscriptions |
Yes | List authenticated user subscriptions |
POST |
/api/subscriptions |
Yes | Create recurring payment subscription |
GET |
/api/subscriptions/:id |
Yes | Get subscription by UUID |
POST |
/api/subscriptions/:id/cancel |
Yes | Cancel recurring subscription |
GET |
/api/payment-requests |
Yes | List user's created payment requests |
POST |
/api/payment-requests |
Yes | Create payment request / invoice |
GET |
/api/payment-requests/:id |
No | Public lookup for payment request |
POST |
/api/payment-requests/:id/fulfill |
Yes | Fulfill payment request with signed XDR |
POST |
/api/payment-requests/:id/cancel |
Yes | Cancel payment request |
GET |
/api/escrows |
Yes | List escrows party to authenticated user |
POST |
/api/escrows |
Yes | Record funded escrow |
GET |
/api/escrows/:id |
Yes | Get escrow details |
POST |
/api/escrows/:id/release/build |
Yes | Build unsigned invocation for escrow release |
POST |
/api/escrows/:id/release |
Yes | Relay signed escrow release transaction |
POST |
/api/escrows/:id/refund/build |
Yes | Build unsigned invocation for escrow refund |
POST |
/api/escrows/:id/refund |
Yes | Relay signed escrow refund transaction |
POST |
/api/keeper/run-subscriptions |
Yes | Manually trigger keeper subscription execution |
Liveness probe returning service status and background loop timestamps.
Response 200 OK
{
"success": true,
"data": {
"status": "ok",
"service": "stellarsend-backend",
"background_loops": {
"keeper_last_tick_at": 1700000000,
"reconciliation_last_tick_at": 1700000000
}
}
}Register a new user account.
Request Body
{
"email": "user@example.com",
"password": "securepassword123",
"full_name": "Jane Doe",
"stellar_address": "GAAZI4TCR3TY5OJHCTJC2A4QSY6CJWJH5IAJTGKIN2ER7LBNVKOCCWN"
}Response 201 Created
{
"success": true,
"data": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"user": {
"id": "01920c1a-0000-7000-8000-000000000001",
"email": "user@example.com",
"full_name": "Jane Doe",
"stellar_address": "GAAZI4TCR3TY5OJHCTJC2A4QSY6CJWJH5IAJTGKIN2ER7LBNVKOCCWN",
"is_active": true,
"created_at": "2024-01-15T10:00:00Z"
}
}
}Authenticate user with email and password.
Request Body
{
"email": "user@example.com",
"password": "securepassword123"
}Response 200 OK
{
"success": true,
"data": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"user": {
"id": "01920c1a-0000-7000-8000-000000000001",
"email": "user@example.com",
"full_name": "Jane Doe",
"stellar_address": "GAAZI4TCR3TY5OJHCTJC2A4QSY6CJWJH5IAJTGKIN2ER7LBNVKOCCWN",
"is_active": true,
"created_at": "2024-01-15T10:00:00Z"
}
}
}Get quote for DEX path payment.
Request Body
{
"from_asset": { "code": "USDC", "issuer": "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN" },
"to_asset": { "code": "XLM", "issuer": null },
"amount": "100",
"destination": "GBBD47IF6LWK7P7MDEVSCWR7DPUWV3NY3DTQEVFL4NAT4AQH3ZLLFLA5"
}Relay client-signed XDR transaction to Horizon.
Request Body
{
"source_account": "GAAZI4TCR3TY5OJHCTJC2A4QSY6CJWJH5IAJTGKIN2ER7LBNVKOCCWN",
"signed_xdr": "AAAAAgAAAABiXst2pnqBtsr...",
"from_asset": { "code": "USDC", "issuer": "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN" },
"to_asset": { "code": "XLM", "issuer": null },
"send_amount": "100",
"destination_account": "GBBD47IF6LWK7P7MDEVSCWR7DPUWV3NY3DTQEVFL4NAT4AQH3ZLLFLA5"
}Relay client-signed multi-recipient batch transaction.
Request Body
{
"source_account": "GAAZI4TCR3TY5OJHCTJC2A4QSY6CJWJH5IAJTGKIN2ER7LBNVKOCCWN",
"signed_xdr": "AAAAAgAAAABiXst2pnqBtsr...",
"from_asset": { "code": "USDC", "issuer": "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN" },
"legs": [
{
"destination_account": "GBBD47IF6LWK7P7MDEVSCWR7DPUWV3NY3DTQEVFL4NAT4AQH3ZLLFLA5",
"send_amount": "50",
"to_asset": { "code": "USDC", "issuer": "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN" }
},
{
"destination_account": "GCXYZ7IF6LWK7P7MDEVSCWR7DPUWV3NY3DTQEVFL4NAT4AQH3ZLLFLB8",
"send_amount": "50",
"to_asset": { "code": "USDC", "issuer": "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN" }
}
]
}Fetch internal payment record and on-chain status by UUID.
List authenticated user transactions. Supports query parameters status, from_asset, to_asset, page, per_page, cursor.
Retrieve specific transaction by UUID.
Fetch full Horizon account object for Stellar public key.
Fetch asset balances array for Stellar public key.
Query exchange rate between two assets (e.g. ?from=XLM&to=USDC:GA5Z...).
List recurring payment subscriptions for user.
Create a recurring subscription.
Request Body
{
"subscriber_account": "GAAZI4TCR3TY5OJHCTJC2A4QSY6CJWJH5IAJTGKIN2ER7LBNVKOCCWN",
"recipient_account": "GBBD47IF6LWK7P7MDEVSCWR7DPUWV3NY3DTQEVFL4NAT4AQH3ZLLFLA5",
"asset": { "code": "USDC", "issuer": "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN" },
"amount": "25.00",
"interval_seconds": 2592000,
"start_time": "2024-02-01T00:00:00Z"
}Get subscription record by UUID.
Cancel an active subscription.
List payment requests created by authenticated user.
Create payment request invoice.
Request Body
{
"recipient_account": "GAAZI4TCR3TY5OJHCTJC2A4QSY6CJWJH5IAJTGKIN2ER7LBNVKOCCWN",
"asset": { "code": "USDC", "issuer": "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN" },
"amount": "100.00",
"memo": "Invoice #1042",
"expires_at": "2024-03-01T00:00:00Z"
}Public endpoint to retrieve payment request details for payers.
Fulfill payment request by submitting signed transaction XDR.
Cancel open payment request.
List escrows where user is depositor, beneficiary, or arbiter.
Record an on-chain escrow.
Request Body
{
"on_chain_id": 42,
"depositor_account": "GAAZI4TCR3TY5OJHCTJC2A4QSY6CJWJH5IAJTGKIN2ER7LBNVKOCCWN",
"beneficiary_account": "GBBD47IF6LWK7P7MDEVSCWR7DPUWV3NY3DTQEVFL4NAT4AQH3ZLLFLA5",
"arbiter_account": "GCXYZ7IF6LWK7P7MDEVSCWR7DPUWV3NY3DTQEVFL4NAT4AQH3ZLLFLB8",
"token_address": "CDLZFC3SYJYDZT7K67VZ75HPJVIEUVNIXF47ZG2FB2RMQQVU2HHGCYSC",
"amount": "500",
"unlock_time": 1715000000
}Get escrow details.
Build unsigned invocation XDR for releasing escrow funds.
Relay signed release transaction XDR.
Build unsigned invocation XDR for refunding escrow funds.
Relay signed refund transaction XDR.
Trigger immediate execution cycle for due recurring payments.