Skip to content

Transactions

Payment and payout records are created automatically by SecPaid. You can query them via the V2 API at any time.

Pay-In Transactions

A pay-in is created when a customer successfully pays a link. Refund and dispute events also appear in the pay-in list as separate entries with their own transaction_type.

Fetching Pay-Ins

POST /api/v2/getPayInTransactions

curl --location 'https://app.secpaid.com/api/v2/getPayInTransactions' \
--header 'token: YOUR_API_KEY' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'since=30' \
--data-urlencode 'limit=200'

Example Response

{
    "data": [
        {
            "pay_id": "42011",
            "user_id": "a95a452a-2c74-465c-b63b-81d73a7a755d",
            "transaction_id": "20241026-pi-QRxbbs7z9n",
            "amount": "1.00",
            "net_amount": "0.83",
            "service_fee": "-0.10",
            "service_fee_psp": "0.27",
            "status": "Success",
            "recipient_note": "Invoice #1234",
            "payout_status": "Pending",
            "created_at": "2024-10-26 16:18:20",
            "is_split_link": "false",
            "is_dispute": "false",
            "is_refund": "false",
            "payment_method": "card",
            "transaction_type": "Basic"
        }
    ],
    "ResponseCode": 1,
    "ResponseMsg": "List retrieved successfully",
    "Result": "True",
    "ServerTime": "CEST"
}

Key Fields

Field Description
pay_id Payment identifier — matches the original link ID
transaction_id Unique SecPaid transaction ID (format: YYYYMMDD-pi-XXXXXXXXXX)
amount Gross amount paid
net_amount Amount after all fees
service_fee SecPaid's service fee
service_fee_psp Payment provider (Stripe) fee
status Success, Pending
payout_status Whether this payment has been included in a nightly payout
is_split_link "true" for split payments
is_dispute "true" if a dispute was raised
is_refund "true" if a refund was processed
payment_method card, Bank Transfer, etc.
transaction_type Basic, Split, Personal QR, Refund, Dispute, Dispute Refund

Filter Parameters

Parameter Behaviour
pay_id Return a single specific payment, ignoring date filters
date Return all payments on a specific date (YYYY-MM-DD)
since Return payments from the past N days. 0 or omitted = today only
search Search across recipient_note, amount, payment_method, transaction_id, created_at
limit Cap the number of results (default: 200)

Payout Transactions

Payouts are generated every night. Each payout batches all successful pay-ins from the previous day and represents the transfer to your account.

Fetching Payouts

POST /api/v2/getPayOutTransactions

curl --location 'https://app.secpaid.com/api/v2/getPayOutTransactions' \
--header 'token: YOUR_API_KEY' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'limit=50'

Example Response

{
    "data": [
        {
            "payout_id": "19",
            "user_id": "b44c4429-4a7b-4e27-85af-c1c2f43f4ffe",
            "transaction_id": "20241012-po-WHk3KxTdHQ",
            "payout_amount": "1.23",
            "service_fee": "0.06",
            "net_amount": "1.17",
            "payout_status": "InProgress",
            "request_date": "2024-10-12",
            "created_at": "2024-10-13T01:58:04Z",
            "is_split_link": "false",
            "is_dispute": "false",
            "is_refund": "false"
        }
    ],
    "ResponseCode": 1,
    "ResponseMsg": "List retrieved successfully",
    "Result": "True",
    "ServerTime": "CEST"
}

Payout Statuses

Status Meaning
Pending Payout is queued
InProgress Transfer is being processed
Completed Funds have been transferred to your account