Accept a one-time payment
Create a server-side payment intent for a capture or authorization flow.
Use a payment intent to begin a one-time payment. Your server creates the intent with order and customer information, then your payment-flow integration continues checkout using the returned intentId.
Choose an intent type
| Intent type | Use when |
|---|---|
CAPTURE | You want to collect the payment during the payment flow. |
AUTHORIZE | You want to authorize the payment before a later capture step supported by your payment configuration. |
RECURRING | You are working with a legacy recurring-payment flow. For new recurring billing, use Subscriptions. |
Confirm which payment methods and authorization behavior are enabled for your PayNowPro account before relying on a specific flow.
Create the intent
Create the intent in a server-side endpoint. Use an order ID that you generate, and calculate the amount from the product or order stored in your system.
curl -X POST "https://api.paynowpro.com/api/v1/payments/intent" \
-H "api-key: YOUR_API_KEY" \
-H "content-type: application/json" \
-d '{
"tenantAlias": "YOUR_TENANT_ALIAS",
"firstName": "Avery",
"lastName": "Brown",
"email": "avery@example.com",
"amount": 49.99,
"currencyCode": "388",
"orderNumber": "order_123",
"intentType": "CAPTURE",
"receiptUrl": "https://example.com/orders/order_123/receipt",
"returnUrl": "https://example.com/orders/order_123/complete",
"paymentDescription": "Order order_123"
}'The API returns an intentId and a status. Store the intentId with your order. It lets you correlate the checkout attempt with the payment flow and support records.
Optional request data
A payment-intent request can also include:
discounts: Named discount amounts applied to the payment.expiryDate: A date after which the payment intent should no longer be used.promotionalCode: A promotion identifier for your records or payment configuration.customerId: A PayNowPro customer ID, when your flow uses one.
Use the Create payment intent API reference for the complete schema.
Confirm before fulfilment
A browser return URL helps you route the customer after checkout; it is not a reliable signal to ship an order. Confirm the outcome with the status or event mechanism available to your account before you fulfil goods, activate a service, or send a receipt.
Common implementation rules
- Create payment intents on your server, never directly in browser code.
- Validate the amount, currency, product, and order ID before creating the intent.
- Use a unique order number so you can reconcile payments with your application.
- Keep card data and API keys out of application logs and support tickets.
- Follow the payment security guidance when designing your flow.