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 | Account Name | \n BSB | \n Account Number | \n PayID | \n
\n \n | Monoova Sample 1 | \n 802950 | \n 22090100 | \n +61-422020901 | \n
\n \n | Monoova Sample 2 | \n 802950 | \n 22090101 | \n sample@monoova.com | \n
\n \n | Monoova Sample 3 | \n 802950 | \n 22090102 | \n 38126015228 | \n
\n \n | Monoova Sample 4 | \n 802950 | \n 22090103 | \n 987654321 | \n
\n
\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 | Response | \n Reason Code | \n Contains Value | \n Example | \n Action | \n
\n \n | Agreement Approved | \n - | \n .00 | \n $5.00, $10.00, $50.00 | \n Approve | \n
\n \n | Requested By Customer | \n M019 | \n .19 | \n $5.19, $10.19, $50.19 | \n Decline | \n
\n
\n\n### Other Test Cases\n\n\n\n \n | Response | \n Reason Code | \n Contains Value | \n Example | \n Action | \n
\n \n | Invalid Debtor Account Number | \n M001 | \n .01 | \n $5.01, $10.01, $50.01 | \n Decline | \n
\n \n | Closed Debtor Account Number | \n M003 | \n .03 | \n $5.03, $10.03, $50.03 | \n Decline | \n
\n \n | Blocked Account | \n M004 | \n .04 | \n $5.04, $10.04, $50.04 | \n Decline | \n
\n \n | Invalid Debtor Account Type | \n M005 | \n .05 | \n $5.05, $10.05, $50.05 | \n Decline | \n
\n \n | Transaction Forbidden | \n M006 | \n .06 | \n $5.06, $10.06, $50.06 | \n Decline | \n
\n \n | Transaction Not Supported | \n M007 | \n .07 | \n $5.07, $10.07, $50.07 | \n Decline | \n
\n \n | Not Allowed Currency | \n M008 | \n .08 | \n $5.08, $10.08, $50.08 | \n Decline | \n
\n \n | Invalid Amount | \n M009 | \n .09 | \n $5.09, $10.09, $50.09 | \n Decline | \n
\n \n | Amount Exceeds Agreed Limit | \n M010 | \n .10 | \n $5.10, $10.10, $50.10 | \n Decline | \n
\n \n | No Mandate Service On Customer | \n M018 | \n .18 | \n $5.18, $10.18, $50.18 | \n Decline | \n
\n \n | Mandate Cancelled Due To Fraud | \n M022 | \n .22 | \n $5.22, $10.22, $50.22 | \n Decline | \n
\n \n | No Answer From Customer | \n M027 | \n .27 | \n $5.27, $10.27, $50.27 | \n Decline | \n
\n \n | Regulatory Reason | \n M028 | \n .28 | \n $5.28, $10.28, $50.28 | \n Decline | \n
\n \n | Creditor not on Whitelist of Debtor | \n M030 | \n .30 | \n $5.30, $10.30, $50.30 | \n Decline | \n
\n \n | Creditor on Blacklist of Debtor | \n M031 | \n .31 | \n $5.31, $10.31, $50.31 | \n Decline | \n
\n \n | Unknown end Customer | \n M032 | \n .32 | \n $5.32, $10.32, $50.32 | \n Decline | \n
\n
\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[](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