---
title: "Initiate a single payment"
method: POST
path: "/v2/single-payment"
tags: ["Payments"]
---

# Initiate a single payment

`POST /v2/single-payment`

## Request

- Base URL: `https://api.sandbox.payall.com`
- URL: `https://api.sandbox.payall.com/v2/single-payment`
- Auth: OAuth 2
  - Client credentials
  - Token URL: `/v2/oauth/token`

Use this method to initiate a single Payment.

## Request body

- union
  - PaymentRequest: All amounts should be provided in the smallest currency unit. For example, 1000.23 EUR should be provided as 100023. Please note that this request contains mutually exclusive fields as described in the table: | Field | recipient_id | recipient | payment_instrument | payment_instrument_id | |:---------------------:|:------------:|:---------:|:------------------:|:---------------------:| | recipient_id | | ✗ | ✓ | ✗ | | recipient | ✗ | | ✓ | ✗ | | payment_instrument | ✓ | ✓ | | ✗ | | payment_instrument_id | ✗ | ✗ | ✗ | | ✓ the two fields can be sent together, ✗ they are mutually exclusive. At least `payment_instrument_id` is required or any other combination of recipient and payment instrument information as described in the table. `payer` and `source_account_id` are mutually exclusive, and exactly one of them is required. Provide `source_account_id` to pay from one of your own accounts, or provide `payer` to pay on behalf of a payer onboarded from this request - which is then funded by the account onboarding provisions for it. Sending both is rejected with `PUB4235`. See the `payer` field for the prerequisites of paying on behalf of another party. If you're building a flow with explicit exchange rates then you should either use the `exchange_rate_id` or `carded_rate_id` but not both. Providing both will result in an error with 409 status code. When using `exchange_rate_id` the `operation` field should not be provided. Providing both will result in an error with 409 status code.
    - `end_to_end_id` string: End To End Identification This filed follows ISO 20022 guidelines. Unique identification, as assigned by the initiating party, to unambiguously identify the transaction. This identification is passed on, unchanged, throughout the entire end-to-end chain. Usage: The end-to-end identification can be used for reconciliation or to link tasks relating to the transaction. It can be included in several messages related to the transaction. If not provided, a random UUID based identifier will be generated.
    - `client_payment_id` string: External reference identifying the payment in your (the client) system.
    - `payer` union: [Optional] Payer information. The payer is the party the payment is made on behalf of. Providing it onboards the payer exactly as `POST /v2/payers` does: the payer is persisted and provisioned with its own payment instrument and account. Onboarding a payer requires your credentials to carry the `ONBOARDING` scope in addition to the `PAYMENTS` scope this endpoint already needs. Without it the request is rejected with `PUB2003` and HTTP 403. Contact your Payall representative to have the scope added. Because this is a create, an `external_id` that is already onboarded is rejected with `PUB5056` rather than reused - use `POST /v2/payers` and `PATCH /v2/payers/{id}` to manage payers you intend to pay repeatedly, then leave this field out. When no `external_id` is provided a new payer is created on every request, including on a retry of the same request. When this field is omitted the payer is the owner of the account named by `source_account_id`, and no onboarding takes place. `payer` and `source_account_id` are mutually exclusive: the payment is funded by the account provisioned for the payer during onboarding, so there is no source account for you to name. Sending both is rejected with `PUB4235`. If the request states a source currency (via `operation`), the payer must hold an account in that currency; otherwise the request is rejected with `PUB4140`.
      - PersonPayer: Abstract class. Use it's implementations instead.
        - `id` string, uuid
        - `accounts` AccountDetails[]
          - `id` string, uuid: Account id
          - `owner_id` string, uuid: Owner id
          - `owner_name` string: For individuals First name + Last name and for businesses Business Entity Title
          - `created` string, date-time: Account creation date
          - `number` string: Account reference
          - `name` string: Account name
          - `currency` string: Account currency
          - `balance` Amount
            - `currency` string, iso-4217, required
            - `value` integer, required: Amounts are always in the smallest currency unit. Example: 1000.23 EUR is represented as 100023 euro cents.
        - `type` 'Business' | 'Person', required
        - `external_id` string: ID from external system.
        - `first_name` string, required
        - `middle_name` string
        - `last_name` string, required
        - `phone_number` string
        - `registration_address` Address
          - `city` string
          - `street` string
          - `country` string
          - `postal_code` string
          - `unit_number` string
          - `building_name` string
          - `state_province` string
          - `building_number` string
        - `nationality` string
        - `government_id` string: Deprecated. Use `identity_document` instead. When `identity_document` is omitted, this value is used as the identity document number.
        - `identity_document` IdentityDocument
          - `type` string
          - `type_version_number` string
          - `country_issuing` string
          - `number` string
          - `national_id_number` string
          - `national_id_number_type` string
          - `series` string
          - `issue_date` string, date: Issue date of the identity document, in `YYYY-MM-DD` format. When provided, it must not be in the future — an issue date later than today is rejected when creating or updating a payer or recipient (see error codes PUB4221 for payers and PUB4222 for recipients).
          - `place_of_issue` string
          - `authority_of_issue` string
          - `expiry_date` string, date: Expiry date of the identity document, in `YYYY-MM-DD` format. When provided, it must not be in the past — an expired document is rejected when creating or updating a payer or recipient (see error codes PUB4219 for payers and PUB4220 for recipients).
          - `driver_license_number` string
          - `driver_license_serial_number` string
          - `driver_license_version_number` string
        - `date_of_birth` string, date
        - `source_of_income` string
        - `email` string
        - `place_of_birth` string
        - `occupation` 'general_worker' | 'businessman' | 'others' | 'professional' | 'tourist' | 'security_guard' | 'supervisor' | 'house_maid' | 'domestic_helper' | 'house_wife'
        - `relationship_with_beneficiary` string
        - `employer_name` string
        - `employer_country` string, iso-3166-alpha-2: Country of registration. 3166-1 alpha-2 value. Hint: It is `GB`, not `UK`.
        - `employer_industry` string
      - BusinessPayer: Abstract class. Use it's implementations instead.
        - `id` string, uuid
        - `accounts` AccountDetails[]
          - `id` string, uuid: Account id
          - `owner_id` string, uuid: Owner id
          - `owner_name` string: For individuals First name + Last name and for businesses Business Entity Title
          - `created` string, date-time: Account creation date
          - `number` string: Account reference
          - `name` string: Account name
          - `currency` string: Account currency
          - `balance` Amount
            - `currency` string, iso-4217, required
            - `value` integer, required: Amounts are always in the smallest currency unit. Example: 1000.23 EUR is represented as 100023 euro cents.
        - `type` 'Business' | 'Person', required
        - `external_id` string: ID from external system.
        - `legal_name` string, required
        - `trade_name` string
        - `country` string, iso-3166-alpha-2: Country of registration. 3166-1 alpha-2 value. Hint: It is `GB`, not `UK`.
        - `registration_number` string
        - `registration_date` string, date
        - `email` string: Business email
        - `phone_number` string: Business phone number
        - `registration_address` Address
          - `city` string
          - `street` string
          - `country` string
          - `postal_code` string
          - `unit_number` string
          - `building_name` string
          - `state_province` string
          - `building_number` string
        - `owners` BusinessOwner[]
          - `first_name` string, required
          - `middle_name` string
          - `last_name` string, required
          - `date_of_birth` string, date: Date of birth in ISO 8601 format (YYYY-MM-DD)
          - `job_title` string: Job title of the person at the related business.
          - `ownership` number: Represents a share percentage of the related business owned by this person.
        - `authorized_persons` AuthorizedPerson[]
          - `first_name` string, required
          - `middle_name` string
          - `last_name` string, required
          - `job_title` string: Job title of the person at the related business.
          - `email` string, email
          - `phone_number` string: E.164 phone number format
        - `organization_legal_structure` 'limited_liability_company' | 'limited_liability_partnership' | 'limited_partnership' | 'private_corporation' | 'public_corporation' | 'non_profit_corporation' | 'government_entity' | 'corporation' | 'partnership' | 'sole_proprietorship' | 'non_incorporated_entity': Specifies the legal structure of the organisation. A value outside this list is rejected.
    - `recipient` union: [Optional] New recipient information. This recipient will be persisted for the future and linked to the payment instrument provided via the `payment_instrument` field. When creating new recipient you can not reuse existing payment instrument as it will be already tied to other existing recipient. If recipient data matches existing recipient in the system then existing recipient will be used and it's ID will be returned in the corresponding `PaymentResponse`. Matching is done based on the required fields for `Person` or `Business` respectively. Alternatively `recipient_id` can be used instead to send payment to existing recipient. `recipient` and `recipient_id` are mutually exclusive fields.
      - Person: Abstract class. Use it's implementations instead.
        - `id` string, uuid
        - `type` 'Person' | 'Business', required
        - `external_id` string: ID from external system.
        - `email` string, email
        - `first_name` string, required
        - `last_name` string, required
        - `middle_name` string
        - `mobile_number` string
        - `dob` string, date
        - `occupation` 'general_worker' | 'businessman' | 'others' | 'professional' | 'tourist' | 'security_guard' | 'supervisor' | 'house_maid' | 'domestic_helper' | 'house_wife'
        - `registration_address` Address
          - `city` string
          - `street` string
          - `country` string
          - `postal_code` string
          - `unit_number` string
          - `building_name` string
          - `state_province` string
          - `building_number` string
        - `identity_document` IdentityDocument
          - `type` string
          - `type_version_number` string
          - `country_issuing` string
          - `number` string
          - `national_id_number` string
          - `national_id_number_type` string
          - `series` string
          - `issue_date` string, date: Issue date of the identity document, in `YYYY-MM-DD` format. When provided, it must not be in the future — an issue date later than today is rejected when creating or updating a payer or recipient (see error codes PUB4221 for payers and PUB4222 for recipients).
          - `place_of_issue` string
          - `authority_of_issue` string
          - `expiry_date` string, date: Expiry date of the identity document, in `YYYY-MM-DD` format. When provided, it must not be in the past — an expired document is rejected when creating or updating a payer or recipient (see error codes PUB4219 for payers and PUB4220 for recipients).
          - `driver_license_number` string
          - `driver_license_serial_number` string
          - `driver_license_version_number` string
      - Business: Abstract class. Use it's implementations instead.
        - `id` string, uuid
        - `type` 'Person' | 'Business', required
        - `external_id` string: ID from external system.
        - `legal_name` string, required
        - `country` string, iso-3166-alpha-2: Country of registration. 3166-1 alpha-2 value. Hint: It is `GB`, not `UK`.
        - `trade_name` string
        - `phone_number` string
        - `registration_number` string
        - `email` string, email
        - `registration_address` Address
          - `city` string
          - `street` string
          - `country` string
          - `postal_code` string
          - `unit_number` string
          - `building_name` string
          - `state_province` string
          - `building_number` string
    - `payment_instrument` union: [Optional] New payment instrument information. This payment instrument will be persisted and linked to the recipient provided via the `recipient` or `recipient_id` fields. Alternatively `payment_instrument_id` can be used instead to reuse existing payment instrument.
      - MobileWallet: Abstract class. Use it's implementations instead.
        - `id` string, uuid
        - `category` 'BankAccount' | 'MobileWallet' | 'CashPickup' | 'Card', required
        - `currency` string
        - `mobile_number` string, required
        - `phone_operator` string
      - BankAccount: Abstract class. Use it's implementations instead.
        - `id` string, uuid
        - `category` 'BankAccount' | 'MobileWallet' | 'CashPickup' | 'Card', required
        - `currency` string
        - `routing_number` string
        - `swift_bic_code` string
        - `bank_domestic_code` string
        - `iban` string
        - `swift_intermediary` string
        - `routing_number_intermediary` string
        - `iban_intermediary` string
        - `account_id` string
        - `bank_name` string
        - `bank_branch_name` string
        - `bank_branch_code` string
        - `bank_country` string
        - `bank_address` string
        - `account_number` string
        - `sub_account_number` string
        - `account_type` string
        - `account_name` string
        - `urgency_flag_preference` string
      - CashPickup: Abstract class. Use it's implementations instead.
        - `id` string, uuid
        - `category` 'BankAccount' | 'MobileWallet' | 'CashPickup' | 'Card', required
        - `currency` string
        - `service_provider_name` string
        - `first_name` string
        - `last_name` string
      - Card: Abstract class. Use it's implementations instead.
        - `id` string, uuid
        - `category` 'BankAccount' | 'MobileWallet' | 'CashPickup' | 'Card', required
        - `currency` string
        - `token` string, uuid, required: Card token can be generated using Payall Vault iframe or API. Unencrypted card data should never be sent to this API directly.
        - `masked_number` string
    - `recipient_id` string, uuid: [Optional] Id of exiting recipient. Alternatively `recipient` can be used instead to send payment to a new recipient. `recipient` and `recipient_id` are mutually exclusive fields.
    - `payment_instrument_id` string, uuid: [Optional] Id of existing payment instrument. When payment_instrument_id is provided then `recipient_id`, `recipient` and `payment_instrument` are not allowed because existing instances of `PaymentInstrument` are tied to specific existing recipients.
    - `source_account_id` string, uuid: Id of the account to use as source of funds. Required unless `payer` is provided, and mutually exclusive with it - sending both is rejected with `PUB4235`. A payment made on behalf of a `payer` is funded by the account provisioned for that payer during onboarding.
    - `operation` union
      - ForwardPaymentOperation: Forward payment operation details. All amounts should be provided in the smallest currency unit. For example, 1000.23 EUR should be provided as 100023.
        - `type` 'Forward': Type of the operation.
        - `source_amount` Amount
          - `currency` string, iso-4217, required
          - `value` integer, required: Amounts are always in the smallest currency unit. Example: 1000.23 EUR is represented as 100023 euro cents.
        - `target_currency` string, iso-4217: Target currency for the operation. The recipient amount will be calculated based on the exchange rate and fees configuration.
      - ReversePaymentOperation: Reverse payment operation details. Source currency is implicitly derived from the source account. Source amount is calculated based on the target amount, the exchange rate and fees configuration. All amounts should be provided in the smallest currency unit. For example, 1000.23 EUR should be provided as 100023.
        - `type` 'Reverse': Type of the operation.
        - `target_amount` Amount
          - `currency` string, iso-4217, required
          - `value` integer, required: Amounts are always in the smallest currency unit. Example: 1000.23 EUR is represented as 100023 euro cents.
    - `exchange_rate_id` string, uuid: [Optional] Id of the exchange rate to use for the payment. If not provided then the best available exchange rate will be used. Note that this is the ID of the exchange rate obtained from the `/v2/exchange-rates` endpoint. For carded rates use the `carded_rate_id`. You can either use the `exchange_rate_id` or `carded_rate_id` but not both. Response with HTTP code 400 will be sent if provided exchange rate expired.
    - `carded_rate_id` string, uuid: [Optional] Id of the carded exchange rate to use for the payment. If not provided then the best available carded exchange rate will be used. Note that this is the ID of the exchange rate obtained from the carded rates feed. For non-carded rates use the `exchange_rate_id`. You can either use the `exchange_rate_id` or `carded_rate_id` but not both. Response with HTTP code 400 will be sent if provided exchange rate expired.
    - `kyt` KYT, required: Transaction information required for KYT process.
      - `destination_country` string, iso-3166-alpha-2, required: Destination country for the payment. 3166-1 alpha-2 value. Hint: It is `GB`, not `UK`.
      - `payment_purpose` 'family_maintenance' | 'household_maintenance' | 'donation_or_gifts' | 'payment_of_loan' | 'purchase_of_property' | 'funeral_expenses' | 'medical_expenses' | 'wedding_expenses' | 'payment_of_bills' | 'education_savings' | 'savings' | 'education' | 'employee_colleague' | 'business_investment' | 'salary' | 'payment_of_goods_and_services' | 'business' | 'payment_of_loan_and_payment_of_bills': The purpose of payment.
      - `commercial_activity` 'transportation' | 'warehousing' | 'insurance' | 'banking_and_finance' | 'acquiring' | 'selling_of_goods_and_services': Commercial activity.
      - `payment_description` string: Additional information about the payment.
      - `beneficiary_bank_account_type` 'checking' | 'ordinary' | 'savings': Beneficiary bank account type
      - `supporting_documents` SupportingDocument[]: Documents that will be considered as proof for the payment. This field may be required depending on your KYT settings. Consult the discovery endpoint for more information.
        - `document_id` string, uuid, required
        - `document_type` 'invoice' | 'contract_or_agreement' | 'proof_of_funds' | 'bill_of_lading' | 'relationship_proof' | 'other': The type of the document.
      - `source_of_funds` 'salary' | 'business' | 'savings' | 'investments' | 'government_funding' | 'loan' | 'personal_income': Source of funds.
      - `relationship_with_sender` 'father' | 'mother' | 'daughter' | 'son' | 'sister' | 'brother' | 'wife' | 'husband' | 'father_in_law' | 'mother_in_law' | 'aunty' | 'uncle' | 'cousin' | 'nephew' | 'niece' | 'grand_mother' | 'grand_father' | 'grand_daughter' | 'grand_son' | 'friend' | 'friends_mother' | 'friends_father' | 'self': Relationship of the recipient with the sender.
  - LegacyPaymentRequest: **Deprecation warning**: This request is deprecated and will be removed in the future. Please refer to `PaymentRequest` together with `ReversePaymentOperation` and `ForwardPaymentOperation` for the new payment requests schemas. Payment information required to initiate the payment. Payments initiated with this request are always reverse payments and the provided amount is treated as the target amount. All amounts should be provided in the smallest currency unit. For example, 1000.23 EUR should be provided as 100023. Please note that this request contains mutually exclusive fields as described in the table: | Field | recipient_id | recipient | payment_instrument | payment_instrument_id | |:---------------------:|:------------:|:---------:|:------------------:|:---------------------:| | recipient_id | | ✗ | ✓ | ✗ | | recipient | ✗ | | ✓ | ✗ | | payment_instrument | ✓ | ✓ | | ✗ | | payment_instrument_id | ✗ | ✗ | ✗ | | ✓ the two fields can be sent together, ✗ they are mutually exclusive. At least `payment_instrument_id` is required or any other combination of recipient and payment instrument information as described in the table. If you're building a flow with explicit exchange rates then you should either use the `exchange_rate_id` or `carded_rate_id` but not both. Providing both will result in an error with 409 status code.
    - `client_payment_id` string: External reference identifying the payment in your (the client) system.
    - `recipient` union: [Optional] New recipient information. This recipient will be persisted for the future and linked to the payment instrument provided via the `payment_instrument` field. When creating new recipient you can not reuse existing payment instrument as it will be already tied to other existing recipient. If recipient data matches existing recipient in the system then existing recipient will be used and it's ID will be returned in the corresponding `PaymentResponse`. Matching is done based on the required fields for `Person` or `Business` respectively. Alternatively `recipient_id` can be used instead to send payment to existing recipient. `recipient` and `recipient_id` are mutually exclusive fields.
      - Person: Abstract class. Use it's implementations instead.
        - `id` string, uuid
        - `type` 'Person' | 'Business', required
        - `external_id` string: ID from external system.
        - `email` string, email
        - `first_name` string, required
        - `last_name` string, required
        - `middle_name` string
        - `mobile_number` string
        - `dob` string, date
        - `occupation` 'general_worker' | 'businessman' | 'others' | 'professional' | 'tourist' | 'security_guard' | 'supervisor' | 'house_maid' | 'domestic_helper' | 'house_wife'
        - `registration_address` Address
          - `city` string
          - `street` string
          - `country` string
          - `postal_code` string
          - `unit_number` string
          - `building_name` string
          - `state_province` string
          - `building_number` string
        - `identity_document` IdentityDocument
          - `type` string
          - `type_version_number` string
          - `country_issuing` string
          - `number` string
          - `national_id_number` string
          - `national_id_number_type` string
          - `series` string
          - `issue_date` string, date: Issue date of the identity document, in `YYYY-MM-DD` format. When provided, it must not be in the future — an issue date later than today is rejected when creating or updating a payer or recipient (see error codes PUB4221 for payers and PUB4222 for recipients).
          - `place_of_issue` string
          - `authority_of_issue` string
          - `expiry_date` string, date: Expiry date of the identity document, in `YYYY-MM-DD` format. When provided, it must not be in the past — an expired document is rejected when creating or updating a payer or recipient (see error codes PUB4219 for payers and PUB4220 for recipients).
          - `driver_license_number` string
          - `driver_license_serial_number` string
          - `driver_license_version_number` string
      - Business: Abstract class. Use it's implementations instead.
        - `id` string, uuid
        - `type` 'Person' | 'Business', required
        - `external_id` string: ID from external system.
        - `legal_name` string, required
        - `country` string, iso-3166-alpha-2: Country of registration. 3166-1 alpha-2 value. Hint: It is `GB`, not `UK`.
        - `trade_name` string
        - `phone_number` string
        - `registration_number` string
        - `email` string, email
        - `registration_address` Address
          - `city` string
          - `street` string
          - `country` string
          - `postal_code` string
          - `unit_number` string
          - `building_name` string
          - `state_province` string
          - `building_number` string
    - `payment_instrument` union: [Optional] New payment instrument information. This payment instrument will be persisted and linked to the recipient provided via the `recipient` or `recipient_id` fields. Alternatively `payment_instrument_id` can be used instead to reuse existing payment instrument.
      - MobileWallet: Abstract class. Use it's implementations instead.
        - `id` string, uuid
        - `category` 'BankAccount' | 'MobileWallet' | 'CashPickup' | 'Card', required
        - `currency` string
        - `mobile_number` string, required
        - `phone_operator` string
      - BankAccount: Abstract class. Use it's implementations instead.
        - `id` string, uuid
        - `category` 'BankAccount' | 'MobileWallet' | 'CashPickup' | 'Card', required
        - `currency` string
        - `routing_number` string
        - `swift_bic_code` string
        - `bank_domestic_code` string
        - `iban` string
        - `swift_intermediary` string
        - `routing_number_intermediary` string
        - `iban_intermediary` string
        - `account_id` string
        - `bank_name` string
        - `bank_branch_name` string
        - `bank_branch_code` string
        - `bank_country` string
        - `bank_address` string
        - `account_number` string
        - `sub_account_number` string
        - `account_type` string
        - `account_name` string
        - `urgency_flag_preference` string
      - CashPickup: Abstract class. Use it's implementations instead.
        - `id` string, uuid
        - `category` 'BankAccount' | 'MobileWallet' | 'CashPickup' | 'Card', required
        - `currency` string
        - `service_provider_name` string
        - `first_name` string
        - `last_name` string
      - Card: Abstract class. Use it's implementations instead.
        - `id` string, uuid
        - `category` 'BankAccount' | 'MobileWallet' | 'CashPickup' | 'Card', required
        - `currency` string
        - `token` string, uuid, required: Card token can be generated using Payall Vault iframe or API. Unencrypted card data should never be sent to this API directly.
        - `masked_number` string
    - `recipient_id` string, uuid: [Optional] Id of exiting recipient. Alternatively `recipient` can be used instead to send payment to a new recipient. `recipient` and `recipient_id` are mutually exclusive fields.
    - `payment_instrument_id` string, uuid: [Optional] Id of existing payment instrument. When payment_instrument_id is provided then `recipient_id`, `recipient` and `payment_instrument` are not allowed because existing instances of `PaymentInstrument` are tied to specific existing recipients.
    - `source_account_id` string, uuid, required: Id of the account to use as source of funds.
    - `amount` Amount, required
      - `currency` string, iso-4217, required
      - `value` integer, required: Amounts are always in the smallest currency unit. Example: 1000.23 EUR is represented as 100023 euro cents.
    - `exchange_rate_id` string, uuid: [Optional] Id of the exchange rate to use for the payment. If not provided then the best available exchange rate will be used. Note that this is the ID of the exchange rate obtained from the `/v2/exchange-rates` endpoint. For carded rates use the `carded_rate_id`. You can either use the `exchange_rate_id` or `carded_rate_id` but not both. Response with HTTP code 400 will be sent if provided exchange rate expired.
    - `carded_rate_id` string, uuid: [Optional] Id of the carded exchange rate to use for the payment. If not provided then the best available carded exchange rate will be used. Note that this is the ID of the exchange rate obtained from the carded rates feed. For non-carded rates use the `exchange_rate_id`. You can either use the `exchange_rate_id` or `carded_rate_id` but not both. Response with HTTP code 400 will be sent if provided exchange rate expired.
    - `kyt` KYT, required: Transaction information required for KYT process.
      - `destination_country` string, iso-3166-alpha-2, required: Destination country for the payment. 3166-1 alpha-2 value. Hint: It is `GB`, not `UK`.
      - `payment_purpose` 'family_maintenance' | 'household_maintenance' | 'donation_or_gifts' | 'payment_of_loan' | 'purchase_of_property' | 'funeral_expenses' | 'medical_expenses' | 'wedding_expenses' | 'payment_of_bills' | 'education_savings' | 'savings' | 'education' | 'employee_colleague' | 'business_investment' | 'salary' | 'payment_of_goods_and_services' | 'business' | 'payment_of_loan_and_payment_of_bills': The purpose of payment.
      - `commercial_activity` 'transportation' | 'warehousing' | 'insurance' | 'banking_and_finance' | 'acquiring' | 'selling_of_goods_and_services': Commercial activity.
      - `payment_description` string: Additional information about the payment.
      - `beneficiary_bank_account_type` 'checking' | 'ordinary' | 'savings': Beneficiary bank account type
      - `supporting_documents` SupportingDocument[]: Documents that will be considered as proof for the payment. This field may be required depending on your KYT settings. Consult the discovery endpoint for more information.
        - `document_id` string, uuid, required
        - `document_type` 'invoice' | 'contract_or_agreement' | 'proof_of_funds' | 'bill_of_lading' | 'relationship_proof' | 'other': The type of the document.
      - `source_of_funds` 'salary' | 'business' | 'savings' | 'investments' | 'government_funding' | 'loan' | 'personal_income': Source of funds.
      - `relationship_with_sender` 'father' | 'mother' | 'daughter' | 'son' | 'sister' | 'brother' | 'wife' | 'husband' | 'father_in_law' | 'mother_in_law' | 'aunty' | 'uncle' | 'cousin' | 'nephew' | 'niece' | 'grand_mother' | 'grand_father' | 'grand_daughter' | 'grand_son' | 'friend' | 'friends_mother' | 'friends_father' | 'self': Relationship of the recipient with the sender.

## Response `201`

Created

Returns new payment details.

- PaymentResponse
  - `end_to_end_id` string: End To End Identification This filed follows ISO 20022 guidelines. Unique identification, as assigned by the initiating party, to unambiguously identify the transaction. This identification is passed on, unchanged, throughout the entire end-to-end chain. Usage: The end-to-end identification can be used for reconciliation or to link tasks relating to the transaction. It can be included in several messages related to the transaction. If not provided, a random UUID based identifier will be generated.
  - `client_payment_id` string, required: External reference provided when initiating the payment.
  - `transaction_id` string: External reference provided when initiating the payment. (Same as `client_payment_id`)
  - `instruction_id` string: Id of the instruction registered in Payall system.
  - `uetr` string, uuid: Universally unique identifier to provide an end-to-end reference of a payment transaction.
  - `integration_id` string: Identifier used in communication with the Clearing Institution.
  - `id` string, uuid, required: Id of the newly initiated payment.
  - `initiated_at` string, date-time, required: The date-time when the payment was initiated. Notation as defined by RFC 3339, section 5.6, for example, 2017-07-21T17:32:28Z
  - `updated_at` string, date-time, required: The date-time when the payment was updated last time. Notation as defined by RFC 3339, section 5.6, for example, 2017-07-21T17:32:28Z.
  - `status` string, required
  - `fees` Fees: `payer` is the total fee carried by the payer. `recipient` is the total fee carried by the recipient.
    - `payer` Amount
      - `currency` string, iso-4217, required
      - `value` integer, required: Amounts are always in the smallest currency unit. Example: 1000.23 EUR is represented as 100023 euro cents.
    - `recipient` Amount
      - `currency` string, iso-4217, required
      - `value` integer, required: Amounts are always in the smallest currency unit. Example: 1000.23 EUR is represented as 100023 euro cents.
  - `exchange_rate` ExchangeRateInstance: `source_amount` represents a value in the currency **from** which the exchange is made. `target_amount` represents a value in the currency **to** which the exchange is made. For example 10 EUR (`source_amount`) converted **to** GBP will result in 8 GBP (`target_amount`).
    - `id` string, uuid
    - `source_amount` Amount
      - `currency` string, iso-4217, required
      - `value` integer, required: Amounts are always in the smallest currency unit. Example: 1000.23 EUR is represented as 100023 euro cents.
    - `target_amount` Amount
      - `currency` string, iso-4217, required
      - `value` integer, required: Amounts are always in the smallest currency unit. Example: 1000.23 EUR is represented as 100023 euro cents.
    - `expiration_date` string, date-time: Exchange rate is valid until this date and time.
  - `recipient_id` string, uuid: Id of the recipient used for this payment. If `recipient_id` was provided for the `PaymentRequest` then its value is returned unchanged. If new recipient information was provided then this field will contain the ID under which the new recipient information has been stored.
  - `payment_instrument_id` string, uuid: Id of the payment instrument used for this payment. If `payment_instrument_id` was provided for the `PaymentRequest` then its value is returned unchanged. If new payment instrument information was provided then this field will contain the ID under which the new payment instrument has been stored.
  - `code` string: Decline or error code as received from the payment provider or Payall. Only present when the payment was declined.
  - `decline_issuer` string: Entity that issued the decline: `PAYALL` for internal failures, the service provider name for external failures.
  - `auto_confirmed` boolean: Whether the payment was confirmed automatically right after creation. `true` if the caller holds the auto-confirm scope. `false` if the payment was instead parked at `PendingConfirmation`, awaiting an explicit confirm call.
  - `error` ErrorResponse
    - `code` string
    - `message` string
    - `trace_id` string, uuid
    - `details` unknown

## Other responses

- `400`: BAD REQUEST This response will be sent if request is invalid.
- `409`: CONFLICT This response will be sent if conflicting fields have been submitted. Please refer to `PaymentRequest` schema for more information about potential conflicts.

---

[API](https://skmtc.dev/payall/apis/payall-m2m-authentication-api.md) - [All operations](https://skmtc.dev/payall/apis/payall-m2m-authentication-api/llms.txt) - [OpenAPI document](https://skmtc.dev/payall/apis/payall-m2m-authentication-api/revisions/5f561eccd6ce?raw)
