Slash Transaction API

The Transaction API from Slash — 5 operation(s) for transaction.

OpenAPI Specification

slash-transaction-api-openapi.yml Raw ↑
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