Ziina Transfer API

Initiate and retrieve peer transfers between Ziina accounts.

OpenAPI Specification

ziina-transfer-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Ziina Account Transfer API
  version: 1.0.0
  description: Ziina payment platform REST API for the UAE. Create and retrieve payment intents (hosted and embedded checkout), issue refunds, initiate peer transfers between Ziina accounts, register webhook endpoints for payment events, and read account details. Amounts are passed in the base (minor) unit of the currency (fils for AED); the minimum charge is 2 AED. Auth is HTTP bearer (JWT) via OAuth 2.0 access tokens with granular scopes (read_account, write_payment_intents, write_refunds, write_transfers, write_webhooks).
  contact:
    name: Ziina Support
    email: support@ziina.com
    url: https://docs.ziina.com
servers:
- url: https://api-v2.ziina.com/api
  description: Ziina production API
security:
- bearer: []
tags:
- name: Transfer
  description: Initiate and retrieve peer transfers between Ziina accounts.
paths:
  /transfer:
    post:
      operationId: TransferController_initiateTransfer
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InitiateTransferDto'
      responses:
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentIntentDto'
      tags:
      - Transfer
  /transfer/{id}:
    get:
      description: Get a transfer by its ID. Caller must be the payer or the receiver.
      operationId: TransferController_getTransfer
      parameters:
      - name: id
        required: true
        in: path
        description: id of the transfer
        schema:
          type: string
      responses:
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransferDto'
      summary: ''
      tags:
      - Transfer
components:
  schemas:
    TransferDto:
      type: object
      properties:
        id:
          type: string
          description: id of the transfer
        account_id:
          type: string
          description: Account which will receive the transfer
        amount:
          type: number
          description: Transaction amount. Values must be passed in the base units of their currency. For example, $10.50 should be provided as `1050`.
        currency_code:
          type: string
          description: Currency code of the amount to charge. This should be a 3-letter ISO-4217 currency code. For example, if you wish to charge 10 AED, you should pass AED. For more information on supported currencies, please visit the [supported currencies page](/supported-currencies)
        created_at:
          type: string
          description: Unix timestamp in milliseconds
        status:
          type: string
          enum:
          - requires_payment_instrument
          - requires_user_action
          - pending
          - completed
          - failed
          - canceled
          description: Status of the transaction. You can find more details [here](/api-reference/payment-intent/index#fetching-a-payment-intent)
        operation_id:
          type: string
          description: Unique client generated UUID. In case of retries provide the same operation_id
        message:
          type: string
          description: Optional text comment attached to a transfer. Displayed to the user in the app as part of the transaction details.
      required:
      - id
      - account_id
      - amount
      - currency_code
      - created_at
      - status
      - operation_id
    ErrorDto:
      type: object
      properties:
        message:
          type: string
          description: A human-readable error message
        code:
          type: string
          description: HTTP error status code
      required:
      - message
      - code
    PaymentIntentDto:
      type: object
      properties:
        id:
          type: string
          description: id of the payment intent
        account_id:
          type: string
          description: Account which will receive payment
        amount:
          type: number
          description: Transaction amount. Values must be passed in the base units of their currency. For example, $10.50 should be provided as `1050`.
        tip_amount:
          type: number
          description: The amount of tips to be added to the payment intent
        fee_amount:
          type: number
          description: The amount of fees paid for this payment intent
        currency_code:
          type: string
          description: Currency code of the amount to charge. This should be a 3-letter ISO-4217 currency code. For example, if you wish to charge 10 AED, you should pass AED. For more information on supported currencies, please visit the [supported currencies page](/supported-currencies)
        created_at:
          type: string
          description: Unix timestamp in milliseconds
        status:
          type: string
          enum:
          - requires_payment_instrument
          - requires_user_action
          - pending
          - completed
          - failed
          - canceled
          description: Status of the transaction. You can find more details [here](/api-reference/payment-intent/index#fetching-a-payment-intent)
        operation_id:
          type: string
          description: Unique client generated UUID. In case of retries provide the same operation_id
        message:
          type: string
          description: A message to be displayed to the user on the hosted payment page
        redirect_url:
          type: string
          description: The URL to be used to redirect the client to the hosted payment page
        embedded_url:
          type: string
          description: The URL to be used to show embedded payment page with the payment widget
        success_url:
          type: string
          description: The URL to be called by the hosted web page when the payment is successful
        cancel_url:
          type: string
          description: The URL to be called by the hosted web page when the payment is cancelled
        latest_error:
          description: An error that was encountered while processing the payment intent
          allOf:
          - $ref: '#/components/schemas/ErrorDto'
        allow_tips:
          type: boolean
          default: false
          description: Whether tips are allowed for this payment intent
      required:
      - id
      - account_id
      - amount
      - tip_amount
      - currency_code
      - created_at
      - status
      - operation_id
    InitiateTransferDto:
      type: object
      properties:
        operation_id:
          type: string
          description: Unique client generated UUID. In case of retries provide the same operation_id
        to_account_ids:
          description: 'Array of account ids to transfer to. You need to specify only one of the properties: to_account_ids or to_ziinames'
          type: array
          items:
            type: string
        to_ziinames:
          description: 'Array of ziinames to transfer to. You need to specify only one of the properties: to_account_ids or to_ziinames'
          type: array
          items:
            type: string
        amount:
          type: number
          description: Transaction amount. Values must be passed in the base units of their currency. For example, $10.50 should be provided as `1050`.
        currency_code:
          type: string
          description: Currency code of the amount to charge. This should be a 3-letter ISO-4217 currency code. For example, if you wish to charge 10 AED, you should pass AED. For more information on supported currencies, please visit the [supported currencies page](/supported-currencies)
        message:
          type: string
          description: A message to be displayed to the user on the hosted payment page
      required:
      - operation_id
      - to_account_ids
      - to_ziinames
      - amount
      - currency_code
  securitySchemes:
    bearer:
      scheme: bearer
      bearerFormat: JWT
      type: http