Payments
Move fiat in and out of the platform — Plaid ACH, Stripe cards, manual wire references, and Astra transfers. Each rail is available behind a unified payments API.
What you can do
- Create a payment intent for a subscription or invoice
- Link a bank account via Plaid and pull ACH funds
- Charge or refund a saved card via Stripe
- Reconcile manual bank wires against outstanding invoices
Endpoints
GET
Create a Plaid Link token for a user
/plaid/link-token
POST
Exchange a Plaid public token for an access token
/plaid/public-token
GET
List Plaid-linked bank accounts (items) for a user
/plaid/items
DELETE
Unlink (remove) a Plaid bank account item
/plaid/items/{itemId}
GET
Get the Plaid originator profile for a tenant (API key required)
/plaid/tenant/originator
GET
Create a Plaid Link token for tenant-level onboarding (API key required)
/plaid/tenant/link-token
GET
List Plaid sandbox originators
/plaid-sandbox/originators
POST
Create a Plaid sandbox transfer originator
/plaid-sandbox/originators
POST
Initiate KYB questionnaire for a Plaid sandbox originator
/plaid-sandbox/originators/{id}/kyb
GET
Get a Plaid sandbox originator by client ID
/plaid-sandbox/originators/{id}
GET
Get the Astra user intent and connection status
/astra
POST
Create an Astra user intent for ACH transfer setup
/astra
GET
Get the Astra OAuth authorization URL
/astra/auth
GET
Get linked bank accounts via Astra
/astra/accounts
POST
Link a Plaid bank account via Astra for ACH transfers
/astra/link-account
POST
Preview an Astra recurring transfer routine
/astra/routine/preview
POST
Receive Astra webhook event
/astra/callback/{tenantId}/hook
GET
Handle Astra OAuth callback and save authorization code
/astra/callback/{tenantId}/auth
POST
Refresh Astra access token for a user
/astra/refresh
POST
Sync Astra user connection state
/astra/sync
GET
List payments, optionally filtered by user
/payments
GET
Get a payment by ID
/payments/{id}
GET
Get a manual payment by ID
/manual-payments/{id}
POST
Create a manual payment (investor-initiated)
/manual-payments
POST
Create a manual payment on behalf of a user (issuer)
/manual-payments/{userId}
POST
Approve a pending manual payment
/manual-payments/{id}/approve
POST
Reject a pending manual payment
/manual-payments/{id}/reject
POST
Create a Stripe payment intent and return the client secret
/stripe-payments
POST
Receive Stripe payment event webhook
/stripe-payments/webhook