---
title: "Create a payment instrument"
method: POST
path: "/v2/payment-instruments"
tags: ["Payments instruments"]
---

# Create a payment instrument

`POST /v2/payment-instruments`

## Request

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

## Request body

- union
  - MobileWalletCreate: Abstract class. Use it's implementations instead.
    - `id` string, uuid
    - `recipient_id` string, uuid, required: ID of an existing recipient that this instrument belongs to. It is required for new payment instrument creation.
    - `category` 'BankAccount' | 'MobileWallet' | 'CashPickup' | 'Card', required
    - `currency` string
    - `mobile_number` string, required
    - `phone_operator` string
    - `country` string: If a country is provided, pre-validation of the request is performed.
  - BankAccountCreate: Abstract class. Use it's implementations instead.
    - `id` string, uuid
    - `recipient_id` string, uuid, required: ID of an existing recipient that this instrument belongs to. It is required for new payment instrument creation.
    - `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` 'checking' | 'ordinary' | 'savings': Beneficiary bank account type
    - `account_name` string
    - `urgency_flag_preference` string
    - `country` string: If a country is provided, pre-validation of the request is performed.
  - CashPickupCreate: Abstract class. Use it's implementations instead.
    - `id` string, uuid
    - `recipient_id` string, uuid, required: ID of an existing recipient that this instrument belongs to. It is required for new payment instrument creation.
    - `category` 'BankAccount' | 'MobileWallet' | 'CashPickup' | 'Card', required
    - `currency` string
    - `service_provider_name` string
    - `first_name` string
    - `last_name` string
  - CardCreate: Abstract class. Use it's implementations instead.
    - `id` string, uuid
    - `recipient_id` string, uuid, required: ID of an existing recipient that this instrument belongs to. It is required for new payment instrument creation.
    - `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.
    - `country` string: If a country is provided, pre-validation of the request is performed.

## Response `201`

Created

- object
  - `id` string, uuid: ID of the newly created payment instrument.

## Other responses

- `303`: Identical payment instrument already exists. See the returned ID.

---

[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)
