Synctera Transactions API

Create and manage transactions

OpenAPI Specification

synctera-transactions-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  description: '<h2>Let''s build something great.</h2><p>Welcome to the official reference documentation for Synctera APIs. Our APIs are the best way to automate your company''s banking needs and are designed to be easy to understand and implement.</p><p>We''re continuously growing this library and what you see here is just the start, but if you need something specific or have a question, <a class=''text-blue-600'' href=''https://synctera.com/contact'' target=''_blank'' rel=''noreferrer''>contact us</a>.</p>

    '
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
  title: Synctera Accounts Transactions API
  version: 0.20.0
servers:
- description: Production
  url: https://api.synctera.com/v0
- description: Sandbox (no real world financial impact)
  url: https://api-sandbox.synctera.com/v0
security:
- bearerAuth: []
tags:
- description: Create and manage transactions
  name: Transactions
paths:
  /transactions/internal_transfer:
    description: An internal transfer is an immediate payment between two accounts within the same Fintech.
    summary: Initiate an internal account-to-account transfer
    post:
      description: Create an internal transfer
      operationId: createInternalTransfer
      parameters:
      - $ref: '#/components/parameters/idempotency_key'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/internal_transfer'
        description: Transfer request body
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_transfer_response'
          description: Transaction Response
        '400':
          $ref: '#/components/responses/bad_request'
        '401':
          $ref: '#/components/responses/unauthorized'
        '403':
          $ref: '#/components/responses/forbidden'
        '422':
          $ref: '#/components/responses/unprocessable_entity'
        '500':
          $ref: '#/components/responses/internal_server_error'
      summary: Create an internal transfer
      tags:
      - Transactions
      x-external: true
  /transactions/pending:
    description: 'Pending transactions represent a "hold" of a paricular amount on an account balance.

      '
    summary: List pending transactions
    get:
      description: 'Get paginated list of pending transactions matching the provided filters

        '
      operationId: listPendingTransactions
      parameters:
      - $ref: '#/components/parameters/account_no'
      - $ref: '#/components/parameters/account_id2'
      - $ref: '#/components/parameters/from_date'
      - $ref: '#/components/parameters/to_date'
      - $ref: '#/components/parameters/status4'
      - $ref: '#/components/parameters/transaction_id1'
      - $ref: '#/components/parameters/type'
      - $ref: '#/components/parameters/subtype'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/page_token'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/pending_transactions'
          description: Paginated list of pending transactions
        '400':
          $ref: '#/components/responses/bad_request'
        '401':
          $ref: '#/components/responses/unauthorized'
        '403':
          $ref: '#/components/responses/forbidden'
        '422':
          $ref: '#/components/responses/unprocessable_entity'
        '500':
          $ref: '#/components/responses/internal_server_error'
      summary: List pending transactions
      tags:
      - Transactions
      x-external: true
  /transactions/pending/{id}:
    description: 'A pending transaction represent a "hold" of a paricular amount on an account balance.

      '
    summary: Get pending transaction
    get:
      description: 'Get a pending transaction by its uuid

        '
      operationId: getPendingTransactionByID
      parameters:
      - $ref: '#/components/parameters/id1'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/pending_transaction'
          description: Pending Transaction
        '400':
          $ref: '#/components/responses/bad_request'
        '401':
          $ref: '#/components/responses/unauthorized'
        '403':
          $ref: '#/components/responses/forbidden'
        '422':
          $ref: '#/components/responses/unprocessable_entity'
        '500':
          $ref: '#/components/responses/internal_server_error'
      summary: Get a pending transaction
      tags:
      - Transactions
      x-external: true
  /transactions/posted:
    description: 'Posted transactions represent a completed money movement.

      '
    summary: List posted transactions
    get:
      description: 'Get paginated list of posted transactions matching the provided filters

        '
      operationId: listPostedTransactions
      parameters:
      - $ref: '#/components/parameters/account_no'
      - $ref: '#/components/parameters/account_id2'
      - $ref: '#/components/parameters/from_date'
      - $ref: '#/components/parameters/to_date'
      - $ref: '#/components/parameters/type'
      - $ref: '#/components/parameters/subtype'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/page_token'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/posted_transactions'
          description: Paginated list of posted transactions
        '400':
          $ref: '#/components/responses/bad_request'
        '401':
          $ref: '#/components/responses/unauthorized'
        '403':
          $ref: '#/components/responses/forbidden'
        '422':
          $ref: '#/components/responses/unprocessable_entity'
        '500':
          $ref: '#/components/responses/internal_server_error'
      summary: List posted transactions
      tags:
      - Transactions
      x-external: true
  /transactions/posted/{id}:
    description: 'A posted transaction represents a completed money movement.

      '
    summary: Get posted transaction
    get:
      description: 'Get a posted transaction by its uuid

        '
      operationId: getPostedTransactionByID
      parameters:
      - $ref: '#/components/parameters/id1'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/posted_transaction'
          description: Posted Transaction
        '400':
          $ref: '#/components/responses/bad_request'
        '401':
          $ref: '#/components/responses/unauthorized'
        '403':
          $ref: '#/components/responses/forbidden'
        '422':
          $ref: '#/components/responses/unprocessable_entity'
        '500':
          $ref: '#/components/responses/internal_server_error'
      summary: Get a posted transaction
      tags:
      - Transactions
      x-external: true
components:
  schemas:
    risk_info:
      description: Information received by the transaction risk/fraud service related to this transaction
      nullable: true
      type: object
    internal_transfer:
      example:
        amount: 1025
        currency: USD
        originating_account_id: 1cde7350-f511-4a07-b314-06bf48a96a43
        receiving_account_id: 921e1160-6227-4069-bd24-becf90390289
        type: ACCOUNT_TO_ACCOUNT
      properties:
        amount:
          description: The amount (in cents) to transfer from originating account to receiving account.
          format: int64
          minimum: 1
          type: integer
        currency:
          description: ISO 4217 alphabetic currency code of the transfer amount
          example: USD
          type: string
        memo:
          description: A short note to the recipient
          type: string
        metadata:
          description: Arbitrary key-value metadata to associate with the transaction
          type: object
        originating_account_alias:
          description: An alias representing a GL account to debit. This is alternative to specifying by account id
          example: ach_suspense
          type: string
        originating_account_customer_id:
          description: The customer id of the owner of the originating account.
          format: uuid
          type: string
        originating_account_id:
          description: The UUID of the account being debited
          format: uuid
          type: string
        receiving_account_alias:
          description: An alias representing a GL account to credit. This is an alternative to specifying by account id
          example: ach_suspense
          type: string
        receiving_account_customer_id:
          description: The customer id of the owner of the receiving account. Only required when type is "outgoing_remittance"
          format: uuid
          type: string
        receiving_account_id:
          description: The UUID of the account being credited
          format: uuid
          type: string
        type:
          description: The desired transaction type to use for this transfer
          enum:
          - ACCOUNT_TO_ACCOUNT
          - ACH_CREDIT_SWEEP
          - ACH_DEBIT_SWEEP
          - ACH_FLOAT_TRANSFER
          - CASHBACK
          - FEE
          - INCOMING_WIRE
          - INTEREST_PAYOUT
          - MANUAL_ADJUSTMENT
          - MANUAL_ADJUSTMENT_REVERSAL
          - OUTGOING_INTERNATIONAL_REMITTANCE
          - OUTGOING_INTERNATIONAL_REMITTANCE_REVERSAL
          - PROMOTIONAL_CREDIT
          - SIGN_UP_BONUS
          - SUBSCRIPTION_FEE
          - TRANSFER_FEE
          - TRANSFER_FEE_REVERSAL
          type: string
      required:
      - amount
      - currency
      - type
      type: object
    internal_transfer_response:
      allOf:
      - $ref: '#/components/schemas/internal_transfer'
      - properties:
          id:
            description: The transaction id associated with the transfer
            format: uuid
            type: string
        required:
        - id
        type: object
    pending_transaction:
      properties:
        account_id:
          description: The account id associated with the hold
          example: 81f8799f-8888-496f-ad70-1f9ce6cf763b
          type: string
        account_no:
          description: The account number associated with the hold
          type: string
        created:
          description: The creation date of the hold
          format: date-time
          type: string
        data:
          $ref: '#/components/schemas/pending_transaction_data'
        id:
          format: int64
          type: integer
        idemkey:
          description: The idempotency key used when initially creating this hold.
          type: string
        offset_account_id:
          description: The offset account id associated with the hold
          example: 8ade5876-e302-4cdc-b478-0c789e04e58f
          type: string
        offset_account_no:
          description: The offset account number associated with the hold
          type: string
        reference_id:
          description: An external ID provided by the payment network to represent this transaction.
          nullable: true
          type: string
        tenant:
          description: The tenant associated with this hold, in the form "<bankid>_<partnerid>"
          type: string
        updated:
          description: The date the hold was last update
          format: date-time
          type: string
        uuid:
          description: The unique identifier of the hold transaction.
          format: uuid
          type: string
      required:
      - id
      - uuid
      - tenant
      - idemkey
      - account_no
      - account_id
      - created
      - updated
      - data
      - reference_id
      - offset_account_no
      - offset_account_id
      title: A pending transaction
      type: object
    transaction_line1:
      properties:
        account_id:
          description: The account uuid associated with this transaction line
          example: 7f346df6-18b9-4b2f-9857-5f714ddd565e
          type: string
        account_no:
          description: The account number associated with this transaction line
          type: string
        amount:
          description: The amount (in cents) of the transaction
          format: int64
          type: integer
        available_balance:
          description: The account "available balance" at the point in time this transaction was posted
          format: int64
          type: integer
        balance:
          description: The account balance at the point in time this transaction was posted
          format: int64
          type: integer
        created:
          description: The creation date of the transaction
          format: date-time
          type: string
        currency:
          description: ISO 4217 alphabetic currency code of the transfer amount
          type: string
        dc_sign:
          $ref: '#/components/schemas/dc_sign'
        is_fee:
          description: Whether or not this line is considered a fee
          type: boolean
        is_gl_acc:
          description: Whether or not this line represents a GL account
          type: boolean
        is_offset:
          description: Whether or not this line is considered the "offset" line
          type: boolean
        is_primary:
          description: Whether or not this line is considered the "primary" line
          type: boolean
        meta:
          nullable: true
          type: object
        network:
          description: The network this transaction is associated with
          type: string
        related_line:
          format: int64
          type: integer
        seq:
          format: int64
          type: integer
        tenant:
          description: The tenant associated with this transaction, in the form "<bankid>_<partnerid>"
          type: string
        updated:
          description: The date the transaction was last updated
          format: date-time
          type: string
        uuid:
          format: uuid
          type: string
      required:
      - uuid
      - account_no
      - account_id
      - tenant
      - amount
      - dc_sign
      - seq
      - is_primary
      - is_offset
      - is_fee
      - is_gl_acc
      - related_line
      - currency
      - network
      - meta
      - balance
      - available_balance
      - created
      - updated
      type: object
    pending_transaction_history:
      properties:
        account_id:
          description: The account id associated with the hold
          example: 88564692-a977-4932-9b8d-6e2742d4b1a4
          type: string
        account_no:
          description: The account number associated with the hold
          type: string
        created:
          description: The creation date of the hold
          format: date-time
          type: string
        data:
          $ref: '#/components/schemas/pending_transaction_history_data'
        id:
          format: int64
          type: integer
        idemkey:
          description: The idempotency key used when initially creating this transaction.
          type: string
        offset_account_id:
          description: The offset account id associated with the hold
          example: f7a653cc-328e-49a8-83cc-1c1735ef5161
          type: string
        offset_account_no:
          description: The offset account number associated with the hold
          type: string
        reference_id:
          description: An external ID provided by the payment network to represent this transaction.
          nullable: true
          type: string
        tenant:
          description: The tenant associated with this transaction, in the form "<bankid>_<partnerid>"
          type: string
        updated:
          description: The date the hold was last update
          format: date-time
          type: string
        uuid:
          description: The unique identifier of the hold transaction.
          format: uuid
          type: string
      required:
      - id
      - uuid
      - tenant
      - idemkey
      - account_no
      - account_id
      - created
      - updated
      - data
      - reference_id
      - offset_account_no
      - offset_account_id
      title: A pending transaction history
      type: object
    pending_transaction_history_data:
      properties:
        amount:
          description: The amount of the hold.
          format: int64
          minimum: 0
          type: integer
        auto_post_at:
          description: The time the transaction will be automatically posted.
          format: date-time
          type: string
        avail_balance:
          description: The account "available balance" at the time this hold was created (to be deprecated)
          format: int64
          type: integer
        available_balance:
          description: The account "available balance" at the time this hold was created
          format: int64
          type: integer
        balance:
          description: The account balance at the time this hold was created
          format: int64
          type: integer
        currency:
          description: ISO 4217 alphabetic currency code of the transfer amount
          type: string
        dc_sign:
          $ref: '#/components/schemas/dc_sign'
        effective_date:
          description: The effective date of the transaction once it gets posted
          format: date-time
          type: string
        expires_at:
          description: The date that at which this hold is no longer valid.
          format: date-time
          type: string
        external_data:
          $ref: '#/components/schemas/external_data'
        force_post:
          description: Whether or not the hold was forced (spending controls ignored)
          type: boolean
        idemkey:
          description: The idempotency key used when initially creating this hold.
          type: string
        memo:
          description: A short note to the recipient
          type: string
        network:
          description: The network this transaction is associated with
          type: string
        operation:
          enum:
          - hold_new
          - hold_increase
          - hold_decrease
          - hold_replace
          - hold_decline
          - hold_cancel
          - hold_post
          type: string
        reason:
          description: If a hold has been declined or modified, this will include the reason.
          type: string
        req_amount:
          description: The requested amount, in the case of hold modifications.
          format: int64
          minimum: 0
          type: integer
        risk_info:
          $ref: '#/components/schemas/risk_info'
        status:
          description: The status of the hold.
          enum:
          - PENDING
          - REPLACED
          - DECLINED
          - RELEASED
          - PARTCLEARD
          - EXPIRED
          - CLEARED
          - INTERNAL_ERROR
          type: string
        subtype:
          description: The specific transaction type. For example, for `ach`, this may be "outgoing_debit".
          type: string
        total_amount:
          description: The total amount of the hold. This may be different than `amount` in the case where a hold increase or decrease was requested.
          format: int64
          minimum: 0
          type: integer
        transaction_id:
          description: The uuid of the transaction that this pending transaction originated from, if any. This is primary used when a transaction "posts", but a subset of the amount reserved until a future settlement date.
          format: uuid
          type: string
        transaction_time:
          description: The time the transaction occurred.
          format: date-time
          type: string
        type:
          description: The general type of transaction. For example, "card" or "ach".
          type: string
        user_data:
          $ref: '#/components/schemas/user_data'
        was_partial:
          description: Does this hold represent a partial debit (or credit)?
          type: boolean
      required:
      - memo
      - type
      - subtype
      - operation
      - idemkey
      - expires_at
      - effective_date
      - total_amount
      - amount
      - req_amount
      - dc_sign
      - currency
      - network
      - was_partial
      - force_post
      - status
      - reason
      - balance
      - avail_balance
      - available_balance
      - transaction_time
      - risk_info
      - user_data
      - external_data
      - auto_post_at
      title: A pending transaction history data
      type: object
    posted_transactions:
      properties:
        next_page_token:
          description: If returned, use the next_page_token to query for the next page of results. Not returned if there are no more rows.
          nullable: true
          type: string
        result:
          description: List of posted transactions
          items:
            $ref: '#/components/schemas/posted_transaction'
          type: array
      required:
      - next_page_token
      - result
      title: Posted Transactions Response
      type: object
    posted_transaction_data:
      properties:
        external_data:
          $ref: '#/components/schemas/external_data'
        force_post:
          description: Whether or not the hold was forced (spending controls ignored)
          type: boolean
        hold_id:
          description: The uuid of the hold (pending transaction) that this transaction originated from, if any.
          format: uuid
          type: string
        lines:
          description: The set of accounting entries associated with this transaction. For example, a debit to a customer account will have a corresponding credit in a general ledger account.
          items:
            $ref: '#/components/schemas/transaction_line1'
          type: array
        memo:
          description: A short note to the recipient
          type: string
        metadata:
          nullable: true
          type: object
        original_trx:
          description: The "original" transaction that this transaction is related to. This is only populated in the case of reversed transactions.
          format: uuid
          type: string
        risk_info:
          $ref: '#/components/schemas/risk_info'
        user_data:
          description: An unstructured JSON blob representing additional transaction information specific to each payment rail.
          nullable: true
          type: object
      required:
      - memo
      - user_data
      - external_data
      - risk_info
      - metadata
      - lines
      - force_post
      type: object
    pending_transactions:
      properties:
        next_page_token:
          description: If returned, use the next_page_token to query for the next page of results. Not returned if there are no more rows.
          nullable: true
          type: string
        result:
          description: List of pending transactions
          items:
            $ref: '#/components/schemas/pending_transaction'
          type: array
      required:
      - next_page_token
      - result
      title: Pending Transactions Response
      type: object
    posted_transaction:
      properties:
        created:
          description: The creation date of the transaction
          format: date-time
          type: string
        data:
          $ref: '#/components/schemas/posted_transaction_data'
        effective_date:
          description: The "effective date" of a transaction. This may be earlier than posted_date in some cases (for example, a transaction that occurs on a Saturday may not be posted until the following Monday, but would have an effective date of Saturday)
          format: date-time
          type: string
        id:
          format: int64
          type: integer
        idemkey:
          description: The idempotency key used when initially creating this transaction.
          example: 80e9e648-c016-421a-bab5-7f311c5a9fdd
          type: string
        info_only:
          description: Whether or not this transaction represents a purely informational operation or an actual money movement
          type: boolean
        lead_mode:
          description: Whether or not this transaction was created operating in "lead ledger" mode
          type: boolean
        posted_date:
          description: The date the transaction was posted. This is the date any money is considered to be added or removed from an account.
          format: date-time
          type: string
        reference_id:
          description: An external ID provided by the payment network to represent this transaction. This will always be null for internal transfers.
          nullable: true
          type: string
        status:
          type: string
        subtype:
          description: The specific transaction type. For example, for `ach`, this may be "outgoing_debit".
          type: string
        tenant:
          description: The tenant associated with this transaction, in the form "<bankid>_<partnerid>"
          type: string
        transaction_time:
          description: The time the transaction occurred.
          format: date-time
          type: string
        type:
          description: The general type of transaction. For example, "card" or "ach".
          type: string
        updated:
          description: The date the transaction was last updated
          format: date-time
          type: string
        uuid:
          description: The unique identifier of the transaction.
          format: uuid
          type: string
      required:
      - id
      - uuid
      - tenant
      - idemkey
      - type
      - subtype
      - status
      - info_only
      - lead_mode
      - data
      - posted_date
      - effective_date
      - transaction_time
      - created
      - updated
      - reference_id
      title: A posted transaction
      type: object
    error:
      properties:
        detail:
          description: a human-readable string explaining this particular error
          example: 'missing required fields: first_name, dob'
          type: string
        status:
          description: the HTTP status code for this response
          example: 400
          type: integer
        title:
          description: a human-readable string for this general category of error
          example: Bad Request Body
          type: string
        type:
          description: a URI that identifies this general category of error
          example: https://dev.synctera.com/errors/bad-request-body
          type: string
      title: Standard error response (RFC 7807 problem report)
      type: object
    user_data:
      description: An unstructured JSON blob representing additional transaction information specific to each payment rail.
      nullable: true
      type: object
    pending_transaction_data:
      properties:
        amount:
          description: The amount of the hold.
          format: int64
          minimum: 0
          type: integer
        auto_post_at:
          description: The account "available balance" at the time this hold was created
          format: date-time
          type: string
        avail_balance:
          description: The account "available balance" at the time this hold was created (to be deprecated)
          format: int64
          type: integer
        available_balance:
          description: The account "available balance" at the time this hold was created
          format: int64
          type: integer
        balance:
          description: The account balance at the time this hold was created
          format: int64
          type: integer
        currency:
          description: ISO 4217 alphabetic currency code of the transfer amount
          type: string
        dc_sign:
          $ref: '#/components/schemas/dc_sign'
        effective_date:
          description: The effective date of the transaction once it gets posted
          format: date-time
          type: string
        expires_at:
          description: The date that at which this hold is no longer valid.
          format: date-time
          type: string
        external_data:
          $ref: '#/components/schemas/external_data'
        force_post:
          description: Whether or not the hold was forced (spending controls ignored)
          type: boolean
        history:
          description: An array representing any previous states of the hold, if it has been modified (For example, increasing or decreasing the hold amount).
          items:
            $ref: '#/components/schemas/pending_transaction_history'
          type: array
        idemkey:
          description: The idempotency key used when initially creating this hold.
          type: string
        memo:
          description: A short note to the recipient
          type: string
        network:
          description: The network this transaction is associated with
          type: string
        operation:
          enum:
          - hold_new
          - hold_increase
          - hold_decrease
          - hold_replace
          - hold_decline
          - hold_cancel
          - hold_post
          type: string
        reason:
          description: If a hold has been declined or modified, this will include the reason.
          type: string
        req_amount:
          description: The requested amount, in the case of hold modifications.
          format: int64
          minimum: 0
          type: integer
        risk_info:
          $ref: '#/components/schemas/risk_info'
        status:
          description: The status of the hold.
          enum:
          - PENDING
          - REPLACED
          - DECLINED
          - RELEASED
          - PARTCLEARD
          - EXPIRED
          - CLEARED
          - INTERNAL_ERROR
          type: string
        subtype:
          description: The specific transaction type. For example, for `ach`, this may be "outgoing_debit".
          type: string
        total_amount:
          description: The total amount of the hold. This may be different than `amount` in the case where a hold increase or decrease was requested.
          format: int64
          minimum: 0
          type: integer
        transaction_id:
          description: The uuid of the transaction that this pending transaction originated from, if any. This is primary used when a transaction "posts", but a subset of the amount reserved until a future settlement date.
          format: uuid
          type: string
        transaction_time:
          description: The time that the transaction was created
          format: date-time
          type: string
        type:
          description: The general type of transaction. For example, "card" or "ach".
          type: string
        user_data:
          $ref: '#/components/schemas/user_data'
        was_partial:
          description: Does this hold represent a partial debit (or credit)?
          type: boolean
      required:
      - memo
      - type
      - subtype
      - operation
      - idemkey
      - expires_at
      - effective_date
      - total_amount
      - amount
      - req_amount
      - dc_sign
      - currency
      - network
      - was_partial
      - force_post
      - status
      - reason
      - balance
      - avail_balance
      - available_balance
      - auto_post_at
      - risk_info
      - user_data
      - external_data
      - history
      - transaction_time
      title: Pending transaction data
      type: object
    external_data:
      description: an unstructured json blob representing additional transaction information supplied by the integrator.
      nullable: true
      type: object
    dc_sign:
      description: The `dc_sign` represents the direction money was moved.
      enum:
      - debit
      - credit
      type: string
  parameters:
    type:
      description: Only display transactions matching the given type
      in: query
      name: type
      required: false
      schema:
        type: string
      x-external: true
    subtype:
      description: Only display transactions matching the given subtype
      in: query
      name: subtype
      required: false
      schema:
        type: string
      x-external: true
    id1:
      description: Transaction ID
      in: path
      nam

# --- truncated at 32 KB (35 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/synctera/refs/heads/main/openapi/synctera-transactions-api-openapi.yml