openapi: 3.2.0 info: title: PayMate Global Partner Contacts 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: Contacts description: Buyer / supplier contact onboarding and maintenance paths: /v1/contactboarding: post: operationId: ContactBoarding summary: Contact Boarding description: Use this method to add your vendors and customers as Contacts on your PayMate account. While adding a vendor, please provide the vendor's account details also. When adding a customer provide an email address for the customer which will be used for communication. tags: - Contacts 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: This will be used to show Contact status and respond. Refer DetailedSummary Object properties: BusinessCode: type: string maxLength: 30 description: Business unique reference no. on partner system. BusinessXpressID: type: string maxLength: 15 description: Business Unique Relationship no which was issued at the time of boarding. ReferenceCode: type: string maxLength: 30 description: Sent during request ContactXpressID: type: string maxLength: 15 description: Business Identification at PayMate side Status: type: string maxLength: 20 description: Current status of the Contact Message: type: string maxLength: 500 description: Status description example: RequestID: '1234567899876' StatusCode: '000' Description: Your request has been processed successfully DetailedSummary: - BusinessCode: ALPHA BusinessXpressID: TDS0223444 ReferenceCode: C00004 ContactXpressID: ASHF0112223 Status: '300' Message: Contact has been added successfully '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. ContactInformation: type: object description: Contact basic information will come under ContactInformation object. Refer ContactInformation Object properties: 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 CompanyRegistrationNo: type: string maxLength: 30 description: Company Registration no issued by the government. If registration number is provided by the partner then PayMate will perform the business KYC in real time. if the registration number is not provided then the Partner will have to use the BuyerSupplierKYC and ShareholderDetails API method for KYC verification. CompanyName: type: string maxLength: 100 description: Contact's company name as per the government record x-possible-values: Special characters allowed are . @ & ! ' _ - / ( ) CompanyNickName: type: string maxLength: 20 description: Nick name of the company ReferenceCode: type: string maxLength: 30 description: Contact unique reference no. on partner system. ContactPersonName: type: string maxLength: 250 description: Name of the contact person. CompanyEmailAddress: type: string maxLength: 240 description: Contact's emails address. CountryCode: type: string maxLength: 3 description: Country code as per the Country method. Please refer the API of the CountryInformation ISDCode: type: string maxLength: 4 description: Country ISD code x-possible-values: + 0-9 MobileNumber: type: string pattern: ^[0-9]+$ maxLength: 10 description: Contact Mobile Number. NotificationEmailAddress: type: string maxLength: 1200 description: Contact email Address. Pass this parameter only when change is required CompanyWebsite: type: string maxLength: 250 description: Website of the company. CompanyDescription: type: string maxLength: 500 description: Description of the company ContactType: type: string maxLength: 10 description: Please refer the API of the ContactType. x-possible-values: Buyer, Supplier, Both required: - CompanyName - ReferenceCode - ContactPersonName - CompanyEmailAddress - ContactType BankAccountDetails: type: object description: Beneficiary Bank Name, IBAN and Currency Code will come under BankAccountDetails Object. Refer BankAccountDetails Object properties: AccountHolderName: type: string maxLength: 100 description: Name of the person or business that owns the bank account. AccountNo: type: string maxLength: 30 description: Contact's Account number CurrencyCode: type: string maxLength: 3 description: Three letter ISO code for the currency paid out to the bank account 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 BICCode: type: string maxLength: 11 description: Bank identifier code BranchCity: type: string maxLength: 50 description: Name of the bank branch x-possible-values: A-Z, Space CountryCode: type: string description: Three letter ISO code representing the country the bank account is located in required: - AccountHolderName - AccountNo - BICCode required: - RequestID - ContactInformation - BankAccountDetails example: RequestID: '12345678987654321' ContactDetails: - ContactInformation: BusinessCode: ALPHA BusinessXpressID: '' CompanyRegistrationNo: '8765432123' CompanyName: Alfala Technologies CompanyNickName: '' ReferenceCode: ALFTECH ContactPersonName: Sheikh Mohammad Salaman Bin Abdul Aziz CompanyEmailAddress: alfala@yopmail.com CountryCode: MYS ISDCode: '+60' MobileNumber: '196090811' CompanyWebsite: '' CompanyDescription: '' ContactType: Supplier BankAccountDetails: AccountHolderName: Supernet Services AccountNo: '565343423' CurrencyCode: MYR RoutingNumber: '' BICCode: DBSSSGSG BranchCity: '' CountryCode: MYS /v1/modifycontact: post: operationId: ModifyContact summary: Modify Contact description: This method is used for updating the Contact information, once the contact is on-boarded to the PayMate. The Business can update their Contact information such as company Name, Contact person’s information, Account no, routing code, etc tags: - Contacts 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: This will be used to show Contact status and respond. Refer DetailedSummary Object properties: BusinessCode: type: string maxLength: 30 description: Business unique reference no. on partner system. BusinessXpressID: type: string maxLength: 15 description: Business Unique Relationship no which was issued at the time of boarding. ReferenceCode: type: string maxLength: 30 description: Sent during request ContactXpressID: type: string maxLength: 15 description: Business Identification at PayMate side Status: type: string maxLength: 3 description: Current status of the Contact Message: type: string maxLength: 500 description: Status description example: RequestID: REQhjh777911 StatusCode: '000' Description: Your request has been processed successfully DetailedSummary: - Status: '300' Message: Contact modified successfully BusinessCode: '' BusinessXpressID: AAAA0065Q1 ReferenceCode: '' ContactXpressID: AAAA0065Q5 '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 Request no from the partner to track 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 ContactInformation: type: object description: All the Contact basic information will come under ContactInformation Object. Refer ContactInformation Object properties: ContactXpressID: type: string maxLength: 15 description: If ReferenceCode passed, then this is optional, else Required. ReferenceCode: type: string maxLength: 30 description: If ContactXpressID passed, then this is optional, else Required. CompanyRegistrationNo: type: string maxLength: 30 description: Company Registration no issued by the government. If registration number is provided by the partner then PayMate will perform the supplier KYC in real time otherwise the business will use other ContactKYC API and submit the KYC documents. PayMate will review the KYC document and take action within 48 hours. CompanyName: type: string maxLength: 100 description: Contact's company name. Pass this parameter only when change is required. Special characters allowed are . @ & ! ' _ - / ( ) ContactPersonName: type: string maxLength: 250 description: Contact's person name. Pass this parameter only when change is required CompanyEmailAddress: type: string maxLength: 30 description: Contact's emails address for sending notification. Pass this parameter only when change is required CountryCode: type: string maxLength: 100 description: Country Code as per the Country object. Pass this only when change is required. Please refer the API of the CountryInformation ISDCode: type: string maxLength: 4 description: Country ISD code. Pass only when change is required MobileNumber: type: string pattern: ^[0-9]+$ maxLength: 10 description: Mobile Number. Pass this parameter only when change is required NotificationEmailAddress: type: string maxLength: 240 description: Contact email Address. Pass this parameter only when change is required CompanyWebsite: type: string maxLength: 250 description: Website of the company. Pass this only when change is required. CompanyDescription: type: string maxLength: 500 description: Description of the company. Pass this only when change is required. ContactType: type: string maxLength: 10 description: Please refer the API of the ContactType. Pass this only when change is required. BankAccountDetails: type: object description: Refer BankAccountDetails Object properties: AccountHolderName: type: string maxLength: 100 description: Name of the person or business that owns the bank account. AccountNo: type: string maxLength: 30 description: Contact's Account number CurrencyCode: type: string maxLength: 3 description: Three letter ISO code for the currency paid out to the bank account 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 BICCode: type: string maxLength: 11 description: Bank identifier code BranchCity: type: string maxLength: 50 description: Name of the bank branch x-possible-values: A-Z, Space CountryCode: type: string description: Three letter ISO code representing the country the bank account is located in required: - AccountHolderName - AccountNo - BICCode required: - RequestID - ContactInformation - BankAccountDetails example: RequestID: REQhjh777911 BusinessCode: '' BusinessXpressID: AAAA0065Q1 ContactDetails: - ContactInformation: ContactXpressId: AAAA0065Q5 ReferenceCode: '' CompanyName: rd 2 modify ContactPersonName: rd two modi CompanyEmailAddress: rd2.modify@yopmail.com CountryCode: MYS ISDCode: '+60' MobileNumber: '197290811' NotificationEmailAddress: mgonee1@yopmail.com CompanyWebsite: www.mgonee1.com CompanyDescription: xnbcnxzvcnzvbcnb ContactType: Supplier BankAccountDetails: AccountHolderName: Supernet Services AccountNo: '1277677443332' CurrencyCode: MYR RoutingNumber: '' BICCode: MFBBMYKL BranchCity: ANTPSGSGXXX CountryCode: MYS /v1/DeleteContact: post: operationId: DeleteContact summary: Delete Contact description: This method is used for deleting a Contact permanently. tags: - Contacts 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 x-declared-type: AB(30) description: Sent during the request. StatusCode: type: string maxLength: 3 description: Status of the request. Description: type: string maxLength: 300 description: Status description. example: RequestID: '123456789' StatusCode: '000' Description: Contact Deleted successfully DetailedSummary: BusinessCode: ALPHA BusinessXpressID: STF01122333 ReferenceCode: S001234 ContactXpressID: PMX10002344 Status: '392' Message: Your Contact has been deleted successfully '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 Request ID from the partner to track the request. BusinessCode: type: string maxLength: 30 description: Business unique reference number on partner system. Mandatory if BusinessXpressID is not provided. BusinessXpressID: type: string maxLength: 15 description: Business unique relationship number issued by PayMate. Mandatory if BusinessCode is not provided. ContactXpressID: type: string maxLength: 15 description: Contact unique relationship number issued by PayMate. Optional if ReferenceCode is provided. ReferenceCode: type: string maxLength: 30 description: Reference code associated with the contact. Optional if ContactXpressID is provided. Reason: type: string maxLength: 500 description: Remarks on why the contact is being deleted. required: - RequestID - Reason example: ContactDetails: RequestID: '123456789876543215' BusinessCode: ALPHA BusinessXpressID: '' ContactXpressID: PMX0001234 ReferenceCode: ATRS00001 Reason: Contact is not part of ecosystem /v1/managecontact: post: operationId: ManageContacts summary: Manage Contacts description: This method is used for getting all the Contact information and status. tags: - Contacts 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: StatusCode: type: string maxLength: 3 description: Status of the Request Description: type: string maxLength: 300 description: Status Description DetailedSummary: type: object description: This will be used to show Contact information. Refer DetailedSummary Object properties: ContactXpressID: type: string maxLength: 15 description: Contact Identification at PayMate's end CompanyName: type: string maxLength: 100 description: Contact's company name ReferenceCode: type: string maxLength: 30 description: Contact unique reference no. on partner system. ContactPersonName: type: string maxLength: 250 description: Name of the contact person. ContactDesignation: type: string maxLength: 150 description: Designation of the Contact Person. CompanyEmailAddress: type: string maxLength: 30 description: Contact's email address. CountryName: type: string maxLength: 100 description: Country Name as per the Country object. Please refer the API of the CountryInformation MobileNumber: type: string pattern: ^[0-9]+$ maxLength: 10 description: Contact Mobile Number. CompanyWebsite: type: string maxLength: 250 description: Website of the company. CompanyDescription: type: string maxLength: 500 description: Description of the company. ContactType: type: string maxLength: 10 description: Please refer the API of the ContactType. ContactStatus: type: string maxLength: 50 description: Status of the contact example: RequestID: RE54005291 StatusCode: '000' Description: Your request has been processed successfully DetailedSummary: - ContactInformation: BusinessCode: uatmys BusinessXpressID: AAAA0065Q1 ReferenceCode: conmys91 ContactXpressID: AAAA0065Q4 CompanyName: BIG 10 SUPER STORE (TERENGGANU) SDN. BHD. ContactPersonName: Rakhi D ContactDesignation: NA CompanyEmailAddress: rd2911111111@yopmail.com ISDCode: '+60' MobileNumber: '197290811' CountryName: MALAYSIA CompanyWebsite: '' CompanyDescription: '' ContactType: Buyer and Supplier ContactStatusCode: '300' ContactStatus: Contact Active BankAccountDetails: Currency: MYR AccountHolderName: Supernet Services IBANNumber: null SwiftCode: MFBBMYKL BankName: 4 BranchAddress: MYS PayableCity: ANTPSGSGXXX AccountStatus: Active KYCDetails: IsKycRequired: Kyc Required KYCStatusCode: '390' KYCStatus: KYC Verified - ContactInformation: BusinessCode: uatmys BusinessXpressID: AAAA0065Q1 ReferenceCode: rd211111 ContactXpressID: AAAA0065Q4 CompanyName: rakhi twq ContactPersonName: Rakhi D ContactDesignation: NA CompanyEmailAddress: rd2911111111@yopmail.com ISDCode: '+60' MobileNumber: '197290811' CountryName: MALAYSIA CompanyWebsite: '' CompanyDescription: '' ContactType: Buyer and Supplier ContactStatusCode: '300' ContactStatus: Contact Registered BankAccountDetails: Currency: MYR AccountHolderName: Supernet Services IBANNumber: null SwiftCode: MFBBMYKL BankName: 4 BranchAddress: MYS PayableCity: ANTPSGSGXXX AccountStatus: Awaiting Approve KYCDetails: IsKycRequired: Kyc Required KYCStatusCode: '355' KYCStatus: KYC Pending - ContactInformation: BusinessCode: uatmys BusinessXpressID: AAAA0065Q1 ReferenceCode: rd2 ContactXpressID: AAAA005X48 CompanyName: rd 2 modify ContactPersonName: rd two modi ContactDesignation: NA CompanyEmailAddress: rd2.modify@yopmail.com ISDCode: '+60' MobileNumber: '197290811' CountryName: MALAYSIA CompanyWebsite: www.mgonee1.com CompanyDescription: xnbcnxzvcnzvbcnb ContactType: Supplier ContactStatusCode: '300' ContactStatus: Contact Registered BankAccountDetails: Currency: MYR AccountHolderName: Supernet Services IBANNumber: null SwiftCode: MFBBMYKL BankName: 4 BranchAddress: Singapore PayableCity: ANTPSGSGXXX AccountStatus: Awaiting Approve KYCDetails: IsKycRequired: Kyc Required KYCStatusCode: '355' KYCStatus: KYC Pending '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 Request ID from the partner to track 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 ContactXpressID: type: string maxLength: 15 description: Contact Issued XpressID 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: RE54005291 BusinessCode: '' BusinessXpressID: AAAA0065Q1 ContactXpressID: '' ReferenceCode: '' FromDate: '' ToDate: '' 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