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:
Account Name BSB Account Number PayID
Monoova Sample 1 802950 22090100 +61-422020901
Monoova Sample 2 802950 22090101 sample@monoova.com
Monoova Sample 3 802950 22090102 38126015228
Monoova Sample 4 802950 22090103 987654321
## 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.

### Response for Payment Agreements
Response Reason Code Contains Value Example Action
Agreement Approved - .00 $5.00, $10.00, $50.00 Approve
Requested By Customer M019 .19 $5.19, $10.19, $50.19 Decline
### Other Test Cases
Response Reason Code Contains Value Example Action
Invalid Debtor Account Number M001 .01 $5.01, $10.01, $50.01 Decline
Closed Debtor Account Number M003 .03 $5.03, $10.03, $50.03 Decline
Blocked Account M004 .04 $5.04, $10.04, $50.04 Decline
Invalid Debtor Account Type M005 .05 $5.05, $10.05, $50.05 Decline
Transaction Forbidden M006 .06 $5.06, $10.06, $50.06 Decline
Transaction Not Supported M007 .07 $5.07, $10.07, $50.07 Decline
Not Allowed Currency M008 .08 $5.08, $10.08, $50.08 Decline
Invalid Amount M009 .09 $5.09, $10.09, $50.09 Decline
Amount Exceeds Agreed Limit M010 .10 $5.10, $10.10, $50.10 Decline
No Mandate Service On Customer M018 .18 $5.18, $10.18, $50.18 Decline
Mandate Cancelled Due To Fraud M022 .22 $5.22, $10.22, $50.22 Decline
No Answer From Customer M027 .27 $5.27, $10.27, $50.27 Decline
Regulatory Reason M028 .28 $5.28, $10.28, $50.28 Decline
Creditor not on Whitelist of Debtor M030 .30 $5.30, $10.30, $50.30 Decline
Creditor on Blacklist of Debtor M031 .31 $5.31, $10.31, $50.31 Decline
Unknown end Customer M032 .32 $5.32, $10.32, $50.32 Decline

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: [![Run in Postman](https://run.pstmn.io/button.svg)](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.
### 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:

PayTo Reporting

A new report has been added specifically for NPP payments related to PayTo. Monoova’s PayTo NPP receivables – available here


In addition, PayTo NPP receivables will have the following additional data fields
Field Description Specification
mmsId
Id assigned by NPPA for payment agreement
string{33}
InitiatingPartyName
Initiating Party name..
string{1, 35}
- name: Webhooks description:

In addition to callable reporting endpoints, webhooks will also be available for state changes for payment agreements and funds received.



Funds received notification

If Payee account is Monoova automatcher account, webhooks will be sent using a new webhook PayToReceivePayment.



In addition to PayTo NPP receivables fields this webhook will have the following additional data fields to provide payment agreement information:


Field Description Specification
mmsId
Id assigned by NPPA for payment agreement
string{33}
InitiatingPartyName
Initiating Party name..
string{1, 35}
- name: Client Error Responses description:

Response Structure



Field Description Comment Validation
traceId string traceId for the trace logs. Currently only populated for errors. Optional
errors[i].errorMessage string detailed error messages for this error instance Optional
errors[i].errorCode string Monoova error code Mandate
errors Error[] array of individual errors, if any. “errors” will be null or absent of no errors occur. Optional


Sample Response

{
   "traceId": "4ea61012-2d9b-413d-a5b4-90ad69a68741",
     "errors": [
       {
           "errorCode": "NOS_VL_EVTNAME_REQUIRED",
           "errorMessage": "'eventName' must not be empty."
       }
   ]
}
- name: Monoova Error Codes description:
HTTP Status Error Code Meaning
400NOS_ACCTID_REQUIREDmaccount is required
400NOS_DATERANGE_INVALIDEnd must be after Start.
400NOS_DATERANGE_SIZEDays between Start and End must be smaller than {0}
400NOS_DUP_SUB_CRT_ERRORduplicate record already exists or subscriptionId not provided
400NOS_ENDDATE_INVALIDInvalid End
400 NOS_EVTID_REQUIRED EventId must not be empty"
400NOS_EVTNAME_INVALID{0}EventName must not be empty and be one of [{1}]
400NOS_EVTNAME_REQUIRED{0}eventName is required
400NOS_HEADER_REQUIREDHeader must not be empty
400NOS_ISACTIVE_REQUIRED{0}isActive must not be empty
400NOS_PGNUM_INVALIDpageNumber must be greater than 0
400NOS_PGSIZ_INVALIDpageSize must be from 1 to {0}
400NOS_REQUEST_EMPTYrequest payload is empty
400NOS_STARTDATE_INVALIDInvalid Start
400 NOS_STS_INVALID Status must be one of [{0}]
400NOS_SUBID_INVALIDSubscriptionId must be a valid Guid
400NOS_SUBID_REQUIREDsubscriptionId is required
400NOS_SUBNAME_INVALID{0}subscriptionName must not be empty and match {RegularExpression}
400NOS_SUBNAME_REQUIRED{0}subscriptionName must not be empty
400NOS_TRACEID_REQUIREDtraceId is required
400NOS_URL_INVALID{0}callBackUrl must not be empty and must be a well-formed URL
400NOS_URL_REQUIRED{0}callBackUrl is required
400NOS_VALIDATION_ERROROne or more validation failures have occurred
400NOS_WEBDTL_REQUIRED{0}WebHookDetail is required
400PAS_REQ_BODY_INVALIDError parsing badly formed request message - {0}
404NOS_EVENT_NOT_FOUND_ERRORNo webhook found for:{0}
404 NOS_SUB_NOT_FOUND_ERROR SubscriptionId {0} is not found"
500NOS_DEL_SUB_ERRORDocument deleted {0}. Expected exactly 1 subscription deletion.
500NOS_DUP_SUB_UPD_ERRORduplicate records exist for subscriptionId {0}
500NOS_UNEXPECTED_ERRORAn unexpected exception occurred
500NOS_UPD_SUB_ERRORDocument modified {0}. Expected exactly 1 subscription updated.
400PAM_ACCTID_REQUIREDmaccount is required
400PAM_ACTION_INVALIDActionStatus {PropertyValue} is invalid - must be one of [{0}]
400PAM_AMEND_FORBIDDENCan only amend payment agreement in active or paused status
400PAM_AMEND_PENDINGCan not amend payment agreement with pending bilateral amend
400PAM_AMOUNT_ERROR{0}: Invalid payment amount {1}
400PAM_AMT_GTR_MAX_AMTAmount can not be greater than maximum amount.
400PAM_AMT_INVALID{0}.amount is invalid - {PropertyValue}
400PAM_AMT_TYPE_INVALID_COMBINATIONFor payment amount type {0}
400 PAM_AMT_TYPE_UNSUPPORTED Unsupported payment amount type {0}"
400PAM_AUTO_RENEWAL_REQUIRED{0}.automaticRenewal is required
400PAM_BSB_ACCOUNT_TOGETHERBSB and account must be provided together
400PAM_BUSINESS_RULE_ERRORstartdate invalid
400PAM_CANCEL_CREATEDPayment agreement is in created status. Please use our recall API to cancel the PAG creation
400PAM_CRTD_ENDDATE_INVALIDCreatedEndDate must be past time and within 1 month after CreatedStartDate
400PAM_CRTD_STARTDATE_INVALIDCreatedStartDate must be past time
400PAM_DEBTOR_PAUSEDPayment agreement paused by Debtor can only be resumed by Debtor
400PAM_DESC_INVALID{0}.description must have minimum 1
400 PAM_DESC_SHORT_DESC_MISSING either description or shortDescription or both must be provided"
400PAM_DETAILS_REQUIREDpaymentDetails required
400PAM_DUP_PAYEEThe payee information has been provided in both the payment agreement
400 PAM_ENDDATE_BEFORE_START endDate cannot be earlier than paymentAgreement startDate"
400PAM_ENDDATE_EARLY{0}.endDate {PropertyValue} must be later than {0}.startDate
400PAM_ENDDATE_FORBIDDEN{0}.endDate is prohibited when automaticRenewal is true
400PAM_ENDDATE_INVALID{0}.endDate {PropertyValue} must match yyyy-MM-dd
400PAM_ENDDATE_REQUIRED{0}.endDate is required when automaticRenewal is false
400PAM_ENDDATE_TOO_OLDendDate must be a future date
400PAM_ENDDATE_WITH_AUTORENEWendDate cannot be provided unless automaticRenewal is false
400PAM_INVALID_OPERATIONPaymentAgreementStatus {0} is invalid for the change to {1}
400PAM_INVALID_PURPOSEPurpose code {0} not allowed
400PAM_INVALID_TIME_FORMAT{0}.ExecutionTime must match HH:MM:SS
400PAM_MAPPING_ERROR Internal error - property {0} value {1} is invalid - expected one of [{2}]. Please contact Monoova support."
400PAM_MAX_AMT_INVALID{0}.maximumAmount is invalid - {PropertyValue}
400PAM_NUM_TRANS_INVALID{0}.NumberOfTransactionsPermitted must not be less than or equal to 0
400PAM_PAGID_INVALIDpaymentAgreementUID {PropertyValue} must match {RegularExpression}
400PAM_PAGID_REQUIREDpaymentAgreementUID required
400PAM_PAGMMSID_REQUIREDEither PaymentAgreementUid or MmsId must not be empty
400PAM_PAG_EXISTSFailed to create payment agreement - PaymentAgreementUID already linked to mmsId
400PAM_PAG_LIMIT_EXCEEDEDRequest exceeds the maximum allowed payment agreement limit {0}
400PAM_PAG_PURPOSE_INVALID{0}.purpose value {PropertyValue} invalid - must be one of [{1}]
400 PAM_PAG_STATUS_INACTIVE Agreement status must be active"
400PAM_PAG_TYPE_INVALID{0}.agreementType value {PropertyValue} invalid - must be one of [{1}]
400PAM_PAYEE_ACCOUNT_NAME_FORBIDDENPayee account name is not allowed
400PAM_PAYEE_ACCT_EMPTY{0}.payeeLinkedAccount {PropertyValue} cannot be all zeros or blanks
400PAM_PAYEE_ACCT_FORBIDDEN{0}.payeeLinkedAccount prohibited with payeeLinkedPayId
400PAM_PAYEE_ACCT_INVALID{0}.payeeLinkedAccount {PropertyValue} must match {RegularExpression}
400PAM_PAYEE_ACCT_LENGTH{0}.payeeLinkedAccount must not be longer than 28 characters
400PAM_PAYEE_ACCT_MISSINGThe payee account information has not been provided.
400PAM_PAYEE_ACCT_NAME_FORBIDDEN{0}.payeeAccountName must be empty when payeeLinkedBsb is Monoova
400PAM_PAYEE_ACCT_NAME_INVALID{0}.payeeAccountName {PropertyValue} must match {RegularExpression}
400PAM_PAYEE_ACCT_NAME_REQUIRED{0}.payeeAccountName must not be empty
400PAM_PAYEE_ACCT_REQUIRED{0}.payeeLinkedAccount required if no payeeLinkedPayId
400PAM_PAYEE_BSB_FORBIDDEN{0}.payeeLinkedBsb prohibited with payeeLinkedPayId
400PAM_PAYEE_BSB_INVALID{0}.payeeLinkedBsb {PropertyValue} must match {RegularExpression}
400PAM_PAYEE_BSB_REQUIRED{0}.payeeLinkedBsb required if no payeeLinkedPayId
400PAM_PAYEE_BSB_RESTRICTEDThe specified Payee bsb {0} is not allowed
400PAM_PAYEE_EMPTY{0} must contain at least one input field
400PAM_PAYEE_FORBIDDENThe account information provided does not match the list of allowed Payees.
400PAM_PAYEE_ID_INVALID{0}.payeeLinkedPayId value invalid for specified payeeLinkedPayIdType
400PAM_PAYEE_ID_TYPE_FORBIDDEN{0}.payeeLinkedPayIdType prohibited without payeeLinkedPayId
400PAM_PAYEE_ID_TYPE_INVALID{0}.payeeLinkedPayIdType {PropertyValue} invalid - must be one of [{1}]
400PAM_PAYEE_ID_TYPE_REQUIRED{0}.payeeLinkedPayIdType required for payeeLinkedPayId
400PAM_PAYEE_MISSINGThe payee information has not been provided in either the payment agreement
400 PAM_PAYEE_TYPE_INVALID {0}.payeeType {PropertyValue} is invalid - must be one of [{1}]"
400PAM_PAYER_ACCT_EMPTY{0}.linkedAccount {PropertyValue} cannot be all zeros or blanks
400PAM_PAYER_ACCT_FORBIDDEN{0}.linkedAccount prohibited with linkedPayId
400PAM_PAYER_ACCT_INVALID{0}.linkedAccount {PropertyValue} must match {RegularExpression}
400PAM_PAYER_ACCT_LENGTH{0}.linkedAccount must be between 1 and 28 characters
400PAM_PAYER_ACCT_REQUIRED{0}.linkedAccount required if no linkedPayId
400PAM_PAYER_BSB_FORBIDDEN{0}.linkedBsb prohibited with linkedPayId
400PAM_PAYER_BSB_INVALID{0}.linkedBsb {PropertyValue} must match {RegularExpression}
400PAM_PAYER_BSB_REQUIRED{0}.linkedBsb required if no linkedPayId
400PAM_PAYER_FORBIDDENThe account information provided does not match the list of allowed Payers
400PAM_PAYER_ID_INVALID{0}.linkedPayId invalid format for linkedPayIdType
400PAM_PAYER_ID_TYPE_FORBIDDEN{0}.linkedPayIdType prohibited without linkedPayId
400PAM_PAYER_ID_TYPE_INVALID{0}.linkedPayIdType {PropertyValue} invalid - must be one of [{1}]
400PAM_PAYER_ID_TYPE_REQUIRED{0}.linkedPayIdType required for linkedPayId
400PAM_PAYER_MISSINGThe payer information has not been provided in either the payment agreement
400 PAM_PAYER_NAME_INVALID {0}.payer {PropertyValue} must match {RegularExpression}"
400PAM_PAYER_NAME_LENGTH{0}.payer must be between 1 and 140 characters
400PAM_PAYER_NAME_REQUIRED{0}.payer required
400PAM_PAYER_PARTY_ALNUM{0}.payerPartyReference Must contain at least one alphanumeric character
400PAM_PAYER_PARTY_INVALID{0}.payerPartyReference value {PropertyValue} does not match {RegularExpression}
400PAM_PAYER_PARTY_LENGTH{0}.payerPartyReference must be from 1 to 35 characters
400PAM_PAYER_PARTY_REQUIRED{0}.payerPartyReference required
400PAM_PAYER_PAYEE_EXISTSFailed to create ApprovedPayerPayee - account already exists
400PAM_PAYER_REQUIREDpayerDetails required
400PAM_PAYER_TYPE_INVALID{0}.payerType {PropertyValue} invalid - must be one of [{1}]
400PAM_PAYER_TYPE_REQUIRED{0}.payerType required
400PAM_PAYMENTINFORMATION_FREQUENCYCOMBINATIONRULEEither pointInTime or numberOfTransactionsPermitted must be present in paymentTerms
400 PAM_PG_NUM_INVALID pageNumber must be greater than zero"
400PAM_PG_SZ_INVALIDpageSize must be between 1 and {0}
400PAM_PIT_FORBIDDENPaymentInformation.PointInTime must not be present when PaymentFrequency is {0}
400PAM_PIT_INVALID{0}.PointInTime must be 2 digits string
400 PAM_PMT_FREQ_INVALID {0}.paymentFrequency {PropertyValue} invalid - must be one of [{1}]"
400PAM_PMT_FREQ_REQUIRED{0}.paymentFrequency is required
400PAM_REASON_CODE_INVALIDreasonCode {PropertyValue} is invalid - must match one of [{0}]
400PAM_REASON_CODE_REQUIREDreasonCode is required when statusChange is Pause or Cancel
400PAM_REASON_DESC_INVALIDreasonDescription is invalid - must be from 1 to 256 characters
400PAM_RECALL_INVALIDAction {0} in Payment Agreement {1} invalid status - must be pending for recall
400PAM_RECORD_NOT_FOUND_ERRORRequested record could not be found
400PAM_REQUEST_EMPTYrequest payload is empty
400PAM_REQ_BODY_INVALIDError parsing badly formed request message - {0}
400PAM_RESOLUTION_INVALID{0}.respondByTime must be between now and 5 days in the future
400 PAM_SCHED_INVALID schedulePaymentInitiation not yet supported - if provided value must be false"
400PAM_SHORT_DESC_INVALID{0}.shortDescription must have minimum 1
400 PAM_STARTDATE_EARLY {0}.startDate must be future date."
400PAM_STARTDATE_INVALID{0}.startDate {PropertyValue} must match yyyy-MM-dd.
400PAM_STARTDATE_REQUIRED{0}.startDate is required
400PAM_STATUS_CHG_INVALIDstatusChange {PropertyValue} is invalid - must be one of [{0}]
400PAM_STATUS_CHG_REQUIREDstatusChange is required
400PAM_TERMS_REQUIREDpaymentTerms required
400PAM_TZ_INVALID{0}.RespondByTime requires a time and timezone
400PAM_ULTIMATE_PAYEE_FORBIDDENPayee ultimate name not allowed
400PAM_ULT_PAYEE_FORBIDDEN{0}.ultimatePayee must be empty when payeeLinkedBsb is Monoova
400PAM_ULT_PAYEE_INVALID{0}.ultimatePayee {PropertyValue} must match {RegularExpression}
400PAM_ULT_PAYEE_REQUIRED{0}.ultimatePayee must not be empty
400PAM_ULT_PAYER_INVALID{0}.ultimatePayer {PropertyValue} must match {RegularExpression}
400PAM_ULT_PAYER_LENGTH{0}.ultimatePayer must be between 1 and 140 characters
400PAM_ULT_PAYER_REQUIRED{0}.ultimatePayer required
400PAM_VALIDATION_ERRORError validating request message - {0}
403PAM_FORBIDDEN_ERRORNot allowed to {0} for account {1}
404PAM_ACCT_NOT_FOUND_ERRORAccount not found for AccountId {0}
404PAM_ACTION_NOT_FOUND_ERRORAction {0} not found in Payment Agreement {1}
404PAM_PAG_FQN_NOT_FOUND_ERRORUnable to find payment agreement with account: {0} paymentAgreementUid: {1} mmsId: {2}
404PAM_PAG_NOT_FOUND_ERRORPaymentAgreement not found for PaymentAgreementUID {0}
404PAM_PARTY_NOT_FOUND_ERRORApprovedPayerPayee with ApprovalId {0} and mAccount {1} not found
500PAM_ACCT_CFG_PURPOSE_ERRORPurpose Code not provided in agreement and default value not configured in account
500PAM_ACCT_NOT_FOUND_ERRORAccount not found for AccountId {0}
500PAM_ACCT_UPDATE_ERRORDocuments modified {0}. Expected exactly 1 AccountConfiguration updated.
500PAM_MAPPING_ERRORInternal error - property {0} value {1} is invalid - expected one of [{2}]. Please contact Monoova support.
500PAM_PAG_CREATE_ERRORFailed to create payment agreement in repository
500PAM_PAG_NOT_FOUND_ERRORPaymentAgreement not found for PaymentAgreementUID {0}
500PAM_PAG_UPDATE_ERRORDocuments modified {0}. Expected exactly 1 payment agreement updated.
500PAM_PAG_UPSERT_ERRORDocuments modified {0}. Expected 0 or 1 payment agreement updated.
500PAM_PARTY_CREATE_ERRORFailed to create ApprovedPayerPayee in repository
500PAM_PARTY_UPDATE_ERRORDocuments modified {0}. Expected exactly 1 ApprovedPayerPayee updated.
500PAM_UID_NOT_UNIQUEMore than one paymentAgreementUID {0} is found
500PAM_UNEXPECTED_ERRORInternal server error. Please contact Monoova support.
502PAM_NPP_GATEWAY_ERRORError returned from NPP gateway - {0}
504PAM_NPP_GATEWAY_TIMEOUTTimeout from NPP gateway
202PAS_IN_PROGRESS_STATUSRequested operation is still pending
400PAS_ACCTID_REQUIREDmaccount is required
400PAS_ACC_PRD_LIMIT_EXCEEDEDPayment amount requested {0} plus amount used {1} exceeds remaining account limit {2} for period.
400PAS_ACCT_NOT_FOUND_ERRORAccount not found for AccountId {0}.
400PAS_AGREEMENT_STATUS_INACTIVEAgreement status must be active.
400PAS_AGREEMENT_ENDEDThe end date has been exceeded on the payment agreement.
400PAS_AGREEMENT_INVALIDInvalid payment agreement amount or currency information. Please contact Monoova support.
400PAS_AGREEMENT_NOT_STARTEDThe start date on the payment agreement is greater than the current date.
400PAS_AMOUNT_ERRORPayment initiation amount {0} currency {1} are null or invalid.
400PAS_AMOUNT_MISMATCHThe amount {0} {1} does not match the active amount of the payment agreement {2} {3}.
400PAS_AMT_EXCEEDEDThe amount {0} exceeds the active allowed amount of the payment agreement {1}.
400PAS_AMT_INVALID{0}.amount is invalid - {PropertyValue}
400PAS_AMT_REQUIRED{0}.amount is required
400PAS_BUSINESS_RULE_ERRORBusiness rule failure - {0}
400PAS_COUNT_LIMIT_EXCEEDEDCount of payments {0} exceeds configured limits {1} for the specified payment agreement.
400PAS_COUNT_LIMIT_UNDEFINEDPayment count limit zero or not defined for the specified payment agreement.
400PAS_DEFAULT_PAYEE_ACCT_NAME_REQUIRED{0} error: Account must have DefaultPayeeAccountName configured when payee is Monoova.
400PAS_DUP_PAYEEThe payee information has been provided in both the payment agreement, and the current request.
400PAS_DUPLICATE_INSTRUCTIONFailed to create payment instruction - Duplicate paymentInitiationUID
400PAS_ENDDATE_EXCEEDEDcreatedEndDate invalid - may not be more than {0} months after createdStartDate
400PAS_ENDDATE_INVALIDcreatedEndDate invalid - must be after createdStartDate
400PAS_FAIL_LIMIT_EXCEEDEDNumber of failed payment requests {0} exceeds limit of {1} per day.
400PAS_LIMIT_UNAVAILABLEInvalid account configuration for allowed payment initiations for the day. Please contact Monoova support.
400PAS_MAPPING_ERRORInternal error - property {0} value {1} is invalid - expected one of [{2}]. Please contact Monoova support.
400PAS_MAX_AMT_EXCEEDEDThe amount {0} exceeds the allowed maximumAmount of the payment agreement {1}.
400PAS_PAGID_INVALIDpaymentAgreementUID value {PropertyValue} must match {RegularExpression}
400PAS_PAGID_REQUIREDpaymentAgreementUID required
400PAS_PAYEE_ACCTNAME_FORBIDDEN{0}.payeeAccountName must be empty when payeeLinkedBsb is monoova
400PAS_PAYEE_ACCTNAME_INVALID{0}.payeeAccountName {PropertyValue} must match {RegularExpression}
400PAS_PAYEE_ACCTNAME_LENGTH{0}.payeeAccountName must be from 1 to 140 characters
400PAS_PAYEE_ACCTNAME_REQUIRED{0}.payeeAccountName required
400PAS_PAYEE_ACCT_FORBIDDEN{0}.payeeLinkedAccount prohibited with payeeLinkedPayId
400PAS_PAYEE_ACCT_INVALID{0}.payeeLinkedAccount {PropertyValue} must match {RegularExpression}
400PAS_PAYEE_ACCT_LENGTH{0}.payeeLinkedAccount must be from 1 to 28 characters
400PAS_PAYEE_ACCT_MISSINGThe payee account information has not been provided.
400PAS_PAYEE_ACCT_REQUIRED{0}.payeeLinkedAccount required if no payeeLinkedPayId
400PAS_PAYEE_ACCT_ZERO{0}.payeeLinkedAccount {PropertyValue} must not be all zero or blank
400PAS_PAYEE_ACCTNAME_RESTRICTEDPayee account name {0} is not allowed
400PAS_PAYEE_BSB_FORBIDDEN{0}.payeeLinkedBsb prohibited with payeeLinkedPayId
400PAS_PAYEE_BSB_INVALID{0}.payeeLinkedBsb {PropertyValue} must match {RegularExpression}
400PAS_PAYEE_BSB_REQUIRED{0}.payeeLinkedBsb required if no payeeLinkedPayId
400PAS_PAYEE_EMPTY{0} (payeeDetails) must contain at least one input field
400PAS_PAYEE_FORBIDDENThe account information provided does not match the list of allowed Payees.
400PAS_PAYEE_MISSINGThe payee information has not been provided in either the payment agreement, or the current request.
400PAS_PAYEE_ID_INVALID{0}.payeeLinkedPayId invalid format for payeeLinkedPayIdType
400PAS_PAYEE_PAYID_TYPE_FORBIDDEN{0}.payeeLinkedPayIdType prohibited without payeeLinkedPayId
400PAS_PAYEE_PAYID_TYPE_INVALID{0}.payeeLinkedPayIdType value {PropertyValue} invalid - must be one of [{1}]
400PAS_PAYEE_PAYID_TYPE_REQUIRED{0}.payeeLinkedPayIdType required for payeeLinkedPayId
400PAS_PAYEE_TYPE_INVALID{0}.payeeType value {PropertyValue} invalid - must be one of [{1}]
400PAS_PAYMENT_TOO_SOONThe payment execute not before time has been exceeded on the payment agreement.
400PAS_PERIOD_COUNT_EXCEEDEDInitiation count {0} exceeds maximum allowed payment initiations for the day {1}.
400PAS_PMTDTL_REQUIREDpaymentDetails required
400PAS_PMTID_REQUIREDpaymentId is required
400PAS_PMT_UID_INVALIDpaymentInitiationUID {PropertyValue} must match {RegularExpression}
400PAS_PMT_UID_REQUIREDpaymentInitiationUID required
400PAS_REF_INVALID{0}.lodgementReference invalid
>400 PAS_REQUEST_EMPTY request payload is empty"
400PAS_REQ_BODY_INVALIDError parsing badly formed request message - {0}
400PAS_STARTDATE_INVALIDcreatedStartDate invalid - must be past date
400PAS_STARTDATE_REQUIREDcreatedStartDate required
400PAS_SUPERCODE_INVALID{0}.uniqueSuperAnnuationCode {PropertyValue} must match {RegularExpression}
400PAS_SUPERCODE_REQUIRED{0}.uniqueSuperAnnuationCode is mandatory if uniqueSuperAnnuationIdentification is given
400PAS_SUPERID_INVALID{0}.uniqueSuperAnnuationIdentification {PropertyValue} must match {RegularExpression}
400PAS_SUPERID_REQUIRED{0}.uniqueSuperAnnuationIdentification is mandatory if uniqueSuperAnnuationCode is given
400PAS_TRNSTS_INVALIDtransactionStatus value {PropertyValue} invalid - must be one of [{0}]
400PAS_TRNSTS_REQUIREDtransactionStatus required
400PAS_ULT_PAYEE_FORBIDDEN{0}.ultimatePayee must be empty when payeeLinkedBsb is monoova
400PAS_ULT_PAYEE_INVALID{0}.ultimatePayee {PropertyValue} must match {RegularExpression}
400PAS_ULT_PAYEE_LENGTH{0}.ultimatePayee must be from 1 to 140 characters
400PAS_ULT_PAYEE_REQUIRED{0}.ultimatePayee required
400PAS_ULT_PAYEE_RESTRICTEDPayee ultimate name {0} not allowed
400PAS_VALIDATION_ERRORError validating request message - {0}
404PAS_AGREEMENT_NOT_FOUNDThe PaymentAgreement with the provided ID was not found: {0}.
404PAS_INSTRUCTION_NOT_FOUNDPaymentInstruction {0} is not found
500PAS_APPLICATION_ERRORAn application error occurred while processing the request. Please try again later. If the problem persists please contact Monoova support.
500PAS_DATA_UPDATE_ERRORDocuments modified {0}. Expected exactly 1 payment instruction updated.
500PAS_IID_NOT_UNIQUEMore than one paymentInstructionUID {0} is found
500PAS_LIMIT_RESET_ERRORDaily Limit Reset Request returned error - {0}
500PAS_MAPPING_ERRORInternal error - property {0} value {1} is invalid - expected one of [{2}]. Please contact Monoova support.
500PAS_PAM_TIMEOUT_ERRORTimeout calling MandateManager service. Please try again later.
500PAS_UNEXPECTED_ERRORInternal server error. Please contact Monoova support.
502PAS_NPP_GATEWAY_ERRORError returned from NPP gateway - {0}
502PAS_NPP_GATEWAY_NORESPONSEReceived empty response from NPP gateway - {0}
504PAS_NPP_GATEWAY_TIMEOUTTimeout calling NPP gateway
400MOV_UNEXPECTED_VALIDATION_FAILUREValidation failed with banking partner. Contact Monoova for more information
400MOV_VALIDATION_ERRORUnexpected validation error. Correct payload and retry
400MOV_PAYER_ALIAS_VALIDATION_FAILEDUnexpected validation error with Payer Alias. Correct payload and retry
400MOV_MULTIPLE_FIELD_CHANGE_ERRORUnexpected validation error. Multiple changed fields exist with respondByTime. Correct request and retry
400MOV_MISSING_FIELD_ERRORUnexpected validation error. Include amended fields
400MOV_RESPOND_BY_TIME_VALIDATION_FAILEDUnexpected validation error with respondByTime. Correct payload and retry
400MOV_DESCRIPTION_VALIDATION_FAILEDUnexpected validation error with descriptions. Correct payload and retry
404MOV_LINKED_PAYID_ERRORIncorrect linkedPayId details
404MOV_PAYEE_LINKED_PAYID_ERRORIncorrect payeeLinkedPayId details
400MOV_PAYEE_ALIAS_VALIDATION_FAILEDCreditor_information.account_alias_identification format incorrect for the chosen creditor_information.account_alias_type_code
400MOV_PAYER_ACCOUNT_UNSUPPORTEDDebtor account provided can't be used for MPS debits
400MOV_INVALID_BANK_ACCOUNTThe account provided does not belong to the current institution.
408MOV_REQUEST_TIMEOUTRequest timed out. Please try again after some time.
400MOV_NPP_PAYMENT_NOT_SUPPORTEDPayee account cannot receive NPP Payments
404MOV_PAYEE_DETAIL_ERRORIncorrect Payee Details
409MOV_BANKING_PARTNER_ERRORUnexpected error with banking partner. Contact Monoova for more details
403MOV_CONFIGURATION_ERRORConfiguration error. Contact Monoova
400MOV_AMEND_STATUS_VALIDATION_FAILEDUnexpected validation error with amend status. Correct payload and retry
403MOV_PERMISSION_DENIEDConfiguration error. You do not have permission to perform this action. Contact Monoova
400MOV_INVALID_BSBInvalid BSB number
400MOV_VALIDATION_FAILEDUnexpected validation error. Contact Monoova
- name: Payment Initiation Status description:
Http Status Code Status Description

Intermediate Status

202ACCPAccepted Customer Profile
202ACSPAccepted Settlement in Process
202INPRIn Progress
202RECVReceived
202SAFDParticipant Down
202SENTSent To Payer
202UNDVUndelivered

Final Status

201 ACSC Accepted Settlement Completed
422 RJCT Rejected 


- name: Payment Agreement Status description:
Status Status Description
InProgressCreation In Progress
CreatedPending Payer Approval
ActiveActive
PausedPaused
CancelledCancelled
RejectedCreation Rejected
ExpiredCreation Timed Out


- name: Payment Initiation Reject Reason Codes description:
Code Description
R001 Creditor agent is not online
R002 Account to be debited does not exist
R003 Account to be Credited does not exist
R004 The original Payer Customer Account number is closed
R005 Account exists but is blocked
R006 Account is now closed
R007 Debtor account type is invalid
R008 Creditor account type is invalid
R009 Payer account is not valid
R010 Transaction has been forbidden
R011 Payment was rejected by the payee
R012 Debtor account cannot be debited
R013 Use of zero-dollar payment initiation requests is prohibited.
R014 The amount requested is greater than the maximum NPP limit of $99,999,999,999
R015 Specified message amount is a non-processable currency outside of existing agreement
R016 Amount of funds available to cover specified message amount is insufficient
R017 Specified transaction amount is less than agreed minimum.
R018 Amount received is not the amount agreed or expected
R019 The amount in the NPP Payment Initiation Request is missing or invalid
R020 Number of transactions at the Group level is invalid or missing
R021 The amount requested in the NPP Payment Initiation Request exceeds the agreed limit
R022 Reject the NPP Payment Initiation Request as the Creditor is unknown to Debtor
R023 End customer specified is not known at associated Sort/National Bank Code or does no longer exist in the books
R024 Debtor Name not provided
R025 Creditor Name not provided
R026 Number of decimal points not compatible with the currency
R027 Required Compulsory Element Missing
R028 The currency included in the Clearing Request is incorrect (value other than AUD).
R029 Cancellation requested by the Debtor
R030 The CreationDateTime in the Group Header is not as per the required format
R031 The Business Service does not support future dated NPP Payment Initiation Requests
R032 Check with Monoova on possible Outage. Retry again after sometime.
R033 Check with Monoova on possible Outage. Retry again after sometime.
R034 End to End Id missing or invalid for catsct payment Instruction.
R035 Invalid or not applicable character set
R036 Creditor Reference Must be equal to End to End Id of payment instruction for catsct
R037 Check with Monoova on possible Outage. Retry again after sometime.
R038 Payer institution is unavailable
R039 Payer institution is unavailable
R040 Payer institution is unavailable
R041 Payer PayId is not valid. Update the payment agreement with a valid PayId to proceed with payment initiation
R042 Payer PayId is not valid. Update the payment agreement with a valid PayId to proceed with payment initiation
R043 Payer BSB is not valid. Update the payment agreement with a valid BSB to proceed with payment initiation
R044 Payer BSB is not valid. Update the payment agreement with a valid BSB to proceed with payment initiation
R045 BO Service Code is not valid. Modify the Mandate with the correct BO Service Code
R046 BO Service Code is not valid. Modify the Mandate with the correct BO Service Code
R047 Payer is no longer reachable on NPP. Cancel the Mandate
R048 Payer is no longer reachable on NPP. Cancel the Mandate
R049 Payee Account Details are not present in Mandate and Client also has not provided Creditor Account Details in the Initiation Request. Either Modify the Mandate or provide the Creditor Account Details in the Request
R050 Creditor PayId has been ported, amend the payment agreement to reflect correct PayId institution
R051 Payer PayId has been ported, amend the payment agreement to reflect correct PayId institution
R052 Payee account details in the payment initiation do not match the payment agreement
R053 Payee PayId in the payment initiation do not match the payment agreement
R054 Verify the details of the Mandate, if creditor details are not present, it must be provided in input request
R055 Unable to locate Payment Instruction record
R056 Mandate validation failed. Verify the details of the Mandate
R057 Verify the details of the Mandate, if creditor account/alias details are correct, don't send creditor account/alias details in input request
R058 Verify the status of previous payment instruction if it is valid for business retry
R059 The NPP Payment Initiation Request did not contain a MandateId
R060 Invalid Payment Agreement
R061 Payment Agreement is expired
R062 Reason has not been specified by end customer
R063 Permission to process this payment is not granted
R064 Payer institution is unavailable. Please try again later.
R065 The BIC identifier in the Message Payload is invalid or missing
R066 Due to specific service offered by the Debtor Agent
R067 The Creditor did not appear on the Debtors whitelist
R068 The Creditor did appear on the Debtors blacklist
R069 The NPP Payment Initiation Request was rejected because the number of transactions requested exceeds the Debtor Agent offering.
R070 The NPP Payment Initiation Request was rejected because the total value of transactions requested exceeds the Debtor Agent offering.
R999 Unexpected System Error
- name: Mandate Status Reason Codes description:
Code Description
M001 Invalid Debtor AccountNumber
M002 Closed Account Number
M003 Closed Debtor AccountNumber
M004 Blocked Account
M005 Invalid Debtor AccountType
M006 Transaction Forbidden
M007 Transaction Not Supported
M008 Not Allowed Currency
M009 Invalid Amount
M010 Amount Exceeds Agreed Limit
M011 Contract Amended
M012 Contract Cancellation Initiated By Debtor
M013 Contract Expired
M014 Mandate Suspended Final Collection
M015 Mandate Suspended Once Off Collection
M016 End Customer Deceased
M017 No Mandate Service By Agent
M018 No Mandate Service On Customer
M019 Requested By Customer
M020 Requested By Initiating Party
M021 Mandate Expired
M022 Mandate Cancelled Due To Fraud
M023 Not Specified Reason Customer Generated
M024 Not Specified Reason Agent Generated
M025 Mandate Suspended 7 Consecutive Unsuccessful Collections
M026 Narrative
M027 No Answer From Customer
M028 Regulatory Reason
M029 Specific Service offered by Debtor Agent
M030 Creditor not on Whitelist of Debtor
M031 Creditor on Blacklist of Debtor
M032 Unknown end Customer


- name: 'PAYID Format Validation' description:
PhoneNumber (mapped to TELI) Consists of a "+" followed by the country code (from 1 to 3 characters) then a "-" then a number between 1-9 and then any combination of numbers between 0-9. Total of up to 35 characters.
Format pattern: ^[+][0-9]{1,3}-[1-9]{1,1}[0-9]{1,29}$
Email (mapped to EMAL) Consists of a character string with a maximum length of 256 characters in lower case. This must include the "@" symbol with leading and trailing characters and no white spaces.
Format pattern: (MAX256 text) ^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)$
ACN/ABN (mapped to AUBN) Consists of a nine to eleven digit number where the first two digits are a checksum. This is assigned by the Australian Taxation Office to identify an individual Australian Business.
Format pattern: (MIN9 - MAX11 digit). ^((\d{9})|(\d{11}))$

Note: This field will support both ABN and ACN
ACN= 9 digits
ABN = 11 digits
OrganisationId (mapped to ORGN) The Identifier must include the company/organisation name and both/either the description of the business/ trade / product / campaign and/or geographic location.
Format pattern : Maximum of 256 characters in lower case, to be drawn from the NPP Character Set and without leading or trailing whitespace.

^[!-@[-~][ -@[-~]{0,254}[!-@[-~]$
x-tagGroups: - name: '' tags: - Generate a Bearer Token - Manage Payment Agreements - PayTo Async API - Initiate a Payment - Reporting - Webhooks - Notification Management - PAYID Format Validation - Client Error Responses - Monoova Error Codes - Mandate Status Reason Codes - Payment Initiation Status - Payment Agreement Status - Payment Initiation Reject Reason Codes security: - BearerAuth: [] paths: ## PayTo # Payment Agreement /au/payto/pam-v1/PaymentAgreement: post: tags: - Manage Payment Agreements summary: Create a Payment Agreement description: The purpose of this endpoint is to create a payment agreement. An agreement can only initiate payments once the Payer approves it. Payers must respond by the respondByTime specified while creating the mandate. If respondByTime is not provided, it will be defaulted to 5 days for the Payer to approve or decline a payment agreement.

Rate Limit
Payment Agreement and Initiation endpoints have rate limits applied at a service level. If you process at volumes that surpass the rate limits, you will get a 429 HTTP status code for 'too many requests'. If you see this error, you will need to retry. If you experience this issue frequently, space out the calls. Alternatively, the Async endpoints have a much higher rate limit applied.

A webhook will notify customers about the approval/declination of a payment agreement. There is also get payment agreement endpoints to check the status of the payment agreement.

To receive payments in an account with Monoova, please create an automatcher account and use it under payee details when creating payment agreement. Automatcher accounts can also be created through the Sandbox Portal. Received payments through an automatcher account will be reported via webhook notification event name “PayToReceivePayment”.
Additionally, sample test accounts will need to be used for the payer-consumer side of the mandate on Sandbox. Please find below sample test payer accounts:
Account Name Monoova Sample 1 Monoova Sample 2 Monoova Sample 3 Monoova Sample 4 Monoova Sample 5
BSB 802950
Account Number 22090100
PayID - Phone +61-422020901
PayID - Email sample@monoova.com
PayID - ABN 38126015228
PayID - Organisation ID 987654321


Below are a series of reference tables for the create and initiate payment agreement schemas

Frequency

Code Name Description
ADHO Adhoc Event takes place on request or as necessary.
DAIL Daily Event takes place every day.
FRTN Fortnightly Event takes place every two weeks.
INDA IntraDay Event takes place several times a day.
MIAN SemiAnnual Event takes place every six months or two times a year.
MNTH Monthly Event takes place every month or once a month.
QURT Quarterly Event takes place every three months or four times a year.
WEEK Weekly Event takes place once a week.
YEAR Annual Event takes place every year or once a year.


Agreement Type

Code Name Description
FIXE Fixed Payment amount is fixed.
USGB UsageBased Payment amount is based on usage.
VARI Variable Payment amount is variable.


Agreement Type + Amount

agreementType amount maximumAmount Rules
FIXE Valid numeric value NA If Fixed, only amount should have values. Max amount should not be present
USGB Valid numeric value Valid numeric value If Usage based, max amount is recommended. However, amount and max amount are optional. If both amount and max amount are present, amount should be less than max amount
VARI Valid numeric value Valid numeric value If Variable, max amount is recommended. However, amount and max amount are optional. If both amount and max amount are present, amount should be less than max amount
operationId: post-paymentagreement requestBody: content: application/json: schema: $ref: '#/components/schemas/CreatePaymentAgreementDto' responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/CreatePaymentAgreementResponse' '400': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '403': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '404': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '500': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '502': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '504': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } get: tags: - Reporting summary: Get Payment Agreements by Date Range description: Previously created Payment Agreements can be retrieved individually date range. operationId: get-paymentagreement parameters: - name: createdStartDate in: query required: true description: Start Date.
Required. ISO8601 date-time schema: type: string format: date-time - name: pageNumber in: query description: Page to be returned after records are split as per pageSize.
Optional, If not provided, it is defaulted to 1. schema: type: integer format: int32 - name: pageSize in: query description: Number of records per page.
Optional, If not provided page size will be defaulted to 50. Maximum allowed value is 200. schema: type: integer format: int32 - name: createdEndDate in: query description: End Date. Optional, if not provided it will be defaulted to createdStartDate +24 hours. ISO8601 date-time schema: type: string format: date-time responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/PaymentAgreementsListResponse' '400': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '403': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '404': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '500': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '502': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '504': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '/au/payto/pam-v1/paymentagreement/{paymentAgreementUID}/unilateral': patch: tags: - Manage Payment Agreements summary: Unilateral Amendment description: Unilateral changes to a payment agreement can be done without the payer’s approval. The only fields that can be changed unilaterally are the payee object and agreement descriptions. operationId: patch-paymentagreement-id-unilateral parameters: - name: paymentAgreementUID in: path required: true schema: type: string description: Id to uniquely Identify a payment agreement. maxLength: 35 pattern: ^[A-Za-z0-9_-] example: MONPAG12345 nullable: true requestBody: content: application/json-patch+json: schema: $ref: '#/components/schemas/AmendUnilateralDetailsDto' example: description: payroll pag1 shortDescription: payroll pag1 payeeDetails: payeeType: ORGN payeeLinkedBsb: 802980 payeeLinkedAccount: 33333333 payeeLinkedPayId: abc@gmail.com payeeLinkedPayIdType: EMAIL payeeAccountName: PayCo ultimatePayee: PayCo responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/AmendUnilateralDetailsResponse' '400': description: Error content: application/json: example: { 'traceId': 'b008558d-b6df-4935-b2aa-39b2f8d467be', 'errors': [ { 'errorCode': 'PAM_BR_AMEND_FORBIDDEN', 'errorMessage': 'Can only amend payment agreement in active or paused status' } ] } '403': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '404': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '500': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '502': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '504': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '/au/payto/pam-v1/paymentagreement/{paymentAgreementUID}/bilateral': patch: tags: - Manage Payment Agreements summary: Bilateral Amendment operationId: patch-paymentagreement-id-bilateral description: Bilateral changes can't be done without the payer’s approval. Changes can be made to payment terms. Changes made using this end point will only get reflected after payer approves the change. Until new terms are approved, payment agreement will be active with its last approved terms. parameters: - name: paymentAgreementUID in: path required: true schema: description: Id to uniquely Identify a payment agreement. maxLength: 35 pattern: ^[A-Za-z0-9_-] example: MONPAG12345 requestBody: content: application/json: schema: $ref: '#/components/schemas/AmendBilateralDetailsDto' example: automaticRenewal: false endDate: '2022-09-30' respondByTime: '2022-09-1T08:20:50.52Z' paymentTerms: numberOfTransactionsPermitted: 10 frequency: MNTH amount: 10.00 maximumAmount": 1000.00 agreementType: VARI responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/AmendBilateralDetailsResponse' '400': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '403': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '404': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '500': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '502': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '504': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '/au/payto/pam-v1/paymentagreement/{paymentAgreementUID}/status': patch: tags: - Manage Payment Agreements summary: Amend Payment Agreement Status description: | This endpoint allows the initiator to change the status of a payment agreement. Available statuses are `active`, `pause`, or `cancel`.

Status Reason Code

Code Reason
AC02Invalid Debtor Account Number
AC04Closed Account Number
AC05Closed Debtor Account Number
AC06Blocked Account
AC13Invalid Debtor Account Type
AG01Transaction Forbidden
AG03Transaction Not Supported
AM03Not Allowed Currency
AM12Invalid Amount
AM14Amount Exceeds Agreed Limit
CTAMContract Amended
CTCAContract Cancellation Initiated By Debtor
CTEXContract Expired
MCFCPayment Agreement Suspended Final Collection
MCOCPayment Agreement Suspended Once Off Collection
MD07End Customer Deceased
MD08No Payment Agreement Service By Agent
MD09No Payment Agreement Service On Customer
MD16Requested By Customer
MD17Requested By Initiating Party
MD20Payment Agreement Expired
MD21Payment Agreement Cancelled Due To Fraud
MS02Not Specified Reason Customer Generated
MS03Not Specified Reason Agent Generated
MSUCPayment Agreement Suspended 7 Consecutive Unsuccessful Collections
NARRNarrative
NOASNo Answer From Customer
RR04Regulatory Reason
SL01Specific Service Offered By Debtor Agent
SL11Creditor Not On Whitelist Of Debtor
SL12Creditor On Blacklist Of Debtor
operationId: patch-paymentagreement-id-status parameters: - name: paymentAgreementUID in: path required: true schema: type: string description: Id to uniquely identify a payment agreement. maxLength: 35 pattern: ^[A-Za-z0-9_-]{1,35}$ example: MONPAG12345 requestBody: content: application/json: schema: $ref: '#/components/schemas/AmendPaymentAgreementStatusDto' example: statusChange: pause reasonCode: AC02 reasonDescription: Amend mandate status responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/AmendPaymentAgreementStatusResponse' '400': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '403': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '404': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '500': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '502': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '504': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } # Recall '/au/payto/pam-v1/paymentAgreement/{PaymentAgreementUID}/recall/{actionIdentification}': patch: tags: - Manage Payment Agreements summary: Recall a Payment Agreement description: The purpose of this operation is to recall a pending payment agreement before it is approved or declined by the payer servicer/customer. operationId: patch-paymentagreement-id-recall parameters: - name: PaymentAgreementUID in: path required: true schema: type: string maxLength: 35 pattern: ^[A-Za-z0-9_-] description: Id to uniquely Identify a payment agreement. example: MONPAG12345 - name: actionIdentification in: path required: true schema: type: string maxLength: 35 pattern: ^[a-f0-9]{12}1[a-f0-9]{3}[89ab][a-f0-9]{15}$ description: unique Id used to identify pending(unapproved) actions. This id is assigned when a new payment agreement is created or when a bilateral amendment is made. example: 6ae818a80bc362618aeaece46ee70e4a responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/RecallPaymentAgreementLastActionResponse' '400': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '403': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '404': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '500': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '502': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '504': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '/au/payto/pam-v1/paymentAgreement/{paymentAgreementUID}': get: tags: - Reporting summary: 'Get Payment Agreement by UniqueId' operationId: get-paymentagreement-id description: Previously created Payment Agreements can be retrieved individually via uniqueId parameters: - name: paymentAgreementUID in: path required: true schema: type: string responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/PaymentAgreementResponse' '400': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '403': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '404': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [ { 'errorCode': 'PAM_PAG_NOT_FOUND_ERROR', 'errorMessage': 'PaymentAgreement not found for PaymentAgreementUID 12345' } ] } '500': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '502': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '504': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } # Payment Initiation /au/payto/pas-v1/paymentInstruction: post: tags: - Initiate a Payment summary: Payment Instruction description: Once a valid payment agreement has approved by the payer this endpoint is used to create a payment initiation, which creates real time pull payments.
You are allowed a maximum of 5 failed initiations in a 24 hour period, if you reach this limit you will need to wait until the next day to retry. operationId: post-paymentinstruction requestBody: content: application/json: schema: $ref: '#/components/schemas/InitiateMandatePaymentDto' example: paymentAgreementUID: BCORP123456 paymentInitiationUID: BCORP00000001 paymentDetails: amount: 1.00 lodgementReference: 'BCorp PIR 001' responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/InitiateMandatePaymentResponseDto' '202': description: pending content: application/json: example: { paymentAgreementUID: '1111222333', paymentInitiationUID: 'C150D6FAE2044CA9A3ADB470874E8F86', mmsId: 'ed8569b4fd8614259d13bcb9a2da2bc0', nppInstructionId: 'MOPYAUS1XXXI20241119004756058205270', paymentInitiationStatus: 'INPR', paymentInitiationStatusDescription: 'In progress', traceId: 'f3ae20c5-e400-4eab-8fb0-16e03c8481be' } '422': description: Rejected content: application/json: example: { paymentAgreementUID: '1111222333', paymentInitiationUID: 'C150D6FAE2044CA9A3ADB470874E8F86', mmsId: 'ed8469b4fd8616259d15b4b9a2da2bc0', paymentInitiationStatus: 'RJCT', paymentInitiationStatusDescription: 'Rejected', statusReasonCode: 'R999', statusReasonDescription: 'Payment initiation rejected by banking institution. Please contact Monoova', traceId: 'f3ae20c5-e400-4eab-8fb0-16e03c8481be' } '400': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '403': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '404': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '500': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '502': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '504': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } get: tags: - Reporting summary: Get Payment Instructions By Date Range description: Previously created Payment initiations can be retrieved individually via date range. operationId: get-paymentinstruction parameters: - name: createdStartDate in: query description: Required. Format - ISO8601 date-time. schema: type: string format: date-time - name: pageNumber description: Number of records per page
Optional, If not provided, value will be defaulted to 1. in: query schema: type: integer format: int32 - name: pageSize in: query description: Number of records per page.
Optional, If not provided page size will be defaulted to 50. Maximum allowed value is 200. schema: type: integer format: int32 - name: createdEndDate in: query description: Start Date.
Optional, if not provided it will be defaulted to createdStartDate. ISO8601 date-time schema: type: string format: date-time responses: '200': description: Success content: application/json: schema: type: object properties: paymentInitiationDetails: type: array items: $ref: '#/components/schemas/PaymentStatusResponseDto' nullable: true traceId: type: string nullable: true example: 7fcb7dc4-ab8d-4bc8-8fa8-1335172377e2 additionalProperties: false '400': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '403': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '404': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [ { 'errorCode': 'string', 'errorMessage': 'PaymentInstruction 12345 is not found' } ] } '500': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '502': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '504': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '/au/payto/pas-v1/paymentinstruction/{paymentInitiationUID}': get: tags: - Reporting summary: 'Get Payment Instruction By UniqueId' description: Previously created Payment initiations can be retrieved individually via uniqueId. operationId: get-paymentinstruction-paymentinitiationid parameters: - name: paymentInitiationUID in: path required: true schema: type: string responses: '200': description: Success content: application/json: schema: type: object properties: paymentInitiationDetail: $ref: '#/components/schemas/PaymentStatusResponseDto' traceId: type: string nullable: true example: 7fcb7dc4-ab8d-4bc8-8fa8-1335172377e2 additionalProperties: false '400': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '403': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '404': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [ { 'errorCode': 'PAS_INSTRUCTION_NOT_FOUND', 'errorMessage': 'PaymentInstruction 12345 is not found' } ] } '500': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '502': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '504': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } #Async APIs /au/payto/pam-v1/PaymentAgreementAsync/Request/{uniqueRequestId}: get: tags: - PayTo Async API summary: Get Async Payment Agreement Request Status description: > Queries the status of an asynchronous API request for creating a payment agreement. This endpoint requires the {uniqueRequestId} returned by the original Async API call. There is no request body. operationId: get-async-paymentagreement-status parameters: - name: uniqueRequestId in: path required: true schema: type: string description: Unique identifier returned by the original Async API call. example: '4834dba5-27b0-465c-aea7-aa530315c68c' responses: '200': description: Request is still processing. content: application/json: schema: $ref: '#/components/schemas/PendingAgreementAsyncResponse' '201': description: Successful completion. The Location header contains the URL for the updated resource/document. headers: Location: schema: type: string description: URL to be polled for the updated resource/document. content: application/json: schema: $ref: '#/components/schemas/SuccessAgreementAsyncResponse' '400': description: Invalid status request. content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '422': description: Background job has failed. content: application/json: schema: $ref: '#/components/schemas/AsyncMandateRequestFailedResponse' /au/payto/pas-v1/PaymentInstructionAsync/Request/{uniqueRequestId}: get: tags: - PayTo Async API summary: Get Async Payment Instruction Request Status description: > Queries the status of an asynchronous API request, such as "Initiate Payment Async". This endpoint requires the {uniqueRequestId} returned by the original Async API call. No request body is needed. operationId: get-async-paymentinitiation-status parameters: - name: uniqueRequestId in: path required: true schema: type: string description: Unique identifier returned by the original Async API call. example: '4834dba5-27b0-465c-aea7-aa530315c68c' responses: '200': description: Request is still processing. content: application/json: schema: $ref: '#/components/schemas/PendingInitiationAsyncResponse' '201': description: Successful completion. Location header contains the URL for the updated resource/document. headers: Location: schema: type: string description: URL to be polled for the updated resource/document. content: application/json: schema: $ref: '#/components/schemas/SuccessInitiationAsyncResponse' '400': description: Invalid status request. content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '422': description: Background job has failed. content: application/json: schema: $ref: '#/components/schemas/AsyncInitiationRequestFailedResponse' /au/payto/pam-v1/PaymentAgreementAsync: post: tags: - PayTo Async API summary: Create a Payment Agreement Async description: | The purpose of this endpoint is to asynchronously create a payment agreement. The API returns as soon as the creation request has been captured and validated for background processing. The async API follows the Microsoft [async-request-reply pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/async-request-reply). Following a successful call, the status of the background request can be monitored using [Get Async Request Status (Payment Instruction)](#tag/PayTo-Async-API/operation/get-async-paymentagreement-status) or by subscription to the [AsyncJobResultNotification](#tag/Webhooks/operation/AsyncRequestNotification) webhook. The background request will complete when the payment agreement is either: - Created (Note: This does not necessarily mean the payment agreement has been activated.) - Failing with a non-recoverable error (retries will occur for transient errors such as timeouts) - Timed out on retries (set to 4 days). After request completion, the status of the payment agreement can be determined by calling [Get Payment Agreement by UniqueId](#tag/Reporting/operation/get-paymentagreement-id) or by subscription to the [PaymentAgreementNotification](#tag/Webhooks/operation/PaymentAgreementNotification) webhook. The request payload and business rules/validations are identical to the synchronous API. operationId: post-paymentagreement-async requestBody: content: application/json: schema: $ref: '#/components/schemas/CreatePaymentAgreementDto' responses: '202': description: Created content: application/json: schema: $ref: '#/components/schemas/AsyncGenericResponse' '400': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '403': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '404': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '500': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '502': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '504': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } /au/payto/pas-v1/PaymentInstructionAsync: post: tags: - PayTo Async API summary: Create Payment Instruction Async description: | The purpose of this endpoint is to asynchronously create a payment instruction. The API returns as soon as the creation request has been captured and validated for background processing. The async API follows the Microsoft [async-request-reply pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/async-request-reply). Following a successful call, the status of the background request can be monitored using the [Get Async Request Status (Payment Instruction)](#tag/PayTo-Async-API/operation/get-async-paymentinitiation-status) endpoint or by subscription to the [AsyncJobResultNotification](#tag/Webhooks/operation/AsyncRequestNotification) webhook. The background request will complete when the payment instruction is either: - Created (This does not necessarily mean the payment has already been finalized). - Failing with a non-recoverable error. The background request will do retries for transient errors such as timeouts. - Timed out on retries (set to 4 days). After request completion, the status of the payment can be determined by calling [Get Payment Instruction By UniqueId](#tag/Reporting/operation/get-paymentinstruction-paymentinitiationid) or by subscription to the [Get Payment Instruction By UniqueId](#tag/Webhooks/operation/PaymentInstructionStatusNotification) webhook. The request payload and business rules/validations are identical to the synchronous API. operationId: post-async-paymentinstruction requestBody: content: application/json: schema: $ref: '#/components/schemas/InitiateMandatePaymentDto' example: paymentAgreementUID: BCORP123456 paymentInitiationUID: BCORP00000001 paymentDetails: amount: 1.00 lodgementReference: 'BCorp PIR 001' responses: '202': description: Created content: application/json: schema: $ref: '#/components/schemas/AsyncGenericResponse' '400': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '403': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '404': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '500': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '502': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '504': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '/au/payto/pam-v1/PaymentAgreementAsync/{paymentAgreementUID}/unilateral': patch: tags: - PayTo Async API summary: Unilateral Amendment Async description: The purpose of this endpoint is to asynchronously amend a payment agreement that does not require approval from the Payer. The API returns as soon as the amend request has been captured and validated for background processing. The request payload and business rules/validations are identical to the synchronous API. operationId: patch-async-paymentagreement-id-unilateral parameters: - name: paymentAgreementUID in: path required: true schema: type: string description: Id to uniquely Identify a payment agreement. maxLength: 35 pattern: ^[A-Za-z0-9_-] example: MONPAG12345 nullable: true requestBody: content: application/json-patch+json: schema: $ref: '#/components/schemas/AmendUnilateralDetailsDto' example: description: payroll pag1 shortDescription: payroll pag1 payeeDetails: payeeType: ORGN payeeLinkedBsb: 802980 payeeLinkedAccount: 33333333 payeeLinkedPayId: abc@gmail.com payeeLinkedPayIdType: EMAIL payeeAccountName: PayCo ultimatePayee: PayCo responses: '202': description: Created content: application/json: schema: $ref: '#/components/schemas/AsyncGenericResponse' '400': description: Error content: application/json: example: { 'traceId': 'b008558d-b6df-4935-b2aa-39b2f8d467be', 'errors': [ { 'errorCode': 'PAM_BR_AMEND_FORBIDDEN', 'errorMessage': 'Can only amend payment agreement in active or paused status' } ] } '403': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '404': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '500': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '502': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '504': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '/au/payto/pam-v1/PaymentAgreementAsync/{paymentAgreementUID}/bilateral': patch: tags: - PayTo Async API summary: Bilateral Amendment Async operationId: patch-async-paymentagreement-id-bilateral description: The purpose of this endpoint is to asynchronously amend a payment agreement which requires approval from the Payer. Changes made using this end point will only get reflected after payer approves the change. The API returns as soon as the amend request has been captured and validated for background processing. The request payload and business rules/validations are identical to the synchronous API. parameters: - name: paymentAgreementUID in: path required: true schema: description: Id to uniquely Identify a payment agreement. maxLength: 35 pattern: ^[A-Za-z0-9_-] example: MONPAG12345 requestBody: content: application/json: schema: $ref: '#/components/schemas/AmendBilateralDetailsDto' responses: '202': description: Created content: application/json: schema: $ref: '#/components/schemas/AsyncGenericResponse' '400': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '403': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '404': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '500': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '502': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '504': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '/au/payto/pam-v1/PaymentAgreementAsync/{paymentAgreementUID}/status': patch: tags: - PayTo Async API summary: Amend Payment Agreement Status Async description: This endpoint allows the initiator to change the status of a payment agreement. Available statuses are active, pause or cancel. The API returns as soon as the amend request has been captured and validated for background processing. The request payload and business rules/validations are identical to the synchronous API. operationId: patch-async-paymentagreement-id-status parameters: - name: paymentAgreementUID in: path required: true schema: type: string description: Id to uniquely Identify a payment agreement. maxLength: 35 pattern: ^[A-Za-z0-9_-] example: MONPAG12345 nullable: true requestBody: content: application/json: schema: $ref: '#/components/schemas/AmendPaymentAgreementStatusDto' example: statusChange: pause reasonCode: AC02 reasonDescription: Amend mandate status responses: '202': description: Created content: application/json: schema: $ref: '#/components/schemas/AsyncGenericResponse' '400': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '403': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '404': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '500': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '502': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '504': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '/au/payto/pam-v1/PaymentAgreementAsync/{PaymentAgreementUID}/recall/{actionIdentification}': patch: tags: - PayTo Async API summary: Recall a Payment Agreement Async description: The purpose of this endpoint is to asynchronously recall a pending PAG creation/amendment action before it is approved or declined by payer servicer/customer. We will cancel the action uniquely identified by actionIdentification. The API returns as soon as the recall request has been captured and validated for background processing. The request payload and business rules/validations are identical to the synchronous API. operationId: patch-async-paymentagreement-id-recall parameters: - name: PaymentAgreementUID in: path required: true schema: type: string maxLength: 35 pattern: ^[A-Za-z0-9_-] description: Id to uniquely Identify a payment agreement. example: MONPAG12345 - name: actionIdentification in: path required: true schema: type: string maxLength: 35 pattern: ^[a-f0-9]{12}1[a-f0-9]{3}[89ab][a-f0-9]{15}$ description: unique Id used to identify pending(unapproved) actions. This id is assigned when a new payment agreement is created or when a bilateral amendment is made. example: 6ae818a80ba362618aeaece46ee70e4a responses: '202': description: Created content: application/json: schema: $ref: '#/components/schemas/AsyncGenericResponse' '400': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '403': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '404': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '500': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '502': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '504': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } # webhooks /WEBHOOK_TARGET_URL: post: tags: - Webhooks summary: Payment Agreement Notification description: "

When a payer makes a change to a payment agreement (for example authorising or cancelling a payment agreement through their banking app) payment agreement, Monoova will send a webhook to notify the initiator. Payment Agreement webhooks will provide the data included in the create payment agreement schema
Event name: PaymentAgreementNotification


These webhook can be subscribed using API's provided in Notification Management. " operationId: PaymentAgreementNotification security: [] responses: '200': description: OK - Notification successfully received. parameters: - name: Authorization in: header required: false schema: type: string example: 'Bearer ' description: The securityToken from the subscription. - name: Verification-Signature in: header required: false schema: type: string example: 'e+AFAj2W69rAwbsGn+rSSnFm2ISEblo0MXnx9Qtoh2k5mst1cEEpcrVSzGL jzOPlEL2Ea/iYLbFGzDdxVRTcNLINOhsXM/smimNjBt8sq30FbvSNMjlfDn rZ6FOIkl3E3cu9B+M4OVL8HafPohb67IRNDNyCnCvBM10qHrioiak=' description: This is a base64 encoded cryptographic signature that should be used
to verify both the integrity of the message as well as the source (Monoova).
The signature's hashing method is SHA256 and the public key can be retrieved from /public/v1/certificate/public-key . requestBody: content: application/json: schema: $ref: '#/components/schemas/WebhookPaymentAgreementDto' example: eventId: 9f0f390c-6173-4977-abd0-9f41218a62a3 sourceEventName: PaymentAgreementCancelled eventTimestamp: 2022-08-31T07:12:35.7560202Z paymentAgreementDetails: paymentAgreementUID: BCORP123456 mmsId: 'e57577f82e841bf3b0edbacfdc775ca0' paymentAgreementStatus: 'Cancelled' payeeDetails: payeeType: ORGN payeeLinkedBsb: 802950 payeeLinkedAccount: 10109010 payeeLinkedPayID: abc@gmail.com payeeLinkedPayIdType: EMAIL payeeAccountName: PayCo ultimatePayee: PayCo payerDetails: payerType: ORGN linkedBsb: 802950 linkedAccount: 987654331 payer: WidgetCo ultimatePayer: WidgetCo payerPartyReference: Payer4321 paymentTerms: numberOfTransactionsPermitted: 100 frequency: WEEK maximumAmount: 100.00 agreementType: VARI paymentDetails: automaticRenewal: false description: payroll pag shortDescription: PayToTest123445 purpose: MORI respondByTime: 03/22/2024 15:45:30 startDate: 2022-10-05 endDate: 2023-08-24 action: agreementStatusChangeReasonCode: M002 agreementStatusChangeReasonDescription: Reason description, manually entered, or mapped from agreementStatusChangeReasonCode. actionIdentification: dccbd8bb810618e1891e9fde2379345e actionType: Amend actionStatus: Expired /Webhook_Payment_Instruction_Status_URL: post: tags: - Webhooks summary: Payment Instruction Status Notification parameters: - name: Authorization in: header required: false schema: type: string example: 'Bearer ' description: The securityToken from the subscription. - name: Verification-Signature in: header required: false schema: type: string example: 'e+AFAj2W69rAwbsGn+rSSnFm2ISEblo0MXnx9Qtoh2k5mst1cEEpcrVSzGL jzOPlEL2Ea/iYLbFGzDdxVRTcNLINOhsXM/smimNjBt8sq30FbvSNMjlfDn rZ6FOIkl3E3cu9B+M4OVL8HafPohb67IRNDNyCnCvBM10qHrioiak=' description: This is a base64 encoded cryptographic signature that should be used
to verify both the integrity of the message as well as the source (Monoova).
The signature's hashing method is SHA256 and the public key can be retrieved from /public/v1/certificate/public-key . description: "

Clients need to implement an API endpoint on their system to receive PaymentInstructionStatus notifications from Monoova.
Event name: PaymentInstructionNotification


These webhook can be subscribed using API's provided in Notification Management. " operationId: PaymentInstructionStatusNotification security: [] requestBody: content: application/json: schema: $ref: '#/components/schemas/WebhookPaymentInstructionDto' example: eventId: 7C1C78DB-BD64-416A-96C4-661C89602FDC sourceEventName: PaymentInstructionStatusUpdated eventTimestamp: 2023-06-05T04:43:05.9904048Z paymentInitiationDetail: paymentAgreementUID: MONPAG1683781294 paymentInitiationUID: PIU-1685940180 nppInstructionId: PI123456789 paymentInitiationStatus: ACSC paymentInitiationStatusDescription: Accepted & Settled mmsId: 4fdbeebadff71da0b5ccd9d25427c3df payeeDetails: payeeType: Organisation payeeLinkedBSB: '' payeeLinkedAccount: '' payeeLinkedPayID: sample@monoova.com payeeLinkedPayIdType: Email payeeAccountName: ABC Corp1 ultimatePayee: ABC Corp1 paymentDetails: amount: 10.00 isLastPayment: false lodgementReference: Monoova PayTo LVP Demo Testing responses: '200': description: OK - Notification successfully received. '/WEBHOOK_ASYNC_REQUEST_URL': post: tags: - Webhooks parameters: - name: Authorization in: header required: false schema: type: string example: 'Bearer ' description: The securityToken from the subscription. - name: Verification-Signature in: header required: false schema: type: string example: 'e+AFAj2W69rAwbsGn+rSSnFm2ISEblo0MXnx9Qtoh2k5mst1cEEpcrVSzGL jzOPlEL2Ea/iYLbFGzDdxVRTcNLINOhsXM/smimNjBt8sq30FbvSNMjlfDn rZ6FOIkl3E3cu9B+M4OVL8HafPohb67IRNDNyCnCvBM10qHrioiak=' description: This is a base64 encoded cryptographic signature that should be used
to verify both the integrity of the message as well as the source (Monoova).
The signature's hashing method is SHA256 and the public key can be retrieved from /public/v1/certificate/public-key . summary: Asynchronous Request Notification description: This webhook can be subscribed using API's provided in Notification Management.
Event name - AsyncJobResultNotification operationId: AsyncRequestNotification security: [] requestBody: content: application/json: schema: $ref: '#/components/schemas/WebhookAsyncRequestResponseDto' example: { eventId: '9E151397-BCA4-4700-8718-3907368780F5', sourceEventName: 'AsyncJobCompleted', eventTimestamp: '2023-04-18T05:34:22.3447159Z', uniqueRequestId: 'b78e1829-dd2e-4119-a678-af8abccf9129', status: 'Failed', entityType: 'PaymentAgreement', actionType: 'Create', location: 'https://api.monoova.com/au/payto/pam/MONPAG2323232', errorCode: 'PAM_UNEXPECTED_ERROR', errorMessage: 'Internal server error. Please contact Monoova support.' } responses: '200': description: Any Response # Notification Management /au/core/notification-v1/Subscription: get: tags: - Notification Management summary: Get All Subscriptions description: Retrieves details of all subscriptions. operationId: getAllSubscriptions responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SubscriptionListResponse' '400': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '403': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '404': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '500': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '502': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '504': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } post: tags: - Notification Management summary: Create a subscription operationId: post-subscription requestBody: content: application/json: schema: $ref: '#/components/schemas/SubscriptionDetailUpdateRequest' responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SubscriptionUpdateResponse' '400': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '403': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '404': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '500': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '502': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '504': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } /au/core/notification-v1/Subscription/{subscriptionId}: get: tags: - Notification Management summary: Get Subscription by Id description: Gets the Subscription corresponding to the subscriptionId. operationId: get-subscription parameters: - name: subscriptionId in: path required: true schema: type: string description: Monoova generated Guid to uniquely identify the subscription.
This is required when updating a subscription, if not provided then we assume we are trying to create a new subscription.
Is a valid Guid when not blank. responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SubscriptionListResponse' '400': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '403': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '404': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '500': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '502': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '504': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } delete: tags: - Notification Management summary: 'Delete a subscription' operationId: delete-subscription-id parameters: - name: subscriptionId in: path required: true schema: type: string description: Monoova generated Guid to uniquely identify the subscription.
This is required when updating a subscription, if not provided then we assume we are trying to create a new subscription.
Is a valid Guid when not blank. responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SubscriptionDeleteResponse' '400': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '403': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '404': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '500': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '502': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '504': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } put: tags: - Notification Management summary: Update a subscription operationId: put-subscription parameters: - name: subscriptionId in: path required: true schema: type: string description: Monoova generated Guid to uniquely identify the subscription.
This is required when updating a subscription, if not provided then we assume we are trying to create a new subscription.
Is a valid Guid when not blank. requestBody: content: application/json: schema: $ref: '#/components/schemas/SubscriptionDetailUpdateRequest' responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SubscriptionUpdateResponse' '400': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '403': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '404': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '500': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '502': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '504': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } /au/core/notification-v1/Notification: get: tags: - Notification Management summary: Get Webhooks operationId: get-webhookschedule parameters: - name: start in: query description: Format - date-time (as date-time in RFC3339). schema: type: string format: date-time - name: pageSize in: query description: Format - int32. schema: type: integer format: int32 - name: pageNumber in: query description: Format - int32. schema: type: integer format: int32 - name: end in: query description: Format - date-time (as date-time in RFC3339). schema: type: string format: date-time responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/WebHookListResponse' example: traceId: d5e0b5ee-2aff-4ac7-a638-893b664183a3 notifications: - eventId: 2a37987a-0486-4c6f-9267-9ff44eb168c6 sourceEventName: PaymentAgreement_Updated url: https://f89be4be-781a-47cd-8048-8ba3f5438d56.mock.pstmn.io/PaymentAgreementNotificaion eventTimestamp: 2022-08-29T03:11:01.471Z executionCompleteDateTimeUtc: 2022-08-29T03:11:03.365Z status: Success statusDescription: Hello lastResponseCode: 200 retryCount: 0 '400': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '403': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '404': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '500': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '502': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '504': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '/au/core/notification-v1/Notification/resend/{eventId}': post: tags: - Notification Management summary: 'Request a resend' operationId: post-webhookschedule-resend-eventid parameters: - name: eventId in: path required: true schema: type: string responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/WebHookResendResponse' '400': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '403': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '404': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '500': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '502': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } '504': description: Error content: application/json: example: { 'traceId': 'f1a7fbd7-ca39-4b98-b247-f4e0e004f152', 'errors': [{ 'errorCode': 'string', 'errorMessage': 'string' }] } # Authentication - PayTo /au/security/oauth-v1/Token: post: summary: Token tags: - Generate a Bearer Token description:

This endpoint will generate a bearer token which is required to call the Monoova PayTo endpoints. Bearer tokens are valid for 24 hours so they need to be regenerated every 24 hours. Once a bearer token has been generated payment agreements can be created, and payments initiated against those agreements.


This API endpoint uses BASIC Authentication.
username
Your mAccount number that can be obtained from portal
password
Your API key that can be obtained from portal

After 10 failed authentication attempts your account will be blocked. You will receive a 401 Forbidden error when you fail authentication. Once your account is blocked you will receive a 401 Too Many Requests error. To unlock your account you need to roll your API key in the Monoova portal.


Please note that rolling your API key will impact you existing API integration, you will need to update your API across your environment. operationId: oauth-v1/token security: - BasicAuth: [] responses: '200': description: OK content: application/json: schema: type: object properties: token: type: string example: { 'token': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c' } components: securitySchemes: BearerAuth: type: http scheme: bearer bearerFormat: JWT BasicAuth: type: http scheme: basic schemas: #PayTo AmendBilateralDetailsDto: type: object properties: automaticRenewal: type: boolean nullable: true endDate: type: string description: End date of the validity of the mandate. If specified, the mandate is valid until 23:59:59.999 Australia Sydney time on this date. nullable: true respondByTime: type: string format: date-time description: Optional time used to indicate by when resolution of a bilateral action is requested from the other party to the payment agreement. It will be provided in any notification sent to the counterparty. This time is for informational purposes only and does not affect the expiry time imposed by the MMS. Must be future date and less than 5 days If not provided value will be defaulted to agreement creation datetime + 5 day Default time zone is UTC nullable: true paymentTerms: $ref: '#/components/schemas/PaymentTermsDto' additionalProperties: false AmendBilateralDetailsResponse: type: object properties: paymentAgreementUID: type: string description: Id to uniquely Identify a payment agreement. maxLength: 35 pattern: ^[A-Z0-9_-] example: MONPAG12345 mmsId: type: string description: This is the unique ID that identifies this payment agreement. example: 684211c8a4076eeea68e63eeaa8ea6aa actionIdentification: type: string example: eea687ee114eae368ca066aa62bae488 additionalProperties: false AmendPaymentAgreementStatusDto: type: object properties: paymentAgreementUID: type: string description: | Unique ID of the payment agreement. statusChange: type: string description: The status that you wish to change the payment agreement to.
Note: You cannot change a status from ‘Created’ to ‘Cancel’. If you wish to recall a payment agreement before the payer has approved it, you need to use the Recall Agreement endpoint.
Current Status Payload Status New Status Note
Active Cancel Cancelled Reason Code is mandatory.
Active Pause Paused Reason Code is mandatory.
Paused Resume Active Only party who suspended can Activate payment agreement
Paused Cancel Cancelled Reason Code is mandatory.
Cancel -- This is the final status
reasonCode: type: string description: | Reason code for changing the agreement status. Must be provided when the status is `Cancel` or `Pause`. example: AC02 reasonDescription: type: string description: | Description of the reason for the change in status. example: Invalid Debtor Account Number maxLength: 256 AmendPaymentAgreementStatusResponse: type: object properties: traceId: type: string description: Trace ID for tracking the request. paymentAgreementUID: type: string description: Id to uniquely Identify a payment agreement. maxLength: 35 pattern: ^[A-Z0-9_-] example: MONPAG12345 paymentAgreementStatus: type: string description: | The current status of the payment agreement. example: Paused paymentAgreementStatusDescription: type: string description: | Detailed description of the current status. example: Status changed from Active to Paused mmsId: type: string description: | Unique ID that identifies this payment agreement within the system. AmendUnilateralDetailsDto: type: object properties: description: type: string description: Reason for the mandate setup as narrative text.
Either "description" or "short_description" must be present. maxLength: 140 example: payroll pag1 nullable: true shortDescription: type: string description: Reason for the mandate setup as narrative text.
Either "description" or "short_description" must be present. maxLength: 35 example: payroll pag1 nullable: true payeeDetails: $ref: '#/components/schemas/PayeeDetailsDto' additionalProperties: false AmendUnilateralDetailsResponse: type: object properties: paymentAgreementUID: type: string description: Id to uniquely Identify a payment agreement. maxLength: 35 pattern: ^[A-Z0-9_-] example: BCORP1662358223 traceId: type: string example: 1dabfaa9-abe8-4d2d-a69a-b723079d84ed mmsId: type: string description: This is the unique ID that identifies this payment agreement. example: aa0a5d7eedcd1c01999b2906b1edd8cd actionIdentification: type: string example: b9c91b0f382b1fa5bf7e87aaad094eee additionalProperties: false CreatePaymentAgreementDto: type: object required: - paymentAgreementUID properties: paymentAgreementUID: type: string description: Id to uniquely Identify a payment agreement. maxLength: 35 pattern: '^[A-Z0-9_-]' example: ABCORP123456 payeeDetails: $ref: '#/components/schemas/PayeeDetailsDto' payerDetails: $ref: '#/components/schemas/PayerDetailsDto' paymentTerms: $ref: '#/components/schemas/PaymentTermsDto' paymentDetails: $ref: '#/components/schemas/PaymentDetailsDto' additionalProperties: false WebhookPaymentAgreementDto: type: object required: - paymentAgreementUID properties: eventId: type: string minLength: 40 pattern: '^[A-Z0-9-]' description: This will uniquely identify each notification and can be used to request a resend. sourceEventName: type: string description: Possible Values PaymentAgreementCreated, PaymentAgreementActive, PaymentAgreementCancelled, PaymentAgreementAmended, PaymentAgreementStatusAmended, PaymentAgreementActionCancelled, PaymentAgreementActionExpired (since 1.03), PaymentAgreementActionDeclined (since 1.03), PaymentAgreementActionCreated (since 1.06) eventTimestamp: type: string format: date-time description: ISO Date Time in UTC paymentAgreementDetails: type: object properties: paymentAgreementUID: type: string description: Id to uniquely Identify a payment agreement. maxLength: 35 pattern: '^[A-Z0-9_-]' paymentAgreementStatus: type: string description: Status of the payment agreement. Must be one of Created, Active, Paused, Cancelled, Rejected, Expired payeeDetails: $ref: '#/components/schemas/PayeeDetailsDto' payerDetails: $ref: '#/components/schemas/PayerDetailsDto' paymentTerms: $ref: '#/components/schemas/PaymentTermsDto' paymentDetails: $ref: '#/components/schemas/PaymentDetailsDto' action: type: object description: This will be populated when notifications are triggered for following events Mandate cancellation, declined by Payer, Mandate status changed by Payer, Mandate amendment declined by Payer. properties: agreementStatusChangeReasonCode: type: string description: See Mandate Status Reason Code agreementStatusChangeReasonDescription: type: string description: Description is one of the manually inserted reason description when responding to the action, The relevant description attached to the code above from list Mandate Status Reason Code. actionStatus: type: string description: One of
Completed,
Cancelled,
PendingApproval,
Declined,
Expired,
Rejected actionType: type: string description: One of
CREATE,
AMEND,
PAUSE,
RESUME,
CANCEL,
PORT actionIdentification: type: string additionalProperties: false WebhookPaymentInstructionDto: type: object required: - paymentInitiationUID properties: eventId: type: string minLength: 40 pattern: '^[A-Z0-9-]' description: This will uniquely identify each notification and can be used to request a resend. sourceEventName: type: string description: PaymentInstructionStatusUpdated eventTimestamp: type: string format: date-time description: ISO Date Time in UTC paymentInitiationDetails: type: object required: - paymentAgreementUID properties: paymentAgreementUID: type: string description: Id to uniquely Identify a payment agreement. maxLength: 35 pattern: '^[A-Z0-9_-]' paymentInitiationUID: type: string nullable: true maxLength: 35 description: Id to uniquely identify payment paymentInitiationStatus: type: string nullable: true description: This is the status of the payment agreement. example: ACSC paymentInitiationStatusDescription: type: string description: This describes the status. For example, a status of ‘created’ will have a description of ‘Pending Payer Approval’ example: Accepted & Settled nullable: true mmsId: type: string description: This is the unique ID that identifies this payment agreement. example: 4532543543543 nullable: true statusReasonCode: type: string example: null statusReasonDescription: type: string example: null payeeDetails: $ref: '#/components/schemas/PayeeDetailsDto' paymentDetails: $ref: '#/components/schemas/PaymentInitiationDetailsDto' additionalProperties: false CreatePaymentAgreementResponse: type: object properties: traceId: type: string example: 1dabfaa9-abe8-4d2d-a69a-b723079d84ed paymentAgreementUID: type: string maxLength: 35 pattern: ^[A-Za-z0-9_-] description: Id to uniquely Identify a payment agreement. example: BCORP123456 PaymentAgreementStatus: type: string description: This is the status of the payment agreement. Status (e.g. Active, Cancelled, ...). See Payment Agreement Status for all options. example: Created PaymentAgreementStatusDescription: type: string description: This describes the status. For example, a status of ‘created’ will have a description of ‘Pending Payer Approval’ example: Pending Payer Approval nullable: true mmsId: type: string description: This is the unique ID that identifies this payment agreement. example: a9ba56f64baa1dee9ac2d7f87c2621fa registrationDateTime: type: string description: The date and time that you created the mandate. example: 2022-09-05T05:29:53.031Z actionIdentification: type: string example: b9c91b0f382b1fa5bf7e87aaad094eee additionalProperties: false #Async Schemas AsyncGenericResponse: type: object properties: traceId: type: string description: Unique identifier for this request instance, useful for tracing. example: 'ac819ad0-c3ee-44f9-964a-34a0a5ff5a24' uniqueRequestId: type: string description: Unique identifier assigned to the request to correlate with the response. example: '595a3202-e9aa-406e-a2a3-5efb6ca8b72a' PendingInitiationAsyncResponse: type: object properties: traceId: type: string description: Error log trace identifier. example: 'be393fae-52c2-4c9e-a262-4974de6da750' uniqueRequestId: type: string description: Server generated unique request identifier. example: '4834dba5-27b0-465c-aea7-aa530315c68c' paymentInitiationUID: type: string description: User supplied PIR identifier. example: 'MONPIR1673935776' status: type: string description: Current status of the request. example: 'Processing' SuccessInitiationAsyncResponse: type: object properties: traceId: type: string description: Error log trace identifier. example: 'c0905f60-80b7-4a6a-abe3-0207b3e19b8e' uniqueRequestId: type: string description: Server generated unique request identifier. example: '595a3202-e9aa-406e-a2a3-5efb6ca8b72a' paymentInitiationUID: type: string description: User supplied PIR identifier. example: 'MONPIR1673930138' status: type: string description: Final status of the request. example: 'Completed' AsyncInitiationRequestFailedResponse: type: object properties: traceId: type: string description: Error log trace identifier. example: 'c0905f60-80b7-4a6a-abe3-0207b3e19b8e' uniqueRequestId: type: string description: Server generated unique request identifier. example: '595a3202-e9aa-406e-a2a3-5efb6ca8b72a' paymentInitiationUID: type: string description: User supplied PIR identifier. example: 'MONPIR1673930138' status: type: string description: Final status of the request indicating failure. example: 'Failed' errorCode: type: string description: Error code indicating the reason for failure. example: 'MOV_UNEXPECTED_VALIDATION_FAILURE' errorMessage: type: string description: Detailed message explaining the reason for failure. example: 'Validation failed with banking partner. Contact Monoova for more information' PendingAgreementAsyncResponse: type: object properties: traceId: type: string description: Trace identifier. example: 'be393fae-52c2-4c9e-a262-4974de6da750' uniqueRequestId: type: string description: Server generated unique request identifier. example: '4834dba5-27b0-465c-aea7-aa530315c68c' paymentAgreementUID: type: string description: User supplied PAG identifier. example: 'MONPAG1673935776' status: type: string description: Current status of the request. example: 'Processing' SuccessAgreementAsyncResponse: type: object properties: traceId: type: string description: Error log trace identifier. example: 'c0905f60-80b7-4a6a-abe3-0207b3e19b8e' uniqueRequestId: type: string description: Server generated unique request identifier. example: '595a3202-e9aa-406e-a2a3-5efb6ca8b72a' paymentAgreementUID: type: string description: User supplied PAG identifier. example: 'MONPAG1673930138' status: type: string description: Final status of the request. example: 'Completed' AsyncMandateRequestFailedResponse: type: object properties: traceId: type: string description: Error log trace identifier. example: 'c0905f60-80b7-4a6a-abe3-0207b3e19b8e' uniqueRequestId: type: string description: Server generated unique request identifier. example: '595a3202-e9aa-406e-a2a3-5efb6ca8b72a' paymentAgreementUID: type: string description: User supplied PAG identifier. example: 'MONPAG1673930138' status: type: string description: Final status of the request indicating failure. example: 'Failed' errorCode: type: string description: Error code indicating the reason for failure. example: 'MOV_UNEXPECTED_VALIDATION_FAILURE' errorMessage: type: string description: Detailed message explaining the reason for failure. example: 'Validation failed with banking partner. Contact Monoova for more information' WebhookAsyncRequestResponseDto: type: object required: - uniqueRequestId properties: eventId: type: string description: eventId must be a string not an integer. It should allow at least 40 characters including alphanumerics and hyphen “-” sourceEventName: type: string enum: - CreditCardRefundUpdated eventTimestamp: type: string format: date-time description: ISO Date Time in UTC uniqueRequestId: type: string pattern: '[a-z0-9-]{36}' description: The async request Id returned by the original async API call status: type: string description: One of
Completed - successful completion
Failed - error encountered
Expired - request could not be completed within a reasonable time (currently 48 hours) location: type: string format: uri description: URL Location of the updated resource
Only if status = Completed errorCode: type: string description: Only if status = Failed errorMessage: type: string description: Only if status = Failed entityType: type: string enum: - PaymentAgreement - PaymentInstruction - CreditCardPayment - CreditCardRefund description: The type of the entity involved in the transaction. actionType: type: string enum: - Create - Amend - Cancel - RecallAction - AmendStatus description: > The type of action being performed. - 'Create' is valid for PaymentAgreement, PaymentInstruction, CreditCardRefund. - 'Amend' is valid for PaymentAgreement. - 'Cancel' is valid for CreditCardPayment (Note: Cancellations are currently disabled). - 'RecallAction' and 'AmendStatus' are valid for PaymentAgreement. additionalProperties: false GetPaymentInstructionStatusByDateResponse: type: object properties: pageNumber: type: integer description: The number of the current page, starting at 1 (1-indexed). pageSize: type: integer description: The number of records per page. recordCount: type: integer description: The total number of records. paymentInitiationDetails: type: array items: $ref: '#/components/schemas/PaymentStatusResponseDto' additionalProperties: false InitiateMandatePaymentDto: type: object required: - paymentAgreementUID - paymentInitiationUID - paymentDetails properties: paymentAgreementUID: type: string maxLength: 35 description: Id to uniquely Identify a payment agreement. nullable: true paymentInitiationUID: type: string nullable: true maxLength: 35 description: Id to uniquely identify payment payeeDetails: $ref: '#/components/schemas/PayeeDetailsDto' paymentDetails: $ref: '#/components/schemas/PaymentInitiationDetailsDto' additionalProperties: false InitiateMandatePaymentResponseDto: type: object properties: traceId: type: string example: f3ae20c5-e400-4eab-8fb0-16e03c8481be paymentAgreementUID: type: string description: Id to uniquely Identify a payment agreement. maxLength: 35 pattern: ^[A-Z0-9_-] example: MOA1222333 paymentInitiationUID: type: string description: Id to uniquely Identify a payment initiation. maxLength: 35 pattern: ^[A-Z0-9_-] example: C150D6FAE2044CA9A3ADB470874E8F86 nppInstructionId: type: string description: Unique identifier for the NPP instruction. maxLength: 35 example: MOPYAUS1XXXI20241119004756058205270 paymentInitiationStatus: type: string description: This is the status of the payment agreement. example: ACSC paymentInitiationStatusDescription: type: string description: This describes the status. For example, a status of ‘created’ will have a description of ‘Pending Payer Approval’ example: Accepted & Settled mmsId: type: string description: This is the unique ID that identifies this payment agreement. example: ed8569b5fd8616259d15b5b9a2d52bc0 additionalProperties: false PayeeDetailsDto: required: - payeeType oneOf: - required: [payeeLinkedBsb, payeeLinkedAccount] - required: [payeeLinkedPayId, payeeLinkedPayIdType, payeeAccountName] type: object properties: payeeType: type: string nullable: true description: Identifies the type of a party.
Possible Values ORGN - Organization, PERS - Person example: ORGN payeeLinkedBsb: type: string description: BSB number.
Required if 'payeeLinkedPayId' and 'payeeLinkedPayIdType' are not provided. e.g. '999-999 or 999999' example: 999-999 nullable: true payeeLinkedAccount: type: string maxLength: 28 description: Bank Account Number.
Required if 'payeeLinkedPayId' and 'payeeLinkedPayIdType' are not provided. nullable: true example: 22222222 payeeLinkedPayId: type: string description: PayID.
Email, phone number, ABN, ACN or Organisation name.
Required if 'payeeLinkedBsb' and 'payeeLinkedAccount' are not provided. See PAYID Format Validation. nullable: true example: '' payeeLinkedPayIdType: type: string description: PayID Type. Possible values ABN, Email, PhoneNumber, OrganisationId, ACN.
Required if 'payeeLinkedBsb' and 'payeeLinkedAccount' are not provided. nullable: true example: '' payeeAccountName: type: string description: Bank Account Name
Can only provide payeeAccountName in the payload if crediting an external BSB. Mandatory if crediting a PayID. maxLength: 140 nullable: true example: ABCORP ultimatePayee: type: string nullable: true example: ABCORP description: Name by which the party is known, and which is usually used to identify that party.
Can only provide ultimatePayee in the payload if crediting an external BSB. additionalProperties: false PayeeDetailsResponseDto: type: object properties: payeeType: type: string description: 'Specifies whether the payee is an organization or an individual.' example: null payeeLinkedBsb: type: string description: 'Bank State Branch (BSB) number identifying the bank branch of the payee.' example: 802950 nullable: true payeeLinkedAccount: type: string description: 'Account number of the payee.' example: 10109010 nullable: true payeeLinkedPayId: type: string description: "PayID associated with the payee's account." example: null nullable: true payeeLinkedPayIdType: type: string description: "Type of PayID linked to the payee's account." example: null nullable: true payeeAccountName: type: string description: "Name associated with the payee's bank account." example: BCORP nullable: true ultimatePayee: type: string description: 'The final recipient of the funds.' example: BCORP additionalProperties: false PayerDetailsDto: type: object required: - payerType - payer - ultimatePayer - payerPartyReference oneOf: - required: [linkedBsb, linkedAccount] - required: [linkedPayId, linkedPayIdType] properties: payerType: type: string description: Identifies the type of party.
Possible Values - ORGN (Organization), PERS (Person) nullable: true example: ORGN linkedBsb: type: string description: BSB (Bank-State-Branch) number.
Required if 'linkedPayId' and 'linkedPayIdType' are not provided. nullable: true example: 802950 linkedAccount: type: string description: Bank account number.
Required if 'linkedPayId' and 'linkedPayIdType' are not provided. maxLength: 28 example: 10109010 nullable: true linkedPayId: type: string nullable: true example: null description: PayID.
Email, phone number, ABN, ACN or Organisation ID.
Required if 'linkedBsb' and 'linkedAccount' are not provided. See PAYID Format Validation. linkedPayIdType: type: string nullable: true example: null description: PayID Type.
Possible Values - Email, PhoneNumber, ABN, ACN, OrganisationId.
Required if 'linkedBsb' and 'linkedAccount' are not provided. payer: type: string description: Bank Account Name. maxLength: 140 nullable: true example: ABCCORPCo ultimatePayer: type: string maxLength: 140 description: Name by which the party is known, and which is usually used to identify that party. nullable: true example: ABCCORPCo payerPartyReference: type: string maxLength: 35 description: This field will be presented to Payer in the detail agreement view. This field also be used group payment initiations associated with a payment agreement. nullable: true example: Payer54321 additionalProperties: false PayerDetailsResponseDto: type: object properties: payerType: type: string description: "Type of the payer entity, such as 'ORGN' for organization." example: ORGN linkedBsb: type: string description: 'BSB number associated with the payer’s bank account.' example: 802950 nullable: true linkedAccount: type: string description: 'Bank account number of the payer.' example: 10109010 nullable: true linkedPayId: type: string description: 'PayID linked to the payer’s account, may be null if not used.' example: null nullable: true linkedPayIdType: type: string description: "Type of the linked PayID, such as 'Email' or 'Phone', may be null if PayID is not used." example: null nullable: true payer: type: string description: 'Name of the payer.' example: WidgetCo ultimatePayer: type: string description: 'The final entity responsible for making the payment.' example: WidgetCo payerPartyReference: type: string description: 'A reference identifier provided by the payer.' example: Payer1662333659 additionalProperties: false PaymentAgreement: type: object properties: paymentAgreementUID: type: string description: A user-provided unique identifier for the payment agreement. example: BCORP1662344139 nullable: true paymentAgreementStatus: type: string description: Current status of the payment agreement. Status (e.g. Active, Cancelled, ...). See Payment Agreement Status for all options. example: Paused nullable: true statusReasonCode: type: string example: R006 nullable: true statusReasonDescription: type: string example: Account is now closed nullable: true mmsId: type: string description: A unique identifier for the payment agreement. example: d6765e4ff2eb1e7f83d72c1f8d3e2a07 nullable: true payeeDetails: $ref: '#/components/schemas/PayeeDetailsResponseDto' payerDetails: $ref: '#/components/schemas/PayerDetailsResponseDto' paymentTerms: $ref: '#/components/schemas/PaymentTermsResponseDto' paymentDetails: $ref: '#/components/schemas/PaymentDetailsResponseDto' pendingActions: type: array items: $ref: '#/components/schemas/ActionDetails' additionalProperties: false ActionDetails: type: object properties: actionId: type: string description: A unique identifier for the action. example: '45df1d4abc914455a0e377051cb39fd7' actionType: type: string enum: - Create - Amend description: The type of action, which can be either 'Create' or 'Amend'. bilateral: type: boolean description: Indicates whether the action is bilateral. example: true status: type: string enum: - Completed - Cancelled - PendingApproval - Declined - Expired - Queued description: The current status of the action. example: PendingApproval PaymentAgreementResponse: type: object properties: traceId: type: string example: 43075658-ed9a-4ce0-84ba-2f6524a16676 paymentAgreementDetails: $ref: '#/components/schemas/PaymentAgreement' additionalProperties: false PaymentAgreementsListResponse: type: object properties: paymentAgreementDetails: type: array items: $ref: '#/components/schemas/PaymentAgreement' traceId: type: string nullable: true example: 7fcb7dc4-ab8d-4bc8-8fa8-1335172377e2 additionalProperties: false PaymentDetailsDto: required: - automaticRenewal - purpose - startDate properties: automaticRenewal: type: boolean nullable: true example: false description: Determines if the payment agreement automatically renews at the end of the defined period.
Possible values - True, False
endDate cannot be present if automaticRenewal is set as 'TRUE', endDate must be present if automaticRenewal is set as 'FALSE' description: type: string nullable: true description: Reason for the mandate setup as narrative text.
Either "description" or "short_description" must be present maxLength: 140 example: null shortDescription: description: Reason for the mandate setup as narrative text.
Either "description" or "short_description" must be present type: string maxLength: 35 nullable: true example: PayToTest_001 purpose: type: string description: Payment Purpose Code.
Possible Values-
MORT - Mortgage Payments
UTIL - Utility Payments
LOAN - Loan Payments
DEPD - Dependant Support Payments
GAMP - Gambling Payments
RETL - Retail Payments
SALA - Salary Payments
PERS - Personal Payment
GOVT - Government Payments
PENS - Pension Payments
TAXS - Tax Payments
OTHR - Other Service Payments nullable: true example: MORT respondByTime: type: string description: Optional time used to indicate by when resolution of a bilateral action is requested from the other party to the payment agreement. It will be provided in any notification sent to the counterparty. This time is for informational purposes only and does not affect the expiry time imposed by the MMS.
Must be future date and less than 5 days
If not provided value will be defaulted to agreement creation datetime + 5 day
Default time zone is UTC format: ISODateTime ( yyyy-mm-ddThh:mm:ss+|–hh:mm) example: 2022-09-13T14:35:27Z nullable: true startDate: description: Start date of the validity of the mandate. The mandate is valid as of 00:00:00.000 Australia Sydney time on this date. type: string format: YYYY-MM-DD example: 2022-09-13 nullable: true endDate: type: string format: YYYY-MM-DD example: 2023-08-24 description: End date of the validity of the mandate. If specified, the mandate is valid until 23:59:59.999 Australia Sydney time on this date. nullable: true additionalProperties: false PaymentDetailsResponseDto: type: object properties: automaticRenewal: type: boolean description: Indicates if the agreement renews automatically example: false description: type: string description: Detailed reason for the mandate example: payroll pag shortDescription: type: string description: Brief reason for the mandate example: PayToTest_1662333659 purpose: type: string description: Code indicating the payment's purpose. example: MORT respondByTime: type: string description: Time by which a response is needed. example: 2022-10-07T14:35:27-10 startDate: type: string description: Start date of the mandate's validity. example: 2022-09-05 endDate: type: string description: End date of the mandate's validity. example: 2023-08-24 additionalProperties: false PaymentInitiationDetailsDto: type: object required: - amount properties: amount: type: string description: 'Amount to be transferred. Amount should be >=0.01' maxLength: 34 isLastPayment: type: boolean nullable: true description: 'Set to true to indicate this is the last payment initiation request associated with the mandate. Possible values - True, False.' lodgementReference: type: string nullable: true description: 'Unique reference, as assigned by the creditor, to unambiguously refer to the payment transaction.' maxLength: 280 additionalProperties: false PaymentStatusResponseDto: type: object properties: paymentAgreementUID: type: string description: Id to uniquely Identify a payment agreement. maxLength: 35 pattern: ^[A-Z0-9_-] example: MONPAG12345 paymentInitiationUID: type: string description: Id to uniquely Identify a payment initiation. maxLength: 35 pattern: ^[A-Z0-9_-] example: TRANSACTIONREFERRENCE2345 paymentInitiationStatus: type: string description: A valid Payment Initiation Status. example: ACSC paymentInitiationStatusDescription: type: string description: This describes the paymentinitiationstatus. example: Accepted & Settled mmsId: type: string description: This is the unique ID that identifies this payment agreement. example: ed8569b4fd8616259d15bcb9a2da2bc0 statusReasonCode: type: string example: R002 nullable: true statusReasonDescription: type: string example: Account to be debited does not exist nullable: true additionalProperties: false PaymentTermsDto: required: - numberOfTransactionsPermitted - frequency - amount - agreementType type: object properties: numberOfTransactionsPermitted: type: integer format: int32 description: Quantifies the number of transactions allowed per frequency nullable: true example: 10 frequency: type: string description: Specifies the regularity of an event. See Frequency Table for allowed values nullable: true example: WEEK pointInTime: type: number description: Qualifies the frequency in terms of an exact point in time or moment within the specified period.
Valid non decimal numeric value. Supported values will be 01 to 31
This field works in combination with frequency and can only be provided when frequency = MNTH
This field should not be provided if numberOfTransactionsPermitted is provided nullable: true example: null amount: type: number nullable: true maxLength: 34 example: null description: Exact amount that may be paid from the Creditor's account, per instruction. Refer to AgreementType & Amount table below maximumAmount: type: number maxLength: 34 example: 100.00 description: Maximum amount that may be paid from the Creditor's account, per instruction. Refer to AgreementType & Amount table below nullable: true agreementType: type: string description: Based on the AgreementType table nullable: true example: VARI additionalProperties: false PaymentTermsResponseDto: type: object properties: numberOfTransactionsPermitted: type: integer format: int32 description: Specifies the maximum number of transactions allowed within the specified frequency period. example: 100 frequency: type: string description: Defines how often transactions can occur example: WEEK amount: type: number format: double description: Fixed amount for transactions if applicable; null if variable amounts are allowed. example: null nullable: true maximumAmount: type: number format: double description: The maximum allowable amount for a transaction under this agreement. example: 100.00 nullable: true agreementType: type: string description: Type of agreement, such as variable (VARI) or fixed, dictating how amounts and terms are treated. example: VARI additionalProperties: false RecallPaymentAgreementLastActionResponse: type: object properties: paymentAgreementUID: type: string description: Id to uniquely Identify a payment agreement. maxLength: 35 pattern: ^[A-Z0-9_-] example: BCORP12345678 mmsId: type: string description: This is the unique ID that identifies this payment agreement. example: cf9cba5ea20c1e6b87aa04cc8955abcc paymentAgreementStatus: type: string description: This is the status of the payment agreement. example: Cancelled paymentAgreementStatusDescription: type: string description: This describes the status. For example, a status of ‘created’ will have a description of ‘Pending Payer Approval’ example: Mandate action recalled actionIdentification: type: string description: unique Id used to identify pending(unapproved) actions. This id is assigned when a new payment agreement is created or when a bilateral amendment is made. example: 6ae818d80ba362618a2aece46ee70e4a additionalProperties: false SubscriptionDeleteResponse: type: object properties: traceId: type: string example: f2db7ad2-2411-408c-b17a-5a050d30741b additionalProperties: false SubscriptionDetailResponse: type: object required: - subscriptionName - eventName - isActive properties: subscriptionName: type: string maxLength: 36 description: 'User-Defined name, to make the purpose or owner clear. Name provided by customers only.' pattern: '^[A-Za-z0-9_-]+' example: PaytoTest eventName: type: string description: 'The event we are subscribing to. Must be ‘PaymentAgreementNotification’ - forwards all payment agreement events to the Webhook URL.' example: PaymentAgreementNotification subscriptionId: type: string example: 734d8a9d-7ac6-44a7-9e88-867fb59f54e9 notificationType: type: string webHookDetail: $ref: '#/components/schemas/WebHookDetailGet' isActive: type: boolean example: true additionalProperties: false SubscriptionDetailUpdateRequest: type: object required: - subscriptionName - eventName - isActive properties: subscriptionName: type: string maxLength: 36 example: 'PayToTest' description: 'User-Defined name, to make the purpose or owner clear. Name provided by customers only.' pattern: '^[A-Za-z0-9_-]+' eventName: type: string description: 'The event we are subscribing to. Must be ‘PaymentAgreementNotification’ - forwards all payment agreement events to the Webhook URL.' example: 'PaymentAgreementNotification' webHookDetail: $ref: '#/components/schemas/WebHookDetail' isActive: type: boolean example: true additionalProperties: false SubscriptionListResponse: type: object properties: traceId: type: string example: 5b5d2d6e-4972-4be4-ab95-8a373b9d90c5 subscriptionDetails: type: array items: $ref: '#/components/schemas/SubscriptionDetailResponse' nullable: true additionalProperties: false SubscriptionUpdateResponse: type: object properties: traceId: type: string example: 5b5d2d6e-1972-4be4-ac95-8a373b9d90c5 subscriptionId: type: string example: 5d930864-76e9-4945-bc7c-7645e38d860b additionalProperties: false WebHookDetail: type: object required: - callBackUrl properties: callBackUrl: type: string example: 'http://demo62eacbbe3c14.mockable.io/pagnotification' description: URL of your server. securityToken: type: string example: Basic 13222276767676 description: This token will be sent back with the callback in Authorization header. (Authorization : [type] [credentials] (e.x Basic Rjc1234567890jdGMS67890U78...)) When creating the token, both 'type' and 'credentials' are required. additionalProperties: false WebHookDetailGet: type: object required: - callBackUrl properties: callBackUrl: type: string example: 'http://demo62eacbbe3c14.mockable.io/pagnotification' description: URL of your server. additionalProperties: false WebHookListResponse: type: object properties: notifications: type: array items: $ref: '#/components/schemas/WebHookResponse' additionalProperties: false WebHookResendResponse: type: object properties: traceId: type: string example: f1a7fbd7-cb39-4b98-b2a7-f4e0e004f152 additionalProperties: false WebHookResponse: type: object properties: eventId: type: string sourceEventName: type: string url: type: string eventTimestamp: type: string format: date-time executionCompleteDateTimeUtc: type: string format: date-time payload: type: string method: type: string status: type: string statusDescription: type: string lastResponseCode: type: integer format: int32 retryCount: type: integer format: int32 clientRequestedResend: type: boolean additionalProperties: false