curl --request GET \
--url https://laso.finance/get-payment-status \
--header 'Authorization: <api-key>'import requests
url = "https://laso.finance/get-payment-status"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://laso.finance/get-payment-status', 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://laso.finance/get-payment-status",
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: <api-key>"
],
]);
$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://laso.finance/get-payment-status"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://laso.finance/get-payment-status")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://laso.finance/get-payment-status")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"payment": {
"id": "otlUYhH8n7Q2KWmt6FBs",
"amount_pre_fees": 10,
"amount_with_fees": 11.5,
"fees_paid": 1.5,
"platform": "venmo",
"state": "complete",
"state_updated_at": 1789365621369,
"recipient_id": "Bh3bHdQwErTyUiOpAsDf",
"recipient_first_name": "Jane",
"recipient_last_name": "Doe",
"timestamp": 1789364854261,
"timestamp_readable": "9/14/2026, 6:47:34 AM"
}
}{
"error": "Invalid or expired token"
}{
"error": "Account is frozen",
"frozen_message": "<string>"
}{
"error": "Payment not found",
"code": "payment_not_found",
"hint": "No Venmo or PayPal payment with that id belongs to this account. Use the id from GET /get-payment-status without a payment_id, which lists every payout this account has sent."
}Check Venmo and PayPal payout status (free)
Reports the state of the Venmo and PayPal payouts this account has sent with GET /send-payment. Free: only the payout itself is a paid action.
Three ways to call it: with payment_id to fetch one payout, with recipient_id (from GET /payment-recipients) to list every payout to that saved recipient, or with neither to list every payout this account has sent, newest first.
state is queued (waiting on account balance), in-process (dispatched to the platform), complete, failed, or cancelled. queued and in-process are the two states still in flight; poll every few minutes, or register a webhook with POST /register-webhook to be told when a payout completes instead. A payout that has been in-process for more than an hour is worth raising with the account owner. state is absent on payouts sent before state tracking existed.
Bank payouts are not listed here: follow those with listBankingTransactions. Push-to-card transfers are completed by the recipient in the browser and have no server-side state.
Requires a Bearer token from /auth or /get-card.
curl --request GET \
--url https://laso.finance/get-payment-status \
--header 'Authorization: <api-key>'import requests
url = "https://laso.finance/get-payment-status"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://laso.finance/get-payment-status', 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://laso.finance/get-payment-status",
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: <api-key>"
],
]);
$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://laso.finance/get-payment-status"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://laso.finance/get-payment-status")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://laso.finance/get-payment-status")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"payment": {
"id": "otlUYhH8n7Q2KWmt6FBs",
"amount_pre_fees": 10,
"amount_with_fees": 11.5,
"fees_paid": 1.5,
"platform": "venmo",
"state": "complete",
"state_updated_at": 1789365621369,
"recipient_id": "Bh3bHdQwErTyUiOpAsDf",
"recipient_first_name": "Jane",
"recipient_last_name": "Doe",
"timestamp": 1789364854261,
"timestamp_readable": "9/14/2026, 6:47:34 AM"
}
}{
"error": "Invalid or expired token"
}{
"error": "Account is frozen",
"frozen_message": "<string>"
}{
"error": "Payment not found",
"code": "payment_not_found",
"hint": "No Venmo or PayPal payment with that id belongs to this account. Use the id from GET /get-payment-status without a payment_id, which lists every payout this account has sent."
}Authorizations
Firebase ID token from /auth or any paid route, sent as a Bearer token: Authorization: Bearer <id_token> (the Bearer prefix is required).
Query Parameters
Fetch one payout by its id. Takes precedence over recipient_id.
List every payout to one saved recipient. This is the recipient_id returned by GET /payment-recipients, not the phone number or email.
Response
Returns { "payment": PaymentStatus } when payment_id is provided, or { "payments": PaymentStatus[] } (newest first) otherwise.
- Option 1
- Option 2
One Venmo or PayPal payout sent from this account.
Show child attributes
Show child attributes
Was this page helpful?