curl --request POST \
--url https://api.aura-app.ai/v1/payments \
--header 'Content-Type: application/json' \
--data '
{
"amount": 5000,
"lead_id": "550e8400-e29b-41d4-a716-446655440000",
"payment_date": "2026-01-17T08:00:00Z",
"source": "manual",
"status": "succeeded",
"call_id": "<string>",
"currency": "USD",
"external_id": "pi_3abc123",
"product_id": "<string>"
}
'import requests
url = "https://api.aura-app.ai/v1/payments"
payload = {
"amount": 5000,
"lead_id": "550e8400-e29b-41d4-a716-446655440000",
"payment_date": "2026-01-17T08:00:00Z",
"source": "manual",
"status": "succeeded",
"call_id": "<string>",
"currency": "USD",
"external_id": "pi_3abc123",
"product_id": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
amount: 5000,
lead_id: '550e8400-e29b-41d4-a716-446655440000',
payment_date: '2026-01-17T08:00:00Z',
source: 'manual',
status: 'succeeded',
call_id: '<string>',
currency: 'USD',
external_id: 'pi_3abc123',
product_id: '<string>'
})
};
fetch('https://api.aura-app.ai/v1/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://api.aura-app.ai/v1/payments",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'amount' => 5000,
'lead_id' => '550e8400-e29b-41d4-a716-446655440000',
'payment_date' => '2026-01-17T08:00:00Z',
'source' => 'manual',
'status' => 'succeeded',
'call_id' => '<string>',
'currency' => 'USD',
'external_id' => 'pi_3abc123',
'product_id' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.aura-app.ai/v1/payments"
payload := strings.NewReader("{\n \"amount\": 5000,\n \"lead_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"payment_date\": \"2026-01-17T08:00:00Z\",\n \"source\": \"manual\",\n \"status\": \"succeeded\",\n \"call_id\": \"<string>\",\n \"currency\": \"USD\",\n \"external_id\": \"pi_3abc123\",\n \"product_id\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.aura-app.ai/v1/payments")
.header("Content-Type", "application/json")
.body("{\n \"amount\": 5000,\n \"lead_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"payment_date\": \"2026-01-17T08:00:00Z\",\n \"source\": \"manual\",\n \"status\": \"succeeded\",\n \"call_id\": \"<string>\",\n \"currency\": \"USD\",\n \"external_id\": \"pi_3abc123\",\n \"product_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aura-app.ai/v1/payments")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"amount\": 5000,\n \"lead_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"payment_date\": \"2026-01-17T08:00:00Z\",\n \"source\": \"manual\",\n \"status\": \"succeeded\",\n \"call_id\": \"<string>\",\n \"currency\": \"USD\",\n \"external_id\": \"pi_3abc123\",\n \"product_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"amount": 5000,
"call_id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"currency": "usd",
"customer_email": "<string>",
"customer_name": "<string>",
"id": "550e8400-e29b-41d4-a716-446655440000",
"lead_id": "<string>",
"match_candidates": [
{
"confidence": 0.7,
"email": "<string>",
"lead_id": "<string>",
"name": "<string>",
"reason": "email_exact"
}
],
"match_confidence": 123,
"matched_by": "<string>",
"matched_product_id": "<string>",
"organization_id": "<string>",
"payment_date": "2023-11-07T05:31:56Z",
"provider": "stripe",
"provider_payment_id": "pi_xxxxx",
"refund_reason": "<string>",
"refund_status": "<string>",
"refunded_amount": 123,
"refunded_at": "2023-11-07T05:31:56Z",
"status": "succeeded",
"stripe_charge_id": "<string>",
"stripe_customer_id": "<string>",
"stripe_product_id": "<string>",
"stripe_refund_id": "<string>",
"stripe_subscription_id": "<string>",
"verification_status": "confirmed",
"verified_at": "2023-11-07T05:31:56Z"
},
"success": true
}{
"code": "NOT_FOUND",
"error": "Lead not found",
"success": false,
"requestId": "req_abc123"
}{
"code": "NOT_FOUND",
"error": "Lead not found",
"success": false,
"requestId": "req_abc123"
}{
"code": "<string>",
"error": "<string>",
"success": false,
"requestId": "<string>"
}{
"code": "<string>",
"error": "<string>",
"success": false,
"requestId": "<string>"
}{
"code": "<string>",
"error": "<string>",
"success": false,
"requestId": "<string>"
}{
"code": "<string>",
"error": "<string>",
"success": false,
"requestId": "<string>"
}{
"code": "<string>",
"error": "<string>",
"success": false,
"requestId": "<string>"
}{
"code": "<string>",
"error": "<string>",
"success": false,
"requestId": "<string>"
}Record payment
Record a payment from any source (Stripe, FanBasis, WOP, manual, etc.).
Send an Idempotency-Key header when retrying the same create request. A
completed retry returns the existing payment. A request still being processed
returns 409. Use a new key for a different payment.
Use Cases:
- Record payments from external payment processors
- Manual payment entry for offline transactions
- Sync payments from partner platforms
Required fields:
lead_id- Associated lead UUIDamount- Amount in dollars, stored to two decimal placespayment_date- ISO 8601 datestatus- Payment statussource- Payment source identifier
curl --request POST \
--url https://api.aura-app.ai/v1/payments \
--header 'Content-Type: application/json' \
--data '
{
"amount": 5000,
"lead_id": "550e8400-e29b-41d4-a716-446655440000",
"payment_date": "2026-01-17T08:00:00Z",
"source": "manual",
"status": "succeeded",
"call_id": "<string>",
"currency": "USD",
"external_id": "pi_3abc123",
"product_id": "<string>"
}
'import requests
url = "https://api.aura-app.ai/v1/payments"
payload = {
"amount": 5000,
"lead_id": "550e8400-e29b-41d4-a716-446655440000",
"payment_date": "2026-01-17T08:00:00Z",
"source": "manual",
"status": "succeeded",
"call_id": "<string>",
"currency": "USD",
"external_id": "pi_3abc123",
"product_id": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
amount: 5000,
lead_id: '550e8400-e29b-41d4-a716-446655440000',
payment_date: '2026-01-17T08:00:00Z',
source: 'manual',
status: 'succeeded',
call_id: '<string>',
currency: 'USD',
external_id: 'pi_3abc123',
product_id: '<string>'
})
};
fetch('https://api.aura-app.ai/v1/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://api.aura-app.ai/v1/payments",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'amount' => 5000,
'lead_id' => '550e8400-e29b-41d4-a716-446655440000',
'payment_date' => '2026-01-17T08:00:00Z',
'source' => 'manual',
'status' => 'succeeded',
'call_id' => '<string>',
'currency' => 'USD',
'external_id' => 'pi_3abc123',
'product_id' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.aura-app.ai/v1/payments"
payload := strings.NewReader("{\n \"amount\": 5000,\n \"lead_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"payment_date\": \"2026-01-17T08:00:00Z\",\n \"source\": \"manual\",\n \"status\": \"succeeded\",\n \"call_id\": \"<string>\",\n \"currency\": \"USD\",\n \"external_id\": \"pi_3abc123\",\n \"product_id\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.aura-app.ai/v1/payments")
.header("Content-Type", "application/json")
.body("{\n \"amount\": 5000,\n \"lead_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"payment_date\": \"2026-01-17T08:00:00Z\",\n \"source\": \"manual\",\n \"status\": \"succeeded\",\n \"call_id\": \"<string>\",\n \"currency\": \"USD\",\n \"external_id\": \"pi_3abc123\",\n \"product_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aura-app.ai/v1/payments")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"amount\": 5000,\n \"lead_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"payment_date\": \"2026-01-17T08:00:00Z\",\n \"source\": \"manual\",\n \"status\": \"succeeded\",\n \"call_id\": \"<string>\",\n \"currency\": \"USD\",\n \"external_id\": \"pi_3abc123\",\n \"product_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"amount": 5000,
"call_id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"currency": "usd",
"customer_email": "<string>",
"customer_name": "<string>",
"id": "550e8400-e29b-41d4-a716-446655440000",
"lead_id": "<string>",
"match_candidates": [
{
"confidence": 0.7,
"email": "<string>",
"lead_id": "<string>",
"name": "<string>",
"reason": "email_exact"
}
],
"match_confidence": 123,
"matched_by": "<string>",
"matched_product_id": "<string>",
"organization_id": "<string>",
"payment_date": "2023-11-07T05:31:56Z",
"provider": "stripe",
"provider_payment_id": "pi_xxxxx",
"refund_reason": "<string>",
"refund_status": "<string>",
"refunded_amount": 123,
"refunded_at": "2023-11-07T05:31:56Z",
"status": "succeeded",
"stripe_charge_id": "<string>",
"stripe_customer_id": "<string>",
"stripe_product_id": "<string>",
"stripe_refund_id": "<string>",
"stripe_subscription_id": "<string>",
"verification_status": "confirmed",
"verified_at": "2023-11-07T05:31:56Z"
},
"success": true
}{
"code": "NOT_FOUND",
"error": "Lead not found",
"success": false,
"requestId": "req_abc123"
}{
"code": "NOT_FOUND",
"error": "Lead not found",
"success": false,
"requestId": "req_abc123"
}{
"code": "<string>",
"error": "<string>",
"success": false,
"requestId": "<string>"
}{
"code": "<string>",
"error": "<string>",
"success": false,
"requestId": "<string>"
}{
"code": "<string>",
"error": "<string>",
"success": false,
"requestId": "<string>"
}{
"code": "<string>",
"error": "<string>",
"success": false,
"requestId": "<string>"
}{
"code": "<string>",
"error": "<string>",
"success": false,
"requestId": "<string>"
}{
"code": "<string>",
"error": "<string>",
"success": false,
"requestId": "<string>"
}Idempotency-Key header when retrying the same create request. A
completed retry returns the existing payment. A request still being processed
returns 409. Use a new key for a different payment.
Use Cases:
- Record payments from external payment processors
- Manual payment entry for offline transactions
- Sync payments from partner platforms
lead_id- Associated lead UUIDamount- Amount in dollars, stored to two decimal placespayment_date- ISO 8601 datestatus- Payment statussource- Payment source identifier
Headers
Optional retry key scoped to your organization. Reuse the same key and request body when retrying one create. Use a new key for a different create. A completed request returns the existing resource; a request still in progress returns 409.
"8f3a1c2e-3b9d-4f5a-9c7e-1a2b3c4d5e6f"
Body
Payment amount in dollars, stored to two decimal places. For example, 5000.00 means five thousand dollars. The database rounds additional decimal places. Create, update, and payment reads use the same unit.
x > 05000
Lead ID this payment is from
"550e8400-e29b-41d4-a716-446655440000"
ISO 8601 payment date
"2026-01-17T08:00:00Z"
Payment source (e.g., "stripe", "fanbasis", "wop", "manual")
"manual"
Payment status
pending, succeeded, failed, refunded "succeeded"
Call ID this payment is linked to
Supported currency code, such as USD. Defaults to USD when omitted. Whitespace and letter case are normalized.
"USD"
External payment/transaction ID
"pi_3abc123"
Product ID this payment is for