NAV
shell ruby python csharp php

Payment

The Payment object

The Payment object looks like this in JSON:

{
    "object": "payment",
    "id": 5,
    "student_id": 1,
    "transaction_id": 21,
    "number": 1,
    "amount": 100,
    "online_payment_id": null,
    "convenience_fee_amount": 0,
    "paid_by_type": "person",
    "paid_by_id": 2,
    "aid_type_id": null,
    "refund_source": null,
    "reference_number": null,
    "receipt_number": "ce9e16ad2e",
    "amount_available": 100,
    "currency": "USD",
    "exchange_rate": null,
    "home_currency_amount": 100,
    "recurring_money_transfer_id": null,
    "aid_disbursement_id": null,
    "treat_as_aid": false,
    "organization_name": null,
    "method": "other",
    "sandbox": true
}
Attribute Required Data Type
id Yes int
student_id No int
transaction_id Yes int
number No int
amount Yes decimal
online_payment_id No int
convenience_fee_amount Yes decimal
paid_by_type Yes enum (person, org, aid_provider)
paid_by_id Yes int
aid_type_id No int
refund_source No enum (all, payments_credits, all_aid, federal_aid, non_federal_aid, aid_type)
reference_number Yes text (100)
receipt_number No text (50)
amount_available Yes decimal
currency No text (3)
exchange_rate No decimal
home_currency_amount Yes decimal
recurring_money_transfer_id No int
aid_disbursement_id No int
treat_as_aid Yes bool
organization_name No text (100)
method No text
sandbox No bool

index

Example code to call this method:

curl "https://yourschool.populiweb.com/api2/payments" \
-H "Content-Type: application/json" \ 
-H "Authorization: Bearer YOUR_POPULI_API_KEY" \ 
-X GET
-d '{
    "start_date": "2022-01-05",
    "end_date": "2023-02-06",
    "filter": {"0":{"logic":"ALL","fields":[{"name":"amount","value":{"type":"RANGE","start":"10.5","end":"900.15"},"positive":1}]}}
}' \ 
require 'httparty'
response = HTTParty.get(
 'https://yourschool.populiweb.com/api2/payments',
 headers: {
  'Authorization' => 'Bearer YOUR_POPULI_API_KEY'
 },
 body: {
  :start_date => '2022-01-05',
  :end_date => '2023-02-06'
 }.to_json
)
puts response.body
import requests
response = requests.get(
 'https://yourschool.populiweb.com/api2/payments',
 headers={
  'Authorization': 'Bearer YOUR_POPULI_API_KEY'
 },
 json={
  'start_date': '2022-01-05',
  'end_date': '2023-02-06'
 }
)
print(response.json())
using Newtonsoft.Json;
using RestSharp;
var client = new RestClient();
var request = new RestRequest(new Uri("https://yourschool.populiweb.com/api2/payments"), Method.Get);
request.AddHeader("Authorization", "Bearer YOUR_POPULI_API_KEY");
request.AddJsonBody(new {
  start_date = "2022-01-05",
  end_date = "2023-02-06"
});
var response = client.Execute(request);
var response_object = JsonConvert.DeserializeObject(response.Content);
Console.Write(response_object);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://yourschool.populiweb.com/api2/payments');
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Authorization: Bearer YOUR_POPULI_API_KEY']);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode([
  'start_date' => '2022-01-05',
  'end_date' => '2023-02-06'
]));
$response = curl_exec($curl);
$response_decoded = json_decode($response);
var_dump($response_decoded);

Example response:

{
    "object": "list",
    "count": 1,
    "results": 1,
    "results_per_page": 200,
    "pages": 1,
    "page": 1,
    "offset": 0,
    "has_more": false,
    "data": [
        {
            "object": "person",
            "id": 12,
            "first_name": "Alice",
            "last_name": "Admin",
            "middle_name": null,
            "prefix": "Mrs.",
            "suffix": null,
            "preferred_name": null,
            "display_name": "Alice Admin",
            "salutation": "Mrs. Alice Admin",
            "addressee": "Mrs. Alice Admin",
            "gender": "female",
            "other_gender": null,
            "image_file_id": null,
            "birth_date": null,
            "status": "active",
            "social_security_number": null,
            "alien_registration_number": null,
            "social_insurance_number": null,
            "home_city": null,
            "home_state": null,
            "home_country": null,
            "former_name": null,
            "license_plate": null,
            "bio": null,
            "hispanic_latino": false,
            "resident_alien": false,
            "localization_id": null,
            "notification_email_id": null,
            "deceased_date": null,
            "import_id": null,
            "staff_id": null,
            "faculty_id": null,
            "degree_level_id": null,
            "added_at": null,
            "added_by_id": 22,
            "updated_at": "2026-07-25T16:24:07+00:00",
            "report_data": {
                "paymentid": 100,
                "payer_type": "PERSON",
                "payment_number": 1,
                "payerid": 12,
                "payment_method": "CHECK",
                "posted_date": "2022-10-24",
                "amount": "600.00",
                "payment_type": "PAYMENT",
                "org_name": null,
                "transactionid": 101,
                "transaction_number": 1,
                "online_payment_name": null,
                "online_payment_street": null,
                "online_payment_city": null,
                "online_payment_state": null,
                "online_payment_postal": null,
                "online_payment_country": null,
                "payment_time": "2026-07-25 09:24:06",
                "online": 0,
                "online_payment_id": null,
                "reference_number": "",
                "receipt_number": "6a64e326f0523",
                "owner_type": "PERSON",
                "ownerid": 12,
                "payer_name": "Alice Admin",
                "treat_as_aid": 0,
                "convenience_fee_amount": "0.00",
                "echeck_status": null,
                "check_id": null,
                "check_number": null
            },
            "private_profile": false,
            "is_user": true
        }
    ],
    "sandbox": true
}

Retrieves all Payment objects that match given filter conditions. This report requires a start and end posted date range.

HTTP Request

GET /payments

Parameters

Name Required Data Type Description
start_date Yes date
end_date Yes date
filter No mixed See available filter conditions
page No int The page of results to return if more than 200 records are found.

Expandable Properties

Filter Condition Parameters

These conditions can be used to narrow the results returned.

Name Type
is_aid_payment bool
payment_type choice
payer_type choice
payer_name text
is_third_party_aid bool
method choice
is_online_payment bool
amount decimal
total decimal
currency currency
student_tag tag
student_campus object id
student_custom_field custom

Permissions

One of the following roles is required to call this method:

index (person)

Example code to call this method:

curl "https://yourschool.populiweb.com/api2/people/(person)/payments" \
-H "Content-Type: application/json" \ 
-H "Authorization: Bearer YOUR_POPULI_API_KEY" \ 
-X GET
require 'httparty'
response = HTTParty.get(
 'https://yourschool.populiweb.com/api2/people/(person)/payments',
 headers: {
  'Authorization' => 'Bearer YOUR_POPULI_API_KEY'
 },
)
puts response.body
import requests
response = requests.get(
 'https://yourschool.populiweb.com/api2/people/(person)/payments',
 headers={
  'Authorization': 'Bearer YOUR_POPULI_API_KEY'
 },
)
print(response.json())
using Newtonsoft.Json;
using RestSharp;
var client = new RestClient();
var request = new RestRequest(new Uri("https://yourschool.populiweb.com/api2/people/(person)/payments"), Method.Get);
request.AddHeader("Authorization", "Bearer YOUR_POPULI_API_KEY");
var response = client.Execute(request);
var response_object = JsonConvert.DeserializeObject(response.Content);
Console.Write(response_object);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://yourschool.populiweb.com/api2/people/(person)/payments');
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Authorization: Bearer YOUR_POPULI_API_KEY']);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');
$response = curl_exec($curl);
$response_decoded = json_decode($response);
var_dump($response_decoded);

Example response:

{
    "object": "list",
    "count": 2,
    "results": 2,
    "results_per_page": null,
    "pages": 1,
    "page": 1,
    "offset": 0,
    "has_more": false,
    "data": [
        {
            "object": "payment",
            "id": 7,
            "student_id": 12,
            "transaction_id": 12,
            "number": 501,
            "amount": 150,
            "online_payment_id": null,
            "convenience_fee_amount": 0,
            "paid_by_type": "person",
            "paid_by_id": 12,
            "aid_type_id": null,
            "refund_source": null,
            "reference_number": null,
            "receipt_number": "ce9sfe5d2e",
            "amount_available": 150,
            "currency": "USD",
            "exchange_rate": null,
            "home_currency_amount": 100,
            "recurring_money_transfer_id": 1,
            "aid_disbursement_id": null,
            "treat_as_aid": false,
            "organization_name": null,
            "method": "cash"
        }
    ],
    "sandbox": true
}

Retrieves all Payment objects tied to a specific Person.

HTTP Request

GET /people/(person)/payments

Parameters

None

Permissions

One of the following roles is required to call this method:

show

Example code to call this method:

curl "https://yourschool.populiweb.com/api2/payments/(payment)" \
-H "Content-Type: application/json" \ 
-H "Authorization: Bearer YOUR_POPULI_API_KEY" \ 
-X GET
require 'httparty'
response = HTTParty.get(
 'https://yourschool.populiweb.com/api2/payments/(payment)',
 headers: {
  'Authorization' => 'Bearer YOUR_POPULI_API_KEY'
 },
)
puts response.body
import requests
response = requests.get(
 'https://yourschool.populiweb.com/api2/payments/(payment)',
 headers={
  'Authorization': 'Bearer YOUR_POPULI_API_KEY'
 },
)
print(response.json())
using Newtonsoft.Json;
using RestSharp;
var client = new RestClient();
var request = new RestRequest(new Uri("https://yourschool.populiweb.com/api2/payments/(payment)"), Method.Get);
request.AddHeader("Authorization", "Bearer YOUR_POPULI_API_KEY");
var response = client.Execute(request);
var response_object = JsonConvert.DeserializeObject(response.Content);
Console.Write(response_object);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://yourschool.populiweb.com/api2/payments/(payment)');
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Authorization: Bearer YOUR_POPULI_API_KEY']);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');
$response = curl_exec($curl);
$response_decoded = json_decode($response);
var_dump($response_decoded);

Example response:

{
    "object": "payment",
    "id": 5,
    "student_id": 1,
    "transaction_id": 21,
    "number": 1,
    "amount": 100,
    "online_payment_id": null,
    "convenience_fee_amount": 0,
    "paid_by_type": "person",
    "paid_by_id": 2,
    "aid_type_id": null,
    "refund_source": null,
    "reference_number": null,
    "receipt_number": "ce9e16ad2e",
    "amount_available": 100,
    "currency": "USD",
    "exchange_rate": null,
    "home_currency_amount": 100,
    "recurring_money_transfer_id": null,
    "aid_disbursement_id": null,
    "treat_as_aid": false,
    "organization_name": null,
    "method": "other",
    "sandbox": true
}

Retrieves a specific Payment object.

HTTP Request

GET /payments/(payment)

Parameters

No additional parameters are needed beyond the ID of the object being requested that appears in the URL.

Expandable Properties

Permissions

One of the following roles is required to call this method:

recurring

Example code to call this method:

curl "https://yourschool.populiweb.com/api2/payments/recurring" \
-H "Content-Type: application/json" \ 
-H "Authorization: Bearer YOUR_POPULI_API_KEY" \ 
-X GET
-d '{
    "filter": {"0":{"logic":"ALL","fields":[{"name":"payer_name","value":{"type":"CONTAINS","text":"blah"},"positive":1}]}}
}' \ 
require 'httparty'
response = HTTParty.get(
 'https://yourschool.populiweb.com/api2/payments/recurring',
 headers: {
  'Authorization' => 'Bearer YOUR_POPULI_API_KEY'
 },
)
puts response.body
import requests
response = requests.get(
 'https://yourschool.populiweb.com/api2/payments/recurring',
 headers={
  'Authorization': 'Bearer YOUR_POPULI_API_KEY'
 },
)
print(response.json())
using Newtonsoft.Json;
using RestSharp;
var client = new RestClient();
var request = new RestRequest(new Uri("https://yourschool.populiweb.com/api2/payments/recurring"), Method.Get);
request.AddHeader("Authorization", "Bearer YOUR_POPULI_API_KEY");
var response = client.Execute(request);
var response_object = JsonConvert.DeserializeObject(response.Content);
Console.Write(response_object);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://yourschool.populiweb.com/api2/payments/recurring');
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Authorization: Bearer YOUR_POPULI_API_KEY']);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');
$response = curl_exec($curl);
$response_decoded = json_decode($response);
var_dump($response_decoded);

Example response:

{
    "object": "list",
    "count": 1,
    "results": 1,
    "results_per_page": null,
    "pages": 1,
    "page": 1,
    "offset": 0,
    "has_more": false,
    "data": [
        {
            "object": "recurring_money_transfer",
            "id": 1,
            "type": "payment",
            "donor_id": 1,
            "student_id": null,
            "payer_type": null,
            "payer_id": null,
            "payment_plan_student_id": null,
            "treat_as_aid": false,
            "pay_beyond_balance": false,
            "payment_method": "credit_card",
            "gateway_token_provider": "stripe",
            "payment_gateway_id": null,
            "gateway_customer_token": "cus_MLxeHuvTzFyb2N",
            "gateway_source_token": "card_1Ld0FNGz1v34x3yFuC2B0L72",
            "start_date": "2022-08-31",
            "end_date": null,
            "last_charged_on": "2022-09-16",
            "last_attempt_at": null,
            "last_attempt_by_id": null,
            "interval": "1_month",
            "day": true,
            "max_additional_times": null,
            "total_times_charged": 2,
            "amount": 90,
            "currency": "USD",
            "secret": "bfb9d17fa8a24e02f864b12f5a732199",
            "first_name": "Donny",
            "last_name": "McDonor",
            "org_name": null,
            "email_address": "donnyd@yahoo.co",
            "phone_number": "123-123-1234",
            "street": "123 Street",
            "city": "Moscow",
            "state": "ID",
            "postal": "83843",
            "country": "US",
            "last_digits": "4242",
            "card_bin": null,
            "card_is_international": false,
            "bank_name": null,
            "donation_campaign_id": 1,
            "donation_appeal_id": null,
            "donation_donate_page_id": null,
            "donation_fund_id": 2,
            "donation_split_fund_id": 1,
            "donation_split_fund_amount": 40,
            "donation_staff_comment": "virtual terminal recurring test",
            "status": "active",
            "status_date": "2022-09-16",
            "problem_message": null,
            "cancel_type": null,
            "last_charged_on_date": "2022-09-16",
            "times_left": null,
            "payment_amount": "90.00",
            "payer_name": "McDonor, Donny",
            "student_name": null,
            "payer_street": null,
            "payer_city": null,
            "payer_state": null,
            "payer_zip": null,
            "payer_country": null,
            "academic_term_id": null,
            "invoice_id": null,
            "payment_plan_id": null,
            "schedule_type": null,
            "recurring_amount": null,
            "payment_plan_name": null,
            "max_payment_plan_due_date": null,
            "future_payment_plan_due_dates": null,
            "payment_deadline_amounts": null,
            "real_end_date": null,
            "added_at": "2022-08-31T23:23:05+00:00",
            "added_by_id": 10,
            "updated_at": "2022-09-16T21:10:53+00:00",
            "updated_by_id": 10
        }
    ],
    "sandbox": true
}

HTTP Request

GET /payments/recurring

Parameters

Name Required Data Type Description
filter No mixed See available filter conditions
page No int The page of results to return if more than 200 records are found.

Filter Condition Parameters

These conditions can be used to narrow the results returned.

Name Type
start_date date
end_date date
type choice
schedule choice
last_charged_on date
day integer
payer_name text
payer_type choice
linked_to_payer bool
payment_method enum
times_charged integer
times_left integer
amount decimal
status enum
student_tag tag
payer_tag tag
student_custom_field custom
payer_custom_field custom

Permissions

One of the following roles is required to call this method:

create

Example code to call this method:

curl "https://yourschool.populiweb.com/api2/people/(person)/payments" \
-H "Content-Type: application/json" \ 
-H "Authorization: Bearer YOUR_POPULI_API_KEY" \ 
-X POST
-d '{
    "amount": 600,
    "asset_account_id": 1,
    "posted_date": "2022-10-24"
}' \ 
require 'httparty'
response = HTTParty.post(
 'https://yourschool.populiweb.com/api2/people/(person)/payments',
 headers: {
  'Authorization' => 'Bearer YOUR_POPULI_API_KEY'
 },
 body: {
  :amount => 600,
  :asset_account_id => 1
 }.to_json
)
puts response.body
import requests
response = requests.post(
 'https://yourschool.populiweb.com/api2/people/(person)/payments',
 headers={
  'Authorization': 'Bearer YOUR_POPULI_API_KEY'
 },
 json={
  'amount': 600,
  'asset_account_id': 1
 }
)
print(response.json())
using Newtonsoft.Json;
using RestSharp;
var client = new RestClient();
var request = new RestRequest(new Uri("https://yourschool.populiweb.com/api2/people/(person)/payments"), Method.Post);
request.AddHeader("Authorization", "Bearer YOUR_POPULI_API_KEY");
request.AddJsonBody(new {
  amount = 600,
  asset_account_id = 1
});
var response = client.Execute(request);
var response_object = JsonConvert.DeserializeObject(response.Content);
Console.Write(response_object);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://yourschool.populiweb.com/api2/people/(person)/payments');
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Authorization: Bearer YOUR_POPULI_API_KEY']);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode([
  'amount' => 600,
  'asset_account_id' => 1
]));
$response = curl_exec($curl);
$response_decoded = json_decode($response);
var_dump($response_decoded);

Example response:

{
    "object": "payment",
    "id": 100,
    "student_id": 12,
    "transaction_id": 101,
    "number": 1,
    "amount": 600,
    "online_payment_id": null,
    "convenience_fee_amount": 0,
    "paid_by_type": "person",
    "paid_by_id": 12,
    "aid_type_id": null,
    "refund_source": null,
    "reference_number": null,
    "receipt_number": "6a64e326f0523",
    "amount_available": 0,
    "currency": "USD",
    "exchange_rate": null,
    "home_currency_amount": 600,
    "recurring_money_transfer_id": null,
    "aid_disbursement_id": null,
    "treat_as_aid": false,
    "organization_name": null,
    "method": "check",
    "sandbox": true
}

Creates a new Payment object.

HTTP Request

POST /people/(person)/payments

Parameters

Name Required Data Type Description
amount Yes decimal
asset_account_id Yes int
posted_date No date
paid_by_type No enum (person, org)
paid_by_id No int
source_type No enum (cash, check, credit_card, ach, other, money_order) Default is check
reference_number No text (100)
currency No text (3)
exchange_rate No decimal

Action Parameters

Name Data Type Description
automatically_apply_to_invoices bool
pay_invoices array of Invoice IDs

Permissions

One of the following roles is required to call this method:

show (person)

Example code to call this method:

curl "https://yourschool.populiweb.com/api2/people/(person)/payments/(payment)" \
-H "Content-Type: application/json" \ 
-H "Authorization: Bearer YOUR_POPULI_API_KEY" \ 
-X GET
require 'httparty'
response = HTTParty.get(
 'https://yourschool.populiweb.com/api2/people/(person)/payments/(payment)',
 headers: {
  'Authorization' => 'Bearer YOUR_POPULI_API_KEY'
 },
)
puts response.body
import requests
response = requests.get(
 'https://yourschool.populiweb.com/api2/people/(person)/payments/(payment)',
 headers={
  'Authorization': 'Bearer YOUR_POPULI_API_KEY'
 },
)
print(response.json())
using Newtonsoft.Json;
using RestSharp;
var client = new RestClient();
var request = new RestRequest(new Uri("https://yourschool.populiweb.com/api2/people/(person)/payments/(payment)"), Method.Get);
request.AddHeader("Authorization", "Bearer YOUR_POPULI_API_KEY");
var response = client.Execute(request);
var response_object = JsonConvert.DeserializeObject(response.Content);
Console.Write(response_object);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://yourschool.populiweb.com/api2/people/(person)/payments/(payment)');
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Authorization: Bearer YOUR_POPULI_API_KEY']);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');
$response = curl_exec($curl);
$response_decoded = json_decode($response);
var_dump($response_decoded);

Example response:

{
    "object": "payment",
    "id": 7,
    "student_id": 12,
    "transaction_id": 12,
    "number": 501,
    "amount": 150,
    "online_payment_id": null,
    "convenience_fee_amount": 0,
    "paid_by_type": "person",
    "paid_by_id": 12,
    "aid_type_id": null,
    "refund_source": null,
    "reference_number": null,
    "receipt_number": "ce9sfe5d2e",
    "amount_available": 150,
    "currency": "USD",
    "exchange_rate": null,
    "home_currency_amount": 100,
    "recurring_money_transfer_id": 1,
    "aid_disbursement_id": null,
    "treat_as_aid": false,
    "organization_name": null,
    "method": "cash",
    "sandbox": true
}

Retrieves a specific Payment object.

HTTP Request

GET /people/(person)/payments/(payment)

Parameters

No additional parameters are needed beyond the ID of the object being requested that appears in the URL.

Permissions

One of the following roles is required to call this method: