Proxy Site API: Integration Guide

Learn how to integrate with PayNearMe's Proxy Site API as a Third-Party Proxy Partner, including required parameters, endpoint reference, integration flows for one-time and recurring payments, and the onboarding and credentialing process.

What is a Proxy Site Integration?

PayNearMe's Proxy Site API lets a Third Party Proxy Partner (3PPP) process payments on behalf of a client without needing direct access to that client's site configuration. PayNearMe enables the proxy relationship on its side; once enabled, the 3PPP can call the standard PayNearMe API on the client's behalf.

Requirements:

  • The client must be using PayNearMe API v2.0+ endpoints.
  • PayNearMe must explicitly enable the API Proxy feature for the partnership.
  • All communication uses POST JSON requests, consistent with the standard PayNearMe API framework.

Core concepts you'll work with:

  • Order — a payment obligation in the PayNearMe platform (e.g., a loan payment, a citation fine, a deposit to a gaming account). See Learning the Basics.
  • Payment Transaction — a payment made using a stored token, a new token, a Smart Link, or a new payment method created at time of payment.

Required Parameters for Every Proxy Call

Every API request made through a proxy integration must include two additional parameters beyond the standard PayNearMe API fields:

ParameterDescription
site_identifierThe 3PPP's own assigned site identifier.
proxy_site_identifierThe site identifier of the client whose transactions are being processed.

If proxy_site_identifier is missing from a request, PayNearMe returns an Unrecognized API Call error. See the Error Handling Reference below.

curl --request POST \
     --url https://api.paynearme-sandbox.com/json-api/find_orders \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '
{
  "site_identifier": "S2155373459",
  "proxy_site_identifier": "S9988776655",
  "version": "3.0",
  "timestamp": "1739400000",
  "signature": "{SIGNATURE_VALUE}",
  "pnm_order_identifier": "PNM123456789",
  "return_minimal_info": "true"
}
'

Available Endpoints

Orders & Discovery

EndpointPurposeNotes
/find_ordersFinds/validates a specific order.Use return_minimal_info=true when you only need to confirm an order exists. Without this flag, the response includes the full orders object — payment tokens, Smart Links, and payment history — which is resource-intensive. Do not use this endpoint just to look up payment methods.
/get_smart_tokenGenerates a Smart Link for consumer self-service.Can be customized with a specific payment flow, expiration time, and/or post-payment redirect URL. Also confirms the order's existence.
/refresh_embedded_js_urlsRetrieves or regenerates the embedded_js_url for one or more orders.Required to invoke the Embedded Form.
/find_paymentsRetrieves an order's or customer's payment history, with sorting, limiting, and pagination.Look up by site_order_identifier, pnm_order_identifier, pnm_customer_identifier, or site_customer_identifier.
/find_payment_methodsFinds payment methods saved to an order/account.More performant than /find_orders when you only need payment methods — it skips the lengthy payment-history payload.
/get_feesRetrieves convenience fees for an order.Pass site_channel to get channel- and order-specific pricing (e.g., honoring no-fee states) for a given payment method such as IVR.

Payments

EndpointPurposeNotes
/create_payment_methodCreates a new payment method token.Can also send a payment in the same call. CVV input is required for card payment methods.
/make_paymentSends payment information to PayNearMe for processing.Use with an existing token from /find_payment_methods or /create_payment_method.
/cancel_paymentCancels a payment already processed by PayNearMe.

Scheduled Payments & Autopay

EndpointPurposeNotes
/schedule_paymentCreates a future-dated, one-time scheduled payment.Requires a tokenized payment method and either pnm_order_identifier or site_order_identifier.
/find_scheduled_paymentFinds the next scheduled payment for an order.Covers both autopay-driven and one-time, future-dated payments.
/cancel_scheduled_paymentCancels a specific scheduled payment.Uses pnm_scheduled_payment_identifier. Must be canceled before payment_date.
/cancel_scheduled_retryCancels a scheduled retry of a declined payment.Uses pnm_schedule_identifier. Works for both autopay and one-time schedules.
/schedule_auto_payCreates a recurring autopay schedule.Only one autopay schedule can exist per order. Supported autopay cadence options include the following:
  • weekly - Every week on the same day as the auto_pay_start_date.
  • bi-weekly - Every other week on the same day as the auto_pay_start_date.
  • monthly - Same date each month as the auto_pay_start_date.
  • twice_monthly - Twice a month, on dates set in auto_pay_multi_first and auto_pay_multi_last (both required).
  • end_of_month - Last day of every month.
  • due_date_monthly - On the due date supplied by the client in the Consumer Account File.
/skip_auto_paySkips the next scheduled autopay payment.
/cancel_auto_payCancels an autopay schedule.
/update_auto_payUpdates an autopay schedule.Only auto_pay_amount can be changed. PayNearMe does not notify consumers of the update.

Notifications

EndpointPurpose
/send_smsSends an SMS message to the consumer.
/send_mailSends an email message to the consumer.
/send_notificationSends an order confirmation, payment confirmation, or Disbursement User Query — by email or SMS.

Integration Flows

Validate an Order

Use one of the following calls to validate that the order exists:

  • /find_orders with return_minimal_info=true — confirms the order exists without the resource-intensive full payload.
  • /get_smart_token — confirms the order exists and returns a Smart Link in one call.

If the order doesn't exist, expect an error like Order not found for given pnm_order_identifier.

sequenceDiagram
    participant P as 3PPP System
    participant PNM as PayNearMe API

    alt Confirm Order Only
        P->>PNM: POST /find_orders (return_minimal_info=true)
        PNM-->>P: Order Confirmed
    else Confirm Order and Get a Smart Link
        P->>PNM: POST /get_smart_token
        PNM-->>P: Order Confirmed + Smart Link URL
    end

Check Payment History and Fees

  1. Call /find_payments to see whether a payment has already been made toward the order.
  2. If no payment exists, call /get_fees to retrieve the fees that apply, based on client configuration and/or consumer location.
📘

Recommended Default

Rather than using /find_orders to validate an order, most integrations should pair /get_fees (accurate pricing by payment method) with /find_payment_methods (saved payment methods) and then /make_payment.

sequenceDiagram
    participant P as 3PPP System
    participant PNM as PayNearMe API

    P->>PNM: POST /find_payments
    PNM-->>P: Payment History
    opt No Existing Payment Found
        P->>PNM: POST /get_fees
        PNM-->>P: Applicable Fees
    end

Take a One-Time Payment

This flow branches depending on how you want to source the payment method, so it's easier to follow as a diagram than a list:

sequenceDiagram
    participant P as 3PPP System
    participant PNM as PayNearMe API
    participant C as Consumer

    alt Use a Saved Payment Method
        P->>PNM: POST /find_payment_methods
        PNM-->>P: Tokenized Payment Methods
        P->>PNM: POST /make_payment (Token)
    else Create a New Payment Method
        P->>PNM: POST /create_payment_method
        PNM-->>P: New Token (+ Payment, if included)
    else Hand Off to Consumer
        P->>PNM: POST /get_smart_token
        PNM-->>P: Smart Link URL
        P->>C: Deliver Smart Link
        C->>PNM: Consumer Completes Payment
    end
    PNM-->>P: Payment Result
    P->>PNM: POST /send_sms, /send_mail, or /send_notification
    PNM->>C: Payment Confirmation
👍

One-Time Payment Notes

Saved Payment Methods

You don't need /create_payment_method if you already have a token.

New Payment Methods

You can send the payment in the same call as /create_payment_method, or as a separate /make_payment call.

Consumer Hand-Off

A Secure Smart Link requires having already called /find_orders; this path keeps sensitive payment data out of the 3PPP's system entirely.

Cancel a Payment

Call /cancel_payment if a payment needs to be reversed.

sequenceDiagram
    participant P as 3PPP System
    participant PNM as PayNearMe API

    P->>PNM: POST /cancel_payment
    PNM-->>P: Payment Canceled

Schedule a One-Time Future-Dated Payment

  1. With a tokenized payment method, call /schedule_payment.
  2. Manage it with /find_scheduled_payment and /cancel_scheduled_payment.
  3. Notify the consumer as in step 3.
sequenceDiagram
    participant P as 3PPP System
    participant PNM as PayNearMe API
    participant C as Consumer

    P->>PNM: POST /schedule_payment (token, date, amount)
    PNM-->>P: Scheduled payment created

    opt Manage the schedule later
        P->>PNM: POST /find_scheduled_payment
        PNM-->>P: Next scheduled payment
        P->>PNM: POST /cancel_scheduled_payment
        PNM-->>P: Scheduled payment canceled
    end

    P->>PNM: POST /send_sms, /send_mail, or /send_notification
    PNM->>C: Payment confirmation
⚠️

Future-Dated Payment Limitations

PayNearMe doesn't cap the number of scheduled payments, but avoid creating too many future dated payments — they can interfere with other scheduled payments on the same order.

Manage a Recurring Autopay Schedule

Autopay has more moving parts than a one-time schedule — an ongoing billing loop, decline retries, and several management actions — so a diagram captures the lifecycle better than a numbered list:

sequenceDiagram
    participant P as 3PPP System
    participant PNM as PayNearMe API
    participant C as Consumer

    P->>PNM: POST /schedule_auto_pay (Token, Cadence)
    PNM-->>P: Autopay Schedule Sreated

    loop Each Billing Cycle
        PNM->>PNM: Attempt Scheduled Payment
        alt Payment Succeeds
            PNM->>C: Payment Confirmation
        else Payment Declines
            PNM->>PNM: Schedule Retry
            opt 3PPP Cancels the Retry
                P->>PNM: POST /cancel_scheduled_retry
            end
        end
    end

    opt Manage the Schedule at Any Time
        P->>PNM: POST /skip_auto_pay
        P->>PNM: POST /update_auto_pay (Amount Only)
        P->>PNM: POST /cancel_auto_pay
    end

    P->>PNM: POST /find_scheduled_payment (Check Next Payment)
👍

Recurring Autopay Notes

  • Only one autopay schedule can exist per order.

  • The /update_auto_pay endpoint can only change the auto_pay_amount. PayNearMe doesn't notify the consumer when this happens, so the 3PPP is responsible for any consumer communication.

  • The /cancel_scheduled_retry endpoint uses the pnm_scheduled_payment_identifier value and works for both autopay and one-time schedules.

⚠️

3PPP Requirements

  • Every card payment method created via the /create_payment_method endpoint requires CVV input.

  • All payments are initiated through the 3PPP to PayNearMe for processing. PayNearMe does not process payments directly with the end-client in a proxy integration.


Error handling reference

ErrorCause
Unrecognized API CallThe proxy_site_identifier is missing from the request.
Order not found for the given __ identifier __The order/account value doesn't exist in PayNearMe's system or is incorrect.
Order not found for given pnm_order_identifierThe order doesn't exist for the given site_identifier/proxy_site_identifier pair. Check for a bad value, or confirm the order has actually been applied to PayNearMe's system yet.
______ is not a supported parameter for this API callThe request includes a field that isn't defined for that endpoint.
Timestamp is out of range (+/- 300 seconds)The timestamp used to generate the request signature falls outside the ±300 second window that PayNearMe allows.
Signature is not correct — string used for signature verification (redacted): …The request body couldn't validate the included signature. Usually this occurs because the signature string wasn't alphabetized correctly, or contains characters outside the allowed set (., -, _).

Onboarding and Credentialing

Proxy integrations follow PayNearMe's standard credentialing process, with one addition: the client must confirm in writing that they want the 3PPP added to their site before access is granted.

  1. The 3PPP requests access through Merchant Services, Account Management, or another PayNearMe contact, who opens a standard compliance request.
  2. PayNearMe's Compliance Team requires written confirmation (e.g., email) from the client authorizing the 3PPP.
  3. Once approved, the 3PPP receives API keys.
  4. PayNearMe configures the client's system to allow proxy access per these guidelines.
  5. The 3PPP and client test the required flows against the predefined use cases above.
  6. The client coordinates go-live in the production environment.

For the underlying account setup (Site Admin account, Key Identifier/Secret Key pair, Base URIs, Authentication), see Getting Started with PayNearMe.


Compliance, Security, and Reporting

  • Data security: All communication must comply with the compliance and risk management protocols defined during onboarding by the Compliance Team.
  • Funds handling: Electronic payments are processed through PayNearMe's standard funding methods; no proxy-specific handling applies.
  • Reporting: Clients and 3PPPs can access detailed transaction reports covering all payment types, plus an operations report to mark payments as settled.

Support

Technical support is available through PayNearMe's standard support channels. Regular maintenance and update schedules will be communicated as they occur.


Did this page help you?