openapi: 3.0.0
servers:
- url: https://api.monoova.com
description: Production URL#
- url: https://sand-api.monoova.com
description: Sandbox URL
info:
description: |
# Introduction
The Monoova PayTo API is designed to efficiently handle real time financial transactions, providing a reliable platform for creating payment agreements and initiating payments. It offers a streamlined transaction process, ensuring speed and security for businesses and users with benefits above and beyond a direct debit alternative.
Monoova's PayTo API supports synchronous and asynchronous operations, allowing flexible integration based on varying business needs. The asynchronous API option is particularly beneficial for handling batch operations requiring extended processing time, enhancing overall system performance and reliability. Additionally, Monoova provides webhook subscriptions, enabling users to receive timely updates and notifications about transaction events, which helps maintain transparency and control over financial activities.
## Process
PayTo allows you to debit an enabled domestic bank account in real time.
* First, you create a **payment agreement** between a payer and a payee. The terms of the agreement determine the amount and schedule of allowed debits. When you create a Payment Agreement, the account is validated in real time, so you can ensure the account details are correct.
* Next, the payer authorises the agreement through their banking app.
* Finally, real time **payment initiations** can be triggered. If successful, funds will be credited to the payee account in real time and made available for disbursement. Because recipients can access funds faster than traditional direct debit systems, this is particularly beneficial for businesses or individuals relying on prompt cash flow payments.
* If you would like to modify the terms of the agreement, you can use the amendment API's.
# Getting Started
1. Access the Domestic Payments Portal:
* Sandbox Environment:
- Register: If you are new, [register](https://sandbox.monoova.com) to gain Sandbox access.
- Login: If you already have Sandbox credentials, [log in](https://sandbox.monoova.com) to continue your work.
* Production Environment:
- Login: Login to the [Production portal](https://payments.monoova.com) using the credentials you obtained during onboarding.
2. Activate Your API Key
* Generate API Key:
- If you do not know your API Key or need to reset it, navigate to Manage > Accounts to generate or regenerate your API Key after logging into the portal.
* Activate API Gateway Access:
- Go to Manage > API Gateway and enter your API Key to activate API Gateway access for your mAccount.
3. Configure API Access
Please [contact our integration team](https://www.monoova.com/contact) to configure your account settings. This step ensures that your account is allowed to access the service.
4. Explore API Endpoints
Use the API documentation to plan your integration. It provides details and examples of usage.
5. Onboarding and Support
Our integration team will guide you from the initial setup to the final running implementation, providing support throughout the process.
# Sandbox Testing for PayTo Agreements
In the Sandbox environment, it is possible to test different outcomes for PayTo agreements by altering the values of the agreement. This allows for a comprehensive evaluation of potential scenarios in a controlled setting.
## Use the following payment details when testing in Sandbox:
<style type="text/css">
.tb { table-layout:auto; width:300px;!important }
.td { overflow:hidden; white-space:nowrap; text-overflow:ellipsis!important}
</style>
<table class="tb">
<tr>
<th>Account Name</th>
<th>BSB</th>
<th>Account Number</th>
<th>PayID</th>
</tr>
<tr>
<td class="td">Monoova Sample 1</td>
<td class="td">802950</td>
<td class="td">22090100</td>
<td class="td">+61-422020901</td>
</tr>
<tr>
<td class="td">Monoova Sample 2</td>
<td class="td">802950</td>
<td class="td">22090101</td>
<td class="td">sample@monoova.com</td>
</tr>
<tr>
<td class="td">Monoova Sample 3</td>
<td class="td">802950</td>
<td class="td">22090102</td>
<td class="td">38126015228</td>
</tr>
<tr>
<td class="td">Monoova Sample 4</td>
<td class="td">802950</td>
<td class="td">22090103</td>
<td class="td">987654321</td>
</tr>
</table>
## Testing Payment Agreements
Payment agreements are automatically approved or declined in the Sandbox environment, depending on the amount or `maxAmount` included in the agreement request. If both `amount` or `maxAmount` are passed, the `amount` will determine the behavior.
For basic testing of Payment Agreements, the following test cases are recommended. A more comprehensive list of test cases is available should you wish to examine edge cases.
</br></br>
### Response for Payment Agreements
<style type="text/css">
.tb { table-layout:auto; width:300px;!important }
.td { overflow:hidden; white-space:nowrap; text-overflow:ellipsis!important}
</style>
<table class="tb">
<tr>
<th>Response</th>
<th>Reason Code</th>
<th>Contains Value</th>
<th>Example</th>
<th>Action</th>
</tr>
<tr>
<td class="td">Agreement Approved</td>
<td class="td">-</td>
<td class="td">.00</td>
<td class="td">$5.00, $10.00, $50.00</td>
<td class="td">Approve</td>
</tr>
<tr>
<td class="td">Requested By Customer</td>
<td class="td">M019</td>
<td class="td">.19</td>
<td class="td">$5.19, $10.19, $50.19</td>
<td class="td">Decline</td>
</tr>
</table>
### Other Test Cases
<style type="text/css">
.tb { table-layout:auto; width:300px;!important }
.td { overflow:hidden; white-space:nowrap; text-overflow:ellipsis!important}
</style>
<table class="tb">
<tr>
<th>Response</th>
<th>Reason Code</th>
<th>Contains Value</th>
<th>Example</th>
<th>Action</th>
</tr>
<tr>
<td class="td">Invalid Debtor Account Number</td>
<td class="td">M001</td>
<td class="td">.01</td>
<td class="td">$5.01, $10.01, $50.01</td>
<td class="td">Decline</td>
</tr>
<tr>
<td class="td">Closed Debtor Account Number</td>
<td class="td">M003</td>
<td class="td">.03</td>
<td class="td">$5.03, $10.03, $50.03</td>
<td class="td">Decline</td>
</tr>
<tr>
<td class="td">Blocked Account</td>
<td class="td">M004</td>
<td class="td">.04</td>
<td class="td">$5.04, $10.04, $50.04</td>
<td class="td">Decline</td>
</tr>
<tr>
<td class="td">Invalid Debtor Account Type</td>
<td class="td">M005</td>
<td class="td">.05</td>
<td class="td">$5.05, $10.05, $50.05</td>
<td class="td">Decline</td>
</tr>
<tr>
<td class="td">Transaction Forbidden</td>
<td class="td">M006</td>
<td class="td">.06</td>
<td class="td">$5.06, $10.06, $50.06</td>
<td class="td">Decline</td>
</tr>
<tr>
<td class="td">Transaction Not Supported</td>
<td class="td">M007</td>
<td class="td">.07</td>
<td class="td">$5.07, $10.07, $50.07</td>
<td class="td">Decline</td>
</tr>
<tr>
<td class="td">Not Allowed Currency</td>
<td class="td">M008</td>
<td class="td">.08</td>
<td class="td">$5.08, $10.08, $50.08</td>
<td class="td">Decline</td>
</tr>
<tr>
<td class="td">Invalid Amount</td>
<td class="td">M009</td>
<td class="td">.09</td>
<td class="td">$5.09, $10.09, $50.09</td>
<td class="td">Decline</td>
</tr>
<tr>
<td class="td">Amount Exceeds Agreed Limit</td>
<td class="td">M010</td>
<td class="td">.10</td>
<td class="td">$5.10, $10.10, $50.10</td>
<td class="td">Decline</td>
</tr>
<tr>
<td class="td">No Mandate Service On Customer</td>
<td class="td">M018</td>
<td class="td">.18</td>
<td class="td">$5.18, $10.18, $50.18</td>
<td class="td">Decline</td>
</tr>
<tr>
<td class="td">Mandate Cancelled Due To Fraud</td>
<td class="td">M022</td>
<td class="td">.22</td>
<td class="td">$5.22, $10.22, $50.22</td>
<td class="td">Decline</td>
</tr>
<tr>
<td class="td">No Answer From Customer</td>
<td class="td">M027</td>
<td class="td">.27</td>
<td class="td">$5.27, $10.27, $50.27</td>
<td class="td">Decline</td>
</tr>
<tr>
<td class="td">Regulatory Reason</td>
<td class="td">M028</td>
<td class="td">.28</td>
<td class="td">$5.28, $10.28, $50.28</td>
<td class="td">Decline</td>
</tr>
<tr>
<td class="td">Creditor not on Whitelist of Debtor</td>
<td class="td">M030</td>
<td class="td">.30</td>
<td class="td">$5.30, $10.30, $50.30</td>
<td class="td">Decline</td>
</tr>
<tr>
<td class="td">Creditor on Blacklist of Debtor</td>
<td class="td">M031</td>
<td class="td">.31</td>
<td class="td">$5.31, $10.31, $50.31</td>
<td class="td">Decline</td>
</tr>
<tr>
<td class="td">Unknown end Customer</td>
<td class="td">M032</td>
<td class="td">.32</td>
<td class="td">$5.32, $10.32, $50.32</td>
<td class="td">Decline</td>
</tr>
</table>
<br/>
In addition to a sample request, the scheme for each endpoint and associated data tables are in the appendix at the end of this document.
To try out our API, you can use a client such as [Postman](https://www.getpostman.com).
You can download a postman collection of our API by clicking the link below:
[](https://god.gw.postman.com/run-collection/19891519-fccdc471-7f26-4f4c-bba7-4e0dda5ab9e3?action=collection%2Ffork&source=rip_markdown&collection-url=entityId%3D19891519-fccdc471-7f26-4f4c-bba7-4e0dda5ab9e3%26entityType%3Dcollection%26workspaceId%3D0a304f49-2e6e-4498-8d43-3b68ee26aee6)
**Note:** Please note we do not accept TLS 1.0 or 1.1 connections
version: v1
title: Monoova PayTo API
contact:
name: Monoova Support
email: support@monoova.com
url: https://www.monoova.com
x-logo:
url: 'https://movdpwebsiteprodae.blob.core.windows.net/images/Monoova-Primary-Logo-Black-RGB.png'
altText: Monoova logo
tags:
- name: Manage Payment Agreements
description: Methods to handle the payment agreement lifecycle. There are 2 ways in which a payment agreement can be amended – unilaterally (no payer approval needed), and Bilaterally (payer approval required)
- name: PayTo Async API
description: |
The `AsyncResponse` is used in operations where the request is accepted, but the processing is not immediate. This response format provides information for tracking and checking the request status.
This API adheres to the Microsoft [async-request-reply pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/async-request-reply), ensuring efficient handling of non-immediate requests.
Featuring high throughput and generous rate limits, this API is optimal for bulk operations, allowing for the efficient processing of larger datasets.
</br>
### HTTP Status Code
- **202 Accepted**:
- *Description*: Indicates that the request has been accepted for processing but has not been completed.
### HTTP Headers
- **Location**:
- *Description*: Provides the URL where the client can check the status of the asynchronous operation. Clients should periodically poll this URL to retrieve the final result of the request.
- *Example*: `https://sand-api.monoova.com/...`
- **Retry-After**:
- *Description*: Suggests the number of seconds the client should wait before polling the Location URL again. This helps manage server load by preventing requests that are too frequent.
- *Example*: `10`
- name: Initiate a Payment
description: Once a payment agreement is created you can trigger payments against it
- name: Notification Management
description: All Subscriptions for mAccount
- name: Reporting
description: </br><h2>PayTo Reporting</h2>
<p>
A new report has been added specifically for NPP payments related to PayTo. Monoova’s PayTo NPP receivables – available
<a href='https://api-docs.monoova.com/payments#operation/PayToReceivablesReportDate' target='_blank'> here </a>
</p>
</br>
In addition, PayTo NPP receivables will have the following additional data fields
</br> <style type="text/css">
.tb { table-layout:auto; width:300px;!important }
.td { overflow:hidden; white-space:nowrap; text-overflow:ellipsis!important}
</style>
<table class="tb">
<tr>
<th> Field </th>
<th> Description </th>
<th> Specification </th>
</tr>
<tr>
<td class="td">
mmsId <br/>
</td>
<td class="td">
Id assigned by NPPA for payment agreement <br/>
</td>
<td class="td">
string{33} <br/>
</td>
</tr>
<tr>
<td class="td">
InitiatingPartyName <br/>
</td>
<td class="td">
Initiating Party name.. <br/>
</td>
<td class="td">
string{1, 35} <br/>
</td>
</tr>
</table>
- name: Webhooks
description: <p>
In addition to callable reporting endpoints, webhooks will also be available for state changes for payment agreements and funds received.
</p>
</br></br>
<h3>Funds received notification</h3>
<p> If Payee account is Monoova automatcher account, webhooks will be sent using a new webhook <a target='_blank' href="/payments/#operation/PayToReceivePaymentWebhook">PayToReceivePayment</a>. </p>
</br> </br>
<p> In addition to PayTo NPP receivables fields this webhook will have the following additional data fields to provide payment agreement information:</p>
</br> <style type="text/css">
.tb { table-layout:auto; width:300px;!important }
.td { overflow:hidden; white-space:nowrap; text-overflow:ellipsis!important}
</style>
<table class="tb">
<tr>
<th> Field </th>
<th> Description </th>
<th> Specification </th>
</tr>
<tr>
<td class="td">
mmsId <br/>
</td>
<td class="td">
Id assigned by NPPA for payment agreement <br/>
</td>
<td class="td">
string{33} <br/>
</td>
</tr>
<tr>
<td class="td">
InitiatingPartyName <br/>
</td>
<td class="td">
Initiating Party name.. <br/>
</td>
<td class="td">
string{1, 35} <br/>
</td>
</tr>
</table>
- name: Client Error Responses
description: <h3> Response Structure </h3> </br>
</br> <style type="text/css">
.tb { table-layout:auto; width:300px;!important }
.td { overflow:hidden; white-space:nowrap; text-overflow:ellipsis!important}
</style>
<table class="tb">
<tr>
<th> Field </th>
<th> Description </th>
<th> Comment </th>
<th> Validation </th>
</tr>
<tr><td> traceId </td><td> string </td><td> traceId for the trace logs. Currently only populated for errors. </td><td> Optional </td></tr>
<tr><td> errors[i].errorMessage </td><td> string </td><td> detailed error messages for this error instance </td><td> Optional </td></tr>
<tr><td> errors[i].errorCode </td><td> string </td><td> Monoova error code </td><td> Mandate </td></tr>
<tr><td> errors </td><td> Error[] </td><td> array of individual errors, if any. “errors” will be null or absent of no errors occur. </td><td> Optional </td></tr>
</table>
</br> </br>
<h3> Sample Response </h3>
<style type="text/css">
.tb { table-layout:auto; width:300px;!important }
.td { overflow:hidden; white-space:nowrap; text-overflow:ellipsis!important}
</style>
<table class="tb">
<tr>
<td> {</br>
"traceId": "4ea61012-2d9b-413d-a5b4-90ad69a68741",</br>
"errors": [</br>
{</br>
"errorCode": "NOS_VL_EVTNAME_REQUIRED",</br>
"errorMessage": "'eventName' must not be empty."</br>
}</br>
]</br>
}</br>
</td>
</tr>
</table>
- name: Monoova Error Codes
description: <style type="text/css">
.tb { table-layout:auto; width:300px;!important }
.td { overflow:hidden; white-space:nowrap; text-overflow:ellipsis!important}
</style>
<table class="tb">
<tr>
<th> HTTP Status </th>
<th> Error Code </th>
<th> Meaning </th>
</tr>
<tr><td>400</td><td>NOS_ACCTID_REQUIRED</td><td>maccount is required</td></tr>
<tr><td>400</td><td>NOS_DATERANGE_INVALID</td><td>End must be after Start.</td></tr>
<tr><td>400</td><td>NOS_DATERANGE_SIZE</td><td>Days between Start and End must be smaller than {0}</td></tr>
<tr><td>400</td><td>NOS_DUP_SUB_CRT_ERROR</td><td>duplicate record already exists or subscriptionId not provided</td></tr>
<tr><td>400</td><td>NOS_ENDDATE_INVALID</td><td>Invalid End</td></tr>
<tr><td>400</td><td> NOS_EVTID_REQUIRED</td><td> EventId must not be empty"</td></tr>
<tr><td>400</td><td>NOS_EVTNAME_INVALID</td><td>{0}EventName must not be empty and be one of [{1}]</td></tr>
<tr><td>400</td><td>NOS_EVTNAME_REQUIRED</td><td>{0}eventName is required</td></tr>
<tr><td>400</td><td>NOS_HEADER_REQUIRED</td><td>Header must not be empty</td></tr>
<tr><td>400</td><td>NOS_ISACTIVE_REQUIRED</td><td>{0}isActive must not be empty</td></tr>
<tr><td>400</td><td>NOS_PGNUM_INVALID</td><td>pageNumber must be greater than 0</td></tr>
<tr><td>400</td><td>NOS_PGSIZ_INVALID</td><td>pageSize must be from 1 to {0}</td></tr>
<tr><td>400</td><td>NOS_REQUEST_EMPTY</td><td>request payload is empty</td></tr>
<tr><td>400</td><td>NOS_STARTDATE_INVALID</td><td>Invalid Start</td></tr>
<tr><td>400</td><td> NOS_STS_INVALID</td><td> Status must be one of [{0}]</td></tr>
<tr><td>400</td><td>NOS_SUBID_INVALID</td><td>SubscriptionId must be a valid Guid</td></tr>
<tr><td>400</td><td>NOS_SUBID_REQUIRED</td><td>subscriptionId is required</td></tr>
<tr><td>400</td><td>NOS_SUBNAME_INVALID</td><td>{0}subscriptionName must not be empty and match {RegularExpression}</td></tr>
<tr><td>400</td><td>NOS_SUBNAME_REQUIRED</td><td>{0}subscriptionName must not be empty</td></tr>
<tr><td>400</td><td>NOS_TRACEID_REQUIRED</td><td>traceId is required</td></tr>
<tr><td>400</td><td>NOS_URL_INVALID</td><td>{0}callBackUrl must not be empty and must be a well-formed URL</td></tr>
<tr><td>400</td><td>NOS_URL_REQUIRED</td><td>{0}callBackUrl is required</td></tr>
<tr><td>400</td><td>NOS_VALIDATION_ERROR</td><td>One or more validation failures have occurred</td></tr>
<tr><td>400</td><td>NOS_WEBDTL_REQUIRED</td><td>{0}WebHookDetail is required</td></tr>
<tr><td>400</td><td>PAS_REQ_BODY_INVALID</td><td>Error parsing badly formed request message - {0}</td></tr>
<tr><td>404</td><td>NOS_EVENT_NOT_FOUND_ERROR</td><td>No webhook found for:{0}</td></tr>
<tr><td>404</td><td> NOS_SUB_NOT_FOUND_ERROR</td><td> SubscriptionId {0} is not found"</td></tr>
<tr><td>500</td><td>NOS_DEL_SUB_ERROR</td><td>Document deleted {0}. Expected exactly 1 subscription deletion.</td></tr>
<tr><td>500</td><td>NOS_DUP_SUB_UPD_ERROR</td><td>duplicate records exist for subscriptionId {0}</td></tr>
<tr><td>500</td><td>NOS_UNEXPECTED_ERROR</td><td>An unexpected exception occurred</td></tr>
<tr><td>500</td><td>NOS_UPD_SUB_ERROR</td><td>Document modified {0}. Expected exactly 1 subscription updated.</td></tr>
<tr><td>400</td><td>PAM_ACCTID_REQUIRED</td><td>maccount is required</td></tr>
<tr><td>400</td><td>PAM_ACTION_INVALID</td><td>ActionStatus {PropertyValue} is invalid - must be one of [{0}]</td></tr>
<tr><td>400</td><td>PAM_AMEND_FORBIDDEN</td><td>Can only amend payment agreement in active or paused status</td></tr>
<tr><td>400</td><td>PAM_AMEND_PENDING</td><td>Can not amend payment agreement with pending bilateral amend</td></tr>
<tr><td>400</td><td>PAM_AMOUNT_ERROR</td><td>{0}: Invalid payment amount {1}</td></tr>
<tr><td>400</td><td>PAM_AMT_GTR_MAX_AMT</td><td>Amount can not be greater than maximum amount.</td></tr>
<tr><td>400</td><td>PAM_AMT_INVALID</td><td>{0}.amount is invalid - {PropertyValue}</td></tr>
<tr><td>400</td><td>PAM_AMT_TYPE_INVALID_COMBINATION</td><td>For payment amount type {0}</td></tr>
<tr><td>400</td><td> PAM_AMT_TYPE_UNSUPPORTED</td><td> Unsupported payment amount type {0}"</td></tr>
<tr><td>400</td><td>PAM_AUTO_RENEWAL_REQUIRED</td><td>{0}.automaticRenewal is required</td></tr>
<tr><td>400</td><td>PAM_BSB_ACCOUNT_TOGETHER</td><td>BSB and account must be provided together</td></tr>
<tr><td>400</td><td>PAM_BUSINESS_RULE_ERROR</td><td>startdate invalid</td></tr>
<tr><td>400</td><td>PAM_CANCEL_CREATED</td><td>Payment agreement is in created status. Please use our recall API to cancel the PAG creation</td></tr>
<tr><td>400</td><td>PAM_CRTD_ENDDATE_INVALID</td><td>CreatedEndDate must be past time and within 1 month after CreatedStartDate</td></tr>
<tr><td>400</td><td>PAM_CRTD_STARTDATE_INVALID</td><td>CreatedStartDate must be past time</td></tr>
<tr><td>400</td><td>PAM_DEBTOR_PAUSED</td><td>Payment agreement paused by Debtor can only be resumed by Debtor</td></tr>
<tr><td>400</td><td>PAM_DESC_INVALID</td><td>{0}.description must have minimum 1</td></tr>
<tr><td>400</td><td> PAM_DESC_SHORT_DESC_MISSING</td><td> either description or shortDescription or both must be provided"</td></tr>
<tr><td>400</td><td>PAM_DETAILS_REQUIRED</td><td>paymentDetails required</td></tr>
<tr><td>400</td><td>PAM_DUP_PAYEE</td><td>The payee information has been provided in both the payment agreement</td></tr>
<tr><td>400</td><td> PAM_ENDDATE_BEFORE_START</td><td> endDate cannot be earlier than paymentAgreement startDate"</td></tr>
<tr><td>400</td><td>PAM_ENDDATE_EARLY</td><td>{0}.endDate {PropertyValue} must be later than {0}.startDate</td></tr>
<tr><td>400</td><td>PAM_ENDDATE_FORBIDDEN</td><td>{0}.endDate is prohibited when automaticRenewal is true</td></tr>
<tr><td>400</td><td>PAM_ENDDATE_INVALID</td><td>{0}.endDate {PropertyValue} must match yyyy-MM-dd</td></tr>
<tr><td>400</td><td>PAM_ENDDATE_REQUIRED</td><td>{0}.endDate is required when automaticRenewal is false</td></tr>
<tr><td>400</td><td>PAM_ENDDATE_TOO_OLD</td><td>endDate must be a future date</td></tr>
<tr><td>400</td><td>PAM_ENDDATE_WITH_AUTORENEW</td><td>endDate cannot be provided unless automaticRenewal is false</td></tr>
<tr><td>400</td><td>PAM_INVALID_OPERATION</td><td>PaymentAgreementStatus {0} is invalid for the change to {1}</td></tr>
<tr><td>400</td><td>PAM_INVALID_PURPOSE</td><td>Purpose code {0} not allowed</td></tr>
<tr><td>400</td><td>PAM_INVALID_TIME_FORMAT</td><td>{0}.ExecutionTime must match HH:MM:SS</td></tr>
<tr><td>400</td><td>PAM_MAPPING_ERROR</td><td> Internal error - property {0} value {1} is invalid - expected one of [{2}]. Please contact Monoova support."</td></tr>
<tr><td>400</td><td>PAM_MAX_AMT_INVALID</td><td>{0}.maximumAmount is invalid - {PropertyValue}</td></tr>
<tr><td>400</td><td>PAM_NUM_TRANS_INVALID</td><td>{0}.NumberOfTransactionsPermitted must not be less than or equal to 0</td></tr>
<tr><td>400</td><td>PAM_PAGID_INVALID</td><td>paymentAgreementUID {PropertyValue} must match {RegularExpression}</td></tr>
<tr><td>400</td><td>PAM_PAGID_REQUIRED</td><td>paymentAgreementUID required</td></tr>
<tr><td>400</td><td>PAM_PAGMMSID_REQUIRED</td><td>Either PaymentAgreementUid or MmsId must not be empty</td></tr>
<tr><td>400</td><td>PAM_PAG_EXISTS</td><td>Failed to create payment agreement - PaymentAgreementUID already linked to mmsId</td></tr>
<tr><td>400</td><td>PAM_PAG_LIMIT_EXCEEDED</td><td>Request exceeds the maximum allowed payment agreement limit {0}</td></tr>
<tr><td>400</td><td>PAM_PAG_PURPOSE_INVALID</td><td>{0}.purpose value {PropertyValue} invalid - must be one of [{1}]</td></tr>
<tr><td>400</td><td> PAM_PAG_STATUS_INACTIVE</td><td> Agreement status must be active"</td></tr>
<tr><td>400</td><td>PAM_PAG_TYPE_INVALID</td><td>{0}.agreementType value {PropertyValue} invalid - must be one of [{1}]</td></tr>
<tr><td>400</td><td>PAM_PAYEE_ACCOUNT_NAME_FORBIDDEN</td><td>Payee account name is not allowed</td></tr>
<tr><td>400</td><td>PAM_PAYEE_ACCT_EMPTY</td><td>{0}.payeeLinkedAccount {PropertyValue} cannot be all zeros or blanks</td></tr>
<tr><td>400</td><td>PAM_PAYEE_ACCT_FORBIDDEN</td><td>{0}.payeeLinkedAccount prohibited with payeeLinkedPayId</td></tr>
<tr><td>400</td><td>PAM_PAYEE_ACCT_INVALID</td><td>{0}.payeeLinkedAccount {PropertyValue} must match {RegularExpression}</td></tr>
<tr><td>400</td><td>PAM_PAYEE_ACCT_LENGTH</td><td>{0}.payeeLinkedAccount must not be longer than 28 characters</td></tr>
<tr><td>400</td><td>PAM_PAYEE_ACCT_MISSING</td><td>The payee account information has not been provided.</td></tr>
<tr><td>400</td><td>PAM_PAYEE_ACCT_NAME_FORBIDDEN</td><td>{0}.payeeAccountName must be empty when payeeLinkedBsb is Monoova</td></tr>
<tr><td>400</td><td>PAM_PAYEE_ACCT_NAME_INVALID</td><td>{0}.payeeAccountName {PropertyValue} must match {RegularExpression}</td></tr>
<tr><td>400</td><td>PAM_PAYEE_ACCT_NAME_REQUIRED</td><td>{0}.payeeAccountName must not be empty</td></tr>
<tr><td>400</td><td>PAM_PAYEE_ACCT_REQUIRED</td><td>{0}.payeeLinkedAccount required if no payeeLinkedPayId</td></tr>
<tr><td>400</td><td>PAM_PAYEE_BSB_FORBIDDEN</td><td>{0}.payeeLinkedBsb prohibited with payeeLinkedPayId</td></tr>
<tr><td>400</td><td>PAM_PAYEE_BSB_INVALID</td><td>{0}.payeeLinkedBsb {PropertyValue} must match {RegularExpression}</td></tr>
<tr><td>400</td><td>PAM_PAYEE_BSB_REQUIRED</td><td>{0}.payeeLinkedBsb required if no payeeLinkedPayId</td></tr>
<tr><td>400</td><td>PAM_PAYEE_BSB_RESTRICTED</td><td>The specified Payee bsb {0} is not allowed</td></tr>
<tr><td>400</td><td>PAM_PAYEE_EMPTY</td><td>{0} must contain at least one input field</td></tr>
<tr><td>400</td><td>PAM_PAYEE_FORBIDDEN</td><td>The account information provided does not match the list of allowed Payees.</td></tr>
<tr><td>400</td><td>PAM_PAYEE_ID_INVALID</td><td>{0}.payeeLinkedPayId value invalid for specified payeeLinkedPayIdType</td></tr>
<tr><td>400</td><td>PAM_PAYEE_ID_TYPE_FORBIDDEN</td><td>{0}.payeeLinkedPayIdType prohibited without payeeLinkedPayId</td></tr>
<tr><td>400</td><td>PAM_PAYEE_ID_TYPE_INVALID</td><td>{0}.payeeLinkedPayIdType {PropertyValue} invalid - must be one of [{1}]</td></tr>
<tr><td>400</td><td>PAM_PAYEE_ID_TYPE_REQUIRED</td><td>{0}.payeeLinkedPayIdType required for payeeLinkedPayId</td></tr>
<tr><td>400</td><td>PAM_PAYEE_MISSING</td><td>The payee information has not been provided in either the payment agreement</td></tr>
<tr><td>400</td><td> PAM_PAYEE_TYPE_INVALID</td><td> {0}.payeeType {PropertyValue} is invalid - must be one of [{1}]"</td></tr>
<tr><td>400</td><td>PAM_PAYER_ACCT_EMPTY</td><td>{0}.linkedAccount {PropertyValue} cannot be all zeros or blanks</td></tr>
<tr><td>400</td><td>PAM_PAYER_ACCT_FORBIDDEN</td><td>{0}.linkedAccount prohibited with linkedPayId</td></tr>
<tr><td>400</td><td>PAM_PAYER_ACCT_INVALID</td><td>{0}.linkedAccount {PropertyValue} must match {RegularExpression}</td></tr>
<tr><td>400</td><td>PAM_PAYER_ACCT_LENGTH</td><td>{0}.linkedAccount must be between 1 and 28 characters</td></tr>
<tr><td>400</td><td>PAM_PAYER_ACCT_REQUIRED</td><td>{0}.linkedAccount required if no linkedPayId</td></tr>
<tr><td>400</td><td>PAM_PAYER_BSB_FORBIDDEN</td><td>{0}.linkedBsb prohibited with linkedPayId</td></tr>
<tr><td>400</td><td>PAM_PAYER_BSB_INVALID</td><td>{0}.linkedBsb {PropertyValue} must match {RegularExpression}</td></tr>
<tr><td>400</td><td>PAM_PAYER_BSB_REQUIRED</td><td>{0}.linkedBsb required if no linkedPayId</td></tr>
<tr><td>400</td><td>PAM_PAYER_FORBIDDEN</td><td>The account information provided does not match the list of allowed Payers</td></tr>
<tr><td>400</td><td>PAM_PAYER_ID_INVALID</td><td>{0}.linkedPayId invalid format for linkedPayIdType</td></tr>
<tr><td>400</td><td>PAM_PAYER_ID_TYPE_FORBIDDEN</td><td>{0}.linkedPayIdType prohibited without linkedPayId</td></tr>
<tr><td>400</td><td>PAM_PAYER_ID_TYPE_INVALID</td><td>{0}.linkedPayIdType {PropertyValue} invalid - must be one of [{1}]</td></tr>
<tr><td>400</td><td>PAM_PAYER_ID_TYPE_REQUIRED</td><td>{0}.linkedPayIdType required for linkedPayId</td></tr>
<tr><td>400</td><td>PAM_PAYER_MISSING</td><td>The payer information has not been provided in either the payment agreement</td></tr>
<tr><td>400</td><td> PAM_PAYER_NAME_INVALID</td><td> {0}.payer {PropertyValue} must match {RegularExpression}"</td></tr>
<tr><td>400</td><td>PAM_PAYER_NAME_LENGTH</td><td>{0}.payer must be between 1 and 140 characters</td></tr>
<tr><td>400</td><td>PAM_PAYER_NAME_REQUIRED</td><td>{0}.payer required</td></tr>
<tr><td>400</td><td>PAM_PAYER_PARTY_ALNUM</td><td>{0}.payerPartyReference Must contain at least one alphanumeric character</td></tr>
<tr><td>400</td><td>PAM_PAYER_PARTY_INVALID</td><td>{0}.payerPartyReference value {PropertyValue} does not match {RegularExpression}</td></tr>
<tr><td>400</td><td>PAM_PAYER_PARTY_LENGTH</td><td>{0}.payerPartyReference must be from 1 to 35 characters</td></tr>
<tr><td>400</td><td>PAM_PAYER_PARTY_REQUIRED</td><td>{0}.payerPartyReference required</td></tr>
<tr><td>400</td><td>PAM_PAYER_PAYEE_EXISTS</td><td>Failed to create ApprovedPayerPayee - account already exists</td></tr>
<tr><td>400</td><td>PAM_PAYER_REQUIRED</td><td>payerDetails required</td></tr>
<tr><td>400</td><td>PAM_PAYER_TYPE_INVALID</td><td>{0}.payerType {PropertyValue} invalid - must be one of [{1}]</td></tr>
<tr><td>400</td><td>PAM_PAYER_TYPE_REQUIRED</td><td>{0}.payerType required</td></tr>
<tr><td>400</td><td>PAM_PAYMENTINFORMATION_FREQUENCYCOMBINATIONRULE</td><td>Either pointInTime or numberOfTransactionsPermitted must be present in paymentTerms</td></tr>
<tr><td>400</td><td> PAM_PG_NUM_INVALID</td><td> pageNumber must be greater than zero"</td></tr>
<tr><td>400</td><td>PAM_PG_SZ_INVALID</td><td>pageSize must be between 1 and {0}</td></tr>
<tr><td>400</td><td>PAM_PIT_FORBIDDEN</td><td>PaymentInformation.PointInTime must not be present when PaymentFrequency is {0}</td></tr>
<tr><td>400</td><td>PAM_PIT_INVALID</td><td>{0}.PointInTime must be 2 digits string</td></tr>
<tr><td>400</td><td> PAM_PMT_FREQ_INVALID</td><td> {0}.paymentFrequency {PropertyValue} invalid - must be one of [{1}]"</td></tr>
<tr><td>400</td><td>PAM_PMT_FREQ_REQUIRED</td><td>{0}.paymentFrequency is required</td></tr>
<tr><td>400</td><td>PAM_REASON_CODE_INVALID</td><td>reasonCode {PropertyValue} is invalid - must match one of [{0}]</td></tr>
<tr><td>400</td><td>PAM_REASON_CODE_REQUIRED</td><td>reasonCode is required when statusChang
# --- truncated at 32 KB (207 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/monoova/refs/heads/main/openapi/monoova-payto.yml