Skip to content

Transaction Status

Use these endpoints to check the current status of any transaction using the reference_id supplied at execution time, or to poll the payment status of a specific invoice or order.

GET /v1/status/collection/{reference_id}
GET /v1/status/payout/{reference_id}
GET /v1/status/transfer/{reference_id}
GET /v1/status/refund/{reference_id}

All four endpoints return an ExecutionResponse (see ExecutionResponse Schema).

To poll the payment status of an invoice or order directly, use Check Payment Source Status.

Code Examples

curl "https://api.heydollr.app/v1/status/collection/550e8400-e29b-41d4-a716-446655440000" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
import requests

BASE_URL     = "https://api.heydollr.app"
headers      = {"Authorization": "Bearer YOUR_ACCESS_TOKEN"}
reference_id = "550e8400-e29b-41d4-a716-446655440000"

response = requests.get(
    f"{BASE_URL}/v1/status/collection/{reference_id}",
    headers=headers,
)
result = response.json()
print("Status:", result["status"])
const BASE_URL     = "https://api.heydollr.app";
const TOKEN        = "YOUR_ACCESS_TOKEN";
const referenceId  = "550e8400-e29b-41d4-a716-446655440000";

const response = await fetch(`${BASE_URL}/v1/status/collection/${referenceId}`, {
  headers: { Authorization: `Bearer ${TOKEN}` },
});
const result = await response.json();
console.log("Status:", result.status);
$referenceId = "550e8400-e29b-41d4-a716-446655440000";
$ch = curl_init(
    "https://api.heydollr.app/v1/status/collection/{$referenceId}"
);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ["Authorization: Bearer YOUR_ACCESS_TOKEN"],
]);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
echo "Status: " . $result["status"];
import java.net.URI;
import java.net.http.*;

String referenceId = "550e8400-e29b-41d4-a716-446655440000";

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create(
        "https://api.heydollr.app/v1/status/collection/" + referenceId
    ))
    .header("Authorization", "Bearer YOUR_ACCESS_TOKEN")
    .GET()
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
package main

import (
    "fmt"
    "io"
    "net/http"
)

func main() {
    referenceId := "550e8400-e29b-41d4-a716-446655440000"

    req, _ := http.NewRequest("GET",
        "https://api.heydollr.app/v1/status/collection/"+referenceId,
        nil,
    )
    req.Header.Set("Authorization", "Bearer YOUR_ACCESS_TOKEN")

    client := &http.Client{}
    resp, _ := client.Do(req)
    defer resp.Body.Close()

    data, _ := io.ReadAll(resp.Body)
    fmt.Println(string(data))
}

Check Payment Source Status

Poll the current payment status of an invoice or order without needing a reference_id.

GET /v1/status/source

Query Parameters

Param Type Required Description
source_type enum Yes INVOICE, ORDER, or SUBSCRIPTION
source_id integer Yes ID of the invoice or order

Response — PaymentSourceStatusResponse

Field Type Description
source_id integer ID of the invoice or order
source_type enum INVOICE, ORDER, or SUBSCRIPTION
source_number string Auto-generated source number (e.g. INV-2025-00042)
status string Current payment status (IDLE, ACTIVE, PROCESSING, PAID, CANCELED)
currency string ISO 4217 currency code
total_amount number Total amount of the payment source
paid_at datetime | null Timestamp of payment confirmation, if paid

Code Examples

curl "https://api.heydollr.app/v1/status/source?source_type=INVOICE&source_id=101" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
import requests

BASE_URL = "https://api.heydollr.app"
headers  = {"Authorization": "Bearer YOUR_ACCESS_TOKEN"}

response = requests.get(
    f"{BASE_URL}/v1/status/source",
    headers=headers,
    params={
        "source_type": "INVOICE",
        "source_id":   101,
    },
)
result = response.json()
print("Status:", result["status"])
print("Paid at:", result["paid_at"])
const BASE_URL = "https://api.heydollr.app";
const TOKEN    = "YOUR_ACCESS_TOKEN";

const params = new URLSearchParams({
  source_type: "INVOICE",
  source_id:   "101",
});

const response = await fetch(`${BASE_URL}/v1/status/source?${params}`, {
  headers: { Authorization: `Bearer ${TOKEN}` },
});
const result = await response.json();
console.log("Status:", result.status);
console.log("Paid at:", result.paid_at);
$params = http_build_query([
    "source_type" => "INVOICE",
    "source_id"   => 101,
]);
$ch = curl_init("https://api.heydollr.app/v1/status/source?{$params}");
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ["Authorization: Bearer YOUR_ACCESS_TOKEN"],
]);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
echo "Status: " . $result["status"];
import java.net.URI;
import java.net.http.*;

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create(
        "https://api.heydollr.app/v1/status/source?source_type=INVOICE&source_id=101"
    ))
    .header("Authorization", "Bearer YOUR_ACCESS_TOKEN")
    .GET()
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
package main

import (
    "fmt"
    "io"
    "net/http"
)

func main() {
    req, _ := http.NewRequest("GET",
        "https://api.heydollr.app/v1/status/source",
        nil,
    )
    q := req.URL.Query()
    q.Add("source_type", "INVOICE")
    q.Add("source_id",   "101")
    req.URL.RawQuery = q.Encode()
    req.Header.Set("Authorization", "Bearer YOUR_ACCESS_TOKEN")

    client := &http.Client{}
    resp, _ := client.Do(req)
    defer resp.Body.Close()

    data, _ := io.ReadAll(resp.Body)
    fmt.Println(string(data))
}