Slash Payments API
The Payments API from Slash — 4 operation(s) for payments.
The Payments API from Slash — 4 operation(s) for payments.
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-payments-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 Payments 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: Payments
paths:
/payments/payment-intent:
x-api-key-scopes:
- revenue
x-reference-path: paths/payments/payment-intent/route.yaml
get:
description: List payment intents for your legal entity, newest first. Supports cursor pagination and filtering by status.
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
- name: filter:status
description: Filter payment intents by status.
in: query
required: false
schema:
type: string
enum:
- pending
- processing
- succeeded
- canceled
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/PaymentIntent'
x-entrypoint:
virtualPath: schemas/PaymentIntent
sourcePath: schemas/PaymentIntent.yaml
title: PaymentIntent
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:
- Payments
summary: Get payments payment intent
x-summary-source: derived
operationId: getPaymentsPaymentIntent
x-operation-id-source: derived
post:
description: Create a payment intent for collection with the Slash Checkout SDK. When returned, the client secret authorizes the browser to load and confirm only this payment intent and must not be logged or stored in browser persistence.
parameters:
- name: X-Idempotency-Key
description: An optional unique key for this payment intent. Retrying the same request with the same key returns the previously created payment intent.
in: header
required: false
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
amount:
type: integer
minimum: 1
description: Payment amount in the smallest unit of `currency`.
currency:
type: string
description: ISO currency code for the payment. Supported currencies are `usd` and `eur`.
enum:
- usd
- eur
metadata:
type: object
description: Merchant-defined metadata stored on the payment intent and returned in payment intent responses.
additionalProperties: true
allowedPaymentMethods:
type: array
minItems: 1
uniqueItems: true
items:
$ref: '#/components/schemas/slashfi.models.enums.Acquiring.PaymentMethod.yaml'
x-entrypoint:
virtualPath: enums/Acquiring/PaymentMethod
sourcePath: enums/Acquiring/PaymentMethod.yaml
title: PaymentMethod
origin: /home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas
globalImport: true
typescript:
importPath: import * as models from '@slashfi/models';
symbolValue: models.enums.Acquiring.PaymentMethod
typeValue: models.enums.Acquiring.PaymentMethod
description: Payment methods the buyer may use. Omit to allow all supported methods.
required:
- amount
- currency
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/paths.payments.payment-intent._dto.PostResponse'
x-entrypoint:
virtualPath: paths/payments/payment-intent/_dto/PostResponse
sourcePath: paths/payments/payment-intent/_dto/PostResponse.yaml
title: PostResponse
origin: ./src/publicApi
'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:
- Payments
summary: Create payments payment intent
x-summary-source: derived
operationId: postPaymentsPaymentIntent
x-operation-id-source: derived
/payments/payment-intent/{paymentIntentId}:
x-api-key-scopes:
- revenue
x-reference-path: paths/payments/payment-intent/{paymentIntentId}/route.yaml
get:
description: Get a single payment intent by ID. Use this to check whether a payment has settled (`status` becomes `succeeded`) as an alternative or reconciliation fallback to webhooks.
parameters:
- name: paymentIntentId
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:
allOf:
- $ref: '#/components/schemas/PaymentIntent'
x-entrypoint:
virtualPath: schemas/PaymentIntent
sourcePath: schemas/PaymentIntent.yaml
title: PaymentIntent
origin: ./src/publicApi
'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:
- Payments
summary: Get payments payment intent by payment intent id
x-summary-source: derived
operationId: getPaymentsPaymentIntentByPaymentIntentId
x-operation-id-source: derived
patch:
description: Update the fields of a pending payment intent. Payment intents that are processing or in a terminal state cannot be updated.
parameters:
- name: paymentIntentId
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
requestBody:
required: true
content:
application/json:
schema:
type: object
minProperties: 1
additionalProperties: false
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.
enum:
- usd
- eur
metadata:
type: object
description: Merchant-defined metadata to shallow-merge into the existing metadata. Omitted keys remain unchanged. Set a top-level key to null to delete it.
additionalProperties: true
allowedPaymentMethods:
type: array
nullable: true
minItems: 1
uniqueItems: true
items:
$ref: '#/components/schemas/slashfi.models.enums.Acquiring.PaymentMethod.yaml'
x-entrypoint:
virtualPath: enums/Acquiring/PaymentMethod
sourcePath: enums/Acquiring/PaymentMethod.yaml
title: PaymentMethod
origin: /home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas
globalImport: true
typescript:
importPath: import * as models from '@slashfi/models';
symbolValue: models.enums.Acquiring.PaymentMethod
typeValue: models.enums.Acquiring.PaymentMethod
description: Omit to keep the current allowed payment methods, set to null to allow all supported methods, or provide a list to replace them.
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PaymentIntent'
x-entrypoint:
virtualPath: schemas/PaymentIntent
sourcePath: schemas/PaymentIntent.yaml
title: PaymentIntent
origin: ./src/publicApi
'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 payment intent is no longer pending and cannot be updated.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
x-entrypoint:
origin: ./src/publicApi
sourcePath: src/publicApi/paths/payments/payment-intent/{paymentIntentId}/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:
- Payments
summary: Update payments payment intent by payment intent id
x-summary-source: derived
operationId: patchPaymentsPaymentIntentByPaymentIntentId
x-operation-id-source: derived
/payments/refund:
x-api-key-scopes:
- revenue
x-reference-path: paths/payments/refund/route.yaml
get:
description: List refunds for your legal entity, newest first. Supports cursor pagination and filtering by payment intent and status.
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
- name: filter:paymentIntentId
description: Filter refunds by payment intent ID.
in: query
required: false
schema:
type: string
- name: filter:status
description: Filter refunds by status.
in: query
required: false
schema:
type: string
enum:
- pending
- processing
- succeeded
- failed
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/Refund'
x-entrypoint:
virtualPath: schemas/Refund
sourcePath: schemas/Refund.yaml
title: Refund
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:
- Payments
summary: Get payments refund
x-summary-source: derived
operationId: getPaymentsRefund
x-operation-id-source: derived
post:
description: Refund all or part of a succeeded payment. Optionally provide an `X-Idempotency-Key` header so retries with the same key and request return the existing refund.
parameters:
- name: X-Idempotency-Key
description: An optional unique key for this refund. Retrying the same request with the same key returns the previously created refund.
in: header
required: false
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
paymentIntentId:
type: string
description: The payment intent to refund.
amount:
type: integer
minimum: 1
description: Amount to refund, in the smallest unit of the payment intent's currency. The refund is always issued in the payment intent's currency.
required:
- paymentIntentId
- amount
responses:
'200':
description: OK
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/Refund'
x-entrypoint:
virtualPath: schemas/Refund
sourcePath: schemas/Refund.yaml
title: Refund
origin: ./src/publicApi
'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:
- Payments
summary: Create payments refund
x-summary-source: derived
operationId: postPaymentsRefund
x-operation-id-source: derived
/payments/refund/{refundId}:
x-api-key-scopes:
- revenue
x-reference-path: paths/payments/refund/{refundId}/route.yaml
get:
description: Get a single refund by ID.
parameters:
- name: refundId
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:
allOf:
- $ref: '#/components/schemas/Refund'
x-entrypoint:
virtualPath: schemas/Refund
sourcePath: schemas/Refund.yaml
title: Refund
origin: ./src/publicApi
'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:
- Payments
summary: Get payments refund by refund id
x-summary-source: derived
operationId: getPaymentsRefundByRefundId
x-operation-id-source: derived
components:
schemas:
slashfi.models.enums.Acquiring.PaymentMethod.yaml:
type: string
description: Payment method available for an acquiring PaymentIntent checkout.
enum:
- card
- apple_pay
- google_pay
x-entrypoint:
virtualPath: enums/Acquiring/PaymentMethod
sourcePath: enums/Acquiring/PaymentMethod.yaml
title: PaymentMethod
origin: /home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas
globalImport: true
title: PaymentMethod
paths.payments.payment-intent._dto.PostResponse:
allOf:
- $ref: '#/components/schemas/PaymentIntent'
x-entrypoint:
virtualPath: schemas/PaymentIntent
sourcePath: schemas/PaymentIntent.yaml
title: PaymentIntent
origin: ./src/publicApi
x-entrypoint:
virtualPath: paths/payments/payment-intent/_dto/PostResponse
sourcePath: paths/payments/payment-intent/_dto/PostResponse.yaml
title: PostResponse
origin: ./src/publicApi
title: PostResponse
Refund:
type: object
description: The refund object. Its `status` tracks the refund from creation through completion.
properties:
id:
type: string
description: Unique identifier for the refund.
status:
type: string
description: Current refund processing status.
enum:
- pending
- processing
- succeeded
- failed
amount:
type: integer
description: Refund amount in the smallest unit of `currency`. Refunds are always in the currency of the payment intent being refunded.
currency:
type: string
description: ISO currency code for the refund. Supported currencies are `usd` and `eur`.
enum:
- usd
- eur
paymentIntentId:
type: string
description: The payment intent being refunded.
createdAt:
type: string
format: date-time
description: ISO-8601 timestamp the refund was created at.
updatedAt:
type: string
format: date-time
description: ISO-8601 timestamp the refund last changed status.
required:
- id
- status
- amount
- currency
- paymentIntentId
- createdAt
- updatedAt
x-entrypoint:
virtualPath: schemas/Refund
sourcePath: schemas/Refund.yaml
title: Refund
origin: ./src/publicApi
title: Refund
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
PaymentIntent:
type: object
description: The payment intent object. Its `status` tracks the payment from creation through settlement.
properties:
id:
type: string
description: Unique identifier for the payment intent.
status:
type: string
description: Status of the payment intent. `pending` intents have not been paid yet; `processing` intents have a payment in flight awaiting settlement; `succeeded` intents have a confirmed settled payment; `canceled` intents were canceled and can no longer be paid.
enum:
- pending
- processing
- succeeded
- canceled
amount:
type: integer
description: Payment amount in the smallest unit of `currency`.
currency:
type: string
description: ISO currency code for the payment. Supported currencies are `usd` and `eur`.
enum:
- usd
- eur
metadata:
type: object
description: Merchant-defined metadata stored on the payment intent and echoed in payment intent responses and the payment-intent success webhook.
additionalProperties: true
clientSecret:
type: string
description: Sensitive PaymentIntent-scoped browser capability. Do not log or store it in browser persistence.
allowedPaymentMethods:
type: array
items:
$ref: '#/components/schemas/slashfi.models.enums.Acquiring.PaymentMethod.yaml'
x-entrypoint:
virtualPath: enums/Acquiring/PaymentMethod
sourcePath: enums/Acquiring/PaymentMethod.yaml
title: PaymentMethod
origin: /home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas
globalImport: true
typescript:
importPath: import * as models from '@slashfi/models';
symbolValue: models.enums.Acquiring.PaymentMethod
typeValue: models.enums.Acquiring.PaymentMethod
description: Payment methods the merchant allows, exactly as set on create or update. Omitted when all supported methods are allowed.
createdAt:
type: string
format: date-time
description: ISO-8601 timestamp the payment intent was created at.
updatedAt:
type: string
format: date-time
description: ISO-8601 timestamp the payment intent last changed status.
required:
- id
- status
- amount
- currency
- createdAt
- updatedAt
x-entrypoint:
virtualPath: schemas/PaymentIntent
sourcePath: schemas/PaymentIntent.yaml
title: PaymentIntent
origin: ./src/publicApi
title: PaymentIntent
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
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