openapi: 3.2.0 info: title: PayMate Global Partner Collections API version: v1 description: 'Partner-facing B2B payments API for the PayMate global platform — business (KYB) onboarding, contact onboarding, commercial-card management, vendor payments, payment collection requests and reporting. GENERATED, NOT PUBLISHED BY PAYMATE. PayMate does not publish an OpenAPI description. This document was generated by API Evangelist from PayMate''s OWN machine-readable endpoint dataset (MalaysiaData.json / singaporeData.json / AustraliaData.json / UaeData.json / OmanData.json / SouthAfricaData.json), which is bundled into the Partner API documentation app served at https://api.paymate.my/GlobalPartnerAPI. The verbatim datasets are kept alongside this file in openapi/_source/. Every path, method, parameter, data type, required flag, description and example here comes from that dataset; nothing was invented. Regional deployments run the same v1 surface on six hosts. In Australia and South Africa the platform is branded DuNoMo. Each operation carries x-regions listing the regional datasets that declare it — POST /v1/VendorPayment is declared only in the Australian dataset.' contact: name: PayMate partner support url: https://api.paymate.my/GlobalPartnerAPI email: support@paymate.my x-generated-by: API Evangelist enrichment pipeline x-generated-on: '2026-08-26' x-source: https://api.paymate.my/GlobalPartnerAPI/static/js/main.d40c1507.js servers: - url: https://api.paymate.sg description: Singapore - url: https://api.paymate.my description: Malaysia - url: https://api.paymate.ae description: United Arab Emirates - url: https://api.paymate.om description: Oman - url: https://api.dunomo.au description: Australia (DuNoMo brand) - url: https://api.dunomo.co.za description: South Africa (DuNoMo brand) security: - PartnerApiKey: [] tags: - name: Collections description: Payment collection requests, status and reporting paths: /v1/collectpayments: post: operationId: CollectPayment summary: Collect Payment description: Business can received the payment from their registered customer by using this method tags: - Collections x-regions: - ae - au - my - om - sg - za responses: '200': description: PayMate response envelope. Business outcome is carried in StatusCode; see errors/paymate-error-codes.yml. content: application/json: schema: type: object properties: RequestID: type: string maxLength: 30 description: Sent during request StatusCode: type: string maxLength: 3 description: Status of the Request Description: type: string maxLength: 300 description: Status Description DetailedSummary: type: object description: Collection response summary will come under DetailedSummary Object properties: OrderID: type: string maxLength: 30 description: Sent during request PaymentRequestNo: type: string maxLength: 500 description: PayMate Transaction ID against the OrderID NetAmount: type: number x-precision: 18,2 description: Amount to be collected PaymentStatus: type: string maxLength: 3 description: Current status of the payment PaymentURL: type: string maxLength: 300 description: Payment link against each request example: RequestID: '5465216522151' StatusCode: '000' Description: Collection request sent successfully DetailedSummary: - OrderID: '565625' PayMateRequestNo: '4151197425534' NetAmount: '500.00' PaymentStatus: '508' StatusMessage: Pending PaymentURL: ' https://uatmys.paymateb2b.com/ReactWeb/Vendor/SenderAuthentication/C0E9E44749D700DB73131B3132E907DB/0E94B5207BE14A0F890BA947901042FE/4DE71EA7E29F97DA3F82342CD5CA634B' '401': description: Empty/invalid header credentials (StatusCode 106), observed on an unauthenticated probe. content: application/json: schema: $ref: '#/components/schemas/ErrorEnvelope' requestBody: required: true content: application/json: schema: type: object properties: RequestID: type: string maxLength: 50 description: A unique RequestID for identifying the request. BusinessCode: type: string maxLength: 30 description: Business unique reference no. on partner system. Parameter is mandatory if business is not sending issued BusinessXpressID BusinessXpressID: type: string maxLength: 15 description: Business Unique Relationship no issued by PayMate. Parameter is mandatory if business is not sending registered BusinessCode CollectionDetails: type: object description: This will contain details about Buyer. Refer CollectionDetails Object properties: ReferenceCode: type: string maxLength: 30 description: Vendor registered unique identification code OrderID: type: string maxLength: 30 description: Business generated Order ID CompanyEmailAddress: type: string maxLength: 240 description: Contact Registered Email address ISDCode: type: string maxLength: 4 description: Country ISD code MobileNumber: type: string maxLength: 10 description: Customer mobile no. if business want to send link on whatsapp no then please provide mobile number CollectionType: type: string maxLength: 15 description: PaymentCode. Please refer Get PaymentTypes api to get the list of payment SplitMDR: type: object description: Business can split MDR between both the parties. Refer SplitMDR Object properties: BuyerCharges: type: string pattern: ^[0-9]+$ maxLength: 2 description: Business Side MDR x-possible-values: "Min – 0(%) \n Max – 100(%)" SupplierCharges: type: string pattern: ^[0-9]+$ maxLength: 2 description: Supplier Side MDR x-possible-values: "Min – 0(%) \n Max – 100(%)" required: - BuyerCharges - SupplierCharges Remarks: type: string maxLength: 500 description: Custom Remarks required: - OrderID - CompanyEmailAddress - CollectionType - SplitMDR Invoice: type: object description: This will contain Invoice and collection amount. Refer Invoice Object properties: InvoiceNumber: type: string maxLength: 30 description: Invoice No. InvoiceStartDate: type: string description: Invoice Start Date x-possible-values: DD-MM-YYYY InvoiceEndDate: type: string description: Invoice End Date x-possible-values: DD-MM-YYYY InvoiceAmount: type: number x-precision: 18,2 description: Invoice amount x-possible-values: Payable amount Tax: type: string pattern: ^[0-9]+$ maxLength: 2 description: Tax value x-possible-values: '[0, 5]' required: - InvoiceAmount SplitMDR: type: object description: Business can split MDR between both the parties. Refer SplitMDR Object properties: BuyerCharges: type: string pattern: ^[0-9]+$ maxLength: 2 description: Business Side MDR x-possible-values: "Min – 0(%) \n Max – 100(%)" SupplierCharges: type: string pattern: ^[0-9]+$ maxLength: 2 description: Supplier Side MDR x-possible-values: "Min – 0(%) \n Max – 100(%)" required: - BuyerCharges - SupplierCharges required: - RequestID - CollectionDetails - Invoice - SplitMDR example: RequestID: '5465216522151' BusinessCode: uatmys BusinessXpressID: '' CollectionDetails: - TransactionDetails: OrderID: '565625' ReferenceCode: uatmys55 CompanyEmailAddress: uatmys@yopmail.com ISDCode: '+60' MobileNumber: '197290811' CollectionType: UTL Remarks: test collect payment Invoice: InvoiceNumber: INVOICE122 InvoiceStartDate: 01-10-2021 InvoiceEndDate: 30-10-2021 InvoiceAmount: '500' Tax: '0' SplitMDR: BuyerCharges: '30' SupplierCharges: '70' /v1/GetCollectStatus: post: operationId: CollectionStatus summary: Collection Status description: This method can use to get the collection request that are still awaiting settlement, paid or refund. tags: - Collections x-regions: - ae - au - my - om - sg - za responses: '200': description: PayMate response envelope. Business outcome is carried in StatusCode; see errors/paymate-error-codes.yml. content: application/json: schema: type: object properties: TransactionDetails: type: object description: It will contain Transaction Details information. Refer TransactionDetails Object properties: OrderID: type: string maxLength: 30 description: Client OrderID CompanyName: type: string maxLength: 100 description: Contact's Company Name ReferenceCode: type: string maxLength: 30 description: Contact unique Reference Code PayMateRequestNo: type: string maxLength: 20 description: PayMate Transaction ID against the OrderID TransactionDateTime: type: string description: DateTime Remarks: type: string maxLength: 500 description: Remarks against payment for buyer CollectionSummary: type: object description: It will contain Collection account details. Refer CollectionSummary Object properties: PaymentFrom: type: string maxLength: 15 description: Paid by Credit Card PaymentThrough: type: string maxLength: 30 description: IBAN No BuyerMDR: type: number x-precision: 18,2 description: Buyer side MDR ServiceCharges: type: number x-precision: 18,2 description: Service charges ServiceTax: type: number x-precision: 18,2 description: Service tax on Service charge ChargedAmount: type: number x-precision: 18,2 description: Charged Amount GatewayTransactionID: type: string maxLength: 60 description: Gateway Transaction ID GatewayStatus: type: string maxLength: 3 description: Gateway Status Code GatewayRemarks: type: string maxLength: 500 description: Remarks from the gateway CollectionDateTime: type: string description: Date Time SettlementDetails: type: object description: It will contain the settlement details Refer SettlementDetails Object properties: PaidAmount: type: number x-precision: 18,2 description: Settlement Amount SettlementAccountNo: type: string maxLength: 30 description: Beneficiary Account No BICCode: type: string maxLength: 11 description: Bank identifier code RoutingNumber: type: string pattern: ^[0-9]+$ maxLength: 9 description: The routing transit number for the bank account. If mandatory by bank then send with account details SupplierMDR: type: number x-precision: 18,2 description: Supplier side MDR ServiceCharges: type: number x-precision: 18,2 description: Service charges on paid Amount ServiceTax: type: number x-precision: 18,2 description: Service Tax on service charge BankReferenceNo: type: string maxLength: 20 description: Reference number from the bank SettlementStatus: type: string maxLength: 3 description: Settlement Status Code SettlementRemarks: type: string maxLength: 500 description: Success SettlementMode: type: string maxLength: 3 description: EFT SettlementDateTime: type: string description: Date Time RefundDetails: type: object description: It will contain the refund details if the settlement failed. Refer RefundDetails Object properties: RefundAmount: type: number x-precision: 18,2 description: Refund Amount RefundReferenceNo: type: string maxLength: 20 description: Transaction ID RefundTo: type: string maxLength: 30 description: Refund processed Account to AccountNo: type: string maxLength: 30 description: Account details RefundMode: type: string maxLength: 4 description: Process mode RefundStatus: type: string maxLength: 3 description: Current status RefundRemarks: type: string maxLength: 500 description: Status Description RefundDateTime: type: string description: Date Time example: RequestID: '5564635465465846216' StatusCode: '000' Description: Your request has been processed successfully DetailedSummary: CollectionReport: - TransactionDetails: OrderID: '23456789' CompanyName: AlfalaTechnologies ReferenceCode: ALFATECH PayMateRquestNo: '984565333566' TransactionDateTime: 01-02-202115:45:23 Remarks: PleasemakethepaymentsagainsttheINVOICE122 Invoice: InvoiceNumber: INVOICE122 InvoiceStartDate: 01-10-2021 InvoiceEndDate: '' InvoiceAmount: 5000 Tax: 0 TaxAmount: 0 AmountToBeCollected: 5000 CollectionSummary: PaymentFrom: CreditCard PaymentThrough: 411111XXXXXX1111 BuyerMDR: 2 ServiceCharges: 100 ServiceTax: 5 ChargedAmount: 5105 GatewayTransactionID: UT57888888 GatewayStatus: '000' GatewayRemarks: success CollectionDateTime: 02-02-2021 SettlementDetails: PaidAmount: 5000 SettlementAccountNo: '14567890000' BICCode: DBSSSGSG RoutingNumber: '' SupplierMDR: 0 ServiceCharges: 0 ServiceTax: '0.00' BankReferenceNo: UTR00000055555 SettlementStatus: '000' SettlementRemarks: '' SettlementMode: EFT SettlementDateTime: 03-02-202113:20:12 RefundDetails: RefundAmount: '' RefundReferenceNo: '' RefundTo: '' AccountNo: '' RefundMode: '' RefundStatus: '' RefundDateTime: '' RefundRemarks: '' '401': description: Empty/invalid header credentials (StatusCode 106), observed on an unauthenticated probe. content: application/json: schema: $ref: '#/components/schemas/ErrorEnvelope' requestBody: required: true content: application/json: schema: type: object properties: RequestID: type: string maxLength: 30 description: A unique RequestID for identifying the request. BusinessCode: type: string maxLength: 30 description: Business unique reference no. on partner system. Parameter is mandatory if business is not sending issued BusinessXpressID BusinessXpressID: type: string maxLength: 15 description: Business Unique Relationship no issued by PayMate. Parameter is mandatory if business is not sending registered BusinessCode PayMateRequestNo: type: string maxLength: 20 description: If OrderID passed, then this is optional, else Required. OrderID: type: string maxLength: 30 description: If PayMateRequestNo passed, then this is optional, else Required. required: - RequestID example: RequestID: '5564635465465846216' BusinessCode: S001234 BusinessXpressID: '' PayMateRequestNo: '' OrderID: '23456789' /v1/CollectHistory: post: operationId: CollectionReport summary: Collection Report description: Get all the Collection request which are still awaiting payment by the buyer, paid by buyer or settled by PayMate. This method can also be used to fetch all the Collection request, within a specific date range. tags: - Collections x-regions: - ae - au - my - om - sg - za responses: '200': description: PayMate response envelope. Business outcome is carried in StatusCode; see errors/paymate-error-codes.yml. content: application/json: schema: type: object properties: TransactionDetails: type: object description: It will contain Transaction Details information. Refer TransactionDetails Object properties: OrderID: type: string maxLength: 30 description: Client OrderID CompanyName: type: string maxLength: 100 description: Contact's Company Name ReferenceCode: type: string maxLength: 30 description: Contact unique Reference Code PayMateRequestNo: type: string maxLength: 20 description: PayMate Transaction ID against the OrderID TransactionDateTime: type: string description: DateTime Remarks: type: string maxLength: 500 description: Remarks against payment for buyer CollectionSummary: type: object description: It will contain Collection account details. Refer CollectionSummary Object properties: PaymentFrom: type: string maxLength: 15 description: Paid by Credit Card PaymentThrough: type: string maxLength: 30 description: IBAN No BuyerMDR: type: number x-precision: 18,2 description: Buyer side MDR ServiceCharges: type: number x-precision: 18,2 description: Service charges ServiceTax: type: number x-precision: 18,2 description: Service tax on Service charge ChargedAmount: type: number x-precision: 18,2 description: Charged Amount GatewayTransactionID: type: string maxLength: 60 description: Gateway Transaction ID GatewayStatus: type: string maxLength: 3 description: Gateway Status Code GatewayRemarks: type: string maxLength: 500 description: Remarks from the gateway CollectionDateTime: type: string description: Date Time SettlementDetails: type: object description: It will contain the settlement details Refer SettlementDetails Object properties: PaidAmount: type: number x-precision: 18,2 description: Settlement Amount SettlementAccountNo: type: string maxLength: 30 description: Beneficiary Account No BICCode: type: string maxLength: 11 description: Bank identifier code RoutingNumber: type: string pattern: ^[0-9]+$ maxLength: 9 description: The routing transit number for the bank account. If mandatory by bank then send with account details SupplierMDR: type: number x-precision: 18,2 description: Supplier side MDR ServiceCharges: type: number x-precision: 18,2 description: Service charges on paid Amount ServiceTax: type: number x-precision: 18,2 description: Service Tax on service charge BankReferenceNo: type: string maxLength: 20 description: Reference number from the bank SettlementStatus: type: string maxLength: 3 description: Settlement Status Code SettlementRemarks: type: string maxLength: 500 description: Success SettlementMode: type: string maxLength: 3 description: EFT SettlementDateTime: type: string description: Date Time RefundDetails: type: object description: It will contain the refund details if the settlement failed. Refer RefundDetails Object properties: RefundAmount: type: number x-precision: 18,2 description: Refund Amount RefundReferenceNo: type: string maxLength: 20 description: Transaction ID RefundTo: type: string maxLength: 30 description: Refund processed Account to AccountNo: type: string maxLength: 30 description: Account details RefundMode: type: string maxLength: 4 description: Process mode RefundStatus: type: string maxLength: 3 description: Current status RefundRemarks: type: string maxLength: 500 description: Status Description RefundDateTime: type: string description: Date Time example: RequestID: '5214651354651' StatusCode: '000' Description: Your request has been processed successfully DetailedSummary: CollectionReport: - TransactionDetails: OrderID: '23456789' CompanyName: AlfalaTechnologies ReferenceCode: ALFATECH PayMateRquestNo: '984565333566' TransactionDateTime: 01-02-202115:45:23 Remarks: PleasemakethepaymentsagainsttheINVOICE122 Invoice: InvoiceNumber: INVOICE122 InvoiceStartDate: 01-10-2021 InvoiceEndDate: '' InvoiceAmount: 5000 Tax: 0 TaxAmount: 0 AmountToBeCollected: 5000 CollectionSummary: PaymentFrom: CreditCard PaymentThrough: 411111XXXXXX1111 BuyerMDR: 2 ServiceCharges: 100 ServiceTax: 5 ChargedAmount: 5105 GatewayTransactionID: UT57888888 GatewayStatus: '000' GatewayRemarks: success CollectionDateTime: 02-02-2021 SettlementDetails: PaidAmount: 5000 SettlementAccountNo: '14567890000' BICCode: DBSSSGSG RoutingNumber: '' SupplierMDR: 0 ServiceCharges: 0 ServiceTax: '0.00' BankReferenceNo: UTR00000055555 SettlementStatus: '000' SettlementRemarks: '' SettlementMode: EFT SettlementDateTime: 03-02-202113:20:12 RefundDetails: RefundAmount: '' RefundReferenceNo: '' RefundTo: '' AccountNo: '' RefundMode: '' RefundStatus: '' RefundDateTime: '' RefundRemarks: '' '401': description: Empty/invalid header credentials (StatusCode 106), observed on an unauthenticated probe. content: application/json: schema: $ref: '#/components/schemas/ErrorEnvelope' requestBody: required: true content: application/json: schema: type: object properties: RequestID: type: string maxLength: 50 description: A unique RequestID for identifying the request. BusinessCode: type: string maxLength: 30 description: Business unique reference no. on partner system. Parameter is mandatory if business is not sending issued BusinessXpressID BusinessXpressID: type: string maxLength: 15 description: Business Unique Relationship no issued by PayMate. Parameter is mandatory if business is not sending registered BusinessCode PayMateRequestNo: type: string maxLength: 20 description: If OrderID passed, then this is optional, else Required. OrderID: type: string maxLength: 30 description: Client OrderID ContactXpressID: type: string maxLength: 15 description: Contact Xpress ID issued by PayMate ReferenceCode: type: string maxLength: 30 description: Contact unique reference no. on partner system FromDate: type: string description: company created from date (including from date) x-possible-values: DD-MM-YYYY ToDate: type: string description: company created to date (including to date) x-possible-values: DD-MM-YYYY PaginationIndex: type: string pattern: ^[0-9]+$ maxLength: 3 description: Index for Pagination RecordsPerPage: type: string pattern: ^[0-9]+$ maxLength: 2 description: A limit on the number of record to be return x-possible-values: Max 100 required: - RequestID - PaginationIndex - RecordsPerPage example: RequestID: '5214651354651' BusinessCode: S001234 BusinessXpressID: '' OrderID: '' PayMateRequestNo: '' ContactXpressID: '' ReferenceCode: '' FromDate: 01-02-2021 ToDate: 10-02-2021 PaginationIndex: '1' RecordsPerPage: '10' components: schemas: ErrorEnvelope: type: object description: Standard PayMate response envelope. Observed verbatim on a live unauthenticated probe of POST https://api.paymate.my/v1/Countrylist on 2026-08-26. properties: RequestID: type: - string - 'null' description: Echo of the partner-supplied request identifier StatusCode: type: string maxLength: 3 description: PayMate status/error code — see errors/paymate-error-codes.yml (508 codes) Description: type: string description: Human-readable status description DetailedSummary: type: - object - array description: Operation payload; empty on error example: RequestID: null StatusCode: '106' Description: Empty/Invalid header credentials DetailedSummary: {} securitySchemes: PartnerApiKey: type: apiKey in: header name: Authorization description: PayMate issues a secret partner API key after onboarding (write to the regional support address, e.g. support@paymate.my). The exact header name is NOT published in the documentation app; an unauthenticated POST to /v1/Countrylist returns StatusCode 106 "Empty/Invalid header credentials", confirming header-carried credentials. Treat this scheme name/location as UNVERIFIED and confirm with PayMate before use. x-verified: false