Skip to main content
POST
Create Payment

Authorizations

Authorization
string
header
required

Org API key as Token token=ei_live_...

Headers

Idempotency-Key
string | null

Body

application/json

POST /v1/payments → session_payments. MANUAL / EXTERNAL payments ONLY.

payment_type is restricted to 'external' — this endpoint NEVER initiates a real charge. Stripe/processor payment_types (single_session, group_session, package_redemption) are rejected with 422 because the Python backend does not own money flows: a real charge must go through the Stripe PaymentIntent + webhook that drives session_ledger. The referenced session/student/tutor must be org-scoped.

session_id
string
required
amount_cents
integer
required

Cents. Must be >= 0.

Required range: x >= 0
student_id
string | null
tutor_id
string | null
currency
string
default:aud
payment_type
string
default:external

Only 'external' is accepted (manual/off-platform). Stripe types are rejected.

status
string
default:succeeded

succeeded | pending | failed

Response

Successful Response

id
string
required
session_id
string | null
student_id
string | null
tutor_id
string | null
amount_cents
integer | null
refund_amount_cents
integer | null
currency
string | null
payment_type
string | null
status
string | null
stripe_payment_intent_id
string | null
created_at
string | null