The Novupay API lets you accept and manage payments across multiple channels (banks, e‑wallets, over‑the‑counter partners) through a single integration. Use this section as a living guide: you can expand it later with full endpoint reference tables, diagrams, and flow examples.
Base URL (production): https://novupay.ph/api
Base URL (sandbox / placeholder): https://sandbox.novupay.ph/api (optional; configure based on your environment)
Novupay uses bearer tokens for authenticating API requests. In your actual implementation, you can add details here about how keys are created, rotated, and scoped (for example: project‑level keys, environment‑specific keys, or OAuth client credentials).
All requests should include an Authorization: Bearer YOUR_API_KEY header. You can add tables for scopes and key types here as the
platform matures.
The Payments API is centered around a small set of resources such as payment intents, payment methods, and channel‑specific
instructions. The exact shape of your production API can evolve over time, but a common starting point is to expose endpoints like
POST /payment/create and GET /payment/{id} for creating and retrieving individual payments.
Below is a representative example of a create‑payment request. You can adjust the fields, validation rules, and channel options as you finalize the platform:
POST /payment/create
Content-Type: application/json
Authorization: Bearer YOUR_API_KEY
{
"amount": 1000.00,
"currency": "PHP",
"reference_no": "REF-123456",
"description": "Sample payment",
"channel": "auto", // e.g. 'bank', 'ewallet', 'counter', or 'auto'
"callback_url": "https://your-app.test/payments/callback",
"metadata": {
"customer_id": "CUST-001",
"notes": "Optional field for internal tracking"
}
}
In your live documentation you can extend this section with tables of request parameters and validation rules, channel‑specific notes (e.g., e‑wallet vs bank transfer vs over‑the‑counter), and detailed response examples for successful and failed payments.
Use webhooks to receive real‑time updates about payment statuses, reversals, and reconciliation events. This area is reserved for describing how to register webhook URLs, verify signatures, and handle retries in your application.
You can add:
payment.succeeded, payment.failed, payment.settled).Document common error structures, status codes, and recommended recovery behaviors here. You may also reserve space for idempotency keys (so clients can safely retry requests without creating duplicate payments).
Example placeholders:
code, message, details).Idempotency-Key header for create‑payment operations.Use these examples as starting points. You can expand this area with more languages, SDK snippets, and environment‑specific notes as the platform grows.
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://novupay.ph/api/payment/create',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode([
'amount' => 1000.00,
'currency' => 'PHP',
'reference_no' => 'REF-123456',
'email' => 'customer@example.com',
]),
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'Authorization: Bearer YOUR_API_KEY',
),
));
$response = curl_exec($curl);
curl_close($curl);
$data = json_decode($response, true);
fetch('https://novupay.ph/api/payment/create', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_API_KEY',
},
body: JSON.stringify({
amount: 1000.00,
currency: 'PHP',
reference_no: 'REF-123456',
email: 'customer@example.com',
}),
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
As you finalize your API surface, you can replace these placeholders with real endpoint tables, authentication flows, and channel‑specific integration notes. This page is structured to grow with your documentation needs.
Our developer support team can assist with integration questions, testing strategies, and rollout planning. Use the contact options below to get in touch.