NeroPay Docs
API & Integrations

Bank Accounts API

Payouts

Bank Accounts API

Create and list payout bank account references without exposing full banking details.

Bank accountsSafe referencesPayout destinations

Bank account endpoints

MethodEndpointPurpose
GET/bank-accountsList safe payout bank references.
POST/bank-accountsAdd a GBP-style bank account.
POST/nerodisburse/bank-accountsAdd a payout destination for NeroDisburse workflows.

Add a GB bank account

ParameterTypeRequiredDescription
account_namestringYesFriendly name for the payout destination.
bank_namestringOptionalBank name when known.
sort_codestringYesSix digit GB sort code.
account_numberstringYesGB account number.
currencystringYesUsually GBP for GB accounts.
full_namestringYesAccount holder name.
emailemail stringOptionalAccount holder or merchant email.
is_defaultbooleanOptionalSet as default payout destination.
 'POST',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer ' . $secretKey,
        'Accept: application/json',
        'Content-Type: application/json',
        'X-NeroPay-Timestamp: ' . $timestamp,
        'X-NeroPay-Signature: ' . $signature,
        'Idempotency-Key: ' . bin2hex(random_bytes(16)),
    ],
    CURLOPT_POSTFIELDS => $rawBody,
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

echo $response;
{
  "success": true,
  "data": {
    "id": 59,
    "account_name": "Main payout account",
    "currency": "GBP",
    "bank_name": "Demo Bank",
    "bank_account_last4": "2345",
    "neropay_bank_account_id": "ba_nero_123",
    "is_default": true
  }
}

Add an IBAN account

 'POST',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer ' . $secretKey,
        'Accept: application/json',
        'Content-Type: application/json',
        'X-NeroPay-Timestamp: ' . $timestamp,
        'X-NeroPay-Signature: ' . $signature,
        'Idempotency-Key: ' . bin2hex(random_bytes(16)),
    ],
    CURLOPT_POSTFIELDS => $rawBody,
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

echo $response;
{
  "success": true,
  "data": {
    "id": 60,
    "account_name": "EUR payout account",
    "currency": "EUR",
    "bank_account_last4": "1000",
    "neropay_bank_account_id": "ba_nero_456",
    "is_default": false
  }
}

List bank accounts

 true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer ' . $secretKey,
        'Accept: application/json',
    ],
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

echo $response;
{
  "success": true,
  "data": [
    {
      "id": 59,
      "account_name": "Main payout account",
      "currency": "GBP",
      "bank_name": "Demo Bank",
      "bank_account_last4": "2345",
      "neropay_bank_account_id": "ba_nero_123"
    }
  ]
}
{
  "success": false,
  "error": {
    "code": "validation_failed",
    "message": "The account_number field is required.",
    "details": {
      "amount": [
        "The amount field is required."
      ]
    }
  }
}