API v1
Merchant Login Get API Keys

Beneficiaries

Payouts can only be sent to validated beneficiaries. Register recipients via API or the merchant panel, run penny-drop validation, then use beneficiary_id in payout requests.

End-to-End Flow

1. POST /api/v1/beneficiaries          → create beneficiary (status: pending)
2. POST /api/v1/beneficiaries/{id}/validate → penny-drop validation (status: validated)
3. POST /api/v1/payout/create          → pass beneficiary_id in payout body
4. Wallet debited, money sent to beneficiary

List Beneficiaries

GET https://paygo.sanvexo.in/api/v1/beneficiaries

Query Parameters

ParameterRequiredDescription
validation_statusNoFilter: pending, validated, failed
per_pageNoPage size (max 100, default 20)

Example

curl -X GET https://paygo.sanvexo.in/api/v1/beneficiaries \
-H "X-API-Key: " \
-H "X-Secret-Key: "
$ch = curl_init("https://paygo.sanvexo.in/api/v1/beneficiaries");
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => ["X-API-Key: ", "X-Secret-Key: "],
CURLOPT_RETURNTRANSFER => true,
]);
$response = json_decode(curl_exec($ch), true);
const res = await fetch("https://paygo.sanvexo.in/api/v1/beneficiaries", {
headers: { "X-API-Key": API_KEY, "X-Secret-Key": SECRET },
});
const data = await res.json();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://paygo.sanvexo.in/api/v1/beneficiaries"))
.header("X-API-Key", API_KEY)
.header("X-Secret-Key", SECRET)
.GET().build();

Create Beneficiary

POST https://paygo.sanvexo.in/api/v1/beneficiaries

Request Body

ParameterTypeRequiredDescription
payout_modestringYesbank, upi, imps, neft
namestringYesBeneficiary full name
account_numberstringYes*Bank account (bank/imps/neft)
ifsc_codestringYes*IFSC code (bank/imps/neft)
vpastringYes*UPI ID (upi mode)
bank_namestringNoBank name
mobilestringNoMobile number

Example

curl -X POST https://paygo.sanvexo.in/api/v1/beneficiaries \
-H "X-API-Key: " \
-H "X-Secret-Key: " \
-H "Content-Type: application/json" \
-d '{"payout_mode":"imps","name":"Rahul Sharma","account_number":"1234567890","ifsc_code":"HDFC0001234"}'
$payload = ["payout_mode" => "imps", "name" => "Rahul Sharma", "account_number" => "1234567890", "ifsc_code" => "HDFC0001234"];
$ch = curl_init("https://paygo.sanvexo.in/api/v1/beneficiaries");
curl_setopt_array($ch, [CURLOPT_POST => true, CURLOPT_HTTPHEADER => ["X-API-Key: ...", "Content-Type: application/json"], CURLOPT_POSTFIELDS => json_encode($payload), CURLOPT_RETURNTRANSFER => true]);
await fetch("https://paygo.sanvexo.in/api/v1/beneficiaries", {
method: "POST",
headers: { "X-API-Key": API_KEY, "Content-Type": "application/json" },
body: JSON.stringify({ payout_mode: "imps", name: "Rahul Sharma", account_number: "1234567890", ifsc_code: "HDFC0001234" }),
});
String body = "{\"payout_mode\":\"imps\",\"name\":\"Rahul Sharma\",\"account_number\":\"1234567890\",\"ifsc_code\":\"HDFC0001234\"}";
HttpRequest.newBuilder().uri(URI.create("https://paygo.sanvexo.in/api/v1/beneficiaries")).POST(HttpRequest.BodyPublishers.ofString(body))...

Success Response

HTTP 201 Created

{
  "success": true,
  "message": "Beneficiary created. Run validation before payouts.",
  "data": {
    "id": 1,
    "name": "Rahul Sharma",
    "validation_status": "pending"
  }
}

Validate Beneficiary (Penny Drop)

POST https://paygo.sanvexo.in/api/v1/beneficiaries/{id}/validate

Simulates a ₹1 penny drop and name match. On success, validation_status becomes validated and the beneficiary can receive payouts.

Example

curl -X POST https://paygo.sanvexo.in/api/v1/beneficiaries/1/validate \
-H "X-API-Key: " \
-H "X-Secret-Key: "
$ch = curl_init("https://paygo.sanvexo.in/api/v1/beneficiaries/1/validate");
curl_setopt_array($ch, [CURLOPT_POST => true, CURLOPT_HTTPHEADER => ["X-API-Key: ..."], CURLOPT_RETURNTRANSFER => true]);
await fetch("https://paygo.sanvexo.in/api/v1/beneficiaries/1/validate", { method: "POST", headers: { "X-API-Key": API_KEY } });
HttpRequest.newBuilder().uri(URI.create("https://paygo.sanvexo.in/api/v1/beneficiaries/1/validate")).POST(HttpRequest.BodyPublishers.noBody())...

Get Beneficiary

GET https://paygo.sanvexo.in/api/v1/beneficiaries/{id}

Use in Payout

Once validated, pass the beneficiary ID when creating a payout:

{
  "reference_id": "PAY-001",
  "amount": 1000,
  "payout_mode": "imps",
  "beneficiary_id": 1,
  "beneficiary_name": "Rahul Sharma",
  "beneficiary_account": "1234567890",
  "beneficiary_ifsc": "HDFC0001234"
}
You can also manage beneficiaries in Merchant Panel → Beneficiaries. The same records are used by the API.
If you send payout details without beneficiary_id, the system auto-creates a pending beneficiary — payouts will fail until validation completes.