openapi: 3.2.0 info: title: PayMate Global Partner Cards 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: Cards description: Commercial credit card enrolment and management paths: /v1/AddCard: post: operationId: AddCard summary: Add Card description: Businesses can tokenize their credit cards for secure transactions through Paymate Tokenize Card API. Only PCI certified customer can use this api tags: - Cards 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. CardReferenceNo: type: string maxLength: 20 description: PayMate Reference number Status: type: string maxLength: 20 description: Current status of the Card Message: type: string maxLength: 500 description: Status description FomData: type: string x-declared-type: AN description: Form data example: RequestID: '1234567899876' StatusCode: '000' Description: Your request has been processed successfully DetailedSummary: - BusinessXpressID: TDS0223444 CardReferenceNo: CR0000001 CardNo: '4149011500000527' Status: '716' Message: Token creation in process FormData: 3D Secure
'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 CardNumber: type: string pattern: ^[0-9]+$ maxLength: 20 description: 'Credit/Debit Card: 16 digit card number' ExpiryMonth: type: string pattern: ^[0-9]+$ maxLength: 2 description: Expiry moth of the card ExpiryYear: type: string pattern: ^[0-9]+$ maxLength: 4 description: Card Expiry year CVV: type: string pattern: ^[0-9]+$ maxLength: 3 description: Card verification value Network: type: string maxLength: 15 description: Network x-possible-values: '[''VISA'', ''MASTERCARD'', ''AMEX'']' CardHolderName: type: string maxLength: 50 description: Name on Card IssuingBank: type: string maxLength: 100 description: Name of the card issuer. If CardOrderId is passed then this is optional else required IssuingCountryCode: type: string maxLength: 3 description: 3 digit country iso code CardType: type: string maxLength: 20 description: Card Type x-possible-values: '[''CreditCard'', ''DebitCard'']' ReturnURL: type: string maxLength: 200 description: URL to be redirected after the card addition is completed required: - RequestID - CardNumber - ExpiryMonth - ExpiryYear - CVV - Network - CardHolderName - IssuingBank - CardType - ReturnURL example: RequestID: '123456789' BusinessCode: ARFC1223 BusinessXpressID: '' CardNumber: 4149XXXXXXXX0527 CardHolderName: JohnDoe ExpiryMonth: XX ExpiryYear: XXXX CVV: XXX Network: VISA IssuingBank: affin bank IssuingCountryCode: MYS CardType: CreditCard ReturnURL: '' /v1/managecard: post: operationId: ManageCards summary: Manage Cards description: Customer can get the card details by using this method tags: - Cards 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: Card details summary will come under DetailedSummary Object properties: CardReferenceNo: type: string maxLength: 50 description: Card unique key CardDetails: type: string maxLength: 30 description: Card hashed details Status: type: string maxLength: 3 description: Card Status code Message: type: string maxLength: 500 description: Status description example: RequestID: '123456789' StatusCode: '000' Description: Card fetch successfully DetailedSummary: - CardReferenceNo: ' CR000013456' CardDetail: '******3567' Status: '' Message: '' - CardReferenceNo: ' CR000013457' CardDetail: '******3569' Status: '' Message: '' '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 required: - RequestID example: CardDetails: RequestID: '54652165245215' BusinessCode: '' BusinessXpressID: '' /v1/Deletecard: post: operationId: DeleteCard summary: Delete Card description: Contact can delete their registered card by delete card method tags: - Cards 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: Card details summary will come under DetailedSummary Object properties: CardReferenceNo: type: string maxLength: 50 description: Card unique key Status: type: string maxLength: 3 description: Card Status code Message: type: string maxLength: 500 description: Status description example: RequestID: '123456789' StatusCode: '000' Description: Card deleted successfully DetailedSummary: - CardReferenceNo: ' CR000013456' Status: '000' Message: Success '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. ReferenceCode: type: string maxLength: 30 description: Contact unique reference no. on partner system. CardReferenceNo: type: string maxLength: 50 description: Card unique key Remarks: type: string maxLength: 500 description: Reason for card deletion required: - RequestID - ReferenceCode - CardReferenceNo - Remarks example: CardDetails: RequestID: '54652165245215' BusinessCode: '12345' BusinessXpressID: '' CardReferenceNo: ' CR000013456' Remarks: ' Card Expired' 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