> ## Documentation Index
> Fetch the complete documentation index at: https://docs.endl.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Submit transaction

> Submit the transfer for processing. The row is marked `alias=POBO`.

**`senderId` is mandatory.** `depositId`, `accountId` and `invoiceFileIdList` are optional reference ids (`dep_`, `acct_`, `file_`) where they apply.



## OpenAPI

````yaml api-reference/endl-pobo-api.json POST /api/v0/pobo/transactions/submit
openapi: 3.1.0
info:
  title: Endl POBO API
  version: '0'
  description: >-
    Payment on behalf of — pay out on behalf of a named originator.


    Every POBO endpoint lives under `/api/v0/pobo` and needs an API key carrying
    the `pobo` permission. POBO is **partner-scoped**: there is no `userId` in
    any path, and every identifier you exchange is a prefixed reference id
    rather than an internal UUID.


    POBO routes through Paywho only. A Bridge-routed currency or rail is
    rejected with `400`.
servers:
  - url: https://api-sandbox.endl.io
    description: Sandbox
security:
  - apiKey: []
paths:
  /api/v0/pobo/transactions/submit:
    post:
      tags:
        - Transactions
      summary: Submit transaction
      description: >-
        Submit the transfer for processing. The row is marked `alias=POBO`.


        **`senderId` is mandatory.** `depositId`, `accountId` and
        `invoiceFileIdList` are optional reference ids (`dep_`, `acct_`,
        `file_`) where they apply.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - quoteId
                - recipientId
                - senderId
              properties:
                quoteId:
                  type: string
                  description: The quote being submitted — `qut_…`.
                recipientId:
                  type: string
                  description: Who is being paid — `rec_…`.
                senderId:
                  type: string
                  description: '**Mandatory.** The originator — `snd_…`.'
                depositId:
                  type: string
                  description: Optional deposit reference — `dep_…`.
                accountId:
                  type: string
                  description: Optional account reference — `acct_…`.
                invoiceFileIdList:
                  type: array
                  items:
                    type: string
                  description: Optional invoice file references — `file_…`.
                transferPurpose:
                  type: string
                  description: Free-text purpose of the transfer.
                fundsSource:
                  type: string
                  description: Where the funds came from — `Salary`.
            example:
              quoteId: qut_xxxxxxxxxxxxxxxxxxxx
              recipientId: rec_xxxxxxxxxxxxxxxxxxxx
              senderId: snd_xxxxxxxxxxxxxxxxxxxx
              depositId: dep_xxxxxxxxxxxxxxxxxxxx
              transferPurpose: Family support
              fundsSource: Salary
      responses:
        '200':
          description: The submitted transaction.
          content:
            application/json:
              example:
                code: 200
                message: Success
                status: SUCCESS
                data: {}
                errors: []
        '400':
          description: Validation failed, or the route is not supported for POBO.
          content:
            application/json:
              example:
                code: 400
                message: Rail not supported for POBO
                status: ERROR
                data: null
                errors:
                  - code: VALIDATION_ERROR
                    message: Rail not supported for POBO
                    field: null
        '401':
          description: Missing or invalid API credentials.
          content:
            application/json:
              example:
                data: null
                code: 401
                message: Authentication Failed!
                status: Error
                errors:
                  - code: '401'
                    message: Authentication Failed!
                    field: Authentication Failed!
        '403':
          description: The key does not carry the `pobo` permission. Raised at the edge.
          content:
            application/json:
              example:
                data: null
                code: 403
                message: API key does not have 'pobo' permission
                status: Error
                errors:
                  - code: '403'
                    message: API key does not have 'pobo' permission
                    field: API key does not have 'pobo' permission
        '404':
          description: No such resource, or it belongs to another partner.
          content:
            application/json:
              example:
                code: 404
                message: Resource not found
                status: ERROR
                data: null
                errors:
                  - code: NOT_FOUND
                    message: Resource not found
                    field: null
        '409':
          description: The request conflicts with existing state.
          content:
            application/json:
              example:
                code: 409
                message: >-
                  A sender with this governmentId already exists for this
                  partner
                status: ERROR
                data: null
                errors:
                  - code: CONFLICT
                    message: >-
                      A sender with this governmentId already exists for this
                      partner
                    field: null
        '429':
          description: The per-API-key request rate limit was exceeded.
          content:
            application/json:
              example:
                data: null
                code: 429
                message: Rate limit exceeded, please retry later
                status: Error
                errors:
                  - code: '429'
                    message: Rate limit exceeded, please retry later
                    field: Rate limit exceeded, please retry later
        '500':
          description: Unexpected server error.
          content:
            application/json:
              example:
                code: 500
                message: Unexpected error
                status: ERROR
                data: null
                errors:
                  - code: INTERNAL_ERROR
                    message: Unexpected error
                    field: null
        '502':
          description: >-
            Endl could not reach the service behind the edge. Retry with
            backoff.
          content:
            application/json:
              example:
                data: null
                code: 502
                message: Upstream service error
                status: Error
                errors: null
components:
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: API-KEY
      description: Your partner API key. Must carry the `pobo` permission.

````