Weavr Sends API

The Send transaction is used to send funds between managed accounts and managed cards belonging to different identities.

Operations 7

POST /sends Create a send transaction #
GET /sends Get all send transactions #
GET /sends/{id} Get a send transaction #
POST /sends/{id}/cancel Cancel a send transaction #
POST /sends/{id}/challenges/otp/{channel} Issue a one-time password that can be used to verify a send #
POST /sends/{id}/challenges/otp/{channel}/verify Verify a send using a one-time password #
POST /sends/{id}/challenges/push/{channel} Issue a push notification that can be used to verify Send transaction #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/weavr-sends-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

weavr-sends-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Weavr Sends API
  contact:
    name: Weavr
    url: https://weavr.io
  x-logo:
    url: https://storage.googleapis.com/weavr-cdn/weavr_logo-new.png
    backgroundColor: '#FFFFFF'
    altText: Weavr
  version: '1.0'
  description: 'Operations tagged Sends across 2 of this provider''s published API definitions: weavr-multi-openapi-original.yml, weavr-webhooks-openapi-original.yml. Each path carries the servers of the definition it was published in.'
servers:
- description: Weavr Sandbox Environment
  url: https://sandbox.weavr.io/multi
- url: '""'
tags:
- name: Sends
  description: 'The Send transaction is used to send funds between managed accounts and managed cards belonging to different identities.

    '
paths:
  /sends:
    post:
      tags:
      - Sends
      description: 'Sends funds between managed accounts and managed cards belonging to *different* corporate or consumer identities.


        The Send Profile (configured in the Multi Portal) specified determines the behaviour and restrictions of the transaction (for example, fees).

        '
      summary: Create a send transaction
      operationId: sendCreate
      x-permissions:
      - i:sends:create
      parameters:
      - $ref: '#/components/parameters/idempotency-ref'
      requestBody:
        $ref: '#/components/requestBodies/SendCreateRequest'
      responses:
        '200':
          $ref: '#/components/responses/SendResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          $ref: '#/components/responses/SendCreateConflict'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
      - auth_token: []
        api-key: []
    get:
      tags:
      - Sends
      description: Retrieves all the send transactions performed by the logged-in identity.
      summary: Get all send transactions
      operationId: sendsGet
      x-permissions:
      - i:sends:list
      parameters:
      - $ref: '#/components/parameters/offset'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/sendProfileId'
      - $ref: '#/components/parameters/instrumentId'
      - $ref: '#/components/parameters/sourceId'
      - $ref: '#/components/parameters/sourceType'
      - $ref: '#/components/parameters/sendState'
      - $ref: '#/components/parameters/sendCreatedFrom'
      - $ref: '#/components/parameters/sendCreatedTo'
      - $ref: '#/components/parameters/sendExecutedFrom'
      - $ref: '#/components/parameters/sendExecutedTo'
      - $ref: '#/components/parameters/sendTag'
      responses:
        '200':
          $ref: '#/components/responses/SendsGetPageResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/InstrumentForbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
      - auth_token: []
        api-key: []
    servers:
    - description: Weavr Sandbox Environment
      url: https://sandbox.weavr.io/multi
  /sends/{id}:
    get:
      tags:
      - Sends
      description: Retrieve the send transaction identified by the `id` path parameter.
      summary: Get a send transaction
      operationId: sendGet
      x-permissions:
      - i:sends:get
      parameters:
      - name: id
        in: path
        required: true
        description: The unique identifier of the Send transaction.
        schema:
          type: string
          pattern: ^[0-9]+$
      responses:
        '200':
          $ref: '#/components/responses/SendResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/InstrumentForbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
      - auth_token: []
        api-key: []
    servers:
    - description: Weavr Sandbox Environment
      url: https://sandbox.weavr.io/multi
  /sends/{id}/cancel:
    post:
      tags:
      - Sends
      description: Cancel the send transaction identified by the `id` path parameter.
      summary: Cancel a send transaction
      operationId: sendSingleCancel
      x-permissions:
      - i:sends:cancel_bulk
      parameters:
      - name: id
        in: path
        required: true
        description: The unique identifier of the Send transaction.
        schema:
          type: string
          pattern: ^[0-9]+$
      requestBody:
        $ref: '#/components/requestBodies/TransactionSingleCancelRequest'
      responses:
        '200':
          $ref: '#/components/responses/SendResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/InstrumentForbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/SendCancelConflict'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      security:
      - auth_token: []
        api-key: []
    servers:
    - description: Weavr Sandbox Environment
      url: https://sandbox.weavr.io/multi
  /sends/{id}/challenges/otp/{channel}:
    post:
      deprecated: true
      tags:
      - Sends
      description: 'Deprecated in favour of [Challenges endpoints](#tag/Confirmation-Challenges/operation/multipleSCAChallenge)


        Starts the verification process for a send in which a one-time password is sent to a device belonging to the logged-in user that was previously enrolled through the `/authentication_factors/otp/{channel}` endpoint.


        You should only start this process if the send `state` is `PENDING_CHALLENGE`.


        _Note that on the Sandbox Environment, text messages are not sent and the one-time-password is always \"123456\"._

        '
      summary: Issue a one-time password that can be used to verify a send
      operationId: sendSCAChallenge
      x-permissions:
      - i:sends:send_sca_challenge
      parameters:
      - name: id
        in: path
        required: true
        description: The unique identifier of the send transaction.
        schema:
          type: string
          pattern: ^[0-9]+$
      - $ref: '#/components/parameters/channel'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '409':
          $ref: '#/components/responses/SendSCAChallengeConflict'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
      - auth_token: []
        api-key: []
    servers:
    - description: Weavr Sandbox Environment
      url: https://sandbox.weavr.io/multi
  /sends/{id}/challenges/otp/{channel}/verify:
    post:
      deprecated: true
      tags:
      - Sends
      description: 'Deprecated in favour of [Challenges endpoints](#tag/Confirmation-Challenges/operation/multipleSCAVerify)


        Completes the verification process for a Send.


        If the outcome of the verification is successful, the send is executed.


        If not verified challenge expires after 5 minutes and the number of incorrect OTP attempts is limited to reduce the risk of fraud.


        _Note that on the Sandbox Environment, text messages are not sent and the `verificationCode` is always \"123456\"._

        '
      summary: Verify a send using a one-time password
      operationId: sendSCAVerify
      x-permissions:
      - i:sends:send_sca_verify
      parameters:
      - name: id
        in: path
        required: true
        description: The unique identifier of the send transaction.
        schema:
          type: string
          pattern: ^[0-9]+$
      - $ref: '#/components/parameters/channel'
      requestBody:
        $ref: '#/components/requestBodies/SCAVerifyRequest'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          $ref: '#/components/responses/SendSCAVerifyConflict'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
      - auth_token: []
        api-key: []
    servers:
    - description: Weavr Sandbox Environment
      url: https://sandbox.weavr.io/multi
  /sends/{id}/challenges/push/{channel}:
    post:
      deprecated: true
      tags:
      - Sends
      description: 'Deprecated in favour of [Challenges endpoints](#tag/Confirmation-Challenges/operation/multipleSCAChallengePush)


        Starts the verification process for a Send in which a push notification is sent to a device belonging to the logged-in user that was previously enrolled through the `/authentication_factors/push/{channel}` endpoint.


        You should only start this process if the Send transaction `state` is `PENDING_CHALLENGE`.

        '
      summary: Issue a push notification that can be used to verify Send transaction
      operationId: sendSCAChallengePush
      x-permissions:
      - i:sends:send_sca_challenge_push
      parameters:
      - name: id
        in: path
        required: true
        description: The unique identifier of the send transaction.
        schema:
          type: string
          pattern: ^[0-9]+$
      - $ref: '#/components/parameters/scaPushChannel'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '409':
          $ref: '#/components/responses/SendSCAChallengePushConflict'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
      - auth_token: []
        api-key: []
    servers:
    - description: Weavr Sandbox Environment
      url: https://sandbox.weavr.io/multi
webhooks:
  /send/watch:
    post:
      tags:
      - Sends
      summary: Send transaction
      description: Notification that a Send transaction has been processed.
      operationId: send_watch
      parameters:
      - $ref: '#/components/parameters/call-ref'
      - $ref: '#/components/parameters/published-timestamp'
      - $ref: '#/components/parameters/signature'
      - $ref: '#/components/parameters/signature-v2'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SendEvent'
        required: true
      responses:
        '204':
          description: Success - No Content
    servers:
    - url: '""'
components:
  responses:
    InternalServerError:
      description: Internal Server Error - There is a problem with the server. Please try again later.
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
    TooManyRequests:
      description: Too many requests.
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
        x-ratelimit-limit:
          $ref: '#/components/headers/x-ratelimit-limit'
        x-ratelimit-reset:
          $ref: '#/components/headers/x-ratelimit-reset'
    Unauthorized:
      description: Unauthorized - Your credentials or access token are invalid.
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
    SendResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Send'
    Forbidden:
      description: Forbidden - Access to the requested resource or action is forbidden.
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                - INSUFFICIENT_PERMISSIONS
    NoContent:
      description: Success - No Content.
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
    NotFound:
      description: Not found - The requested resource couldn't be found.
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    MethodNotAllowed:
      description: Method Not Allowed - The request was received but has been rejected for the requested resource.
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    InstrumentForbidden:
      description: Forbidden - Access to the requested resource or action is forbidden.
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                - STEP_UP_REQUIRED
                - ACCESS_TOKEN_REQUIRED
                - INSUFFICIENT_PERMISSIONS
    BadRequestError:
      description: Bad Request Error - Your request is invalid.
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                maxLength: 255
                type: string
                description: When present helps to identify and fix the problem.
              syntaxErrors:
                $ref: '#/components/schemas/SyntaxError'
    SendsGetPageResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            type: object
            properties:
              send:
                type: array
                items:
                  $ref: '#/components/schemas/Send'
              count:
                type: integer
                description: Total number of records (excluding the paging limit).
                format: int32
              responseCount:
                type: integer
                description: Total number of records returned in this response.
                format: int32
    Error:
      description: Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    SendSCAChallengePushConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                - STATE_INVALID
                - CHANNEL_NOT_SUPPORTED
                - CHANNEL_NOT_REGISTERED
                - CHALLENGE_LIMIT_EXCEEDED
                - SCA_EXEMPTION_APPLIED
    SendCancelConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                - INVALID_STATE
    SendSCAChallengeConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                - STATE_INVALID
                - CHANNEL_NOT_SUPPORTED
                - CHANNEL_NOT_REGISTERED
                - SCA_EXEMPTION_APPLIED
    SendSCAVerifyConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                - STATE_INVALID
                - CHANNEL_NOT_SUPPORTED
                - CHANNEL_NOT_REGISTERED
                - VERIFICATION_CODE_EXPIRED
                - VERIFICATION_CODE_INVALID
                - SCA_EXEMPTION_APPLIED
                - CHALLENGE_NOT_PENDING
                - CHALLENGE_LIMIT_EXCEEDED
                - ONE_CHALLENGE_LIMIT_REMAINING
    ServiceUnavailable:
      description: Service Unavailable - The requested service is temporarily unavailable. Please try again later.
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
    SendCreateConflict:
      description: Conflict
      content:
        application/json:
          schema:
            required:
            - errorCode
            type: object
            properties:
              errorCode:
                type: string
                enum:
                - PROFILE_INACTIVE
                - MODEL_CONSTRAINTS_VIOLATED
                - INTERCEPTOR_DENIED_TRANSACTION
                - INSTRUMENT_DENIED_TRANSACTION
                - FOREX_TRADE_DENIED_TRANSACTION
                - CURRENCY_MISMATCH
                - SOURCE_INSTRUMENT_BLOCKED
                - DESTINATION_INSTRUMENT_BLOCKED
                - SOURCE_NOT_FOUND
                - DESTINATION_NOT_FOUND
                - FEE_NOT_CONFIGURED_FOR_CURRENCY
                - DESTINATION_LIMIT_EXCEEDED
                - FUNDS_INSUFFICIENT
                - AMOUNT_INVALID
                - SOURCE_CANNOT_BE_DEBIT_MODE_CARD
                - DESTINATION_CANNOT_BE_DEBIT_MODE_CARD
                - SEND_TO_INSTRUMENT_UNSUPPORTED
                - SOURCE_INSTRUMENT_DESTROYED
                - DESTINATION_INSTRUMENT_DESTROYED
                - SOURCE_AND_DESTINATION_MUST_BE_DIFFERENT
                - IDENTITY_KYC_LEVEL_STEPUP_REQUIRED
                - DESTINATION_BELONGS_TO_SAME_IDENTITY
                - SOURCE_AND_DESTINATION_MUST_BE_IN_SAME_PROGRAMME
                - BENEFICIARY_NOT_FOUND
                - BENEFICIARY_TYPE_INVALID
                - PROFILE_NOT_FOUND
                - SCHEDULED_TIMESTAMP_INVALID
                - DESTINATION_FEE_EXCEEDS_TRANSACTION_AMOUNT
  parameters:
    sendState:
      name: state
      in: query
      required: false
      description: Filter by the Send transaction state. Leave out to fetch all states.
      schema:
        type: array
        uniqueItems: true
        items:
          $ref: '#/components/schemas/SendState'
    sendExecutedTo:
      name: executedTo
      in: query
      required: false
      description: Filter for send transactions executed before `executedTo` timestamp. Timestamp is expressed in Epoch timestamp using millisecond precision. Leave out to fetch all Send transactions.
      schema:
        type: integer
        format: int64
    sendCreatedFrom:
      name: createdFrom
      in: query
      required: false
      description: Filter for send transactions created after `createdFrom` timestamp. Timestamp is expressed in Epoch timestamp using millisecond precision. Leave out to fetch all Send transactions.
      schema:
        type: integer
        format: int64
    scaPushChannel:
      name: channel
      in: path
      required: true
      schema:
        $ref: '#/components/schemas/SCAPushChannel'
    sendProfileId:
      name: profileId
      in: query
      required: false
      description: Filter by the Send profile. Leave out to fetch all entries.
      schema:
        $ref: '#/components/schemas/ProfileId'
    sendTag:
      name: tag
      in: query
      required: false
      description: Filter by the send tag. The exact tag must be provided, as wildcards are not supported. Leave out to fetch all entries.
      schema:
        type: string
    idempotency-ref:
      name: idempotency-ref
      in: header
      description: A unique call reference generated by the caller that, taking into consideration the payload as well as the operation itself, helps avoid duplicate operations. Idempotency reference uniqueness is maintained for at least 24 hours.
      required: false
      schema:
        type: string
    instrumentId:
      name: instrumentId
      in: query
      required: false
      description: Filter by the source instrument id.
      schema:
        $ref: '#/components/schemas/InstrumentId'
    channel:
      name: channel
      in: path
      required: true
      description: The unique identifier for the channel.
      schema:
        $ref: '#/components/schemas/SCAOtpChannel'
    offset:
      name: offset
      in: query
      required: false
      description: The offset value for paging, indicating the initial item number to be returned from the data set satisfying the given criteria. Leave out to fetch the first page of results.
      schema:
        minimum: 0
        type: integer
        format: int32
    sendCreatedTo:
      name: createdTo
      in: query
      required: false
      description: Filter for send transactions created before `createdTo` timestamp. Timestamp is expressed in Epoch timestamp using millisecond precision. Leave out to fetch all Send transactions.
      schema:
        type: integer
        format: int64
    sourceId:
      name: source.id
      in: query
      required: false
      description: Filter by the source instrument id. Must be specified when `source.type` is provided.
      schema:
        $ref: '#/components/schemas/Id'
    sourceType:
      name: source.type
      in: query
      required: false
      description: Filter by the source instrument type. Must be specified when `source.id` is provided.
      schema:
        $ref: '#/components/schemas/InstrumentType'
    sendExecutedFrom:
      name: executedFrom
      in: query
      required: false
      description: Filter for send transactions executed after `executedFrom` timestamp. Timestamp is expressed in Epoch timestamp using millisecond precision. Leave out to fetch all Send transactions.
      schema:
        type: integer
        format: int64
    limit:
      name: limit
      in: query
      required: false
      description: The limit of the results for paging, starting at the offset. Limit is always capped at 100.
      schema:
        maximum: 100
        minimum: 1
        type: integer
        format: int32
    signature:
      name: signature
      in: header
      description: The signature to verify the authenticity of this request.  This is the base64 hash (HmacSHA256) of the `published-timestamp` using your API key.
      required: true
      style: simple
      explode: false
      deprecated: true
      schema:
        type: string
    published-timestamp:
      name: published-timestamp
      in: header
      description: The timestamp, expressed in Epoch timestamp using millisecond precision, when this event was published.
      required: true
      style: simple
      explode: false
      schema:
        type: integer
        format: int64
    signature-v2:
      name: signature-v2
      in: header
      description: The signature to verify the authenticity of this request.  This is the base64 hash (HmacSHA256) of the `call-ref + payload + published-timestamp` using your API key.
      required: true
      style: simple
      explode: false
      schema:
        type: string
    call-ref:
      description: A call reference generated by the caller and unique to the caller to provide correlation between the caller and system with a maximum length of 255
      in: header
      name: call-ref
      required: false
      schema:
        type: string
  schemas:
    SendState:
      type: string
      description: "The state of the send transaction, as follows:\n - INVALID: The send transaction has failed initial validation checks. \n - INITIALISED: The initial state of a send transaction when SCA is not required.\n - PENDING_CHALLENGE: The send transaction requires the completion of a transaction confirmation challenge before it can be submitted.\n - PENDING: The send transaction has exceeded the destination limit and is pending treasury approval.\n - APPROVED: The send transaction that was submitted has been approved.\n - COMPLETED: The requested funds have been sent from the source instrument.\n - REJECTED: The send transaction that was submitted was rejected.\n - FAILED: There was an issue with the send transaction, and the transaction has failed.\n - RETURNED: The send transaction has been returned to the sender.\n - SCHEDULED: The send transaction will be executed at the scheduled time.\n - CANCELLED: The scheduled send transaction has been cancelled.\n"
      enum:
      - INVALID
      - INITIALISED
      - COMPLETED
      - REJECTED
      - FAILED
      - PENDING
      - PENDING_CHALLENGE
      - APPROVED
      - RETURNED
      - SCHEDULED
      - CANCELLED
    Id:
      type: string
      pattern: ^[0-9]+$
    TransactionSingleCancelRequest:
      type: object
      properties:
        cancellationReason:
          $ref: '#/components/schemas/TransactionCancellationReason'
    Send:
      required:
      - id
      - profileId
      - creationTimestamp
      - source
      - destinationAmount
      - state
      - transactionAmount
      type: object
      properties:
        id:
          type: string
          pattern: ^[0-9]+$
          description: The unique identifier of a send transaction.
        profileId:
          $ref: '#/components/schemas/ProfileId'
        tag:
          $ref: '#/components/schemas/Tag'
        source:
          description: The source managed account or card from where the funds were sent.
          $ref: '#/components/schemas/InstrumentId'
        sourceFee:
          allOf:
          - $ref: '#/components/schemas/CurrencyAmount'
          - type: object
            description: The fee applied to the source.
        destination:
          description: The destination managed account or card to where the funds were sent.
          oneOf:
          - $ref: '#/components/schemas/InstrumentId'
          - $ref: '#/components/schemas/BeneficiaryId'
        destinationAmount:
          description: The amount, in same currency as source and destination, that was sent from the source to the destination instrument.
          $ref: '#/components/schemas/CurrencyAmount'
        destinationFee:
          allOf:
          - $ref: '#/components/schemas/CurrencyAmount'
          - type: object
            description: The fee applied to the destination.
        transactionAmount:
          allOf:
          - $ref: '#/components/schemas/CurrencyAmount'
          - type: object
            description: The original transaction amount before any fees were deducted.
        description:
          type: string
          description: The description details that are passed to the beneficiary.
          maxLength: 255
          pattern: ^[a-zA-Z0-9\/\-?:().$_,'+\s#=!"%&*<>;\{@\r\n]*$
        state:
          $ref: '#/components/schemas/SendState'
        challengeExemptionReason:
          $ref: '#/components/schemas/ChallengeExemptionReason'
        creationTimestamp:
          type: integer
          format: int64
          description: The time when the transaction was created, expressed in Epoch timestamp using millisecond precision.
        scheduledTimestamp:
          $ref: '#/components/schemas/ScheduledTimestamp'
        executionTimestamp:
          $ref: '#/components/schemas/ExecutionTimestamp'
        cancellationReason:
          $ref: '#/components/schemas/TransactionCancellationReason'
    SCAPushChannel:
      type: string
      enum:
      - AUTHY
      - BIOMETRIC
      description: '- "AUTHY": The push notification is sent on the user''s device using [Twilio Authy](https://www.twilio.com/authy)

        - "BIOMETRIC": The push notification is sent to the user''s device

        '
    CurrencyAmount:
      required:
      - currency
      - amount
      type: object
      properties:
        currency:
          $ref: '#/components/schemas/Currency'
        amount:
          type: integer
          format: int64
          description: 'The monetary amount, scaled to the lowest denomination of the currency.


            Example, an amount of 1000 for a EUR currency is actually 1000 Euro cents or EUR 10.00.

            '
      description: The object representing a monetary amount in a particular currency.
    ExecutionTimestamp:
      pattern: ^[0-9]+$
      type: string
      description: The epoch timestamp at which the transaction was executed, transitioning to a final state such as COMPLETED, REJECTED, or FAILED.
    ChallengeExemptionReason:
      type: string
      enum:
      - LOW_VALUE
      - TRUSTED_BENEFICIARY
      description: The Reason the transaction was exempted from SCA verification
    SyntaxError:
      type: object
      description: Is returned as part of an HTTP error response whenever a syntax error is detected. A list of the fields together with their syntax error will be provided.
      properties:
        invalidFields:
          type: array
          items:
            type: object
            properties:
              params:
                type: array
                items:
                  type: string
              fieldName:
                type: string
              error:
                type: string
                enum:
                - REQUIRED
                - HAS_TEXT
                - REQUIRES
                - SIZE
                - RANGE
                - IN
                - NOT_IN
                - REGEX
                - EXACTLY
                - AT_LEAST
                - AT_MOST
                - ALL_OR_NONE
    Error:
      type: object
      properties:
        code:
          type: string
        message:
          type: string
    BeneficiaryId:
      required:
      - beneficiaryId
      type: object
      properties:
        beneficiaryId:
          $ref: '#/components/schemas/Id'
    Tag:
      type: string
      description: The tag field is a custom field that can be used to search and filter.
      maxLength: 50
      pattern: ^[a-zA-Z0-9_-]+$
    InstrumentType:
      type: string
      enum:
      - managed_cards
      - managed_accounts
    SendCreateRequest:
      required:
      - profileId
      - source
      - destination
      - destinationAmount
      type: object
      properties:
        profileId:
          $ref: '#/components/schemas/ProfileId'
        tag:
          $ref: '#/components/schemas/Tag'
        source:
          $ref: '#/components/schemas/InstrumentId'
        destinatio

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