openapi: 3.1.0
info:
title: Slash Public Account Transaction 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: Transaction
paths:
/transaction:
x-reference-path: paths/transaction/route.yaml
get:
description: Get all transactions
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: accountId
deprecated: true
description: Use filter:accountId to filter by account ID
in: query
schema:
type: string
required: false
- name: filter:legalEntityId
in: query
description: Pass in a legal entity ID to filter transactions by accounts under a specific legal entity.
required: false
schema:
type: string
- name: filter:accountId
description: Pass in an account ID to filter transactions by account ID. This will return all transactions that match the account ID passed in.
in: query
schema:
type: string
required: false
- name: filter:virtualAccountId
description: Pass in a virtual account ID to filter transactions by virtual account ID. This will return all transactions that match the virtual account ID passed in.
in: query
schema:
type: string
required: false
- name: filter:from_date
description: Pass in a unix timestamp in milliseconds to filter transactions by date. This will return all transactions that occurred on or after the date passed in.
in: query
schema:
type: string
required: false
- name: filter:to_date
description: Pass in a unix timestamp in milliseconds to filter transactions by date. This will return all transactions that occurred on or before the date passed in.
in: query
schema:
type: string
required: false
- name: filter:from_authorized_at
description: Pass in a unix timestamp in milliseconds to filter transactions by authorization time. This will return all transactions that are authorized on or after the date passed in.
in: query
schema:
type: string
required: false
- name: filter:to_authorized_at
description: Pass in a unix timestamp in milliseconds to filter transactions by authorization time. This will return all transactions that are authorized on or before the date passed in.
in: query
schema:
type: string
required: false
- name: filter:status
description: Filter transactions by status
in: query
schema:
type: string
description: '`pending` - The transaction is pending and has not been posted to the account yet (the balance doesn''t reflect the transaction yet).
`posted` - The transaction has been posted to the account and the balance reflects the transaction.
`failed` - The transaction failed to post to the account
'
enum:
- pending
- posted
- failed
- name: filter:detailed_status
description: Filter transactions by detailed status
in: query
schema:
type: string
description: '- `pending`: Used for any transaction type that has not posted to the account yet, but is affecting the account''s available balance.
- `canceled`: Used for any transaction that was canceled.
- `failed`: Used for any transaction that failed to post to the account.
- `settled`: Used for any transaction that has posted to the account, except for card refunds, which use the `refund` status, and ACH returns, which use the `returned` status.
- `declined`: Used for card transactions that were declined.
- `refund`: Used for card transactions that were refunded, increasing the account''s available and posted balances.
- `reversed`: Used for card transactions that were authorized, but reversed by the merchant.
- `returned`: Used for ACH returns. In the case of an ACH return, there are two possibilities: (1) if the ACH settled and then returned, then there will be one transaction with status `settled` for the ACH settling, and one transaction with status `returned` for the ACH return. Both of these are posted transactions. (2) if the ACH returned before settling, then there will only be one transaction with status `canceled`.
- `dispute`: Used for disputed card transactions.
'
enum:
- pending
- canceled
- failed
- settled
- declined
- refund
- reversed
- returned
- dispute
- name: filter:cardId
description: Filter transactions by cardId
in: query
schema:
type: string
required: false
- name: filter:category
description: Filter transactions by category type
in: query
schema:
type: string
description: 'Filter by transaction category:
- `card`: Card transactions (authorizations, purchases, refunds)
- `ach`: ACH transfers (credits and debits)
- `wire`: Domestic wire transfers
- `international_wire`: International wire transfers
- `rtp`: Real-time payments
- `fee`: Fees (card fees, transfer fees, subscription fees)
- `internal`: Internal transfers (between accounts, treasury transfers)
'
enum:
- card
- ach
- wire
- international_wire
- rtp
- fee
- internal
required: false
- name: filter:cardGroupId
description: Filter transactions by card group ID. This will return all card transactions that belong to cards in the specified card group.
in: query
schema:
type: string
required: false
- name: filter:providerAuthorizationId
description: Filter transactions by provider authorization ID
in: query
schema:
type: string
required: false
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/Transaction'
x-entrypoint:
virtualPath: schemas/Transaction
sourcePath: schemas/Transaction.yaml
title: Transaction
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:
- Transaction
/transaction/aggregation:
x-reference-path: paths/transaction/aggregation/route.yaml
get:
description: Get transaction aggregations
parameters:
- name: accountId
deprecated: true
description: Use filter:accountId to filter by account ID
in: query
schema:
type: string
required: false
- name: filter:legalEntityId
in: query
description: Pass in a legal entity ID to filter transactions by accounts under a specific legal entity.
required: false
schema:
type: string
- name: filter:accountId
description: Pass in an account ID to filter transactions by account ID. This will return all transactions that match the account ID passed in.
in: query
schema:
type: string
required: false
- name: filter:virtualAccountId
description: Pass in a virtual account ID to filter transactions by virtual account ID. This will return all transactions that match the virtual account ID passed in.
in: query
schema:
type: string
required: false
- name: filter:from_date
description: Pass in a unix timestamp in milliseconds to filter transactions by date. This will return all transactions that occurred on or after the date passed in.
in: query
schema:
type: string
required: false
- name: filter:to_date
description: Pass in a unix timestamp in milliseconds to filter transactions by date. This will return all transactions that occurred on or before the date passed in.
in: query
schema:
type: string
required: false
- name: filter:from_authorized_at
description: Pass in a unix timestamp in milliseconds to filter transactions by authorization time. This will return all transactions that are authorized on or after the date passed in.
in: query
schema:
type: string
required: false
- name: filter:to_authorized_at
description: Pass in a unix timestamp in milliseconds to filter transactions by authorization time. This will return all transactions that are authorized on or before the date passed in.
in: query
schema:
type: string
required: false
- name: filter:status
description: Filter transactions by status
in: query
schema:
type: string
description: '`pending` - The transaction is pending and has not been posted to the account yet (the balance doesn''t reflect the transaction yet).
`posted` - The transaction has been posted to the account and the balance reflects the transaction.
`failed` - The transaction failed to post to the account
'
enum:
- pending
- posted
- failed
- name: filter:detailed_status
description: Filter transactions by detailed status
in: query
schema:
type: string
description: '- `pending`: Used for any transaction type that has not posted to the account yet, but is affecting the account''s available balance.
- `canceled`: Used for any transaction that was canceled.
- `failed`: Used for any transaction that failed to post to the account.
- `settled`: Used for any transaction that has posted to the account, except for card refunds, which use the `refund` status, and ACH returns, which use the `returned` status.
- `declined`: Used for card transactions that were declined.
- `refund`: Used for card transactions that were refunded, increasing the account''s available and posted balances.
- `reversed`: Used for card transactions that were authorized, but reversed by the merchant.
- `returned`: Used for ACH returns. In the case of an ACH return, there are two possibilities: (1) if the ACH settled and then returned, then there will be one transaction with status `settled` for the ACH settling, and one transaction with status `returned` for the ACH return. Both of these are posted transactions. (2) if the ACH returned before settling, then there will only be one transaction with status `canceled`.
- `dispute`: Used for disputed card transactions.
'
enum:
- pending
- canceled
- failed
- settled
- declined
- refund
- reversed
- returned
- dispute
- name: filter:cardId
description: Filter transactions by cardId
in: query
schema:
type: string
required: false
- name: filter:category
description: Filter transactions by category type
in: query
schema:
type: string
description: 'Filter by transaction category:
- `card`: Card transactions (authorizations, purchases, refunds)
- `ach`: ACH transfers (credits and debits)
- `wire`: Domestic wire transfers
- `international_wire`: International wire transfers
- `rtp`: Real-time payments
- `fee`: Fees (card fees, transfer fees, subscription fees)
- `internal`: Internal transfers (between accounts, treasury transfers)
'
enum:
- card
- ach
- wire
- international_wire
- rtp
- fee
- internal
required: false
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
count:
type: number
description: The total count of transactions.
totalIn:
type: number
description: The total amount of money that arrived into the account, in cents.
totalOut:
type: number
description: The total amount of money that was sent out of the account, in cents.
netChange:
type: number
description: The net change, which is `totalIn` + `totalOut`.
required:
- count
- totalIn
- totalOut
- netChange
'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:
- Transaction
/transaction/{transactionId}:
parameters:
- name: transactionId
in: path
schema:
type: string
required: true
x-reference-path: paths/transaction/{transactionId}/route.yaml
get:
description: Fetch details for a single transaction by ID
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Transaction'
x-entrypoint:
virtualPath: schemas/Transaction
sourcePath: schemas/Transaction.yaml
title: Transaction
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:
- Transaction
/transaction/{transactionId}/note:
parameters:
- name: transactionId
required: true
in: path
schema:
type: string
x-reference-path: paths/transaction/{transactionId}/note/route.yaml
patch:
description: Update note for a transaction
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
note:
type: string
required:
- note
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
required:
- success
'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:
- Transaction
/transaction/{transactionId}/fee-details:
parameters:
- name: transactionId
in: path
schema:
type: string
required: true
x-reference-path: paths/transaction/{transactionId}/fee-details/route.yaml
get:
description: Fetch breakdown of a fee transaction
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/FeeTransaction'
x-entrypoint:
virtualPath: schemas/FeeTransaction
sourcePath: schemas/FeeTransaction.yaml
title: FeeTransaction
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:
- Transaction
components:
schemas:
CardStatus:
type: string
enum:
- active
- paused
- inactive
- closed
x-entrypoint:
virtualPath: schemas/CardStatus
sourcePath: schemas/CardStatus.yaml
title: CardStatus
origin: ./src/publicApi
title: CardStatus
FeeTransaction:
type: object
properties:
id:
type: string
dateCharged:
type: string
feeAmountCents:
type: number
feeType:
type: string
accountId:
type: string
originalTransaction:
$ref: '#/components/schemas/Transaction'
x-entrypoint:
virtualPath: schemas/Transaction
sourcePath: schemas/Transaction.yaml
title: Transaction
origin: ./src/publicApi
card:
$ref: '#/components/schemas/Card'
x-entrypoint:
virtualPath: schemas/Card
sourcePath: schemas/Card.yaml
title: Card
origin: ./src/publicApi
required:
- id
- dateCharged
- feeAmountCents
- feeType
- accountId
x-entrypoint:
virtualPath: schemas/FeeTransaction
sourcePath: schemas/FeeTransaction.yaml
title: FeeTransaction
origin: ./src/publicApi
title: FeeTransaction
Money:
type: object
description: Represents a monetary value
properties:
amountCents:
type: integer
description: The amount in cents
required:
- amountCents
x-entrypoint:
virtualPath: schemas/Money
sourcePath: schemas/Money.yaml
title: Money
origin: ./src/publicApi
title: Money
Restriction:
type: string
enum:
- allowlist
- blacklist
x-entrypoint:
virtualPath: schemas/Restriction
sourcePath: schemas/Restriction.yaml
title: Restriction
origin: ./src/publicApi
title: Restriction
CardModifier:
oneOf:
- type: object
required:
- name
- value
properties:
name:
type: string
enum:
- only_allow_recurring_payments
value:
description: Whether to only allow recurring payments. The default value for newly created cards is false.
type: boolean
x-entrypoint:
virtualPath: schemas/CardModifier
sourcePath: schemas/CardModifier.yaml
title: CardModifier
origin: ./src/publicApi
title: CardModifier
OriginalCurrency:
type: object
description: 'The original currency of the transaction. This is only applicable to transactions. If this field is not sent, the original currency is in USD.
'
properties:
code:
type: string
description: The original currency code of the transaction
amountCents:
type: number
description: The amount of the transaction in its original currency in cents.
conversionRate:
type: number
description: The conversion rate used to convert the transaction amount from its original currency to the account currency. The currency rate is computed at the time of the transaction.
required:
- code
- amountCents
- conversionRate
x-entrypoint:
virtualPath: schemas/OriginalCurrency
sourcePath: schemas/OriginalCurrency.yaml
title: OriginalCurrency
origin: ./src/publicApi
title: OriginalCurrency
TransactionFxFeeInfo:
type: object
description: Foreign exchange fee charged for this transaction. This is only present when an FX fee has been created for the transaction.
properties:
amountCents:
type: number
description: The FX fee amount charged for this transaction, in USD cents.
required:
- amountCents
x-entrypoint:
virtualPath: schemas/TransactionFxFeeInfo
sourcePath: schemas/TransactionFxFeeInfo.yaml
title: TransactionFxFeeInfo
origin: ./src/publicApi
title: TransactionFxFeeInfo
TransactionCashbackInfo:
type: object
description: Cashback earned for this transaction. This is only present when cashback is known and currently applies to eligible card transactions.
properties:
amountCents:
type: number
description: The cashback amount earned for this transaction, in cents.
rate:
type: number
description: The cashback rate applied to this transaction.
required:
- amountCents
- rate
x-entrypoint:
virtualPath: schemas/TransactionCashbackInfo
sourcePath: schemas/TransactionCashbackInfo.yaml
title: TransactionCashbackInfo
origin: ./src/publicApi
title: TransactionCashbackInfo
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
TransactionDetailedStatus:
type: string
description: '- `pending_approval`: Used for any transaction type that is pending approval. This does not affect the account''s available or posted balances.
- `pending`: Used for any transaction type that has not posted to the account yet, but is affecting the account''s available balance.
- `canceled`: Used for any transaction that was canceled.
- `failed`: Used for any transaction that failed to post to the account.
- `settled`: Used for any transaction that has posted to the account, except for card refunds, which use the `refund` status, and ACH returns, which use the `returned` status.
- `declined`: Used for card transactions that were declined.
- `refund`: Used for card transactions that were refunded, increasing the account''s available and posted balances.
- `reversed`: Used for card transactions that were authorized, but reversed by the merchant.
- `returned`: Used for ACH returns. In the case of an ACH return, there are two possibilities: (1) if the ACH settled and then returned, then there will be one transaction with status `settled` for the ACH settling, and one transaction with status `returned` for the ACH return. Both of these are posted transactions. (2) if the ACH returned before settling, then there will only be one transaction with status `canceled`.
- `dispute`: Used for disputed card transactions.
'
enum:
- pending
- pending_approval
- in_review
- canceled
- failed
- settled
- declined
- refund
- reversed
- returned
- dispute
x-entrypoint:
virtualPath: schemas/TransactionDetailedStatus
sourcePath: schemas/TransactionDetailedStatus.yaml
title: TransactionDetailedStatus
origin: ./src/publicApi
title: TransactionDetailedStatus
TransactionMerchant:
type: object
properties:
description:
type: string
description: The raw description provided by the merchant for the transaction.
categoryCode:
type: string
description: The merchant's category code (MCC)
location:
$ref: '#/components/schemas/TransactionMerchantLocation'
description: Location details for the merchant/transaction.
x-entrypoint:
virtualPath: schemas/TransactionMerchantLocation
sourcePath: schemas/TransactionMerchantLocation.yaml
title: TransactionMerchantLocation
origin: ./src/publicApi
required:
- description
- categoryCode
x-entrypoint:
virtualPath: schemas/TransactionMerchant
sourcePath: schemas/TransactionMerchant.yaml
title: TransactionMerchant
origin: ./src/publicApi
title: TransactionMerchant
SpendingConstraint:
type: object
description: A constraint that can be applied to a CardGroupSpendingRule
properties:
merchantCategoryRule:
type: object
nullable: true
properties:
merchantCategories:
type: array
items:
type: string
restriction:
$ref: '#/components/schemas/Restriction'
x-entrypoint:
virtualPath: schemas/Restriction
sourcePath: schemas/Restriction.yaml
title: Restriction
origin: ./src/publicApi
required:
- merchantCategories
- restriction
merchantRule:
type: object
nullable: true
properties:
merchants:
type: array
items:
type: string
restriction:
$ref: '#/components/schemas/Restriction'
x-entrypoint:
virtualPath: schemas/Restriction
sourcePath: schemas/Restriction.yaml
title: Restriction
origin: ./src/publicApi
required:
- merchants
- restriction
spendingRule:
type: object
nullable: true
properties:
utilizationLimit:
type: object
properties:
timezone:
type: string
description: IANA timezone string. Limits always reset at midnight of the timezone specified. If no timezone is specified, then UTC time is used.
limitAmount:
$ref: '#/components/schemas/Money'
x-entrypoint:
virtualPath: schemas/Money
sourcePath: schemas/Money.yaml
title: Money
origin: ./src/publicApi
preset:
type: string
enum:
- daily
- weekly
- monthly
- yearly
- collective
startDate:
type: string
description: Format ISO-8601. A day that equals today or the past. This is optional.If the `preset` is "daily", this value is ignored. If the `preset` is "weekly", "monthly" or "yearly", then the this value is used to compute when the limit should start limit.
required:
- limitAmount
- preset
utilizationLimitV2:
type: array
items:
type: object
properties:
timezone:
type: string
description: IANA timezone string. Limits always reset at midnight of the timezone specified. If no timezone is specified, then UTC time is used.
limitAmount:
$ref: '#/components/schemas/Money'
x-entrypoint:
virtualPath: schemas/Money
sourcePath: schemas/Money.yaml
title: Money
origin: ./src/publicApi
preset:
type: string
enum:
- daily
- weekly
- monthly
- yearly
- collective
startDate:
type: string
description: Format ISO-8601. A day that equals today or the past. This is optional.If the `preset` is "daily", this value is ignored. If the `preset` is "weekly", "monthly" or "yearly", then the this value is used to compute when the limit should start li
# --- truncated at 32 KB (55 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/slash/refs/heads/main/openapi/slash-transaction-api-openapi.yml