Operation
Pay out a sandbox balance
POST
/payments/sandbox/payoutsThe sandbox payment provider paying its balance out, as a real one does on its schedule, so a test-mode organisation sees the whole cycle: the sale, the payout, and clearing back to zero. It pays out the sandbox balance's clearing total, one payout per currency (or only `currency`), listing the sandbox balance transactions not paid out before. The payout is raised as the sandbox's `payout.paid` webhook into the same ingress a real provider posts to, so it is recorded, posted (DR the holder's Cash, CR the balance's clearing, in the TEST book) and reconciled asynchronously by the same handlers; read it with GET /v1/ledger/payouts?book=test. Pretend money only: a sandbox balance is in the test book, and the operation is refused on the production stage. An empty list when there is nothing to pay out. Needs paymentproviders.update on the Account that owns the provider (across the whole organisation for an organisation-wide provider): it moves the balance of a provider, not the sale of a channel.
Headers
Idempotency-KeystringOptional- Makes the write safe to retry. The first request with a key does the work and its response is stored for 24 hours; a repeat with the same key and the same request (method, path, query, X-Ticketlayer-Channel, TL-Version and body) gets that stored status and body back, marked `Idempotent-Replay: true`, without running again. The key is scoped to your organisation and your credential. The same key with a different request is 422 IDEMPOTENCY_KEY_REUSED; a repeat while the first is still running waits for it, then answers 409 IDEMPOTENT_REQUEST_IN_PROGRESS if it has not finished. Only a 2xx is stored: after an error the key is free again. Omit the header and the request behaves as it always has.
Body
providerId*stringThe organisation's sandbox payment provider, whose balance is paid out.
currencystringPay out only this currency. Omitted, every currency with money to pay out, one payout each.
Errors
- 400
- Bad Request - Invalid input
- 401
- Unauthorized - Authentication required
- 403
- Forbidden - Insufficient permissions
- 404
- Not Found - Resource not found
- 500
- Internal Server Error
Every error names its code and links to it. All error codes
curl -X POST "https://api.ticketlayer.com/v1/payments/sandbox/payouts" \ -H "Authorization: Bearer tlak_..." \ -H "X-Ticketlayer-Org: your-org-slug" \ -H "Content-Type: application/json" \ -d '{ "providerId": "ppr_sandbox123", "currency": "GBP" }'Response 202
{
"payouts": [
{
"externalPayoutId": "sbx_po_4bQ8xR2mL9tVcN3p",
"currency": "GBP",
"amount": 9900,
"balanceTransactionCount": 2,
"webhookEventId": "iwh_abc123",
"ingestStatus": "received"
}
]
}