Skip to main content
Payoes follows a Stripe-like mental model adapted for Stellar blockchain payments.

Roles

RoleDescription
MerchantYour business. Uses the dashboard and API to create payments and manage settings.
CustomerThe person paying. Opens checkout and approves a Stellar transaction. No Payoes account required.
OrganizationYour merchant account in Payoes. Holds settings, API keys, and payment history.

Resources

Organization

An organization represents one business on Payoes. During onboarding you provide a name, logo, and contact details. Each organization has:
  • A sandbox or production environment
  • Identity verification required before production mode (via Persona)
  • A settlement wallet per environment
  • Its own API keys, payments, and webhooks
  • Team members with role-based access
Edit your organization profile in Settings → Organization. Complete Settings → Production to verify your identity with Persona before enabling live payments.

Team members

Users who can access your organization dashboard. The creator becomes the owner during onboarding.
RoleAccess
OwnerFull access, including changing member roles
AdminManage settings, API keys, webhooks, and team invites
MemberView dashboard, create payments and customers
Owners and admins can invite teammates by email from Settings → Team Members. Invitees receive an email with a link to accept the invitation. They must sign in or create an account with the invited email address before joining.

Settlement wallet

The Stellar public key where customer payments are sent. Configured during onboarding and editable in Settings → Settlement Wallet. Payoes reads this address when building checkout transactions and when verifying payments on Horizon.

Organization assets

Each organization maintains a list of assets it accepts (USDC, XLM, EURC, custom Stellar assets, etc.) in Settings → Assets.
SettingMeaning
EnabledAsset can appear in allowed_assets on payments
Settlement (default)Asset used for merchant settlement and amount display
All payment products inherit asset configuration from organization assets. Invoices do not store their own asset — a payment is created automatically with the organization’s default settlement asset and enabled allowed assets.

Payment intent

A single payment request, equivalent to a Stripe Payment Intent.
FieldMeaning
idPublic ID (pay_...) used in API calls
amountStellar amount (up to 7 decimal places)
settlement_assetAsset the merchant settles in
allowed_assetsAssets the customer may pay with at checkout
paid_assetAsset the customer actually paid with (set after checkout)
statuspending, completed, failed, or expired
source_typeHow the payment was created (direct, checkout_session, payment_link, etc.)
checkout_urlHosted page at /c/pay_...
Payment intents are created directly via the dashboard or API, or automatically when you finalize an invoice or start checkout from a payment link.

Checkout session

A hosted checkout flow, equivalent to a Stripe Checkout Session. Each session creates an underlying payment intent.
FieldMeaning
idPublic ID (cs_...)
statusopen, complete, or expired
payment_intent_idLinked pay_... record
checkout_urlHosted page at /c/cs_...
Checkout sessions are created automatically when you finalize an invoice or when a customer visits a payment link. You can list and retrieve them via the API. A reusable shareable link, equivalent to a Stripe Payment Link.
FieldMeaning
idPublic ID (plink_...)
urlPublic checkout entry at /c/plink_... (redirects to a new checkout session)
activeWhether the link accepts new checkouts
Each visit to a payment link starts a new checkout session and payment intent.

Invoice

A bill sent to a customer, equivalent to a Stripe Invoice.
FieldMeaning
idPublic ID (inv_...)
statusdraft, open, paid, or void
checkout_urlAvailable after finalizing the invoice
customer_idLinked customer
Create an invoice in draft, then finalize it to spawn a checkout session and payment intent.

Checkout

A public hosted page at /c/{checkout_id} where checkout_id is either cs_... (checkout session) or pay_... (legacy payment intent). The checkout flow:
  1. Load payment details and merchant branding
  2. Customer connects a Stellar wallet (Wallet Kit)
  3. Payoes builds an unsigned transaction server-side
  4. Customer signs and submits via their wallet
  5. Payoes verifies the transaction on Horizon
  6. Payment status updates to completed
Customers never log into Payoes.

Transaction

After a successful payment, the Stellar transaction hash (tx_hash) is stored on the payment intent record. You can look it up on Stellar Explorer for the corresponding network (testnet or mainnet).

API key

Secret credential for server-to-server API calls. Prefixes:
  • pk_test_...: sandbox (Stellar testnet)
  • pk_live_...: production (Stellar mainnet)
API keys are tied to one organization and one environment.

Webhook

HTTP callbacks sent to your server when payment events occur. Use webhooks to unlock products, send receipts, or update your database without polling.

Payment lifecycle

Sandbox vs production

SandboxProduction
NetworkStellar testnetStellar mainnet
API key prefixpk_test_pk_live_
FundsTest tokensReal value
See Environments for details.