Skip to main content

API: Request examples

Overview​

This documentation provides an overview of the Payouts API endpoints, including requests and responses for creating payouts, retrieving payout methods, and checking payout statuses.

The examples use shop ID 115 and the test environment (demo).

Retrieve available payout methods for a shop​

Request

curl -L -X GET 'https://gateway.demo.vertexgateway.com/api/v1/payouts/payout-methods/115' \
-H 'Accept: application/json' \
-H 'Api-Access-Token: 2d10f5be-e7fa-463e-b79e-6cb7cd226999'

Response

{
"data": [
{
"providerCode": "connectpay",
"acquirerCode": "gcash",
"instrumentType": "wallet",
"entryMode": null,
"dataEntryModes": ["h2h"],
"allowedCards": [],
"transferType": null,
"currencies": ["PHP"],
"regions": ["PH"]
},
{
"providerCode": "monetix",
"acquirerCode": "monetix",
"instrumentType": "bank_transfer",
"entryMode": null,
"dataEntryModes": ["h2h"],
"allowedCards": [],
"transferType": "bank_wire",
"currencies": ["MYR"],
"regions": ["MY"]
},
{
"providerCode": "premierpay",
"acquirerCode": "directcredit",
"instrumentType": "bank_transfer",
"entryMode": null,
"dataEntryModes": ["h2h"],
"allowedCards": [],
"transferType": "bank_wire",
"currencies": ["CAD"],
"regions": ["CA"]
},
{
"providerCode": "ofapay",
"acquirerCode": "paymaya",
"instrumentType": "wallet",
"entryMode": null,
"dataEntryModes": ["h2h"],
"allowedCards": [],
"transferType": null,
"currencies": ["PHP"],
"regions": ["PH"]
}
]
}

Creating a Payout with Customer Information / Updating Existing Customer Information​

If you need to update the customer information with the corresponding customerId, simply pass the same customerId, specify the required fields for the customer object (First Name, Last Name), and provide the updated customer information.

Request

Request

curl -L -X POST 'https://gateway.demo.vertexgateway.com/api/v1/payouts' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Api-Access-Token: 2d10f5be-e7fa-463e-b79e-6cb7cd226999' \
--data-raw '{
"shopId": 115,
"payout": {
"cost": {
"amount": "100.50",
"currency": "PHP"
},
"payoutNumber": "test001"
},
"purpose": "payment for test",
"providerCode": "ofapay",
"acquirerCode": "paymaya",
"instrumentType": "wallet",
"dataEntryMode": "h2h",
"customer": {
"customerId": "1",
"firstName": "John",
"lastName": "Doe",
"middleName": "James",
"phone": "79221110500",
"email": "john.doe@mymail.com"
},
"recipient": {
"walletData": {
"walletId": "eWallet12345",
"walletHolderName": "John Smith"
}
}
}'

Complete Flow: Retrieve payout methods, create payout, check status​

For wallet payouts​

Step 1: Retrieve payout methods​

Request

curl -L -X GET 'https://gateway.demo.vertexgateway.com/api/v1/payouts/payout-methods/115' \
-H 'Accept: application/json' \
-H 'Api-Access-Token: 2d10f5be-e7fa-463e-b79e-6cb7cd226999'

Response

{
"data": [
{
"providerCode": "ofapay",
"acquirerCode": "paymaya",
"instrumentType": "wallet",
"entryMode": null,
"dataEntryModes": ["h2h"],
"allowedCards": [],
"transferType": null,
"currencies": ["PHP"],
"regions": ["PH"]
},
{
"providerCode": "connectpay",
"acquirerCode": "gcash",
"instrumentType": "wallet",
"entryMode": null,
"dataEntryModes": ["h2h"],
"allowedCards": [],
"transferType": null,
"currencies": ["PHP"],
"regions": ["PH"]
}
]
}

Step 2: Retrieve required payout fields​

Request

curl -L -X POST 'https://gateway.demo.vertexgateway.com/api/v1/payouts/fields' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Api-Access-Token: 2d10f5be-e7fa-463e-b79e-6cb7cd226999' \
--data-raw '{
"providerCode": "ofapay",
"acquirerCode": "paymaya",
"instrumentType": "wallet",
"payoutSettings": {
"region": "PH",
"currency": "PHP",
"shopId": 115
}
}'

The response lists the fields to pass in recipient (and, when applicable, sender) of the Create payout request.

Response

{
"data": {
"recipient": [
{
"key": "walletId",
"label": "Wallet ID",
"category": "walletData",
"validation": {
"type": "text",
"required": true,
"pattern": null,
"minLength": null,
"maxLength": null
},
"options": []
},
{
"key": "walletHolderName",
"label": "Wallet holder name",
"category": "walletData",
"validation": {
"type": "text",
"required": true,
"pattern": null,
"minLength": null,
"maxLength": null
},
"options": []
}
],
"sender": []
}
}

Step 3: Create payout​

Request

curl -L -X POST 'https://gateway.demo.vertexgateway.com/api/v1/payouts' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Api-Access-Token: 2d10f5be-e7fa-463e-b79e-6cb7cd226999' \
--data-raw '{
"shopId": 115,
"payout": {
"cost": {
"amount": "100.50",
"currency": "PHP"
},
"payoutNumber": "test01"
},
"purpose": "payment for test",
"providerCode": "ofapay",
"acquirerCode": "paymaya",
"instrumentType": "wallet",
"dataEntryMode": "h2h",
"recipient": {
"walletData": {
"walletId": "eWallet12345",
"walletHolderName": "John Smith"
}
}
}'

Response

{
"data": {
"payoutStatus": "in_progress",
"payoutNumber": "test01",
"payoutLink": null
}
}

Use payoutNumber from the response to check the payout status. The full list of response fields is described in the Create payout reference.

Step 4: Check payout status​

Request

curl -L -X GET 'https://gateway.demo.vertexgateway.com/api/v1/payouts/115/test01' \
-H 'Accept: application/json' \
-H 'Api-Access-Token: 2d10f5be-e7fa-463e-b79e-6cb7cd226999'

Response

{
"data": {
"id": 800201,
"shopId": 115,
"payoutStatus": "completed",
"payoutNumber": "test01",
"purpose": "payment for test",
"cost": {
"amount": "100.50",
"currency": "PHP",
"region": null
},
"payoutCreatedAt": "2024-06-02T15:30:46+00:00",
"payoutPaidAt": "2024-06-02T15:31:12+00:00",
"payoutTransactions": [
{
"transactionId": "178065967600000060",
"providerTransactionId": "prov-9981",
"cost": {
"amount": "100.50",
"currency": "PHP"
},
"provider": {
"code": "ofapay"
},
"acquirer": {
"code": "paymaya"
},
"instrumentType": "wallet",
"status": {
"status": "completed",
"details": null
},
"operationReference": null,
"recipient": {
"personalData": {
"id": null,
"firstName": "John",
"lastName": "Smith",
"middleName": null,
"phone": null,
"email": null,
"birthDate": null,
"ipAddress": null
},
"addressData": null,
"documentData": null
},
"providerPaymentName": null,
"providerFee": null
}
],
"customer": null,
"payoutDetails": null,
"description": null,
"reviewTimeout": null,
"statusCode": "0",
"statusDescription": "Payment successfully processed (approve)"
}
}

The full list of response fields is described in the Check payout status reference.

For bank transfer payouts​

Step 1: Retrieve payout methods​

Request

curl -L -X GET 'https://gateway.demo.vertexgateway.com/api/v1/payouts/payout-methods/115' \
-H 'Accept: application/json' \
-H 'Api-Access-Token: 2d10f5be-e7fa-463e-b79e-6cb7cd226999'

Response

{
"data": [
{
"providerCode": "monetix",
"acquirerCode": "monetix",
"instrumentType": "bank_transfer",
"entryMode": null,
"dataEntryModes": ["h2h"],
"allowedCards": [],
"transferType": "bank_wire",
"currencies": ["MYR"],
"regions": ["MY"]
},
{
"providerCode": "premierpay",
"acquirerCode": "directcredit",
"instrumentType": "bank_transfer",
"entryMode": null,
"dataEntryModes": ["h2h"],
"allowedCards": [],
"transferType": "bank_wire",
"currencies": ["CAD"],
"regions": ["CA"]
}
]
}

Step 2: Retrieve required payout fields​

Request

curl -L -X POST 'https://gateway.demo.vertexgateway.com/api/v1/payouts/fields' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Api-Access-Token: 2d10f5be-e7fa-463e-b79e-6cb7cd226999' \
--data-raw '{
"providerCode": "monetix",
"acquirerCode": "monetix",
"instrumentType": "bank_transfer",
"payoutSettings": {
"region": "MY",
"currency": "MYR",
"shopId": 115
}
}'

Response

{
"data": {
"recipient": [
{
"key": "email",
"label": "Email",
"category": "personalData",
"validation": {
"type": "email",
"required": true,
"pattern": "/^.+\\@\\S+\\.\\S+$/",
"minLength": null,
"maxLength": null
},
"options": []
},
{
"key": "firstName",
"label": "First name",
"category": "personalData",
"validation": {
"type": "text",
"required": true,
"pattern": null,
"minLength": null,
"maxLength": null
},
"options": []
},
{
"key": "lastName",
"label": "Last name",
"category": "personalData",
"validation": {
"type": "text",
"required": true,
"pattern": null,
"minLength": null,
"maxLength": null
},
"options": []
},
{
"key": "accountNumber",
"label": "Account number",
"category": "bankTransferData",
"validation": {
"type": "text",
"required": true,
"pattern": null,
"minLength": null,
"maxLength": null
},
"options": []
}
],
"sender": []
}
}

Step 3: Create payout​

Request

curl -L -X POST 'https://gateway.demo.vertexgateway.com/api/v1/payouts' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Api-Access-Token: 2d10f5be-e7fa-463e-b79e-6cb7cd226999' \
--data-raw '{
"shopId": 115,
"payout": {
"cost": {
"amount": "100.50",
"currency": "MYR"
},
"payoutNumber": "test03"
},
"purpose": "for test payment",
"providerCode": "monetix",
"acquirerCode": "monetix",
"instrumentType": "bank_transfer",
"dataEntryMode": "h2h",
"recipient": {
"personalData": {
"firstName": "John",
"lastName": "Smith",
"email": "john.smith@example.com"
},
"bankTransferData": {
"accountNumber": "123456789012",
"transferType": "bank_wire"
}
}
}'

Response

{
"data": {
"payoutStatus": "in_progress",
"payoutNumber": "test03",
"payoutLink": null
}
}

Step 4: Check payout status​

Request

curl -L -X GET 'https://gateway.demo.vertexgateway.com/api/v1/payouts/115/test03' \
-H 'Accept: application/json' \
-H 'Api-Access-Token: 2d10f5be-e7fa-463e-b79e-6cb7cd226999'

Response

{
"data": {
"id": 800203,
"shopId": 115,
"payoutStatus": "in_progress",
"payoutNumber": "test03",
"purpose": "payment for test",
"cost": {
"amount": "100.50",
"currency": "MYR",
"region": null
},
"payoutCreatedAt": "2024-06-02T16:28:51+00:00",
"payoutPaidAt": null,
"payoutTransactions": [
{
"transactionId": "178065967600000061",
"providerTransactionId": null,
"cost": {
"amount": "100.50",
"currency": "MYR"
},
"provider": {
"code": "monetix"
},
"acquirer": {
"code": "monetix"
},
"instrumentType": "bank_transfer",
"status": {
"status": "in_progress",
"details": null
},
"operationReference": null,
"recipient": {
"personalData": {
"id": null,
"firstName": "John",
"lastName": "Doe",
"middleName": null,
"phone": null,
"email": "john.doe@example.com",
"birthDate": null,
"ipAddress": null
},
"addressData": null,
"documentData": null
},
"providerPaymentName": null,
"providerFee": null
}
],
"customer": null,
"payoutDetails": null,
"description": null,
"reviewTimeout": null,
"statusCode": null,
"statusDescription": null
}
}

The full list of response fields is described under Check payout status in the wallet flow above.

For card payouts​

Step 1: Retrieve payout methods​

Request

curl -L -X GET 'https://gateway.demo.vertexgateway.com/api/v1/payouts/payout-methods/115' \
-H 'Accept: application/json' \
-H 'Api-Access-Token: 2d10f5be-e7fa-463e-b79e-6cb7cd226999'

Response

{
"data": [
{
"providerCode": "paysage",
"acquirerCode": "paysage",
"instrumentType": "card",
"entryMode": "cnp",
"dataEntryModes": ["h2h"],
"allowedCards": ["visa", "mastercard"],
"transferType": null,
"currencies": ["EUR"],
"regions": ["AX", "DZ"]
}
]
}

Step 2: Retrieve required payout fields​

Request

curl -L -X POST 'https://gateway.demo.vertexgateway.com/api/v1/payouts/fields' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Api-Access-Token: 2d10f5be-e7fa-463e-b79e-6cb7cd226999' \
--data-raw '{
"providerCode": "paysage",
"acquirerCode": "paysage",
"instrumentType": "card",
"payoutSettings": {
"region": "GB",
"currency": "EUR",
"shopId": 115
}
}'

Response

{
"data": {
"recipient": [
{
"key": "email",
"label": "Email",
"category": "personalData",
"validation": {
"type": "email",
"required": true,
"pattern": "/^.+\\@\\S+\\.\\S+$/",
"minLength": null,
"maxLength": null
},
"options": []
},
{
"key": "cardNumber",
"label": "Card number",
"category": "cardData",
"validation": {
"type": "text",
"required": true,
"pattern": null,
"minLength": null,
"maxLength": null
},
"options": []
},
{
"key": "expireMonth",
"label": "Card expiry month",
"category": "cardData",
"validation": {
"type": "text",
"required": true,
"pattern": "/^(0?[1-9]|1[0-2])$/",
"minLength": 1,
"maxLength": 2
},
"options": []
},
{
"key": "expireYear",
"label": "Card expiry year",
"category": "cardData",
"validation": {
"type": "text",
"required": true,
"pattern": "/^(\\d{4}|\\d{2})$/",
"minLength": 2,
"maxLength": 4
},
"options": []
}
],
"sender": []
}
}

Step 3: Create payout​

Request

curl -L -X POST 'https://gateway.demo.vertexgateway.com/api/v1/payouts' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Api-Access-Token: 2d10f5be-e7fa-463e-b79e-6cb7cd226999' \
--data-raw '{
"shopId": 115,
"payout": {
"cost": {
"amount": "100.50",
"currency": "EUR"
},
"payoutNumber": "test_payout3"
},
"purpose": "some text",
"providerCode": "paysage",
"acquirerCode": "paysage",
"instrumentType": "card",
"dataEntryMode": "h2h",
"customer": {
"customerId": "56656",
"firstName": "John",
"lastName": "Doe",
"middleName": "James",
"phone": "79221110500",
"email": "john.doe@mymail.com"
},
"recipient": {
"personalData": {
"firstName": "John",
"lastName": "Smith",
"email": "john.smith@example.com"
},
"cardData": {
"cardNumber": "4111111111111111"
}
}
}'

Response

{
"data": {
"payoutStatus": "in_progress",
"payoutNumber": "test_payout3",
"payoutLink": null
}
}

Step 4: Check payout status​

Request

curl -L -X GET 'https://gateway.demo.vertexgateway.com/api/v1/payouts/115/test_payout3' \
-H 'Accept: application/json' \
-H 'Api-Access-Token: 2d10f5be-e7fa-463e-b79e-6cb7cd226999'

Response

{
"data": {
"id": 800205,
"shopId": 115,
"payoutStatus": "completed",
"payoutNumber": "test_payout3",
"purpose": "payment for test",
"cost": {
"amount": "100.50",
"currency": "EUR",
"region": null
},
"payoutCreatedAt": "2024-06-02T16:35:50+00:00",
"payoutPaidAt": "2024-06-02T16:36:20+00:00",
"payoutTransactions": [
{
"transactionId": "178065967600000062",
"providerTransactionId": "prov-10023",
"cost": {
"amount": "100.50",
"currency": "EUR"
},
"provider": {
"code": "paysage"
},
"acquirer": {
"code": "paysage"
},
"instrumentType": "card",
"status": {
"status": "completed",
"details": null
},
"operationReference": null,
"recipient": {
"personalData": {
"id": null,
"firstName": "John",
"lastName": "Doe",
"middleName": null,
"phone": null,
"email": "john.doe@example.com",
"birthDate": null,
"ipAddress": null
},
"addressData": null,
"documentData": null
},
"providerPaymentName": null,
"providerFee": null
}
],
"customer": null,
"payoutDetails": {
"recipient": {
"paymentSystem": "visa",
"maskedCardNumber": "411111******1111"
},
"sender": {
"paymentSystem": "visa",
"maskedCardNumber": null
}
},
"description": null,
"reviewTimeout": null,
"statusCode": "0",
"statusDescription": "Payment successfully processed (approve)"
}
}

The full list of response fields is described under Check payout status in the wallet flow above.