Stripe · Capability

Stripe Transfers API — Transfers

Stripe Transfers API — Transfers. 8 operations. Lead operation: Transfers. Self-contained Naftiko capability covering one Stripe business surface.

Run with Naftiko StripeTransfers

What You Can Do

GET
Gettransfers

Returns a list of existing transfers sent to connected accounts. The transfers are returned in sorted order, with the most recently created transfers appearing first.

/v1/v1/transfers
POST
Posttransfers

To send funds from your Stripe account to a connected account, you create a new transfer object. Your Stripe balance must be able to cover the transfer amount, or you’ll receive an “Insufficient Funds” error.

/v1/v1/transfers
GET
Gettransfersidreversals

You can see a list of the reversals belonging to a specific transfer. Note that the 10 most recent reversals are always available by default on the transfer object. If you need more than those 10, you can use this API method and the

/v1/v1/transfers/{id}/reversals
POST
Posttransfersidreversals

When you create a new reversal, you must specify a transfer to create it on.

/v1/v1/transfers/{id}/reversals
GET
Gettransferstransfer

Retrieves the details of an existing transfer. Supply the unique transfer ID from either a transfer creation request or the transfer list, and Stripe will return the corresponding transfer information.

/v1/v1/transfers/{transfer}
POST
Posttransferstransfer

Updates the specified transfer by setting the values of the parameters passed. Any parameters not provided will be left unchanged.

/v1/v1/transfers/{transfer}
GET
Gettransferstransferreversalsid

By default, you can see the 10 most recent reversals stored directly on the transfer object, but you can also retrieve details about a specific reversal stored on the transfer.

/v1/v1/transfers/{transfer}/reversals/{id}
POST
Posttransferstransferreversalsid

Updates the specified reversal by setting the values of the parameters passed. Any parameters not provided will be left unchanged.

/v1/v1/transfers/{transfer}/reversals/{id}

MCP Tools

p-returns-list-existing-transfers-sent

Returns a list of existing transfers sent to connected accounts. The transfers are returned in sorted order, with the most recently created transfers appearing first.

read-only idempotent
p-to-send-funds-your-stripe

To send funds from your Stripe account to a connected account, you create a new transfer object. Your Stripe balance must be able to cover the transfer amount, or you’ll receive an “Insufficient Funds” error.

p-you-can-see-list-reversals

You can see a list of the reversals belonging to a specific transfer. Note that the 10 most recent reversals are always available by default on the transfer object. If you need more than those 10, you can use this API method and the

read-only idempotent
p-when-you-create-new-reversal

When you create a new reversal, you must specify a transfer to create it on.

p-retrieves-details-existing-transfer-supply

Retrieves the details of an existing transfer. Supply the unique transfer ID from either a transfer creation request or the transfer list, and Stripe will return the corresponding transfer information.

read-only idempotent
p-updates-specified-transfer-setting-values

Updates the specified transfer by setting the values of the parameters passed. Any parameters not provided will be left unchanged.

p-by-default-you-can-see

By default, you can see the 10 most recent reversals stored directly on the transfer object, but you can also retrieve details about a specific reversal stored on the transfer.

read-only idempotent
p-updates-specified-reversal-setting-values

Updates the specified reversal by setting the values of the parameters passed. Any parameters not provided will be left unchanged.

Capability Spec

topups-transfers.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Stripe Transfers API — Transfers
  description: 'Stripe Transfers API — Transfers. 8 operations. Lead operation: Transfers. Self-contained Naftiko capability
    covering one Stripe business surface.'
  tags:
  - Stripe
  - Transfers
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    STRIPE_API_KEY: STRIPE_API_KEY
capability:
  consumes:
  - type: http
    namespace: topups-transfers
    baseUri: https://api.stripe.com
    description: Stripe Transfers API — Transfers business capability. Self-contained, no shared references.
    resources:
    - name: v1-transfers
      path: /v1/transfers
      operations:
      - name: gettransfers
        method: GET
        description: <p>Returns a list of existing transfers sent to connected accounts. The transfers are returned in sorted
          order, with the most recently created transfers appearing first.</p>
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: created
          in: query
          type: string
        - name: destination
          in: query
          type: string
          description: Only return transfers for the destination specified by this account ID.
        - name: ending_before
          in: query
          type: string
          description: A cursor for use in pagination. `ending_before` is an object ID that defines your place in the list.
            For instance, if you make a list request and receive 100 ob
        - name: expand
          in: query
          type: array
          description: Specifies which fields in the response should be expanded.
        - name: limit
          in: query
          type: integer
          description: A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default
            is 10.
        - name: starting_after
          in: query
          type: string
          description: A cursor for use in pagination. `starting_after` is an object ID that defines your place in the list.
            For instance, if you make a list request and receive 100 o
        - name: transfer_group
          in: query
          type: string
          description: Only return transfers with the specified transfer group.
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
      - name: posttransfers
        method: POST
        description: <p>To send funds from your Stripe account to a connected account, you create a new transfer object. Your
          <a href="#balance">Stripe balance</a> must be able to cover the transfer amount, or you’ll receive an “Insufficient
          Funds” error.</p>
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: v1-transfers-id-reversals
      path: /v1/transfers/{id}/reversals
      operations:
      - name: gettransfersidreversals
        method: GET
        description: <p>You can see a list of the reversals belonging to a specific transfer. Note that the 10 most recent
          reversals are always available by default on the transfer object. If you need more than those 10, you can use this
          API method and the <cod
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: ending_before
          in: query
          type: string
          description: A cursor for use in pagination. `ending_before` is an object ID that defines your place in the list.
            For instance, if you make a list request and receive 100 ob
        - name: expand
          in: query
          type: array
          description: Specifies which fields in the response should be expanded.
        - name: id
          in: path
          type: string
          required: true
        - name: limit
          in: query
          type: integer
          description: A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default
            is 10.
        - name: starting_after
          in: query
          type: string
          description: A cursor for use in pagination. `starting_after` is an object ID that defines your place in the list.
            For instance, if you make a list request and receive 100 o
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
      - name: posttransfersidreversals
        method: POST
        description: <p>When you create a new reversal, you must specify a transfer to create it on.</p>
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: v1-transfers-transfer
      path: /v1/transfers/{transfer}
      operations:
      - name: gettransferstransfer
        method: GET
        description: <p>Retrieves the details of an existing transfer. Supply the unique transfer ID from either a transfer
          creation request or the transfer list, and Stripe will return the corresponding transfer information.</p>
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: expand
          in: query
          type: array
          description: Specifies which fields in the response should be expanded.
        - name: transfer
          in: path
          type: string
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
      - name: posttransferstransfer
        method: POST
        description: <p>Updates the specified transfer by setting the values of the parameters passed. Any parameters not
          provided will be left unchanged.</p>
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: transfer
          in: path
          type: string
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: v1-transfers-transfer-reversals-id
      path: /v1/transfers/{transfer}/reversals/{id}
      operations:
      - name: gettransferstransferreversalsid
        method: GET
        description: <p>By default, you can see the 10 most recent reversals stored directly on the transfer object, but you
          can also retrieve details about a specific reversal stored on the transfer.</p>
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: expand
          in: query
          type: array
          description: Specifies which fields in the response should be expanded.
        - name: id
          in: path
          type: string
          required: true
        - name: transfer
          in: path
          type: string
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
      - name: posttransferstransferreversalsid
        method: POST
        description: <p>Updates the specified reversal by setting the values of the parameters passed. Any parameters not
          provided will be left unchanged.</p>
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          required: true
        - name: transfer
          in: path
          type: string
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    authentication:
      type: bearer
      token: '{{env.STRIPE_API_KEY}}'
  exposes:
  - type: rest
    namespace: topups-transfers-rest
    port: 8080
    description: REST adapter for Stripe Transfers API — Transfers. One Spectral-compliant resource per consumed operation,
      prefixed with /v1.
    resources:
    - path: /v1/v1/transfers
      name: v1-transfers
      description: REST surface for v1-transfers.
      operations:
      - method: GET
        name: gettransfers
        description: <p>Returns a list of existing transfers sent to connected accounts. The transfers are returned in sorted
          order, with the most recently created transfers appearing first.</p>
        call: topups-transfers.gettransfers
        with:
          created: rest.created
          destination: rest.destination
          ending_before: rest.ending_before
          expand: rest.expand
          limit: rest.limit
          starting_after: rest.starting_after
          transfer_group: rest.transfer_group
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: posttransfers
        description: <p>To send funds from your Stripe account to a connected account, you create a new transfer object. Your
          <a href="#balance">Stripe balance</a> must be able to cover the transfer amount, or you’ll receive an “Insufficient
          Funds” error.</p>
        call: topups-transfers.posttransfers
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/v1/transfers/{id}/reversals
      name: v1-transfers-id-reversals
      description: REST surface for v1-transfers-id-reversals.
      operations:
      - method: GET
        name: gettransfersidreversals
        description: <p>You can see a list of the reversals belonging to a specific transfer. Note that the 10 most recent
          reversals are always available by default on the transfer object. If you need more than those 10, you can use this
          API method and the <cod
        call: topups-transfers.gettransfersidreversals
        with:
          ending_before: rest.ending_before
          expand: rest.expand
          id: rest.id
          limit: rest.limit
          starting_after: rest.starting_after
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: posttransfersidreversals
        description: <p>When you create a new reversal, you must specify a transfer to create it on.</p>
        call: topups-transfers.posttransfersidreversals
        with:
          id: rest.id
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/v1/transfers/{transfer}
      name: v1-transfers-transfer
      description: REST surface for v1-transfers-transfer.
      operations:
      - method: GET
        name: gettransferstransfer
        description: <p>Retrieves the details of an existing transfer. Supply the unique transfer ID from either a transfer
          creation request or the transfer list, and Stripe will return the corresponding transfer information.</p>
        call: topups-transfers.gettransferstransfer
        with:
          expand: rest.expand
          transfer: rest.transfer
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: posttransferstransfer
        description: <p>Updates the specified transfer by setting the values of the parameters passed. Any parameters not
          provided will be left unchanged.</p>
        call: topups-transfers.posttransferstransfer
        with:
          transfer: rest.transfer
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/v1/transfers/{transfer}/reversals/{id}
      name: v1-transfers-transfer-reversals-id
      description: REST surface for v1-transfers-transfer-reversals-id.
      operations:
      - method: GET
        name: gettransferstransferreversalsid
        description: <p>By default, you can see the 10 most recent reversals stored directly on the transfer object, but you
          can also retrieve details about a specific reversal stored on the transfer.</p>
        call: topups-transfers.gettransferstransferreversalsid
        with:
          expand: rest.expand
          id: rest.id
          transfer: rest.transfer
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: posttransferstransferreversalsid
        description: <p>Updates the specified reversal by setting the values of the parameters passed. Any parameters not
          provided will be left unchanged.</p>
        call: topups-transfers.posttransferstransferreversalsid
        with:
          id: rest.id
          transfer: rest.transfer
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: topups-transfers-mcp
    port: 9090
    transport: http
    description: MCP adapter for Stripe Transfers API — Transfers. One tool per consumed operation, routed inline through
      this capability's consumes block.
    tools:
    - name: p-returns-list-existing-transfers-sent
      description: <p>Returns a list of existing transfers sent to connected accounts. The transfers are returned in sorted
        order, with the most recently created transfers appearing first.</p>
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: topups-transfers.gettransfers
      with:
        created: tools.created
        destination: tools.destination
        ending_before: tools.ending_before
        expand: tools.expand
        limit: tools.limit
        starting_after: tools.starting_after
        transfer_group: tools.transfer_group
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: p-to-send-funds-your-stripe
      description: <p>To send funds from your Stripe account to a connected account, you create a new transfer object. Your
        <a href="#balance">Stripe balance</a> must be able to cover the transfer amount, or you’ll receive an “Insufficient
        Funds” error.</p>
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: topups-transfers.posttransfers
      with:
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: p-you-can-see-list-reversals
      description: <p>You can see a list of the reversals belonging to a specific transfer. Note that the 10 most recent reversals
        are always available by default on the transfer object. If you need more than those 10, you can use this API method
        and the <cod
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: topups-transfers.gettransfersidreversals
      with:
        ending_before: tools.ending_before
        expand: tools.expand
        id: tools.id
        limit: tools.limit
        starting_after: tools.starting_after
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: p-when-you-create-new-reversal
      description: <p>When you create a new reversal, you must specify a transfer to create it on.</p>
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: topups-transfers.posttransfersidreversals
      with:
        id: tools.id
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: p-retrieves-details-existing-transfer-supply
      description: <p>Retrieves the details of an existing transfer. Supply the unique transfer ID from either a transfer
        creation request or the transfer list, and Stripe will return the corresponding transfer information.</p>
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: topups-transfers.gettransferstransfer
      with:
        expand: tools.expand
        transfer: tools.transfer
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: p-updates-specified-transfer-setting-values
      description: <p>Updates the specified transfer by setting the values of the parameters passed. Any parameters not provided
        will be left unchanged.</p>
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: topups-transfers.posttransferstransfer
      with:
        transfer: tools.transfer
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: p-by-default-you-can-see
      description: <p>By default, you can see the 10 most recent reversals stored directly on the transfer object, but you
        can also retrieve details about a specific reversal stored on the transfer.</p>
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: topups-transfers.gettransferstransferreversalsid
      with:
        expand: tools.expand
        id: tools.id
        transfer: tools.transfer
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: p-updates-specified-reversal-setting-values
      description: <p>Updates the specified reversal by setting the values of the parameters passed. Any parameters not provided
        will be left unchanged.</p>
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: topups-transfers.posttransferstransferreversalsid
      with:
        id: tools.id
        transfer: tools.transfer
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.