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
- transaction
- student
- online_payment
- invoice_payments
- payment_refunds
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:
- Financial Aid
- Financial Auditor
- Financial Admin
- Student Billing
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:
- Financial Auditor
- Financial Admin
- Student Billing
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
- transaction
- student
- online_payment
- invoice_payments
- payment_refunds
Permissions
One of the following roles is required to call this method:
- Financial Auditor
- Financial Admin
- Student Billing
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:
- Financial Auditor
- Financial Admin
- Student Billing
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:
- Financial Admin
- Student Billing
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:
- Financial Auditor
- Financial Admin
- Student Billing