Orsun Pay Cashier sessions (merchant S2S) API

The Cashier sessions (merchant S2S) API from Orsun Pay — 4 operation(s) for cashier sessions (merchant s2s).

GitHub OpenAPI

Operations 4

POST /v1/cashier/sessions Authorize a player cashier from the merchant backend #
POST /v1/cashier/sessions/{id}/access-grants Renew player access for the same bound instance #
POST /v1/cashier/sessions/{id}/revoke Revoke this player cashier immediately #
POST /v1/cashier/wallet/receipts Acknowledge a wallet effect #

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/orsunpay-com:orsunpay-com-cashier-sessions-merchant-s2s-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

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

OpenAPI Specification

orsunpay-com-cashier-sessions-merchant-s2s-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  contact:
    name: OrsunPay
  description: Server-to-server merchant payments. Money is always a decimal string in major units.
  title: OrsunPay Merchant Cashier sessions (merchant S2S) API
  version: '1.0'
servers: []
tags:
- name: Cashier sessions (merchant S2S)
paths:
  /v1/cashier/sessions:
    post:
      operationId: createCashierSession
      parameters:
      - in: header
        name: Idempotency-Key
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CashierCreateSessionDto'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CashierGrantResponseDto'
          description: ''
        '429':
          content:
            application/json:
              example:
                error: RATE_LIMITED
                errorCode: RATE_LIMITED
                message: Too many requests. Retry after the indicated delay.
                status: false
                statusCode: 429
              schema:
                $ref: '#/components/schemas/ApiErrorResponseDto'
          description: 'RATE_LIMITED: IP, merchant or failed-auth quota exhausted, or auth-in-flight concurrency pressure (Retry-After: 1). Wait Retry-After seconds and retry with the same Idempotency-Key.'
          headers:
            RateLimit:
              description: Remaining requests (r) and seconds to reset/full refill (t), per evaluated policy. Absent when disabled; merchant quota is omitted during Redis outages, while IP/auth protection uses replica memory.
              schema:
                example: '"merchant";r=37;t=4'
                type: string
            RateLimit-Policy:
              description: Evaluated policies (draft-ietf-httpapi-ratelimit-headers-11). q is burst quota; w is the full refill window in seconds.
              schema:
                example: '"merchant";q=100;w=5'
                type: string
            Retry-After:
              description: Minimum delay in whole seconds before retrying.
              schema:
                example: 1
                minimum: 1
                type: integer
        '503':
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/AuthenticationUnavailableResponseDto'
                - $ref: '#/components/schemas/ApiErrorResponseDto'
          description: ''
      security:
      - X-API-Key: []
      summary: Authorize a player cashier from the merchant backend
      tags:
      - Cashier sessions (merchant S2S)
  /v1/cashier/sessions/{id}/access-grants:
    post:
      operationId: mintCashierAccessGrant
      parameters:
      - in: path
        name: id
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CashierMintGrantDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CashierGrantResponseDto'
          description: ''
        '429':
          content:
            application/json:
              example:
                error: RATE_LIMITED
                errorCode: RATE_LIMITED
                message: Too many requests. Retry after the indicated delay.
                status: false
                statusCode: 429
              schema:
                $ref: '#/components/schemas/ApiErrorResponseDto'
          description: 'RATE_LIMITED: IP, merchant or failed-auth quota exhausted, or auth-in-flight concurrency pressure (Retry-After: 1). Wait Retry-After seconds and retry with the same Idempotency-Key.'
          headers:
            RateLimit:
              description: Remaining requests (r) and seconds to reset/full refill (t), per evaluated policy. Absent when disabled; merchant quota is omitted during Redis outages, while IP/auth protection uses replica memory.
              schema:
                example: '"merchant";r=37;t=4'
                type: string
            RateLimit-Policy:
              description: Evaluated policies (draft-ietf-httpapi-ratelimit-headers-11). q is burst quota; w is the full refill window in seconds.
              schema:
                example: '"merchant";q=100;w=5'
                type: string
            Retry-After:
              description: Minimum delay in whole seconds before retrying.
              schema:
                example: 1
                minimum: 1
                type: integer
        '503':
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/AuthenticationUnavailableResponseDto'
                - $ref: '#/components/schemas/ApiErrorResponseDto'
          description: ''
      security:
      - X-API-Key: []
      summary: Renew player access for the same bound instance
      tags:
      - Cashier sessions (merchant S2S)
  /v1/cashier/sessions/{id}/revoke:
    post:
      operationId: revokeCashierSession
      parameters:
      - in: path
        name: id
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CashierRevokeSessionDto'
        required: true
      responses:
        '200':
          description: ''
        '429':
          content:
            application/json:
              example:
                error: RATE_LIMITED
                errorCode: RATE_LIMITED
                message: Too many requests. Retry after the indicated delay.
                status: false
                statusCode: 429
              schema:
                $ref: '#/components/schemas/ApiErrorResponseDto'
          description: 'RATE_LIMITED: IP, merchant or failed-auth quota exhausted, or auth-in-flight concurrency pressure (Retry-After: 1). Wait Retry-After seconds and retry with the same Idempotency-Key.'
          headers:
            RateLimit:
              description: Remaining requests (r) and seconds to reset/full refill (t), per evaluated policy. Absent when disabled; merchant quota is omitted during Redis outages, while IP/auth protection uses replica memory.
              schema:
                example: '"merchant";r=37;t=4'
                type: string
            RateLimit-Policy:
              description: Evaluated policies (draft-ietf-httpapi-ratelimit-headers-11). q is burst quota; w is the full refill window in seconds.
              schema:
                example: '"merchant";q=100;w=5'
                type: string
            Retry-After:
              description: Minimum delay in whole seconds before retrying.
              schema:
                example: 1
                minimum: 1
                type: integer
        '503':
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/AuthenticationUnavailableResponseDto'
                - $ref: '#/components/schemas/ApiErrorResponseDto'
          description: ''
      security:
      - X-API-Key: []
      summary: Revoke this player cashier immediately
      tags:
      - Cashier sessions (merchant S2S)
  /v1/cashier/wallet/receipts:
    post:
      operationId: CashierWalletReceiptController_receipt
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CashierWalletReceiptDto'
        required: true
      responses:
        '200':
          description: ''
        '429':
          content:
            application/json:
              example:
                error: RATE_LIMITED
                errorCode: RATE_LIMITED
                message: Too many requests. Retry after the indicated delay.
                status: false
                statusCode: 429
              schema:
                $ref: '#/components/schemas/ApiErrorResponseDto'
          description: 'RATE_LIMITED: IP, merchant or failed-auth quota exhausted, or auth-in-flight concurrency pressure (Retry-After: 1). Wait Retry-After seconds and retry with the same Idempotency-Key.'
          headers:
            RateLimit:
              description: Remaining requests (r) and seconds to reset/full refill (t), per evaluated policy. Absent when disabled; merchant quota is omitted during Redis outages, while IP/auth protection uses replica memory.
              schema:
                example: '"merchant";r=37;t=4'
                type: string
            RateLimit-Policy:
              description: Evaluated policies (draft-ietf-httpapi-ratelimit-headers-11). q is burst quota; w is the full refill window in seconds.
              schema:
                example: '"merchant";q=100;w=5'
                type: string
            Retry-After:
              description: Minimum delay in whole seconds before retrying.
              schema:
                example: 1
                minimum: 1
                type: integer
        '503':
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/AuthenticationUnavailableResponseDto'
                - $ref: '#/components/schemas/ApiErrorResponseDto'
          description: ''
      security:
      - X-API-Key: []
      summary: Acknowledge a wallet effect
      tags:
      - Cashier sessions (merchant S2S)
components:
  schemas:
    CashierWalletReceiptDto:
      properties:
        amount:
          pattern: ^(0|[1-9]\d{0,19})(\.\d{1,18})?$
          type: string
        currency:
          type: string
        effectId:
          type: string
        eventId:
          type: string
        kind:
          enum:
          - credit
          - capture
          - release
          type: string
        livemode:
          type: boolean
        operationId:
          type: string
        orderId:
          type: string
        playerId:
          maxLength: 100
          type: string
        revision:
          type: string
        simulation:
          description: Exact stored effect simulation flag. Simulation is test-mode only and never activates real wallet money.
          type: boolean
        transactionId:
          description: Real engine transaction; omission is allowed only for pre-dispatch release.
          type: string
        walletOperationId:
          type: string
      required:
      - effectId
      - eventId
      - walletOperationId
      - operationId
      - orderId
      - playerId
      - livemode
      - simulation
      - amount
      - currency
      - kind
      - revision
      type: object
    AuthenticationUnavailableResponseDto:
      properties:
        error:
          example: Service Unavailable
          type: string
        message:
          example: API_KEY_VALIDATION_UNAVAILABLE
          type: string
        statusCode:
          example: 503
          type: number
      required:
      - statusCode
      - error
      - message
      type: object
    ApiErrorResponseDto:
      properties:
        error:
          description: Same as errorCode
          example: DUPLICATE_ORDER_ID
          type: string
        errorCode:
          description: 'Machine-readable, extensible code. Known values: ADYEN_REFUSED, CARD_DATA_NOT_ACCEPTED, RATE_LIMITED, PAYMENT_LINK_INVALID_AMOUNT, PAYMENT_LINK_UNSUPPORTED_CURRENCY, PAYMENT_LINK_INVALID_EXPIRY, PAYMENT_LINK_INVALID_MAX_USES, PAYMENT_LINK_REDIRECT_URL_NOT_ALLOWED, PAYMENT_LINK_METADATA_TOO_LARGE, PAYMENT_LINK_INVALID_TEXT, PAYMENT_LINK_NOT_FOUND, PAYMENT_LINK_INVALID_LIMIT, PAYMENT_LINK_INVALID_CURSOR, API_KEY_ROTATION_REQUIRED, ORDER_ID_RESERVED, NO_CREDENTIALS_FOR_MODE, LIVEMODE_MISMATCH, PSP_OUTCOME_UNKNOWN, PAYMENT_METHOD_REQUIRED, PAYMENT_METHOD_INPUT_WITHOUT_METHOD, NO_PAYMENT_METHODS, IDEMPOTENCY_KEY_INVALID, DUPLICATE_ORDER_ID, IDEMPOTENCY_IN_PROGRESS, IDEMPOTENCY_KEY_REUSED, UPSTREAM_ERROR, UPSTREAM_UNAVAILABLE, UPSTREAM_TIMEOUT, REFUND_INVALID_AMOUNT, REFUND_INVALID_REASON, REFUND_INVALID_METADATA, REFUND_INPUT_INVALID, REFUND_EXCEEDS_AMOUNT, TRANSACTION_NOT_REFUNDABLE, REFUND_NOT_FOUND, REFUND_NOT_SUPPORTED, IDEMPOTENCY_LEASE_LOST, REFUND_SERVICE_UNAVAILABLE. New codes may be added; clients must handle unknown values.'
          example: DUPLICATE_ORDER_ID
          type: string
        existingTransactionId:
          description: 'DUPLICATE_ORDER_ID only: the transaction that already uses this orderId'
          example: tr_x8k2p0q5scocndpejk0nud75q
          type: string
        fields:
          description: Invalid or missing buyer contact fields for CUSTOMER_CONTACT_REQUIRED
          example:
          - customer.email
          - customer.country
          items:
            type: string
          type: array
        idempotencyKey:
          description: IDEMPOTENCY_* errors only
          example: 0b6f2c1e-4c7a-4a43-9a51-6a4b1d7e9f10
          type: string
        message:
          example: A transaction with orderId "A-1001" already exists for this merchant
          type: string
        orderId:
          description: DUPLICATE_ORDER_ID only
          example: A-1001
          type: string
        status:
          example: false
          type: boolean
        statusCode:
          example: 409
          type: number
      required:
      - status
      - statusCode
      - errorCode
      - error
      - message
      type: object
    CashierCreateSessionDto:
      properties:
        binding:
          $ref: '#/components/schemas/CashierPlayerBindingDto'
        country:
          type: string
        expiresAt:
          type: string
        locale:
          type: string
        metadata:
          type: object
        orderId:
          type: string
      required:
      - binding
      - orderId
      type: object
    CashierGrantResponseDto:
      properties:
        accessToken:
          description: Opaque player grant, never a merchant API key. Keep only in memory.
          type: string
        expiresAt:
          format: date-time
          type: string
        generation:
          minimum: 1
          type: integer
        instanceId:
          type: string
        serverTime:
          format: date-time
          type: string
        sessionId:
          type: string
      required:
      - sessionId
      - instanceId
      - accessToken
      - expiresAt
      - serverTime
      - generation
      type: object
    CashierPlayerBindingDto:
      properties:
        currency:
          example: EUR
          type: string
        launchMode:
          enum:
          - embedded
          - standalone
          type: string
        operatorLoginSessionId:
          type: string
        parentOrigin:
          example: https://casino.example
          type: string
        playerId:
          maxLength: 100
          minLength: 1
          type: string
      required:
      - playerId
      - operatorLoginSessionId
      - currency
      - parentOrigin
      - launchMode
      type: object
    CashierRevokeSessionDto:
      properties:
        binding:
          $ref: '#/components/schemas/CashierPlayerBindingDto'
      required:
      - binding
      type: object
    CashierMintGrantDto:
      properties:
        binding:
          $ref: '#/components/schemas/CashierPlayerBindingDto'
        instanceId:
          type: string
      required:
      - binding
      - instanceId
      type: object
  securitySchemes:
    X-API-Key:
      in: header
      name: x-api-key
      type: apiKey
    bearer:
      bearerFormat: Opaque cashier player grant
      scheme: bearer
      type: http