curl --request GET \
--url https://sandbox.thredfi.com/v1/platform/businesses/{business_id}/invoices/payments/{payment_id}/ \
--header 'Authorization: Bearer <token>'import requests
url = "https://sandbox.thredfi.com/v1/platform/businesses/{business_id}/invoices/payments/{payment_id}/"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://sandbox.thredfi.com/v1/platform/businesses/{business_id}/invoices/payments/{payment_id}/', 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://sandbox.thredfi.com/v1/platform/businesses/{business_id}/invoices/payments/{payment_id}/",
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://sandbox.thredfi.com/v1/platform/businesses/{business_id}/invoices/payments/{payment_id}/"
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://sandbox.thredfi.com/v1/platform/businesses/{business_id}/invoices/payments/{payment_id}/")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.thredfi.com/v1/platform/businesses/{business_id}/invoices/payments/{payment_id}/")
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{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"customer": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"email": "jsmith@example.com",
"company_name": "<string>"
},
"customer_name": "<string>",
"customer_email": "<string>",
"payment_method": "bank_transfer",
"total_amount": 123,
"allocated_amount": 123,
"unallocated_amount": 123,
"net_amount": 123,
"processing_fee": 123,
"processing_fee_cents": 123,
"display_amount": "<string>",
"is_fully_allocated": true,
"is_completed": true,
"processed_at": "2023-11-07T05:31:56Z",
"failed_at": "2023-11-07T05:31:56Z",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"allocations": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"invoice_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"invoice_number": "<string>",
"invoice_status": "<string>",
"amount": 123,
"allocated_at": "2023-11-07T05:31:56Z",
"transaction_tags": "<unknown>",
"notes": "<string>"
}
],
"refund_allocations": [
{
"refund_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"amount_cents": 123,
"allocated_at": "2023-11-07T05:31:56Z",
"reference_number": "<string>"
}
],
"reconciled_bank_transactions": [
{
"bank_transaction_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"bank_transaction_date": "2023-11-07T05:31:56Z",
"bank_transaction_amount_cents": 123,
"bank_transaction_direction": "<string>",
"reconciled_amount_cents": 123,
"reconciliation_link_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"reconciled_at": "2023-11-07T05:31:56Z",
"currency": "<string>",
"payment_type": "<string>",
"bank_account_name": "<string>",
"notes": "<string>"
}
],
"external_id": "<string>",
"payment_reference": "<string>",
"processor_reference": "<string>",
"payment_date": "2023-11-07T05:31:56Z",
"payment_processor": "<string>",
"currency": "EUR",
"status": "pending",
"failure_reason": "<string>",
"transaction_tags": "<unknown>",
"metadata": "<unknown>",
"notes": "<string>",
"bank_reference": "<string>"
}{
"error_code": "<string>",
"message": "<string>",
"detail": {},
"request_id": "<string>"
}{
"error_code": "<string>",
"message": "<string>",
"detail": {},
"request_id": "<string>"
}{
"error_code": "<string>",
"message": "<string>",
"detail": {},
"request_id": "<string>"
}{
"error_code": "<string>",
"message": "<string>",
"detail": {},
"request_id": "<string>"
}{
"error_code": "<string>",
"message": "<string>",
"detail": {},
"request_id": "<string>"
}{
"error_code": "<string>",
"message": "<string>",
"detail": {},
"request_id": "<string>"
}{
"error_code": "<string>",
"message": "<string>",
"detail": {},
"request_id": "<string>"
}Get invoice payment
Retrieve a single payment by ID with all its details and allocations.
curl --request GET \
--url https://sandbox.thredfi.com/v1/platform/businesses/{business_id}/invoices/payments/{payment_id}/ \
--header 'Authorization: Bearer <token>'import requests
url = "https://sandbox.thredfi.com/v1/platform/businesses/{business_id}/invoices/payments/{payment_id}/"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://sandbox.thredfi.com/v1/platform/businesses/{business_id}/invoices/payments/{payment_id}/', 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://sandbox.thredfi.com/v1/platform/businesses/{business_id}/invoices/payments/{payment_id}/",
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://sandbox.thredfi.com/v1/platform/businesses/{business_id}/invoices/payments/{payment_id}/"
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://sandbox.thredfi.com/v1/platform/businesses/{business_id}/invoices/payments/{payment_id}/")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.thredfi.com/v1/platform/businesses/{business_id}/invoices/payments/{payment_id}/")
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{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"customer": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"email": "jsmith@example.com",
"company_name": "<string>"
},
"customer_name": "<string>",
"customer_email": "<string>",
"payment_method": "bank_transfer",
"total_amount": 123,
"allocated_amount": 123,
"unallocated_amount": 123,
"net_amount": 123,
"processing_fee": 123,
"processing_fee_cents": 123,
"display_amount": "<string>",
"is_fully_allocated": true,
"is_completed": true,
"processed_at": "2023-11-07T05:31:56Z",
"failed_at": "2023-11-07T05:31:56Z",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"allocations": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"invoice_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"invoice_number": "<string>",
"invoice_status": "<string>",
"amount": 123,
"allocated_at": "2023-11-07T05:31:56Z",
"transaction_tags": "<unknown>",
"notes": "<string>"
}
],
"refund_allocations": [
{
"refund_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"amount_cents": 123,
"allocated_at": "2023-11-07T05:31:56Z",
"reference_number": "<string>"
}
],
"reconciled_bank_transactions": [
{
"bank_transaction_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"bank_transaction_date": "2023-11-07T05:31:56Z",
"bank_transaction_amount_cents": 123,
"bank_transaction_direction": "<string>",
"reconciled_amount_cents": 123,
"reconciliation_link_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"reconciled_at": "2023-11-07T05:31:56Z",
"currency": "<string>",
"payment_type": "<string>",
"bank_account_name": "<string>",
"notes": "<string>"
}
],
"external_id": "<string>",
"payment_reference": "<string>",
"processor_reference": "<string>",
"payment_date": "2023-11-07T05:31:56Z",
"payment_processor": "<string>",
"currency": "EUR",
"status": "pending",
"failure_reason": "<string>",
"transaction_tags": "<unknown>",
"metadata": "<unknown>",
"notes": "<string>",
"bank_reference": "<string>"
}{
"error_code": "<string>",
"message": "<string>",
"detail": {},
"request_id": "<string>"
}{
"error_code": "<string>",
"message": "<string>",
"detail": {},
"request_id": "<string>"
}{
"error_code": "<string>",
"message": "<string>",
"detail": {},
"request_id": "<string>"
}{
"error_code": "<string>",
"message": "<string>",
"detail": {},
"request_id": "<string>"
}{
"error_code": "<string>",
"message": "<string>",
"detail": {},
"request_id": "<string>"
}{
"error_code": "<string>",
"message": "<string>",
"detail": {},
"request_id": "<string>"
}{
"error_code": "<string>",
"message": "<string>",
"detail": {},
"request_id": "<string>"
}Authorizations
Partner-level JWT token (unscoped). Token payload includes partner_id. Business access is validated via partner ownership. Format: Bearer <your-jwt-token>
Use this for: Multi-business operations where the business_id is specified in the URL and partner has access to multiple businesses.
Path Parameters
Business UUID provided by Thred (unique identifier for the business)
A UUID string identifying this payment.
Response
Comprehensive serializer for invoice payments list endpoint. Extends PaymentSerializer with allocation details.
Inspired by external payment APIs but adapted for Friday's architecture.
Customer details embedded in payment and other response objects.
Show child attributes
Show child attributes
Customer display name
Customer email address
bank_transfer- Bank Transfercredit_card- Credit Carddebit_card- Debit Cardach- ACH/Direct Debitcheck- Check/Chequecash- Cashpaypal- PayPalstripe- Stripeother- Other
bank_transfer, credit_card, debit_card, ach, check, cash, paypal, stripe, other Total payment amount in cents
Amount allocated to invoices in cents
Unallocated amount remaining in cents (customer credit if positive)
Net amount after deducting all fees in cents
Platform processing fee charged in cents
Platform processing fee charged in cents (raw database field)
Human-readable payment amount with currency symbol
Whether payment is fully allocated to invoices (true if allocated_amount >= total_amount)
Whether payment processing is completed (status='completed')
Show child attributes
Show child attributes
Refund allocations linked to this payment
Show child attributes
Show child attributes
Bank transactions this payment is reconciled to
Show child attributes
Show child attributes
255100255100EUR- EuroGBP- British PoundUSD- US DollarSEK- Swedish KronaNOK- Norwegian KroneDKK- Danish KroneISK- Icelandic KrónaMYR- Malaysian RinggitSGD- Singapore Dollar
EUR, GBP, USD, SEK, NOK, DKK, ISK, MYR, SGD pending- Pendingprocessing- Processingcompleted- Completedfailed- Failedcancelled- Cancelledrefunded- Refunded
pending, processing, completed, failed, cancelled, refunded 100Was this page helpful?