Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: Yapily Beneficiaries Application Beneficiaries Payments API
description: Application and User Beneficiaries endpoints for managing reusable payment counterparties.
version: 12.4.0
contact:
name: Yapily Support
url: https://docs.yapily.com/resources/support
email: support@yapily.com
servers:
- url: https://api.yapily.com
security:
- basicAuth: []
tags:
- description: In order to make a Payment on behalf of a user, you are required to request an [Authorisation](#tag/Authorisations) from the user to authorise the user's account to make the payment from. Once a `consent-token` is obtained, you can call the necessary Payments endpoint(s) to execute a payment.
name: Payments
paths:
/bulk-payments:
post:
description: "Creates a bulk payment after obtaining the user's authorisation. \n\nFeature: `CREATE_BULK_PAYMENT`"
operationId: createBulkPayment
parameters:
- description: __Mandatory__. The `consent-token` containing the user's authorisation to make the request.
example: '{consentToken}'
in: header
name: consent
required: true
schema:
type: string
- description: "__Conditional__. Represents the user's login ID for the `Institution` to a personal account. \n\nSee [PSU identifiers](/open-banking-flow/user-authorisation/psu-identifiers) to see if this header is required."
in: header
name: psu-id
required: false
schema:
type: string
- description: "__Conditional__. Represents the user's login ID for the `Institution` to a business account. \n\nSee [PSU identifiers](/open-banking-flow/user-authorisation/psu-identifiers) to see if this header is required."
in: header
name: psu-corporate-id
required: false
schema:
type: string
- description: "__Conditional__. The IP address of the PSU. \n\nSee [PSU identifiers](/open-banking-flow/user-authorisation/psu-identifiers) to see if this header is required."
in: header
name: psu-ip-address
required: false
schema:
type: string
requestBody:
content:
application/json;charset=UTF-8:
examples:
UK Bulk Payment Example Request:
$ref: '#/components/examples/uk-bulk-payment-example-request'
schema:
$ref: '#/components/schemas/SubmitBulkPaymentRequest'
required: true
responses:
'201':
content:
application/json;charset=UTF-8:
examples:
UK Bulk Payment Example Response:
$ref: '#/components/examples/uk-bulk-payment-example-response'
schema:
$ref: '#/components/schemas/ApiResponseOfCreateBulkPaymentRequest'
description: Created
default:
content:
application/json;charset=UTF-8:
examples:
Error Response:
$ref: '#/components/examples/error-response-code-401'
schema:
$ref: '#/components/schemas/ApiResponseError'
description: Error Response
summary: Create Bulk Payment
tags:
- Payments
x-mint:
content: '<Info>Learn more: [Bulk Payments Overview](/payments/bulk-payments/overview)</Info>'
/bulk-payments/{bulkPaymentId}:
get:
description: Returns the bulk file status of the bulk payment for given bulkPaymentId
summary: Get Bulk Payment File Status
tags:
- Payments
operationId: getBulkPaymentStatus
parameters:
- schema:
type: string
in: header
name: consent
description: __Mandatory__. The `consent token` containing the user's authorisation to make the request.
required: true
- schema:
type: string
in: path
name: bulkPaymentId
description: __Mandatory__. Bulk payment id returned when bulk payment request was submitted.
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
meta:
type: object
properties:
tracingId:
type: string
data:
type: object
properties:
id:
description: Unique identifier of the Bulk Payment
type: string
consentId:
description: Identification of the consent.
type: string
statusDetails:
type: object
properties:
status:
type: string
description: 'Bulk file status. Enum: `COMPLETED` `PENDING` `FAILED` `UNKNOWN`
These values are subject to change.'
updatedAt:
type: string
format: date-time
createdAt:
type: string
format: date-time
examples:
Successful 200 OK:
value:
meta:
tracingId: 27b47dca-fb0f-4448-b470-1cd2d5516d0f
data:
id: 76ad88c7-6e99-4a16-a277-e428a73d1e86
consentId: 5daeb980-5ff5-49db-b7a0-e93dd9c93533
statusDetails:
status: COMPLETED
updatedAt: '2024-07-25T18:14:52.672Z'
createdAt: '2024-07-25T18:14:52.672Z'
'400':
description: Required parameter missing or invalid
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ApiErrorResponseV2'
examples:
Example-1:
$ref: '#/components/examples/400-error-response'
'401':
description: Authentication Error
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ApiErrorResponseV2'
examples:
Example-1:
$ref: '#/components/examples/401-error-response'
'404':
description: Bulk payment not found for provided id
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ApiErrorResponseV2'
examples:
Example-1:
$ref: '#/components/examples/404-error-response'
'500':
description: An unexpected error occurred.
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ApiErrorResponseV2'
examples:
Example-1:
$ref: '#/components/examples/500-error-response'
x-mint:
content: '<Info>Learn more: [Bulk Payment Status Monitoring](/payments/bulk-payments/additional-information#bulk-payment-status-and-monitoring)</Info>'
/bulk-payments/{bulkPaymentId}/details:
get:
description: "Retrieve details of each payment submitted for a given bulkPaymentId. \n\nFeature: `EXISTING_BULK_PAYMENT_DETAILS`"
operationId: getBulkPaymentDetailsById
summary: Get Bulk Payment Status Details
tags:
- Payments
parameters:
- schema:
type: string
in: header
name: consent
description: __Mandatory__. The `consent token` containing the user's authorisation to make the request.
required: true
- schema:
type: string
in: path
name: bulkPaymentId
description: __Mandatory__. Bulk payment id returned when bulk payment request was submitted
required: true
responses:
'200':
description: OK
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/BulkPaymentDetailsResponse'
examples:
Successful 200 OK:
$ref: '#/components/examples/bulk-payment-details-by-id-response'
'400':
description: Required parameter missing or invalid
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ApiErrorResponseV2'
examples:
Example-1:
$ref: '#/components/examples/400-error-response'
'401':
description: Authentication Error
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ApiErrorResponseV2'
examples:
Example-1:
$ref: '#/components/examples/401-error-response'
'404':
description: Bulk payment not found for provided id
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ApiErrorResponseV2'
examples:
Example-1:
$ref: '#/components/examples/404-error-response'
'500':
description: An unexpected error occurred.
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ApiErrorResponseV2'
examples:
Example-1:
$ref: '#/components/examples/500-error-response'
/payments:
post:
description: "Creates a payment after obtaining the user's authorisation. \n\nFeatures:\n\n- `CREATE_DOMESTIC_PERIODIC_PAYMENT`\n- `CREATE_DOMESTIC_SCHEDULED_PAYMENT`\n- `CREATE_DOMESTIC_SINGLE_INSTANT_PAYMENT`\n- `CREATE_DOMESTIC_SINGLE_PAYMENT`\n- `CREATE_INTERNATIONAL_PERIODIC_PAYMENT`\n- `CREATE_INTERNATIONAL_SCHEDULED_PAYMENT`\n- `CREATE_INTERNATIONAL_SINGLE_PAYMENT`"
operationId: createPayment
parameters:
- description: __Mandatory__. The `consent-token` containing the user's authorisation to make the request.
example: '{consentToken}'
in: header
name: consent
required: true
schema:
type: string
- description: "__Conditional__. Represents the user's login ID for the `Institution` to a personal account. \n\nSee [PSU identifiers](/open-banking-flow/user-authorisation/psu-identifiers) to see if this header is required."
in: header
name: psu-id
required: false
schema:
title: User Id
type: string
- description: "__Conditional__. Represents the user's login ID for the `Institution` to a business account. \n\nSee [PSU identifiers](/open-banking-flow/user-authorisation/psu-identifiers) to see if this header is required."
in: header
name: psu-corporate-id
required: false
schema:
title: Corporate User Id
type: string
- description: "__Conditional__. The IP address of the PSU. \n\nSee [PSU identifiers](/open-banking-flow/user-authorisation/psu-identifiers) to see if this header is required."
in: header
name: psu-ip-address
required: false
schema:
title: User IP Address
type: string
- $ref: '#/components/parameters/SubAppHeader'
requestBody:
content:
application/json;charset=UTF-8:
examples:
EUR Domestic Single Payment Example Request:
$ref: '#/components/examples/eur-domestic-single-payment-example-request'
GBP Domestic Single Payment Example Request:
$ref: '#/components/examples/gbp-domestic-single-payment-example-request'
schema:
$ref: '#/components/schemas/PaymentRequest'
required: true
responses:
'201':
content:
application/json;charset=UTF-8:
examples:
EUR Domestic Single Payment Example Response:
$ref: '#/components/examples/eur-domestic-single-payment-example-response'
GBP Domestic Single Payment Example Response:
$ref: '#/components/examples/gbp-domestic-single-payment-example-response'
schema:
$ref: '#/components/schemas/ApiResponseOfPaymentResponse'
description: Created
default:
content:
application/json;charset=UTF-8:
examples:
Error Response:
$ref: '#/components/examples/error-response-code-401'
schema:
$ref: '#/components/schemas/ApiResponseError'
description: Error Response
summary: Create Payment
tags:
- Payments
x-mint:
content: '<Info>Learn more: [Payment Types](/payments/payment-resources/intro-to-payment-execution#payment-types) - This endpoint supports 7 payment types (single, periodic, scheduled, international)</Info>'
/payments/{paymentId}/details:
get:
description: "Returns the details of a payment. \n\nMost commonly used to check for payment status updates. \n\nFeature: `EXISTING_PAYMENTS_DETAILS`"
operationId: getPayments
parameters:
- description: __Mandatory__. The payment Id of the payment.
in: path
name: paymentId
required: true
schema:
type: string
- description: __Mandatory__. The `consent-token` containing the user's authorisation to make the request.
example: '{consentToken}'
in: header
name: consent
required: true
schema:
type: string
- description: "__Conditional__. Represents the user's login ID for the `Institution` to a personal account. \n\nSee [PSU identifiers](/open-banking-flow/user-authorisation/psu-identifiers) to see if this header is required."
in: header
name: psu-id
required: false
schema:
title: User Id
type: string
- description: "__Conditional__. Represents the user's login ID for the `Institution` to a business account. \n\nSee [PSU identifiers](/open-banking-flow/user-authorisation/psu-identifiers) to see if this header is required."
in: header
name: psu-corporate-id
required: false
schema:
title: Corporate User Id
type: string
- description: "__Conditional__. The IP address of the PSU. \n\nSee [PSU identifiers](/open-banking-flow/user-authorisation/psu-identifiers) to see if this header is required."
in: header
name: psu-ip-address
required: false
schema:
title: User IP Address
type: string
- $ref: '#/components/parameters/SubAppHeader'
responses:
'200':
content:
application/json;charset=UTF-8:
examples:
EUR Single Domestic Payment Example Response:
$ref: '#/components/examples/eur-single-domestic-payment-details-example-response'
GBP Single Domestic Payment Example Response:
$ref: '#/components/examples/gbp-single-domestic-payment-details-example-response'
UK Bulk Payment Example Response:
$ref: '#/components/examples/uk-bulk-payment-details-example-response'
schema:
$ref: '#/components/schemas/ApiResponseOfPaymentResponses'
description: Ok
default:
content:
application/json;charset=UTF-8:
examples:
Error Response:
$ref: '#/components/examples/error-response-code-401'
schema:
$ref: '#/components/schemas/ApiResponseError'
description: Error Response
summary: Get Payment Details
tags:
- Payments
x-mint:
content: '<Info>Learn more: [Payment Status Lifecycle](/payments/payment-resources/payment-status) for monitoring payment execution</Info>'
components:
schemas:
Payer:
title: Payer Details
required:
- accountIdentifications
type: object
properties:
name:
title: Payer Name
type: string
description: The account holder name of the Payer.
example: John Doe
accountIdentifications:
uniqueItems: true
type: array
description: __Mandatory__. The account identifications that identify the `Payer` bank account.
items:
$ref: '#/components/schemas/AccountIdentification'
address:
$ref: '#/components/schemas/Address'
description: __Conditional__. Details of the benefactor [person or business].
PriorityCodeEnum:
type: string
enum:
- NORMAL
- URGENT
InternationalPaymentRequest:
required:
- currencyOfTransfer
type: object
properties:
currencyOfTransfer:
type: string
description: __Mandatory__. The currency to be transferred to the payee. This may differ from the currency the payment is denoted in and the currency of the payer's account. Specified as a 3-letter code (ISO 4217).
exchangeRateInformation:
$ref: '#/components/schemas/ExchangeRateInformation'
purpose:
type: string
description: __Optional__. Used to indicate the external purpose as a [ISO20022 purpose code](https://www.rba.hr/documents/20182/183267/External+purpose+codes+list/8a28f888-1f83-5e29-d6ed-fce05f428689?version=1.1) value.
priority:
$ref: '#/components/schemas/PriorityCodeEnum'
chargeBearer:
$ref: '#/components/schemas/ChargeBearerType'
description: "__Conditional__. Used to specify properties to define an international payment. \n\nMust be specified when the payment `type` is one of the following:\n\n- `INTERNATIONAL_SINGLE_PAYMENT`\n- `INTERNATIONAL_SCHEDULED_PAYMENT`\n- `INTERNATIONAL_PERIODIC_PAYMENT`"
ApiResponseOfPaymentResponses:
type: object
properties:
meta:
$ref: '#/components/schemas/ResponseMeta'
data:
$ref: '#/components/schemas/PaymentResponses'
links:
type: object
additionalProperties:
type: string
forwardedData:
type: array
items:
$ref: '#/components/schemas/ResponseForwardedData'
raw:
deprecated: true
type: array
items:
$ref: '#/components/schemas/RawResponse'
tracingId:
type: string
writeOnly: true
ApiResponseOfCreateBulkPaymentRequest:
type: object
properties:
meta:
$ref: '#/components/schemas/ResponseMeta'
data:
$ref: '#/components/schemas/BulkPaymentResponse'
links:
type: object
additionalProperties:
type: string
forwardedData:
type: array
items:
$ref: '#/components/schemas/ResponseForwardedData'
raw:
deprecated: true
type: array
items:
$ref: '#/components/schemas/RawResponse'
tracingId:
type: string
writeOnly: true
PaymentPurposeCode:
title: Payment Purpose Code
type: string
description: "__Optional__. The payment purpose code. \n\nAllowed values: INTP, DEPT, BEXP, LICF, SERV, SUPP, TRAD, SUBS, GDSV, ROYA, COMT, CHAR, ECPR, CLPR, INTE, LOAN, LOAR, INPC, INPR, INSC, INSU, LIFI, PPTI, HLRP, HLST, PDEP, IVPT, REBT, REFU, CDBL, CPKC, EDUC, FEES, GAMB, LOTT, GIFT, INSM, REOD, GOVT, TCSC, BLDM, RENT, DIVD, INVS, SAVG, HLTI, DNTS, LTCF, MDCS, VIEW, BECH, BENE, SSBE, PEFC, PENS, ADCS, BONU, COMM, SALA, ESTX, HSTX, INTX, PTXP, RDTX, TAXS, VATX, WHLD, TAXR, CBTV, ELEC, GASB, PHON, UBIL, WTER . \n\nSee [Payment Purpose code](/getting-started/application-management#payment-purpose-code-and-user-groups) to see the definition of each code"
AccountIdentification:
title: Account Identifications
required:
- type
- identification
type: object
properties:
type:
$ref: '#/components/schemas/AccountIdentificationType'
identification:
title: Account Identification
type: string
description: "__Mandatory__. The value associated with the account identification type.\n\n See [Account Identification Combinations](/payments/payment-resources/intro-to-payment-execution#account-identifications-combinations) for more information on the format of the values."
example: '401016'
RawResponse:
deprecated: true
type: object
description: '[DEPRECATED] Interaction (raw request and response) that occurred with the `Institution` in order to fulfil a request.'
properties:
request:
$ref: '#/components/schemas/RawRequest'
duration:
type: string
format: iso8601
headers:
type: object
additionalProperties:
type: string
resultCode:
type: integer
format: int32
result:
type: object
SubmitBulkPaymentRequest:
required:
- payments
type: object
properties:
idempotencyId:
type: string
minLength: 1
maxLength: 40
pattern: ^\S{1,40}$
description: __Optional__. An alphanumeric string (1-40 chars) used for idempotency. Unique per consent ID for 24 hours. Prevents duplicate bulk file payment submissions.
example: 1cc3e60d-5500-42be-aaeb-3c5e2f5ed048
payments:
type: array
description: __Mandatory__. The array of `PaymentRequest` objects to initiate in the bulk payment.
items:
$ref: '#/components/schemas/PaymentRequest'
originatorIdentificationNumber:
type: string
description: '__Conditional__. The identification number of the originator.
- Mandatory for AIB bulk payments'
executionDateTime:
type: string
description: __Optional__. Used to schedule the bulk payment to be executed at a future date if supported by the `Institution`. This value must fall on the same calendar day as the `executionDateTime` provided in the consent/authorisation phase. If the dates do not match, the bulk file payment will fail.
format: date-time
description: The payment request object defining the details of the bulk payment
ApiErrorResponseV2:
type: object
description: API Error Response
properties:
error:
required:
- tracingId
- code
- status
- issues
type: object
properties:
tracingId:
type: string
description: Unique identifier of the request, used by Yapily for support purposes
code:
type: integer
format: int32
description: Numeric HTTP status code associated with the error
status:
type: string
description: Textual description of the HTTP status
supportUrl:
type: string
description: Link to where further information regarding the error can be found
source:
type: string
description: Source of the error. This may be YAPILY, the INSTITUTION, or the USER
issues:
type: array
description: List of issues relating to the error
items:
required:
- message
- code
type: object
description: Detailed information regarding the issue that was experienced during processing of the request
properties:
type:
type: string
description: Category of the issue
code:
type: string
description: 5 digit Error Code that uniquely identifies the type of issue, for full list of error codes pelase check our documentation
message:
type: string
description: Human readable description of the issue that was experienced
PaymentStatus:
type: string
description: "The status of the Payment. \n\nFor more information, see [Payment Status](/guides/payments/payment-status/)"
enum:
- PENDING
- FAILED
- DECLINED
- COMPLETED
- COMPLETED_SETTLEMENT_IN_PROCESS
- EXPIRED
- UNKNOWN
- ACTIVE
- INACTIVE
ExchangeRateInformationResponse:
required:
- rateType
- unitCurrency
type: object
properties:
unitCurrency:
type: string
description: __Mandatory__. The currency in which the rate of exchange is expressed in a currency exchange. In the example 1GBP = xxxCUR, the unit currency is `GBP`.
rate:
type: number
description: __Optional__. The factor used for conversion of an amount from one currency to another. This reflects the price at which one currency was bought with another currency.
rateType:
$ref: '#/components/schemas/RateTypeEnum'
foreignExchangeContractReference:
type: string
description: __Optional__. The unique and unambiguous reference to the foreign exchange contract agreed between the initiating party/creditor and the debtor agent.
exchangeRateExpiryDate:
type: string
format: date-time
PaymentRequest:
required:
- amount
- payee
- paymentIdempotencyId
- type
type: object
properties:
paymentIdempotencyId:
title: Idempotency Id
type: string
description: __Mandatory__. A unique identifier that you must provide to identify the payment. This can be any alpha-numeric string but is limited to a maximum of 35 characters.
example: 04ab4536gaerfc0e1f93c4f4
payer:
$ref: '#/components/schemas/Payer'
reference:
title: Payment Reference
type: string
description: __Optional__. The payment reference or description. Limited to a maximum of 18 characters long.
example: Bill payment
contextType:
$ref: '#/components/schemas/PaymentContextType'
purposeCode:
$ref: '#/components/schemas/PaymentPurposeCode'
type:
$ref: '#/components/schemas/PaymentType'
payee:
$ref: '#/components/schemas/Payee'
periodicPayment:
$ref: '#/components/schemas/PeriodicPaymentRequest'
internationalPayment:
$ref: '#/components/schemas/InternationalPaymentRequest'
amount:
$ref: '#/components/schemas/Amount'
paymentDateTime:
title: Payment Date
type: string
description: '__Conditional__. Used to specify the date of the payment when the payment type is one of the following:
- `DOMESTIC_SCHEDULED_PAYMENT`
- `DOMESTIC_PERIODIC_PAYMENT`
- `INTERNATIONAL_SCHEDULED_PAYMENT`
- `INTERNATIONAL_PERIODIC_PAYMENT`'
format: date-time
example: '2021-07-21T17:32:28Z'
readRefundAccount:
title: Read Refund Account
type: boolean
description: '__Optional__. Used to request the payer details in the payment response when the `Institution` provides the feature `READ_DOMESTIC_SINGLE_REFUND`.
See [Reverse Payments](/payments/payment-resources/reverse-payments) for more information.'
example: false
description: __Mandatory__. The payment request object defining the details of the payment.
ApiResponseOfPaymentResponse:
type: object
properties:
meta:
$ref: '#/components/schemas/ResponseMeta'
data:
$ref: '#/components/schemas/PaymentResponse'
links:
type: object
additionalProperties:
type: string
forwardedData:
type: array
items:
$ref: '#/components/schemas/ResponseForwardedData'
raw:
deprecated: true
type: array
items:
$ref: '#/components/schemas/RawResponse'
tracingId:
type: string
writeOnly: true
ChargeBearerType:
type: string
description: '__Conditional__. Depending on the bank and payment type for international Euro payments. The field ChargeBearer specifies which party/parties will bear the charges associated with the processing of the payment transaction. Valid values are:
- `DEBT` - All transaction charges are to be borne by the debtor.
- `CRED` - All transaction charges are to be borne by the creditor.
- `SHAR` - In a credit transfer context, means that transaction charges on the sender side are to be borne by the debtor, transaction charges on the receiver side are to be borne by the creditor
- `SLEV` - Charges are to be applied following the rules agreed in the service level and/or scheme.'
enum:
- DEBT
- CRED
- SHAR
- SLEV
RefundAccount:
type: object
description: The account to which funds should be returned if the payment is to be later refunded.
properties:
name:
type: string
accountIdentifications:
uniqueItems: true
type: array
items:
$ref: '#/components/schemas/AccountIdentification'
BulkPaymentIndividualStatus:
type: object
required:
- id
- status
properties:
id:
type: string
description: __Mandatory__. Unique identifier of the individual payment.
status:
$ref: '#/components/schemas/PaymentStatus'
statusDetails:
type: object
title: BulkPaymentIndividualStatusDetails
description: __Conditional__. Details regarding the status of an individual payment within a bulk request. This object is conditionally returned, typically when the status is not `COMPLETED`.
properties:
code:
type: string
description: __Conditional__. The unique 4-digit error code identifying the specific issue. Refer to the official documentation for a comprehensive list of error codes
reason:
type: string
description: __Optional__. A human-readable description providing additional context or the specific error message encountered.
required:
- code
BulkPaymentStatusDetails:
type: object
properties:
status:
$ref: '#/components/schemas/PaymentStatus'
statusReason:
type: string
statusReasonDescription:
type: string
statusUpdateDate:
type: string
format: date-time
multiAuthorisationStatus:
$ref: '#/components/schemas/MultiAuthorisation'
isoStatus:
type: object
description: The Institution's status for this Bulk Payment.
properties:
code:
type: string
description: The Institution's status code for this Bulk Payment. It will often be a 3-letter ISO 20022 status code, but it may also contain other values.
example: ACSP
name:
type: string
description: The full name for the status code, provided only when it is a valid ISO 20022 status code.
example: AcceptedSettlementInProcess
PaymentResponses:
type: object
properties:
payments:
type: array
items:
$ref: '#/components/schemas/PaymentResponse'
PaymentStatusDetails:
type: object
properties:
status:
$ref: '#/components/schemas/PaymentStatus'
statusReason:
type: string
statusReasonDescription:
type: string
statusUpdateDate:
type: string
format: date-time
multi
# --- truncated at 32 KB (102 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/yapily/refs/heads/main/openapi/yapily-payments-api-openapi.yml