Slash Checkout Session API
The Checkout Session API from Slash — 2 operation(s) for checkout session.
The Checkout Session API from Slash — 2 operation(s) for checkout session.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/joinslash-com:joinslash-com-checkout-session-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Slash Public Checkout Session API
description: API description
version: 0.0.1
contact: {}
servers:
- url: https://api.slash.com
description: production
security:
- api_key: []
- partner_api_key: []
- bearer: []
- developer_application: []
tags:
- name: Checkout Session
paths:
/checkout-session:
x-api-key-scopes:
- revenue
x-reference-path: paths/checkout-session/route.yaml
get:
deprecated: true
description: '**Deprecated:** Slash hosted checkout has been sunset. This endpoint stays reachable for a few more days but is no longer expected to work, so do not rely on it. Move to payment intents and Payment Elements now
List checkout sessions for your legal entity, newest first. Supports cursor pagination.'
parameters:
- name: cursor
required: false
in: query
schema:
type: string
description: A cursor string to fetch the next page of results
x-reference-path: schemas/Pagination/CursorParameter.yaml
- name: filter:legalEntityId
description: The legal entity ID. Required if authenticating with access to multiple legal entities.
in: query
required: false
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/CheckoutSession'
x-entrypoint:
virtualPath: schemas/CheckoutSession
sourcePath: schemas/CheckoutSession.yaml
title: CheckoutSession
origin: ./src/publicApi
metadata:
$ref: '#/components/schemas/Pagination.PaginationResponse'
x-entrypoint:
virtualPath: schemas/Pagination/PaginationResponse
sourcePath: schemas/Pagination/PaginationResponse.yaml
title: PaginationResponse
origin: ./src/publicApi
required:
- items
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: TooManyRequests
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'500':
description: Internal Error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- api_key: []
- bearer: []
tags:
- Checkout Session
summary: Get checkout session
x-summary-source: derived
operationId: getCheckoutSession
x-operation-id-source: derived
post:
deprecated: true
description: '**Deprecated:** Slash hosted checkout has been sunset. This endpoint stays reachable for a few more days but is no longer expected to work, so do not rely on it. Move to payment intents and Payment Elements now
Create a checkout session for collecting a card payment through the Slash hosted checkout. Returns a hosted checkout `url` to embed in your page. Requires an `X-Idempotency-Key` header; retries with the same key return the existing session.'
parameters:
- name: X-Idempotency-Key
description: A unique key for this checkout session. Retrying a request with the same key returns the previously created session instead of creating a new one.
in: header
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
amount:
type: integer
minimum: 1
description: Payment amount in cents. Must be strictly positive.
currency:
type: string
description: ISO currency code for the payment. Supported currencies are `usd` and `eur`.
enum:
- usd
- eur
customMetadata:
type: object
description: Custom metadata to associate with the checkout session. Echoed on webhook events for this session.
additionalProperties: true
config:
type: object
description: Configuration for the hosted checkout page. Echoed on reads and editable while the session is open.
properties:
prefillEmail:
type: string
format: email
description: Email address to prefill the hosted checkout with.
prefillName:
type: string
description: Buyer name to prefill the hosted checkout with.
hideEmail:
type: boolean
description: Hides the email field in the hosted checkout entirely.
disableEmail:
type: boolean
description: Renders the email field read-only. Pairs with prefillEmail to show a fixed address the buyer cannot edit.
prefillAddress:
type: object
description: Billing address to prefill the hosted checkout with.
properties:
name:
type: string
description: Name on the billing address.
country:
type: string
description: Country for the billing address.
line1:
type: string
description: First billing address line.
line2:
type: string
description: Second billing address line.
city:
type: string
description: City for the billing address.
state:
type: string
description: State or region for the billing address.
postalCode:
type: string
description: Postal code for the billing address.
paymentMethods:
type: object
description: Wallet payment methods to enable in the hosted checkout. Card is always enabled. Omitted fields default to enabled.
properties:
applePay:
type: boolean
description: Whether Apple Pay is enabled. Defaults to true.
googlePay:
type: boolean
description: Whether Google Pay is enabled. Defaults to true.
expiresAt:
type: string
format: date-time
description: ISO-8601 timestamp after which the session can no longer be paid. Defaults to 24 hours after creation. Must be at least 30 minutes and at most 7 days in the future.
required:
- amount
- currency
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
checkoutSession:
$ref: '#/components/schemas/CheckoutSession'
x-entrypoint:
virtualPath: schemas/CheckoutSession
sourcePath: schemas/CheckoutSession.yaml
title: CheckoutSession
origin: ./src/publicApi
required:
- checkoutSession
'400':
description: Hosted checkout is unavailable or payment processing is not enabled for the legal entity.
content:
application/json:
schema:
$ref: '#/components/schemas/PartnerError'
x-entrypoint:
origin: ./src/publicApi
sourcePath: src/publicApi/paths/checkout-session/route.yaml
title: PartnerError
virtualPath: components/PartnerError
globalImport: true
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: TooManyRequests
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'500':
description: Internal Error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- api_key: []
- bearer: []
tags:
- Checkout Session
summary: Create checkout session
x-summary-source: derived
operationId: postCheckoutSession
x-operation-id-source: derived
/checkout-session/{checkoutSessionId}:
x-api-key-scopes:
- revenue
x-reference-path: paths/checkout-session/{checkoutSessionId}/route.yaml
get:
deprecated: true
description: '**Deprecated:** Slash hosted checkout has been sunset. This endpoint stays reachable for a few more days but is no longer expected to work, so do not rely on it. Move to payment intents and Payment Elements now
Get a single checkout session by ID. Use this to check whether a session''s payment has settled (`status` becomes `complete`) as an alternative or reconciliation fallback to webhooks.'
parameters:
- name: checkoutSessionId
in: path
required: true
schema:
type: string
- name: filter:legalEntityId
description: The legal entity ID. Required if authenticating with access to multiple legal entities.
in: query
required: false
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
checkoutSession:
$ref: '#/components/schemas/CheckoutSession'
x-entrypoint:
virtualPath: schemas/CheckoutSession
sourcePath: schemas/CheckoutSession.yaml
title: CheckoutSession
origin: ./src/publicApi
required:
- checkoutSession
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: TooManyRequests
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'500':
description: Internal Error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- api_key: []
- bearer: []
tags:
- Checkout Session
summary: Get checkout session by checkout session id
x-summary-source: derived
operationId: getCheckoutSessionByCheckoutSessionId
x-operation-id-source: derived
patch:
deprecated: true
description: '**Deprecated:** Slash hosted checkout has been sunset. This endpoint stays reachable for a few more days but is no longer expected to work, so do not rely on it. Move to payment intents and Payment Elements now
Update an open checkout session before the buyer starts payment. The session keeps its id and hosted url, so a buyer with the checkout already open picks up a new amount without a new session being minted.'
parameters:
- name: checkoutSessionId
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
amount:
type: integer
minimum: 1
description: Payment amount in cents. Must be strictly positive.
expiresAt:
type: string
format: date-time
description: ISO-8601 timestamp after which the session can no longer be paid. Must be at least 30 minutes and at most 7 days in the future.
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
checkoutSession:
$ref: '#/components/schemas/CheckoutSession'
x-entrypoint:
virtualPath: schemas/CheckoutSession
sourcePath: schemas/CheckoutSession.yaml
title: CheckoutSession
origin: ./src/publicApi
required:
- checkoutSession
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'409':
description: 'The checkout session can no longer be updated because payment is
already in progress or has reached a terminal state.
'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
x-entrypoint:
origin: ./src/publicApi
sourcePath: src/publicApi/paths/checkout-session/{checkoutSessionId}/route.yaml
title: Error
virtualPath: components/Error
globalImport: true
'429':
description: TooManyRequests
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'500':
description: Internal Error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- api_key: []
- bearer: []
tags:
- Checkout Session
summary: Update checkout session by checkout session id
x-summary-source: derived
operationId: patchCheckoutSessionByCheckoutSessionId
x-operation-id-source: derived
components:
schemas:
Error:
type: object
properties:
message:
type: string
name:
type: string
identifier:
type: string
rawStatus:
type: number
meta:
type: object
additionalProperties: true
required:
- message
- name
- identifier
- rawStatus
x-entrypoint:
origin: ./src/publicApi
sourcePath: ./src/publicApi/main.yaml
title: Error
virtualPath: components/Error
title: Error
PartnerError:
type: object
description: 'Error response returned by the Slash Partners (`/partner-program/*`)
API. Always includes a stable, machine-readable `code` and a
`reference_id` for support correlation, in addition to a
human-readable `message`.
'
properties:
code:
type: string
description: 'Stable, machine-readable error code. Branch on this rather than
parsing `message`. Unexpected server-side failures use
`internal_error`.
'
enum:
- missing_api_key
- invalid_api_key
- api_key_wrong_scope
- invalid_request
- missing_idempotency_key
- invalid_idempotency_key
- idempotency_key_conflict
- hosted_checkout_not_available
- payment_processing_not_enabled
- invalid_mle_key
- invalid_mle_payload
- unsupported_currency
- invalid_amount
- no_approved_transaction_details
- transaction_details_mismatch
- source_account_not_linked
- destination_account_not_found
- destination_account_closed
- invalid_destination
- destination_account_not_owned
- invalid_suggested_split
- suggested_split_amount_mismatch
- transfer_not_found
- feature_not_enabled
- internal_error
message:
type: string
description: 'Human-readable explanation of the failure. For known client-side
errors this is actionable; for unexpected failures it is generic
and accompanied by `reference_id`.
'
reference_id:
type: string
description: 'Opaque identifier for this specific failure. Include it when
contacting Slash support to correlate the request server-side.
'
name:
type: string
identifier:
type: string
rawStatus:
type: number
meta:
type: object
additionalProperties: true
required:
- code
- message
- reference_id
- name
- identifier
- rawStatus
x-entrypoint:
origin: ./src/publicApi
sourcePath: ./src/publicApi/main.yaml
title: PartnerError
virtualPath: components/PartnerError
title: PartnerError
Pagination.PaginationResponse:
type: object
description: Response sent when requesting a list of data
properties:
nextCursor:
type: string
description: The cursor to use to retrieve the next page of data. If this is not sent, there is no more data to retrieve.
count:
type: number
description: The number of items in the current page of data.
x-entrypoint:
virtualPath: schemas/Pagination/PaginationResponse
sourcePath: schemas/Pagination/PaginationResponse.yaml
title: PaginationResponse
origin: ./src/publicApi
title: PaginationResponse
CheckoutSession:
type: object
description: A checkout session represents a single hosted payment attempt. Embed the session's `url` in your page (via the Slash checkout SDK or an iframe) to collect a card payment.
properties:
id:
type: string
description: Unique identifier for the checkout session.
url:
type: string
description: Hosted checkout URL to embed. Treat it as single-use and mint one session per buyer checkout.
status:
type: string
description: Status of the checkout session. `open` sessions are payable; `complete` sessions have a confirmed settled payment; `expired` sessions can no longer be paid.
enum:
- open
- complete
- expired
paymentIntentId:
type: string
description: The payment intent created for this checkout session. Use this ID with `GET /payment-intent/{paymentIntentId}` or `POST /refund`.
amount:
type: integer
description: Payment amount in cents.
currency:
type: string
description: ISO currency code for the payment. Supported currencies are `usd` and `eur`.
enum:
- usd
- eur
customMetadata:
type: object
description: Custom metadata associated with the checkout session. Echoed on webhook events for this session.
additionalProperties: true
config:
type: object
description: Configuration for the hosted checkout page, editable while the session is open.
properties:
prefillEmail:
type: string
description: Email address the hosted checkout is prefilled with, if provided at creation.
prefillName:
type: string
description: Buyer name the hosted checkout is prefilled with, if provided at creation.
hideEmail:
type: boolean
description: Hides the email field in the hosted checkout entirely.
disableEmail:
type: boolean
description: Renders the email field read-only. Pairs with prefillEmail to show a fixed address the buyer cannot edit.
prefillAddress:
type: object
description: Billing address the hosted checkout is prefilled with, if provided at creation.
properties:
name:
type: string
description: Name on the billing address.
country:
type: string
description: Country for the billing address.
line1:
type: string
description: First billing address line.
line2:
type: string
description: Second billing address line.
city:
type: string
description: City for the billing address.
state:
type: string
description: State or region for the billing address.
postalCode:
type: string
description: Postal code for the billing address.
paymentMethods:
type: object
description: Wallet payment methods enabled for the hosted checkout. Card is always enabled.
properties:
applePay:
type: boolean
description: Whether Apple Pay is enabled.
googlePay:
type: boolean
description: Whether Google Pay is enabled.
expiresAt:
type: string
format: date-time
description: ISO-8601 timestamp after which the session can no longer be paid.
createdAt:
type: string
format: date-time
description: ISO-8601 timestamp the session was created at.
required:
- id
- url
- status
- paymentIntentId
- amount
- currency
- expiresAt
- createdAt
x-entrypoint:
virtualPath: schemas/CheckoutSession
sourcePath: schemas/CheckoutSession.yaml
title: CheckoutSession
origin: ./src/publicApi
title: CheckoutSession
securitySchemes:
api_key:
type: apiKey
description: "API key authentication for public API requests.\n\nKeys come in two flavors:\n\n- *Legal-entity-scoped keys* are pinned to a single legal entity.\n Minted via the dashboard under a specific entity; every request\n acts on that entity.\n- *User-scoped keys* are pinned to a user and span every legal\n entity that user has access to. Every request made with a\n user-scoped key (except `GET /legal-entity`, which lists the\n legal entities the user can access) must include an\n `x-legal-entity` header naming the legal entity the request is\n operating on. Requests without the header are rejected with\n `400`. The authenticated user must have an active permission\n role on the supplied legal entity, otherwise the request is\n rejected with `403`.\n"
name: X-API-Key
in: header
partner_api_key:
type: apiKey
description: 'Partner-program API key authentication.
Keys are minted in the partner dashboard (Developers → API Keys),
are scoped to a single partner program, and are prefixed with
`sk_partner_`. Partner keys are only accepted by routes that
declare this scheme; they are rejected by `api_key` routes and
vice versa.
'
name: X-API-Key
in: header
bearer:
type: http
scheme: bearer
developer_application:
type: http
scheme: basic