### Core APIs - Users Source: https://developer.matchmove.com/docs/optimus-prime/dc3d7b158b6dd-about-webhooks Documentation for User-related Core APIs, including user details, addresses, and authentication. ```APIDOC ## Users ### Description APIs for managing user information, including their addresses and authentication status. ### Method GET, POST, PUT, DELETE ### Endpoint /users ### Parameters #### Path Parameters None #### Query Parameters - **user_id** (string) - Required - The unique identifier for the user. #### Request Body **User Object**: - **name** (string) - Required - The name of the user. - **email** (string) - Required - The email address of the user. - **phone** (string) - Optional - The phone number of the user. ### Request Example ```json { "name": "John Doe", "email": "john.doe@example.com", "phone": "123-456-7890" } ``` ### Response #### Success Response (200) **User Object**: - **user_id** (string) - The unique identifier for the user. - **name** (string) - The name of the user. - **email** (string) - The email address of the user. - **created_at** (string) - The timestamp when the user was created. #### Response Example ```json { "user_id": "usr_12345abcde", "name": "John Doe", "email": "john.doe@example.com", "created_at": "2023-10-27T10:00:00Z" } ``` ``` -------------------------------- ### API (v2) - Users Source: https://developer.matchmove.com/docs/optimus-prime/dc3d7b158b6dd-about-webhooks Endpoints for managing users in API version 2. ```APIDOC ## API (v2) - Users ### Description Endpoints for creating and managing user resources within API v2. ### Method POST ### Endpoint /v2/users ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body **User Creation Request**: - **first_name** (string) - Required - The user's first name. - **last_name** (string) - Required - The user's last name. - **email** (string) - Required - The user's email address. ### Request Example ```json { "first_name": "Alice", "last_name": "Smith", "email": "alice.smith@example.com" } ``` ### Response #### Success Response (201 Created) **User Object**: - **user_id** (string) - The unique identifier for the newly created user. - **first_name** (string) - The user's first name. - **last_name** (string) - The user's last name. - **email** (string) - The user's email address. - **created_at** (string) - Timestamp of creation. #### Response Example ```json { "user_id": "usr_fedcba654321", "first_name": "Alice", "last_name": "Smith", "email": "alice.smith@example.com", "created_at": "2023-10-27T10:20:00Z" } ``` ``` -------------------------------- ### Basic Authentication Example Source: https://developer.matchmove.com/docs/optimus-prime/sevl6j7o20c3h-customers Demonstrates how to use Basic Authentication with the Matchmove API. This method involves sending an Authorization header with a base64-encoded string of 'username:password'. ```http Authorization: Basic ZGVtbzpwQDU1dzByZA== ``` -------------------------------- ### Core APIs - Businesses Source: https://developer.matchmove.com/docs/optimus-prime/dc3d7b158b6dd-about-webhooks APIs for managing business information, including addresses and user authentications. ```APIDOC ## Businesses ### Description APIs for managing business entities, their addresses, and associated user authentications. ### Method GET, POST, PUT, DELETE ### Endpoint /businesses ### Parameters #### Path Parameters None #### Query Parameters - **business_id** (string) - Required - The unique identifier for the business. #### Request Body **Business Object**: - **business_name** (string) - Required - The legal name of the business. - **registration_number** (string) - Required - The business registration number. ### Request Example ```json { "business_name": "Example Corp", "registration_number": "XYZ987654" } ``` ### Response #### Success Response (200) **Business Object**: - **business_id** (string) - The unique identifier for the business. - **business_name** (string) - The legal name of the business. - **created_at** (string) - The timestamp when the business was registered. #### Response Example ```json { "business_id": "biz_67890fghij", "business_name": "Example Corp", "created_at": "2023-10-27T10:05:00Z" } ``` ``` -------------------------------- ### Basic Auth Example Source: https://developer.matchmove.com/docs/optimus-prime/YXBpOjUzOTU5NQ-core-ap-is Demonstrates how to use Basic Authentication with the Core Payments API. This method involves sending an 'Authorization' header with a base64-encoded username and password. ```http GET /some/resource HTTP/1.1 Host: api.mmvpay.com Authorization: Basic ZGVtbzpwQDU1dzByZA== ``` -------------------------------- ### API v2 - Onboarding Source: https://developer.matchmove.com/docs/optimus-prime/22ab1d8cb870c-overview APIs for user onboarding, including verification and KYC processes. ```APIDOC ## Onboarding APIs (v2) ### Description APIs for managing the user onboarding process, including verification and Know Your Customer (KYC) procedures. ### Endpoint `/onboarding` ### Sub-endpoints - **Users**: APIs related to user onboarding. - **User Verification**: APIs for verifying user information. - **User KYC**: APIs for managing the Know Your Customer (KYC) process, including initiation and confirmation. ``` -------------------------------- ### Get Beneficiary Bank Accounts API Response Example Source: https://developer.matchmove.com/docs/optimus-prime/e693aca796f37-get-beneficiary-bank-accounts This is an example JSON response for the 'Get Beneficiary Bank Accounts' API call. It includes pagination details, links for navigation, and a data array containing bank account information such as account number, holder name, bank code, and status. ```json { "total_pages": 10, "records_per_page": 10, "page": 1, "total_records": 100, "links": [ { "rel": "self", "href": "http://example.com", "method": "GET" } ], "data": [ { "id": "string", "bank_account_number": "string", "bank_holder_name": "string", "bank_code": "string", "bank_name": "string", "mode": "bank", "entity_type": null, "is_active": 0, "status": "active", "created_at": "string", "updated_at": "string", "activated_at": "string" } ] } ``` -------------------------------- ### GET /v1/oauth/consumer/{consumer_key}/webhooks (Retrieve list of configured webhook) Source: https://developer.matchmove.com/docs/optimus-prime/dc3d7b158b6dd-about-webhooks Retrieves a list of all currently configured webhook subscriptions for the specified consumer, including the target URLs and associated event details. ```APIDOC ## GET /v1/oauth/consumer/{consumer_key}/webhooks ### Description Retrieves a list of all webhook subscriptions configured for a given consumer. This includes the target URL and the specific events associated with each subscription. ### Method GET ### Endpoint `https://{{server}}/{{product_code}}/v1/oauth/consumer/{{consumer_key}}/webhooks` ### Parameters #### Path Parameters - **consumer_key** (string) - Required - The unique identifier for the consumer. #### Query Parameters None #### Request Body None ### Request Example ```curl curl -X GET 'https://{{server}}/{{product_code}}/v1/oauth/consumer/{{consumer_key}}/webhooks' \ --header 'Authorization: Basic {base64(consumer_key:consumer_secret)}' ``` ### Response #### Success Response (200) - **id** (string) - The unique identifier for the webhook subscription. - **url** (string) - The configured URL for receiving webhook events. - **event_hash** (string) - The hash representing the subscribed event(s). - **event_name** (string) - The human-readable name of the event. - **event_code** (string) - The identifier code for the event. #### Response Example ```json [ { "id": "6a8ae082914344edafe100e0df83fd86", "url": "https://test.com", "event_hash": "d933faeec8e6fd0c754f8ac5f80a8c38", "event_name": "KYC Initiate Verification Started", "event_code": "ACCOUNT.KYC.VERIFICATION_START" }, { "id": "ff524d4c5b2544ef9f77cb2408db1d7b", "url": "https://test.com", "event_hash": "9a2102cab0009bed212deb36e235d478", "event_name": "Pre auth transaction", "event_code": "OPENLOOP_PRE_AUTH" } ] ``` ``` -------------------------------- ### Create Standing Instruction (cURL) Source: https://developer.matchmove.com/docs/optimus-prime/op-api/operations/create-a-user-wallet-standing-instruction This snippet demonstrates how to create a standing instruction using cURL. It requires authentication headers and provides various parameters for setting up recurring payments, including bank account details, debit amounts, and expiry dates. Ensure all required fields are correctly populated. ```curl curl --request POST \ --url https://beta-api.mmvpay.com/sgmmdemo/v1/users/wallets/standing_instructions \ --header 'Accept: application/json' \ --header 'Authorization: Basic 123' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --header 'X-Auth-User-ID: ' \ --data-urlencode bank_account_id= \ --data-urlencode number=22222222222222228 \ --data-urlencode maximum_debitable_amount=10000 \ --data-urlencode 'date_application=2020-01-01 12:00:00' \ --data-urlencode date_expiry=2020-12-30 \ --data-urlencode status=pending \ --data-urlencode consent_full_name= \ --data-urlencode consent_numbers= \ --data-urlencode consent_sign= ``` -------------------------------- ### POST /sgmmdemo/v1/users/wallets/standing_instructions Source: https://developer.matchmove.com/docs/optimus-prime/op-api/operations/create-a-user-wallet-standing-instruction Creates a new standing instruction for a user's wallet. This endpoint allows for setting up recurring debits or payments. ```APIDOC ## POST /sgmmdemo/v1/users/wallets/standing_instructions ### Description Creates a new standing instruction for a user's wallet, enabling recurring debits or payments. ### Method POST ### Endpoint /sgmmdemo/v1/users/wallets/standing_instructions ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body - **bank_account_id** (string) - Required - The ID of the bank account to link the standing instruction to. - **number** (string) - Required - The standing instruction number. - **maximum_debitable_amount** (number) - Required - The maximum amount that can be debited. - **date_application** (string) - Required - The date the standing instruction application was made (format: YYYY-MM-DD HH:MM:SS). - **date_expiry** (string) - Required - The expiry date of the standing instruction (format: YYYY-MM-DD). - **status** (string) - Required - The status of the standing instruction. Allowed values: pending, under-review, approved, revoked. - **consent_full_name** (string) - Optional - The full name of the consent holder. - **consent_numbers** (string) - Optional - Consent numbers. - **consent_sign** (string) - Optional - Consent signature. ### Request Example ```json { "bank_account_id": "", "number": "22222222222222228", "maximum_debitable_amount": 10000, "date_application": "2020-01-01 12:00:00", "date_expiry": "2020-12-30", "status": "pending", "consent_full_name": "", "consent_numbers": "", "consent_sign": "" } ``` ### Response #### Success Response (200) An empty JSON object `{}` is returned upon successful creation. #### Response Example ```json {} ``` ``` -------------------------------- ### Transaction Category Rules Response Example Source: https://developer.matchmove.com/docs/optimus-prime/18b105e987aee-transaction-categories-rules-response Provides an example of the response structure for transaction category rules. This includes the transaction category ID, its enable status, and a nested object for the rules themselves with specific details. ```json { "id": "string", "enable": true, "rules": { "event_codes": "MONEY_TRANSFER_CREDIT", "channel": "POS", "acquiring_country_code": "356", "terminal_id": "123", "merchant_id": "123", "network": "Master", "pos_entry_mode_value": "MANUALLY_KEYED", "pp": "CASH_CHANNEL", "currency": "INR", "mcc": "6450" } } ``` -------------------------------- ### POST /websites/developer_matchmove/user Source: https://developer.matchmove.com/docs/optimus-prime/pgnqago3sa96n-webhook-individual-users Exports detailed information for onboarding an individual user in the system. ```APIDOC ## POST /websites/developer_matchmove/user ### Description This endpoint allows for the export of detailed information pertaining to an individual user, designed for onboarding processes within the system. ### Method POST ### Endpoint /websites/developer_matchmove/user ### Parameters #### Request Body - **addresses** (object) - Customers addresses - **agent_id** (string) - Agent ID - **annual_income_range** (string) - Account holder annual income range - **birth** (object) - Customer's birth details - **client_ref_id** (string) - A unique reference id for the customer generated by the API consumer. - **customer_id** (string) - Customer identifier. - **created_by** (string) - Meta data for who created the record - **data_terms_signed_at** (string) - Data Terms signed date - **date_created** (string) - Account holder created date in YYYY-MM-DDTHH:II:SSZ format - **date_updated** (string) - Account holder last updated date in YYYY-MM-DDTHH:II:SSZ format - **email** (string) - Customer's email address which will be used for verification. Match pattern: `^[#.0-9a-zA-Z\s,\\/\\-_:+?')(@#!&]+$` - **employment_details** (object) - Details of customer's employer - **employment_type** (string) - Customer's employment type. Allowed values accessible via `/v2/users/enumerations/employment_type` - **errors** (array[object]) - List of errors encountered - **fatca_crs_confirmed_at** (string) - Foreign Tax Compliance and CRS confirmation in YYYY-MM-DDTHH:II:SSZ format - **fatca_relevant** (any) - Foreign Tax Compliance and CRS relevance. Default: `false` - **fathers_details** (object) - Customer's father's details - **first_name** (string) - Customer's first name. <= 50 characters. Match pattern: `^[#.0-9a-zA-Z\s,\\/\\-_:+?')(@#!&]+$` - **gender** (string) - Customer's gender. Allowed values accesible via `/v2/users/enumerations/genders` - **id** (string) - Customer generated hash id by MM - **identification** (object) - Customer's identification documents details - **is_email_verified** (string) - Account holder email verified status. Allowed values: `10` - **is_mobile_verified** (string) - Account holder mobile verified status. Allowed values: `10` - **is_risk_flagged** (string) - deprecated. Account holder risk status flag. Allowed values: `CLEARED | REJECTED | PENDING | UNKNOWN` - **job_title** (string) - Customer's employment job title - **kyc_processed_date** (string) - KYC processed date in YYYY-MM-DDTHH:II:SSZ format - **kyc_status** (string) - Account holder current kyc status. Allowed values: `pending | in_progress | completed` - **kyc_sub_status** (string) - Account holder current kyc sub status. Allowed values: `pending_document_submission | submitted | pending_bank_verification | waiting_for_approval | approved` - **last_name** (string) - Customer's last name. <= 50 characters. Match pattern: `^[#.0-9a-zA-Z\s,\\/\\-_:+?')(@#!&]+$` - **maiden_name** (string) - Customer's maiden name. <= 50 characters. Match pattern: `^[#.0-9a-zA-Z\s,\\/\\-_:+?')(@#!&]+$` - **main_income_source** (string) - Account holders income source. Below endpoint will get main_income_source enum list: `/v2/users/enumerations/main_income_source` - **marital_status** (string) - Customer's marital_status. Allowed values accesible via `/v2/users/enumerations/marital_status` - **metadata** (object) - metadata can be used to send additional details which can edited later - **middle_name** (string) - Customer's middle name. <= 50 characters. Match pattern: `^[#.0-9a-zA-Z\s,\\/\\-_:+?')(@#!&]+$` - **mobile** (string) - Verified mobile number to be used by the customer - **mobile_country_code** (string) - Country prefix of the verified mobile number to be used by the customer. Allowed values accesible via `/v2/users/enumerations/mobile_country_codes` - **mothers_details** (object) - Customer's mother's details - **nationality** (string) - Customer's nationality. Allowed values accesible via `/v2/users/enumerations/nationalities` - **partner_id** (string) - Partner ID - **pending_update** (array or null) - List of fields which will get updated to the system only after the respective external dependency (from license provider or any third-party provider) or verification requirements. Example: `["mobile_country_code","mobile","email","nationality","address.residential"]` - **preferred_name** (string) - Customer's preferred name. Do note this is the name which is leveraged at the point of wallet account creation and card creation. <= 25 characters. Match pattern: `^[A-Za-z\s]+$` - **provider_account_number** (string) - Account holder licensing provider account number - **provider_ref_id** (string) - Account holder licensing provider reference id - **purpose_of_account_opening** (string) - Account holder purpose of account opening - **requirements** (user_requirements_object.v2) - List of properties and actions which is required to be performed by end-users - **residency_country** (string) - Below endpoint will get countries enum list: `/v2/users/enumerations/countries` - **risk_assessment_status** (string) - Account holder risk status. Allowed values: `CLEARED | REJECTED | PENDING | UNKNOWN` - **salutation** (string) - Customer's salutation - **self_declared_as_pep** (any) - Self-Declared Politically Exposed Person. Default: `false` - **socioprofessional_category** (string) - Account holder social professional category - **status** (string) - Account holder current status. Allowed values: `pending | pending_verification | verification_completed | pending_activation | suspended | rejected | active | blacklisted | terminated` - **sub_status** (string) - Account holder current sub status. Allowed values: `pending_document_submission | submitted | pending_bank_verification | waiting_for_approval | approved` ### Request Example ```json { "addresses": {}, "agent_id": "agent_123", "annual_income_range": "50000-75000", "birth": {}, "client_ref_id": "client_ref_abc", "customer_id": "cust_456", "created_by": "api_consumer", "data_terms_signed_at": "2023-01-01T10:00:00Z", "date_created": "2023-01-01T10:00:00Z", "date_updated": "2023-01-01T10:00:00Z", "email": "test@example.com", "employment_details": {}, "employment_type": "full_time", "errors": [], "fatca_crs_confirmed_at": "2023-01-01T10:00:00Z", "fatca_relevant": false, "fathers_details": {}, "first_name": "John", "gender": "male", "id": "user_hash_id", "identification": {}, "is_email_verified": "10", "is_mobile_verified": "10", "is_risk_flagged": "CLEARED", "job_title": "Software Engineer", "kyc_processed_date": "2023-01-01T10:00:00Z", "kyc_status": "completed", "kyc_sub_status": "approved", "last_name": "Doe", "maiden_name": "Smith", "main_income_source": "salary", "marital_status": "single", "metadata": {}, "middle_name": "", "mobile": "1234567890", "mobile_country_code": "+1", "mothers_details": {}, "nationality": "US", "partner_id": "partner_xyz", "pending_update": null, "preferred_name": "Johnny", "provider_account_number": "provider_acc_111", "provider_ref_id": "provider_ref_222", "purpose_of_account_opening": "investment", "requirements": {}, "residency_country": "US", "risk_assessment_status": "CLEARED", "salutation": "Mr", "self_declared_as_pep": false, "socioprofessional_category": "technology", "status": "active", "sub_status": "approved" } ``` ### Response #### Success Response (200) - **message** (string) - Success message indicating the user data has been exported. #### Response Example ```json { "message": "User data exported successfully." } ``` ``` -------------------------------- ### Example Remittance Attachment Data Structure Source: https://developer.matchmove.com/docs/optimus-prime/c2NoOjExMTQwNzE-remittance-attachments This JSON structure represents an example of remittance attachment data. It includes fields like id, document_type, content_type, document_name, link, and created_at. This format is used for exporting and managing attached documents. ```json { "attachments": [ { "id": "string", "document_type": "string", "content_type": "string", "document_name": "string", "link": "string", "created_at": "string" } ] } ``` -------------------------------- ### API (v2) - Onboarding and User Verification Source: https://developer.matchmove.com/docs/optimus-prime/dfd27ede778a2-create-new-beneficiary-bank-account APIs for onboarding new users and performing user verification, including KYC. ```APIDOC ## API (v2) - Onboarding and User Verification ### Description APIs for onboarding and verifying users. ### Endpoints #### Onboarding - Onboarding #### Users - Enumerations Users #### User Verification - User Verification - User KYC - User KYC status - Response (v1) - User KYC providers - Response (v1) - User KYC initiate - Request (v1) - User KYC initiate - Response (v1) - User KYC confirm - Request (v1) - User KYC confirm - Response (v1) ``` -------------------------------- ### Pre-Auth Webhook Payload Example (JSON) Source: https://developer.matchmove.com/docs/optimus-prime/bf9aae83a5e95-webhook-event-card-authorisation An example of a JSON payload for a pre-authorization webhook. This payload includes consumer details, payment instrument information, transaction amounts, currency, and detailed fee structures including cross-border fees with platform and partner breakdowns. ```json { "consumer": { "consumer_name": "MatchMove Demo", "prefund_balance": "1152873.755186" }, "debit_credit_indicator": "D", "payment_instrument": { "balance_type": "Non Shared Balance", "card_brand": "Master", "card_form_factor": "virtual", "card_type_code": "sgmmlitmccard", "expiry": "2025-09-30", "initial_instrument_id": "andt6f87b21efa58218eec8a3282aff5", "masked_number": "XXXXXXXXXXXX9237", "status": "active", "transaction_instrument_id": "andt6f87b21efa58218eec8a3282aff5" }, "time_stamp": "2020-09-05 23:55:09 +0800 UTC", "total_amount": "2.60", "total_currency": "SGD", "transaction": { "additional_fee_details": [ { "cross_border_fee": { "platform_fee": { "fixed_fee": "0.01", "variable_fee": "0.07", "sub_total": "0.08" }, "partner_fee": { "fixed_fee": "0.01", "variable_fee": "0.07", "sub_total": "0.08" } } } ], "risk_details": { "security_services_data": [ { "some_data_field": "some_value" } ] } } } ``` -------------------------------- ### Remittance Fees Data Structure and Example Source: https://developer.matchmove.com/docs/optimus-prime/c2NoOjEwMTEyODM-remittance-fees This snippet details the structure of remittance fee objects, including calculation modes, currency details, exchange rates, and fee breakdowns. It also provides a concrete JSON example of a single remittance fee entry. ```json { "fees": [ { "id": "rmt:agent:tt1593064131m3a4lttyd7", "calculation_mode": "source", "payment_mode": "BA", "payment_mode_description": "Bank Deposit", "routing_param": "2734", "routing_type": "DESTINATION", "provider_currency": "SGD", "send_currency": "SGD", "receive_country": "HKG", "receive_currency": "HKD", "partner_name": "Standard Chartered Bank (Hong Kong) Limited", "precision": 2, "exchange_rate": 5.6604, "fixed_fee": "19.90000000", "payer_details": { "code": "0", "display_name": "BankAccount - HKG - HKD", "partner_code": null, "partner_alpha_code": null, "partner_display_name": null, "rounding_decimal_number": "2", "version": "V2" }, "full_details": { "hash_id": "rmt:agent:tt1593064131m3a4lttyd7", "address": null, "city": null, "country_code": "HKG", "payment_mode_description": "Bank Account", "payer_code": "2734", "main_time_table": null, "secondary_time_table": null, "city_code": null, "telephone_1": null, "telephone_2": null, "fax": null, "state": null, "payment_currencies": "20", "version": "V2", "required_fields": "[\"address_1\",\"address_2\",\"bank_account_number\",\"bank_branch_name\",\"city\",\"country\",\"first_name\",\"last_name\",\"reason\",\"receive_mobile_number\",\"state\",\"zipcode\"]", "beneficiary_type": "corporate", "agent_name": "Standard Chartered Bank (Hong Kong) Limited", "required_documents": "[\"invoice\"]" }, "provider_exchange_rate": "5.6604", "cross_rate_details": { "id": "28", "to_value": "1.000000", "from_value": "1.000000" }, "fx_markup_percentage": "0.00000000", "fx_rate": "0.00000000", "pricings_id": "9041", "currency_fx_rate": 1, "reverse_currency_fx_rate": 1 } ], "count": { "total": 14 }, "link": [ { "rel": "next", "href": "https://beta-api.mmvpay.com/sgmmremt/v1/users/wallets/funds/transfers/overseas/transferto/fees/1/1?receive_country=HKG&delivery_method=BA", "method": "GET" } ] } ``` -------------------------------- ### KYC Initiate Process Response Example (JSON) Source: https://developer.matchmove.com/docs/optimus-prime/061fbafe58c76-kyc-initiate-process-response This JSON object represents a successful response from the KYC initiation process. It includes a success flag, unique identifiers for verification and profile, and a link for SDK integration. ```json { "success": true, "verification_id": "vfc_xoaabb6922d84acb8b146e5d7c298e17", "profile_id": "pfi_46cf01c432fb45e98xx25ec068ac0215", "links": { "rel": "capture.sdk", "href": "https://platform-svc-identity.kops.matchmove-beta.com/sdk/?id=7bb523ecc983de267a9cebe82f92c30c31821d61e3b4361d1c546dc1dfb998738d5c1b414c2b1ed5d6f32891d558e91544b29fae44a0393b33175d9dd844de4de81ff951", "method": "GET" } } ``` -------------------------------- ### Example JSON: Remittance Payment Modes Source: https://developer.matchmove.com/docs/optimus-prime/c2NoOjE2NDI5NzQ-remittance-payment-modes This JSON example illustrates the structure of remittance payment modes, detailing different payment channels like 'Cash Pickup' and 'Bank Deposit'. It includes nested information about providers, their codes, and the countries they serve. ```json { "modes": [ { "name": "Cash Pickup", "mode": "CASH_PICKUP", "providers": [ { "name": "transferto", "code": "OF", "provider_code": "OF", "countries": [ "PHL", "KHM", "BGD", "NPL" ] }, { "name": "aub", "code": "OF", "provider_code": "EWALLET", "countries": [ "PHL" ] } ] }, { "name": "Bank Deposit", "mode": "BANK_DEPOSIT", "providers": [ { "name": "transferto", "code": "BA", "provider_code": "BA", "countries": [ "THA", "IDN", "PHL", "BGD", "MYS", "VNM", "HKG" ] } ] } ], "count": { "total": 2 } } ``` -------------------------------- ### Webhooks - Standard Structure Source: https://developer.matchmove.com/docs/optimus-prime/dc3d7b158b6dd-about-webhooks Defines the standard structure for webhook events. ```APIDOC ## Webhook Event - Standard Structure (v2) ### Description This describes the standard structure of a webhook event payload. ### Method POST ### Endpoint Your configured webhook endpoint URL ### Parameters None (the entire payload is the event data) ### Request Body **Webhook Event Payload**: - **event_id** (string) - Unique identifier for the event. - **event_type** (string) - The type of event that occurred (e.g., 'user.created', 'payment.succeeded'). - **timestamp** (string) - ISO 8601 timestamp of when the event occurred. - **data** (object) - The payload specific to the event type. ### Request Example ```json { "event_id": "evt_abcdef123456", "event_type": "user.created", "timestamp": "2023-10-27T10:10:00Z", "data": { "user_id": "usr_12345abcde", "name": "Jane Doe" } } ``` ### Response #### Success Response (200 OK) An empty response or a simple acknowledgment is expected. #### Response Example ```json { "message": "Webhook received successfully" } ``` ``` -------------------------------- ### API v2 - Onboarding - User KYC Source: https://developer.matchmove.com/docs/optimus-prime/7lccm8f3jrj4g-un-loading-from-card-to-wallet Endpoints for managing the User Know Your Customer (KYC) process, including initiation, confirmation, and status checks. ```APIDOC ## POST /api/v2/kyc/initiate ### Description Initiates the KYC process for a user. ### Method POST ### Endpoint /api/v2/kyc/initiate ### Request Body - **user_id** (string) - Required - The ID of the user for whom to initiate KYC. - **provider** (string) - Required - The KYC provider to use. ### Request Example ```json { "user_id": "usr_123abc", "provider": "example_kyc_provider" } ``` ### Response #### Success Response (200) - **kyc_session_id** (string) - The unique identifier for the KYC session. - **status** (string) - The initial status of the KYC process. #### Response Example ```json { "kyc_session_id": "kyc_session_abcde", "status": "PENDING_SUBMISSION" } ``` ``` ```APIDOC ## POST /api/v2/kyc/confirm ### Description Confirms the KYC process for a user, often after external verification steps. ### Method POST ### Endpoint /api/v2/kyc/confirm ### Request Body - **kyc_session_id** (string) - Required - The ID of the KYC session to confirm. - **verification_code** (string) - Optional - A code received during the verification process. ### Request Example ```json { "kyc_session_id": "kyc_session_abcde", "verification_code": "123456" } ``` ### Response #### Success Response (200) - **kyc_session_id** (string) - The identifier for the confirmed KYC session. - **status** (string) - The updated status of the KYC process (e.g., 'VERIFIED', 'FAILED'). #### Response Example ```json { "kyc_session_id": "kyc_session_abcde", "status": "VERIFIED" } ``` ``` -------------------------------- ### Beneficiary Bank Account Management Source: https://developer.matchmove.com/docs/optimus-prime/op-api/operations/list-user-wallet-account-transactions Endpoints for managing beneficiary bank accounts, including getting and creating them. ```APIDOC ## GET /websites/developer_matchmove/beneficiary_bank_accounts ### Description Retrieves a list of beneficiary bank accounts. ### Method GET ### Endpoint /websites/developer_matchmove/beneficiary_bank_accounts ### Parameters ### Request Body ### Request Example ```json { "example": "request body" } ``` ### Response #### Success Response (200) - **accounts** (array) - List of beneficiary bank accounts #### Response Example ```json { "example": "response body" } ``` ## POST /websites/developer_matchmove/beneficiary_bank_accounts ### Description Creates a new beneficiary bank account. ### Method POST ### Endpoint /websites/developer_matchmove/beneficiary_bank_accounts ### Parameters ### Request Body - **account_details** (object) - Details of the beneficiary account ### Request Example ```json { "example": "request body" } ``` ### Response #### Success Response (200) - **message** (string) - Success message #### Response Example ```json { "example": "response body" } ``` ## DELETE /websites/developer_matchmove/beneficiary_bank_accounts ### Description Removes a beneficiary bank account. ### Method DELETE ### Endpoint /websites/developer_matchmove/beneficiary_bank_accounts ### Parameters ### Request Body - **account_id** (string) - ID of the account to remove ### Request Example ```json { "example": "request body" } ``` ### Response #### Success Response (200) - **message** (string) - Success message #### Response Example ```json { "example": "response body" } ``` ``` -------------------------------- ### Get Account Transactions Source: https://developer.matchmove.com/docs/optimus-prime/op-api/operations/list-user-wallet-account-transactions Retrieves all transactions performed by a user via Bank Transfer (Top up and Transfer out). ```APIDOC ## GET /v1/users/wallets/account/transactions ### Description Retrieve all transactions done by the user via Bank Transfer (Top up and Trasfer out). ### Method GET ### Endpoint https://beta-api.mmvpay.com/{product}/v1/users/wallets/account/transactions ### Parameters #### Path Parameters - **product** (string) - Required - The product identifier for the API request. #### Query Parameters - **account_type** (string) - Optional - Type of account used to fulfill the transaction. Allowed values: consumercorporatebusiness - **bank_account_id** (string) - Optional - Bank account id to filter by. - **bank_account_number** (string) - Optional - Bank account number to filter by. - **client_ref_id** (string) - Optional - Customer ref provider by the customer to filter by. - **order** (string) - Optional - Criteria for ordering the data set returned. Allowed values: amount-amount,created_at-created_at - **page** (string) - Optional - Page number of the data set to return. - **process_type** (string) - Optional - Indicator to denote type of process to include in the response dataset. Allowed values: transfer_out,transfer_in - **records_per_page** (string) - Optional - Number of records to return. - **status** (string) - Optional - Status of the transaction. Allowed values: accepted,rejected,failed,reversed,timeout,cancelled - **user_hash_id** (string) - Optional - User hash of the customer to filter by. - **virtual_account_number** (string) - Optional - Virtual account number to filter by. #### Headers - **X-Auth-User-ID** (string) - Required - MatchMove provided ID for the user. ### Request Example ```json { "example": "Not applicable for GET request" } ``` ### Response #### Success Response (200) - **transactions** (array) - A list of transaction objects. - **pagination** (object) - Pagination details for the response. #### Response Example ```json { "example": "{ \"transactions\": [ { \"transaction_id\": \"txn_123abc\", \"amount\": 100.00, \"currency\": \"THB\", \"status\": \"accepted\", \"process_type\": \"transfer_in\", \"created_at\": \"2023-10-27T10:00:00Z\" } ], \"pagination\": { \"current_page\": 1, \"total_pages\": 10, \"total_records\": 100 } }" } ``` ``` -------------------------------- ### User Data Structure Example (JSON) Source: https://developer.matchmove.com/docs/optimus-prime/pgnqago3sa96n-webhook-individual-users This JSON object represents the structure of a user's data in the MatchMove system. It includes personal details, employment information, account status, and verification requirements. This structure is used for creating and updating user profiles. ```json { "user": { "addresses": { "billing": {}, "identity_verification": {}, "residential": {}, "shipping": {} }, "agent_id": "string", "annual_income_range": "string", "birth": { "city": "string", "country": "string", "date": "2019-08-24", "name": "string", "postal_code": "string" }, "client_ref_id": "string", "customer_id": "string", "created_by": "string", "data_terms_signed_at": "2019-08-24", "date_created": "string", "date_updated": "string", "email": "string", "employment_details": { "business_address": {}, "business_purpose": "string", "business_trading_name": "string", "expected_monthly_revenue": "string", "industry": "string", "industry_key": "string", "own_economic_interest_signed_at": "2019-08-24", "vat_number": "string" }, "employment_type": "string", "errors": [ {} ], "fatca_crs_confirmed_at": "string", "fatca_relevant": false, "fathers_details": { "first_name": "string", "last_name": "string", "maiden_name": "string", "middle_name": "string" }, "first_name": "string", "gender": "string", "id": "string", "identification": { "primary": {}, "secondary": {} }, "is_email_verified": 1, "is_mobile_verified": 1, "is_risk_flagged": "CLEARED", "job_title": "string", "kyc_processed_date": "string", "kyc_status": "pending", "kyc_sub_status": "pending_document_submission", "last_name": "string", "maiden_name": "string", "main_income_source": "string", "marital_status": "string", "metadata": {}, "middle_name": "string", "mobile": "string", "mobile_country_code": "string", "mothers_details": { "first_name": "string", "last_name": "string", "maiden_name": "string", "middle_name": "string" }, "nationality": "string", "partner_id": "string", "pending_update": [ "mobile_country_code", "mobile", "email", "nationality", "address.residential" ], "preferred_name": "string", "provider_account_number": "string", "provider_ref_id": "string", "purpose_of_account_opening": "string", "requirements": { "eventually_due": { "required_attributes": [], "required_actions": [] }, "immediately_due": { "required_attributes": [], "required_actions": [] }, "pending_verification": { "email": {} } }, "residency_country": "string", "risk_assessment_status": "CLEARED", "salutation": "string", "self_declared_as_pep": false, "socioprofessional_category": "string", "status": "pending", "sub_status": "active", "title": "string", "tos_acceptance": { "date": "2019-08-24", "device_id": "string", "ip": "192.168.0.1", "service_agreement": "string", "user_agent": "string" }, "transaction_status": "string", "transaction_sub_status": "string", "type": "customer", "work_country": "string", "status_reason_code": "string", "status_message": "string" } } ```