Skip to Content

Payments

Products, prices, checkout and enrollment via the open payments API, including bring-your-own provider.

Stripe webhook (standard)

POST/api/v1/payments/stripe/webhook
API tokenpayments:createor user session

Receive and process Stripe webhook events for the standard (non-Connect) account. Called by Stripe.

Error responses
  • 400 Invalid signature or malformed payload
Request

Stripe webhook (Connect)

POST/api/v1/payments/stripe/webhook/connect
API tokenpayments:createor user session

Receive and process Stripe webhook events for Stripe Connect / Express accounts. Called by Stripe.

Error responses
  • 400 Invalid signature or malformed payload
Request

Get payments config

GET/api/v1/payments/{org_id}/config
API tokenpayments:reador user session

Return the payments configuration(s) for the organization.

Path parameters

org_idintegerrequired

Returns

PaymentsConfigRead[] — List of payments configs for the organization.

enabledboolean
activeboolean
providerPaymentProviderEnum
stripe
modePaymentsModeEnum
standardexpress
provider_specific_idstring | null
provider_configProvider Config
idintegerrequired
org_idintegerrequired
creation_datestringrequired
update_datestringrequired
Error responses
  • 401 Authentication required
  • 403 Caller lacks permission to view payments config for this org
  • 422 Validation ErrorHTTPValidationError
Request
Response
[
  {
    "enabled": true,
    "active": false,
    "provider": "stripe",
    "mode": "standard",
    "provider_specific_id": "string",
    "provider_config": {},
    "id": 1,
    "org_id": 1,
    "creation_date": "2026-01-15T09:30:00Z",
    "update_date": "2026-01-15T09:30:00Z"
  }
]

Initialize payments config

POST/api/v1/payments/{org_id}/config
API tokenpayments:createor user session

Initialize a payments configuration for an organization with the given provider. Requires an org admin to be authenticated.

Path parameters

org_idintegerrequired

Query parameters

providerstringrequired

Returns

PaymentsConfig — Newly created payments config for the org.

enabledboolean
activeboolean
providerPaymentProviderEnum
stripe
modePaymentsModeEnum
standardexpress
provider_specific_idstring | null
provider_configProvider Config
idinteger | null
org_idintegerrequired
creation_datestring
update_datestring
Error responses
  • 401 Authentication required
  • 403 Caller lacks permission to manage payments for this org
  • 404 Organization not found
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "enabled": true,
  "active": false,
  "provider": "stripe",
  "mode": "standard",
  "provider_specific_id": "string",
  "provider_config": {},
  "id": 1,
  "org_id": 1,
  "creation_date": "2026-01-15T09:30:00Z",
  "update_date": "2026-01-15T09:30:00Z"
}

Delete payments config

DELETE/api/v1/payments/{org_id}/config
API tokenpayments:deleteor user session

Delete the payments configuration for an organization.

Path parameters

org_idintegerrequired
Error responses
  • 401 Authentication required
  • 403 Caller lacks permission to manage payments for this org
  • 404 Payments config not found
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

List payment groups

GET/api/v1/payments/{org_id}/groups
API tokenpayments:reador user session

Return all payment groups configured for an organization.

Path parameters

org_idintegerrequired

Returns

PaymentsGroupRead[] — List of payment groups for the org.

idintegerrequired
org_idintegerrequired
namestringrequired
descriptionstringrequired
creation_datestringrequired
update_datestringrequired
Error responses
  • 401 Authentication required
  • 403 Caller lacks permission to view payment groups
  • 422 Validation ErrorHTTPValidationError
Request
Response
[
  {
    "id": 1,
    "org_id": 1,
    "name": "Example name",
    "description": "An example description",
    "creation_date": "2026-01-15T09:30:00Z",
    "update_date": "2026-01-15T09:30:00Z"
  }
]

Create payment group

POST/api/v1/payments/{org_id}/groups
API tokenpayments:createor user session

Create a new payment group that can bundle resources for offers.

Path parameters

org_idintegerrequired

Request bodyapplication/jsonrequired

namestringrequired
descriptionstring

Returns

PaymentsGroupRead — Newly created payment group.

idintegerrequired
org_idintegerrequired
namestringrequired
descriptionstringrequired
creation_datestringrequired
update_datestringrequired
Error responses
  • 401 Authentication required
  • 403 Caller lacks permission to manage payments for this org
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "id": 1,
  "org_id": 1,
  "name": "Example name",
  "description": "An example description",
  "creation_date": "2026-01-15T09:30:00Z",
  "update_date": "2026-01-15T09:30:00Z"
}

Get payment group

GET/api/v1/payments/{org_id}/groups/{group_id}
API tokenpayments:reador user session

Return a single payment group by id.

Path parameters

org_idintegerrequired
group_idintegerrequired

Returns

PaymentsGroupRead — The requested payment group.

idintegerrequired
org_idintegerrequired
namestringrequired
descriptionstringrequired
creation_datestringrequired
update_datestringrequired
Error responses
  • 401 Authentication required
  • 403 Caller lacks permission to view this payment group
  • 404 Payment group not found
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "id": 1,
  "org_id": 1,
  "name": "Example name",
  "description": "An example description",
  "creation_date": "2026-01-15T09:30:00Z",
  "update_date": "2026-01-15T09:30:00Z"
}

Update payment group

PUT/api/v1/payments/{org_id}/groups/{group_id}
API tokenpayments:updateor user session

Update metadata on an existing payment group.

Path parameters

org_idintegerrequired
group_idintegerrequired

Request bodyapplication/jsonrequired

namestringrequired
descriptionstring

Returns

PaymentsGroupRead — Updated payment group.

idintegerrequired
org_idintegerrequired
namestringrequired
descriptionstringrequired
creation_datestringrequired
update_datestringrequired
Error responses
  • 401 Authentication required
  • 403 Caller lacks permission to manage this payment group
  • 404 Payment group not found
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "id": 1,
  "org_id": 1,
  "name": "Example name",
  "description": "An example description",
  "creation_date": "2026-01-15T09:30:00Z",
  "update_date": "2026-01-15T09:30:00Z"
}

Delete payment group

DELETE/api/v1/payments/{org_id}/groups/{group_id}
API tokenpayments:deleteor user session

Delete an existing payment group. Associated resources are detached.

Path parameters

org_idintegerrequired
group_idintegerrequired
Error responses
  • 401 Authentication required
  • 403 Caller lacks permission to manage this payment group
  • 404 Payment group not found
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

List payment group resources

GET/api/v1/payments/{org_id}/groups/{group_id}/resources
API tokenpayments:reador user session

Return the list of resource UUIDs attached to a payment group.

Path parameters

org_idintegerrequired
group_idintegerrequired
Error responses
  • 404 Payment group not found
  • 422 Validation ErrorHTTPValidationError
Request
Response
[
  "string"
]

Add resource to payment group

POST/api/v1/payments/{org_id}/groups/{group_id}/resources
API tokenpayments:createor user session

Attach a resource (by UUID) to an existing payment group.

Path parameters

org_idintegerrequired
group_idintegerrequired

Query parameters

resource_uuidstringrequired
Error responses
  • 401 Authentication required
  • 403 Caller lacks permission to manage this payment group
  • 404 Payment group or resource not found
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

Remove resource from payment group

DELETE/api/v1/payments/{org_id}/groups/{group_id}/resources
API tokenpayments:deleteor user session

Detach a resource from an existing payment group.

Path parameters

org_idintegerrequired
group_idintegerrequired

Query parameters

resource_uuidstringrequired
Error responses
  • 401 Authentication required
  • 403 Caller lacks permission to manage this payment group
  • 404 Payment group or resource not found
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

List usergroup syncs

GET/api/v1/payments/{org_id}/groups/{group_id}/sync
API tokenpayments:reador user session

Return all usergroup syncs configured for a payment group.

Path parameters

org_idintegerrequired
group_idintegerrequired
Error responses
  • 404 Payment group not found
  • 422 Validation ErrorHTTPValidationError
Request
Response
[
  {}
]

Add usergroup sync to payment group

POST/api/v1/payments/{org_id}/groups/{group_id}/sync
API tokenpayments:createor user session

Link a usergroup to a payment group so purchasers are automatically added to that cohort after a successful payment.

Path parameters

org_idintegerrequired
group_idintegerrequired

Query parameters

usergroup_idintegerrequired
Error responses
  • 401 Authentication required
  • 403 Caller lacks permission to manage this payment group
  • 404 Payment group or usergroup not found
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

Remove usergroup sync

DELETE/api/v1/payments/{org_id}/groups/{group_id}/sync
API tokenpayments:deleteor user session

Remove a usergroup sync from a payment group.

Path parameters

org_idintegerrequired
group_idintegerrequired

Query parameters

usergroup_idintegerrequired
Error responses
  • 401 Authentication required
  • 403 Caller lacks permission to manage this payment group
  • 404 Payment group or sync not found
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

List offer resources

GET/api/v1/payments/{org_id}/offers/{offer_id}/resources
API tokenpayments:reador user session

Public endpoint returning the resource UUIDs directly linked to an offer (excluding group-granted resources).

Path parameters

org_idintegerrequired
offer_idintegerrequired
Error responses
  • 422 Validation ErrorHTTPValidationError
Request
Response
[
  "string"
]

Add resource to offer

POST/api/v1/payments/{org_id}/offers/{offer_id}/resources
API tokenpayments:createor user session

Attach a direct resource (e.g. a course) to an offer. Grants buyers of this offer access to the linked resource.

Path parameters

org_idintegerrequired
offer_idintegerrequired

Query parameters

resource_uuidstringrequired
Error responses
  • 401 Authentication required
  • 403 Caller lacks permission to manage this offer
  • 404 Offer, org, or resource not found
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

Remove resource from offer

DELETE/api/v1/payments/{org_id}/offers/{offer_id}/resources
API tokenpayments:deleteor user session

Detach a directly-linked resource from an offer. Does not affect resources granted through a payments group.

Path parameters

org_idintegerrequired
offer_idintegerrequired

Query parameters

resource_uuidstringrequired
Error responses
  • 401 Authentication required
  • 403 Caller lacks permission to manage this offer
  • 404 Offer or link not found
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

List payments offers

GET/api/v1/payments/{org_id}/offers
API tokenpayments:reador user session

List all payments offers owned by an organization, including unlisted ones. Requires authorization.

Path parameters

org_idintegerrequired

Returns

PaymentsOfferRead[] — List of payments offers for the organization.

namestring
descriptionstring | null
offer_typeOfferTypeEnum
subscriptionone_time
price_typeOfferPriceTypeEnum
customer_choicefixed_price
benefitsstring
amountnumber
currencystring
is_publicly_listedboolean
idintegerrequired
offer_uuidstringrequired
org_idintegerrequired
payments_config_idintegerrequired
payments_group_idinteger | nullrequired
provider_product_idstringrequired
creation_datestringrequired
update_datestringrequired
Error responses
  • 401 Authentication required
  • 403 Caller lacks permission to view offers for this org
  • 422 Validation ErrorHTTPValidationError
Request
Response
[
  {
    "name": "",
    "description": "An example description",
    "offer_type": "subscription",
    "price_type": "customer_choice",
    "benefits": "",
    "amount": 0,
    "currency": "USD",
    "is_publicly_listed": true,
    "id": 1,
    "offer_uuid": "string",
    "org_id": 1,
    "payments_config_id": 1,
    "payments_group_id": 1,
    "provider_product_id": "string",
    "creation_date": "2026-01-15T09:30:00Z",
    "update_date": "2026-01-15T09:30:00Z"
  }
]

Create payments offer

POST/api/v1/payments/{org_id}/offers
API tokenpayments:createor user session

Create a new payments offer (one-time purchase or subscription) for an organization.

Path parameters

org_idintegerrequired

Request bodyapplication/jsonrequired

namestring
descriptionstring | null
offer_typeOfferTypeEnum
subscriptionone_time
price_typeOfferPriceTypeEnum
customer_choicefixed_price
benefitsstring
amountnumber
currencystring
is_publicly_listedboolean
payments_group_idinteger | null
resource_uuidsstring[]

Returns

PaymentsOfferRead — Offer created.

namestring
descriptionstring | null
offer_typeOfferTypeEnum
subscriptionone_time
price_typeOfferPriceTypeEnum
customer_choicefixed_price
benefitsstring
amountnumber
currencystring
is_publicly_listedboolean
idintegerrequired
offer_uuidstringrequired
org_idintegerrequired
payments_config_idintegerrequired
payments_group_idinteger | nullrequired
provider_product_idstringrequired
creation_datestringrequired
update_datestringrequired
Error responses
  • 401 Authentication required
  • 403 Caller lacks permission to create offers in this org
  • 404 Organization not found
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "name": "",
  "description": "An example description",
  "offer_type": "subscription",
  "price_type": "customer_choice",
  "benefits": "",
  "amount": 0,
  "currency": "USD",
  "is_publicly_listed": true,
  "id": 1,
  "offer_uuid": "string",
  "org_id": 1,
  "payments_config_id": 1,
  "payments_group_id": 1,
  "provider_product_id": "string",
  "creation_date": "2026-01-15T09:30:00Z",
  "update_date": "2026-01-15T09:30:00Z"
}

List public offers

GET/api/v1/payments/{org_id}/offers/public-listing
API tokenpayments:reador user session

Public endpoint listing all publicly-listed offers for an organization, enriched with included-resource metadata (course name, description, thumbnail).

Path parameters

org_idintegerrequired
Error responses
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

List offers by resource

GET/api/v1/payments/{org_id}/offers/by-resource
API tokenpayments:reador user session

Public endpoint returning offers that grant access to a given resource UUID, checking both direct offer resources and payments-group resources.

Path parameters

org_idintegerrequired

Query parameters

resource_uuidstringrequired
Error responses
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

Get public offer

GET/api/v1/payments/{org_id}/offers/{offer_uuid}/public
API tokenpayments:reador user session

Public endpoint returning offer metadata and its included resources enriched with course details.

Path parameters

org_idintegerrequired
offer_uuidstringrequired
Error responses
  • 404 Offer not found
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

Get payments offer

GET/api/v1/payments/{org_id}/offers/{offer_id}
API tokenpayments:reador user session

Get a single payments offer by its numeric id.

Path parameters

org_idintegerrequired
offer_idintegerrequired

Returns

PaymentsOfferRead — Offer details.

namestring
descriptionstring | null
offer_typeOfferTypeEnum
subscriptionone_time
price_typeOfferPriceTypeEnum
customer_choicefixed_price
benefitsstring
amountnumber
currencystring
is_publicly_listedboolean
idintegerrequired
offer_uuidstringrequired
org_idintegerrequired
payments_config_idintegerrequired
payments_group_idinteger | nullrequired
provider_product_idstringrequired
creation_datestringrequired
update_datestringrequired
Error responses
  • 401 Authentication required
  • 403 Caller lacks permission to view this offer
  • 404 Offer not found
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "name": "",
  "description": "An example description",
  "offer_type": "subscription",
  "price_type": "customer_choice",
  "benefits": "",
  "amount": 0,
  "currency": "USD",
  "is_publicly_listed": true,
  "id": 1,
  "offer_uuid": "string",
  "org_id": 1,
  "payments_config_id": 1,
  "payments_group_id": 1,
  "provider_product_id": "string",
  "creation_date": "2026-01-15T09:30:00Z",
  "update_date": "2026-01-15T09:30:00Z"
}

Update payments offer

PUT/api/v1/payments/{org_id}/offers/{offer_id}
API tokenpayments:updateor user session

Update an existing payments offer.

Path parameters

org_idintegerrequired
offer_idintegerrequired

Request bodyapplication/jsonrequired

namestring
descriptionstring | null
offer_typeOfferTypeEnum
subscriptionone_time
price_typeOfferPriceTypeEnum
customer_choicefixed_price
benefitsstring
amountnumber
currencystring
is_publicly_listedboolean

Returns

PaymentsOfferRead — Offer updated.

namestring
descriptionstring | null
offer_typeOfferTypeEnum
subscriptionone_time
price_typeOfferPriceTypeEnum
customer_choicefixed_price
benefitsstring
amountnumber
currencystring
is_publicly_listedboolean
idintegerrequired
offer_uuidstringrequired
org_idintegerrequired
payments_config_idintegerrequired
payments_group_idinteger | nullrequired
provider_product_idstringrequired
creation_datestringrequired
update_datestringrequired
Error responses
  • 401 Authentication required
  • 403 Caller lacks permission to update this offer
  • 404 Offer not found
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "name": "",
  "description": "An example description",
  "offer_type": "subscription",
  "price_type": "customer_choice",
  "benefits": "",
  "amount": 0,
  "currency": "USD",
  "is_publicly_listed": true,
  "id": 1,
  "offer_uuid": "string",
  "org_id": 1,
  "payments_config_id": 1,
  "payments_group_id": 1,
  "provider_product_id": "string",
  "creation_date": "2026-01-15T09:30:00Z",
  "update_date": "2026-01-15T09:30:00Z"
}

Delete payments offer

DELETE/api/v1/payments/{org_id}/offers/{offer_id}
API tokenpayments:deleteor user session

Delete a payments offer. The offer becomes unavailable for checkout immediately.

Path parameters

org_idintegerrequired
offer_idintegerrequired
Error responses
  • 401 Authentication required
  • 403 Caller lacks permission to delete this offer
  • 404 Offer not found
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

Create offer checkout session

POST/api/v1/payments/{org_id}/offers/{offer_uuid}/checkout
API tokenpayments:createor user session

Create a provider checkout session for an offer. Returns a URL the user should be redirected to in order to complete purchase.

Path parameters

org_idintegerrequired
offer_uuidstringrequired

Query parameters

redirect_uristringrequired
Error responses
  • 401 Authentication required
  • 404 Offer not found
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

Get my paid enrollments

GET/api/v1/payments/{org_id}/enrollments/mine
API tokenpayments:reador user session

Return the current user's paid enrollments (offers purchased) within an organization.

Path parameters

org_idintegerrequired
Error responses
  • 401 Authentication required
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

Create billing portal session

POST/api/v1/payments/{org_id}/billing/portal
API tokenpayments:createor user session

Create a provider billing-portal session so the user can manage subscriptions, cancel, and view invoices/receipts.

Path parameters

org_idintegerrequired

Query parameters

return_urlstringrequired
Error responses
  • 401 Authentication required
  • 404 No payments config found for this org
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

List payment customers

GET/api/v1/payments/{org_id}/customers
API tokenpayments:reador user session

List every known payment customer (buyer) for the organization.

Path parameters

org_idintegerrequired
Error responses
  • 401 Authentication required
  • 403 Caller lacks permission to view customers for this org
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

Get Stripe overview

GET/api/v1/payments/{org_id}/stripe/overview
API tokenpayments:reador user session

Live dashboard overview fetched directly from the Stripe API (balance, recent activity summary).

Path parameters

org_idintegerrequired
Error responses
  • 401 Authentication required
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

List Stripe charges

GET/api/v1/payments/{org_id}/stripe/charges
API tokenpayments:reador user session

List Stripe charges for the org's connected account, paginated via `starting_after`. Data is fetched directly from Stripe.

Path parameters

org_idintegerrequired

Query parameters

limitinteger
starting_afterstring | null
Error responses
  • 401 Authentication required
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

List Stripe subscriptions

GET/api/v1/payments/{org_id}/stripe/subscriptions
API tokenpayments:reador user session

List Stripe subscriptions for the org's connected account (defaults to active). Data is fetched directly from Stripe.

Path parameters

org_idintegerrequired

Query parameters

statusstring
Error responses
  • 401 Authentication required
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

Generate Stripe Connect link

POST/api/v1/payments/{org_id}/stripe/connect/link
API tokenpayments:createor user session

Generate a Stripe Connect OAuth URL so an admin can connect their own Stripe account to the organization.

Path parameters

org_idintegerrequired

Query parameters

redirect_uristringrequired
Error responses
  • 401 Authentication required
  • 403 Caller lacks permission to configure payments for this org
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

Stripe OAuth callback

GET/api/v1/payments/stripe/oauth/callback
API tokenpayments:reador user session

Callback endpoint Stripe redirects to after the admin completes the Connect OAuth flow. Persists the resulting account id to the org's payments config.

Query parameters

codestringrequired
org_idintegerrequired
Error responses
  • 400 Invalid or expired authorization code
  • 401 Authentication required
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

Create Stripe Express link

POST/api/v1/payments/{org_id}/stripe/express/connect/link
API tokenpayments:createor user session

Create a Stripe Express account (if not already created) and return an onboarding link for the admin to complete account setup.

Path parameters

org_idintegerrequired

Query parameters

redirect_uristringrequired
Error responses
  • 401 Authentication required
  • 403 Caller lacks permission to configure payments for this org
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

Refresh Stripe Express link

POST/api/v1/payments/{org_id}/stripe/express/connect/refresh
API tokenpayments:createor user session

Generate a fresh Stripe Express onboarding link when the previous one has expired. This endpoint is unauthenticated because Stripe redirects unauthenticated sessions here.

Path parameters

org_idintegerrequired

Query parameters

redirect_uristringrequired
Error responses
  • 404 No payments config or Express account for this org
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

Get Stripe Express dashboard URL

GET/api/v1/payments/{org_id}/stripe/express/dashboard
API tokenpayments:reador user session

Return a Stripe Express hosted dashboard URL for the connected Express account so the admin can manage payouts, balances, etc.

Path parameters

org_idintegerrequired
Error responses
  • 401 Authentication required
  • 403 Caller lacks permission to view payments for this org
  • 404 No Express account linked to this org
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}