openapi: 3.2.0 info: description: "# Introduction\n\nThe 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.\n\nMonoova'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.\n\n## Process\n\nPayTo allows you to debit an enabled domestic bank account in real time. \n\n* 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.\n\n* Next, the payer authorises the agreement through their banking app.\n\n* 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.\n\n* If you would like to modify the terms of the agreement, you can use the amendment API's.\n\n# Getting Started\n\n1. Access the Domestic Payments Portal:\n\n * Sandbox Environment:\n - Register: If you are new, [register](https://sandbox.monoova.com) to gain Sandbox access.\n - Login: If you already have Sandbox credentials, [log in](https://sandbox.monoova.com) to continue your work.\n\n * Production Environment:\n - Login: Login to the [Production portal](https://payments.monoova.com) using the credentials you obtained during onboarding.\n\n2. Activate Your API Key\n\n * Generate API Key:\n - 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.\n\n * Activate API Gateway Access:\n - Go to Manage > API Gateway and enter your API Key to activate API Gateway access for your mAccount.\n\n3. Configure API Access\n\n 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.\n\n4. Explore API Endpoints\n\n Use the API documentation to plan your integration. It provides details and examples of usage.\n\n5. Onboarding and Support\n\n Our integration team will guide you from the initial setup to the final running implementation, providing support throughout the process.\n\n# Sandbox Testing for PayTo Agreements\n\nIn 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.\n\n## Use the following payment details when testing in Sandbox:\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Account NameBSBAccount NumberPayID
Monoova Sample 180295022090100+61-422020901
Monoova Sample 280295022090101sample@monoova.com
Monoova Sample 38029502209010238126015228
Monoova Sample 480295022090103987654321
\n\n## Testing Payment Agreements\n\nPayment 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.\n\nFor 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.\n

\n### Response for Payment Agreements\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
ResponseReason CodeContains ValueExampleAction
Agreement Approved-.00$5.00, $10.00, $50.00Approve
Requested By CustomerM019.19$5.19, $10.19, $50.19Decline
\n\n### Other Test Cases\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
ResponseReason CodeContains ValueExampleAction
Invalid Debtor Account NumberM001.01$5.01, $10.01, $50.01Decline
Closed Debtor Account NumberM003.03$5.03, $10.03, $50.03Decline
Blocked AccountM004.04$5.04, $10.04, $50.04Decline
Invalid Debtor Account TypeM005.05$5.05, $10.05, $50.05Decline
Transaction ForbiddenM006.06$5.06, $10.06, $50.06Decline
Transaction Not SupportedM007.07$5.07, $10.07, $50.07Decline
Not Allowed CurrencyM008.08$5.08, $10.08, $50.08Decline
Invalid AmountM009.09$5.09, $10.09, $50.09Decline
Amount Exceeds Agreed LimitM010.10$5.10, $10.10, $50.10Decline
No Mandate Service On CustomerM018.18$5.18, $10.18, $50.18Decline
Mandate Cancelled Due To FraudM022.22$5.22, $10.22, $50.22Decline
No Answer From CustomerM027.27$5.27, $10.27, $50.27Decline
Regulatory ReasonM028.28$5.28, $10.28, $50.28Decline
Creditor not on Whitelist of DebtorM030.30$5.30, $10.30, $50.30Decline
Creditor on Blacklist of DebtorM031.31$5.31, $10.31, $50.31Decline
Unknown end CustomerM032.32$5.32, $10.32, $50.32Decline
\n\n\n
\n\nIn addition to a sample request, the scheme for each endpoint and associated data tables are in the appendix at the end of this document.\n\nTo try out our API, you can use a client such as [Postman](https://www.getpostman.com).\n\nYou can download a postman collection of our API by clicking the link below:\n\n[![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)\n\n**Note:** Please note we do not accept TLS 1.0 or 1.1 connections\n" version: v1 title: Monoova PayTo Reporting 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 servers: - url: https://api.monoova.com description: Production URL# - url: https://sand-api.monoova.com description: Sandbox URL security: - BearerAuth: [] tags: - 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}
' paths: /au/payto/pam-v1/PaymentAgreement: 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}: 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 /au/payto/pas-v1/paymentInstruction: 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 - 'null' items: $ref: '#/components/schemas/PaymentStatusResponseDto' traceId: type: - string - 'null' 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 - 'null' 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 components: schemas: 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 - 'null' example: R002 statusReasonDescription: type: - string - 'null' example: Account to be debited does not exist additionalProperties: false PaymentAgreementResponse: type: object properties: traceId: type: string example: 43075658-ed9a-4ce0-84ba-2f6524a16676 paymentAgreementDetails: $ref: '#/components/schemas/PaymentAgreement' 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 - 'null' description: Bank State Branch (BSB) number identifying the bank branch of the payee. example: 802950 payeeLinkedAccount: type: - string - 'null' description: Account number of the payee. example: 10109010 payeeLinkedPayId: type: - string - 'null' description: PayID associated with the payee's account. example: null payeeLinkedPayIdType: type: - string - 'null' description: Type of PayID linked to the payee's account. example: null payeeAccountName: type: - string - 'null' description: Name associated with the payee's bank account. example: BCORP ultimatePayee: type: string description: The final recipient of the funds. example: BCORP 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 - 'null' description: BSB number associated with the payer’s bank account. example: 802950 linkedAccount: type: - string - 'null' description: Bank account number of the payer. example: 10109010 linkedPayId: type: - string - 'null' description: PayID linked to the payer’s account, may be null if not used. example: null linkedPayIdType: type: - string - 'null' description: Type of the linked PayID, such as 'Email' or 'Phone', may be null if PayID is not used. example: null 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 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-07 14:35:27-10:00 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 PaymentAgreement: type: object properties: paymentAgreementUID: type: - string - 'null' description: A user-provided unique identifier for the payment agreement. example: BCORP1662344139 paymentAgreementStatus: type: - string - 'null' description: Current status of the payment agreement. Status (e.g. Active, Cancelled, ...). See Payment Agreement Status for all options. example: Paused statusReasonCode: type: - string - 'null' example: R006 statusReasonDescription: type: - string - 'null' example: Account is now closed mmsId: type: - string - 'null' description: A unique identifier for the payment agreement. example: d6765e4ff2eb1e7f83d72c1f8d3e2a07 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 PaymentAgreementsListResponse: type: object properties: paymentAgreementDetails: type: array items: $ref: '#/components/schemas/PaymentAgreement' traceId: type: - string - 'null' example: 7fcb7dc4-ab8d-4bc8-8fa8-1335172377e2 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 - 'null' format: double description: Fixed amount for transactions if applicable; null if variable amounts are allowed. example: null maximumAmount: type: - number - 'null' format: double description: The maximum allowable amount for a transaction under this agreement. example: 100.0 agreementType: type: string description: Type of agreement, such as variable (VARI) or fixed, dictating how amounts and terms are treated. example: VARI additionalProperties: false securitySchemes: BearerAuth: type: http scheme: bearer bearerFormat: JWT BasicAuth: type: http scheme: basic 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