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
- Submitting сustomer information
- Updating customer information
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"
}
}
}'
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": "Jane",
"lastName": "Smith",
"middleName": "James",
"phone": "15857345783",
"email": "janesmith@example.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
- ofapay
- connectpay
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
}
}'
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": "connectpay",
"acquirerCode": "gcash",
"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
- ofapay
- connectpay
{
"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": []
}
}
{
"data": {
"recipient": [
{
"key": "phone",
"label": "Phone",
"category": "personalData",
"validation": {
"type": "text",
"required": true,
"pattern": null,
"minLength": null,
"maxLength": null
},
"options": []
}
],
"sender": []
}
}
Step 3: Create payout
Request
- ofapay
- connectpay
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"
}
}
}'
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": "test02"
},
"purpose": "test payout",
"providerCode": "connectpay",
"acquirerCode": "gcash",
"instrumentType": "wallet",
"dataEntryMode": "h2h",
"recipient": {
"personalData": {
"phone": "+15557654321"
}
}
}'
Response
- ofapay
- connectpay
{
"data": {
"payoutStatus": "in_progress",
"payoutNumber": "test01",
"payoutLink": null
}
}
{
"data": {
"payoutStatus": "in_progress",
"payoutNumber": "test02",
"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
- monetix
- premierpay
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
}
}'
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": "premierpay",
"acquirerCode": "directcredit",
"instrumentType": "bank_transfer",
"payoutSettings": {
"region": "CA",
"currency": "CAD",
"shopId": 115
}
}'
Response
- monetix
- premierpay
{
"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": []
}
}
{
"data": {
"recipient": [
{
"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": "email",
"label": "Email",
"category": "personalData",
"validation": {
"type": "email",
"required": true,
"pattern": "/^.+\\@\\S+\\.\\S+$/",
"minLength": null,
"maxLength": null
},
"options": []
},
{
"key": "phone",
"label": "Phone",
"category": "personalData",
"validation": {
"type": "text",
"required": true,
"pattern": null,
"minLength": null,
"maxLength": null
},
"options": []
},
{
"key": "transitNumber",
"label": "Transit number",
"category": "bankTransferData",
"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": []
},
{
"key": "accountName",
"label": "Account name",
"category": "bankTransferData",
"validation": {
"type": "text",
"required": true,
"pattern": null,
"minLength": null,
"maxLength": null
},
"options": []
},
{
"key": "address",
"label": "Address",
"category": "addressData",
"validation": {
"type": "text",
"required": true,
"pattern": null,
"minLength": null,
"maxLength": null
},
"options": []
},
{
"key": "city",
"label": "City",
"category": "addressData",
"validation": {
"type": "text",
"required": true,
"pattern": null,
"minLength": null,
"maxLength": null
},
"options": []
},
{
"key": "state",
"label": "State",
"category": "addressData",
"validation": {
"type": "text",
"required": true,
"pattern": null,
"minLength": null,
"maxLength": null
},
"options": []
},
{
"key": "countryCode",
"label": "Country",
"category": "addressData",
"validation": {
"type": "text",
"required": true,
"pattern": null,
"minLength": null,
"maxLength": null
},
"options": []
},
{
"key": "zipCode",
"label": "ZIP code",
"category": "addressData",
"validation": {
"type": "text",
"required": true,
"pattern": null,
"minLength": null,
"maxLength": null
},
"options": []
}
],
"sender": []
}
}
Step 3: Create payout
Request
- monetix
- premierpay
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"
}
}
}'
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": "CAD"
},
"payoutNumber": "test04"
},
"purpose": "for test purpose",
"providerCode": "premierpay",
"acquirerCode": "directcredit",
"instrumentType": "bank_transfer",
"dataEntryMode": "h2h",
"recipient": {
"personalData": {
"firstName": "John",
"lastName": "Smith",
"phone": "+15557654321",
"email": "john.smith@example.com"
},
"addressData": {
"countryCode": "US",
"state": "NY",
"city": "New York",
"zipCode": "10001",
"address": "456 Liberty Ave."
},
"documentData": {
"identityDocumentId": "AB1234567",
"TIN": "123456789012"
},
"bankTransferData": {
"accountNumber": "123456789012",
"accountName": "John A. Doe",
"transitNumber": "001",
"transferType": "bank_wire"
}
}
}'
Response
- monetix
- premierpay
{
"data": {
"payoutStatus": "in_progress",
"payoutNumber": "test03",
"payoutLink": null
}
}
{
"data": {
"payoutStatus": "in_progress",
"payoutNumber": "test04",
"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.