List Payments
curl --request GET \
--url https://getbill.io/external-api/v1/debts/{id}/payments \
--header 'Authorization: Bearer <token>'import requests
url = "https://getbill.io/external-api/v1/debts/{id}/payments"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://getbill.io/external-api/v1/debts/{id}/payments', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://getbill.io/external-api/v1/debts/{id}/payments",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://getbill.io/external-api/v1/debts/{id}/payments"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://getbill.io/external-api/v1/debts/{id}/payments")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://getbill.io/external-api/v1/debts/{id}/payments")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data[].id": "<string>",
"data[].debt_id": "<string>",
"data[].installment_id": "<string>",
"data[].external_payment_id": "<string>",
"data[].provider": "<string>",
"data[].amount": 123,
"data[].status": "<string>",
"data[].paid_at": "<string>"
}Debts API
List Payments
List payments recorded through the external API for a debt
GET
/
external-api
/
v1
/
debts
/
{id}
/
payments
List Payments
curl --request GET \
--url https://getbill.io/external-api/v1/debts/{id}/payments \
--header 'Authorization: Bearer <token>'import requests
url = "https://getbill.io/external-api/v1/debts/{id}/payments"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://getbill.io/external-api/v1/debts/{id}/payments', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://getbill.io/external-api/v1/debts/{id}/payments",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://getbill.io/external-api/v1/debts/{id}/payments"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://getbill.io/external-api/v1/debts/{id}/payments")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://getbill.io/external-api/v1/debts/{id}/payments")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data[].id": "<string>",
"data[].debt_id": "<string>",
"data[].installment_id": "<string>",
"data[].external_payment_id": "<string>",
"data[].provider": "<string>",
"data[].amount": 123,
"data[].status": "<string>",
"data[].paid_at": "<string>"
}Overview
Returns payments recorded on a debt through the External API, including direct pay-downs, paid installments, cancelled payments, and payment deltas created frompaidAmount or remainingAmount updates.
This endpoint is intended for reconciliation by an external payment platform. It does not expose unrelated internal provider transactions.
When called through a grouped debt, the response also includes installment payments recorded on the shared plan debt. Direct payments made without installment_id remain visible only on the debt they paid.
Authentication
Requires a valid OAuth 2.0 access token with thedebts:read scope.
Request
string
required
Encrypted debt ID.
string
Optional partner payment identifier. When provided, only the matching payment is returned.
Response
string
Opaque UUID of the payment transaction.
string
Encrypted debt that owns the payment. A grouped installment payment is owned by the shared plan debt.
string
Encrypted installment ID when the payment is attached to an installment, otherwise
null.string
Partner payment identifier when one was supplied.
string
Partner/provider label supplied when the payment was recorded, or the internal transaction provider.
number
Payment amount.
string
Payment transaction status.
string
Payment date/time in ISO 8601 format.
Example
curl -X GET "/external-api/v1/debts/debt_id/payments?external_payment_id=partner-payment-123" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"