Stripe
Stripe Connect account management and payouts.
Authentication:
GET /stripe/pkis public.- All other Stripe endpoints require
Authorization: Bearer <token>.
POST /stripe/accounts
Create a connected account for the authenticated user.
curl -X POST https://api.paylinks.ro/api/v1/stripe/accounts \
-H "Authorization: Bearer YOUR_TOKEN"
Response (200):
{
"id": "acct_1234567890",
"account": {
"id": "acct_1234567890"
}
}
GET /stripe/accounts/me
Ensure the current user has a connected account and return it.
curl https://api.paylinks.ro/api/v1/stripe/accounts/me \
-H "Authorization: Bearer YOUR_TOKEN"
Response (200):
{
"id": "acct_1234567890",
"account": {
"id": "acct_1234567890"
}
}
GET /stripe/accounts/:id
Get details for your connected account.
curl https://api.paylinks.ro/api/v1/stripe/accounts/acct_1234567890 \
-H "Authorization: Bearer YOUR_TOKEN"
Response (200):
{
"account": {
"id": "acct_1234567890"
}
}
PUT /stripe/accounts/:id
Update connected account details (identity, business profile, payout bank account, ToS acceptance).
curl -X PUT https://api.paylinks.ro/api/v1/stripe/accounts/acct_1234567890 \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"individual": {
"first_name": "Andrei",
"last_name": "Bucur",
"email": "[email protected]",
"address": {
"line1": "Str. Lalelelor 10",
"city": "Bucuresti",
"postal_code": "010101",
"country": "RO"
}
},
"business_type": "individual"
}'
Response (200):
{
"account": {
"id": "acct_1234567890"
},
"isOnboarded": false,
"charges_enabled": false,
"payouts_enabled": false,
"details_submitted": true,
"requirements": {
"currently_due": ["individual.id_number"],
"eventually_due": [],
"past_due": [],
"pending_verification": [],
"disabled_reason": null,
"current_deadline": null,
"errors": []
}
}
GET /stripe/accounts/me/requirements
Get current onboarding/verification state.
curl https://api.paylinks.ro/api/v1/stripe/accounts/me/requirements \
-H "Authorization: Bearer YOUR_TOKEN"
Response (200):
{
"hasAccount": true,
"isOnboarded": false,
"charges_enabled": false,
"payouts_enabled": false,
"details_submitted": true,
"requirements": {
"currently_due": ["individual.id_number"],
"eventually_due": [],
"past_due": [],
"pending_verification": [],
"disabled_reason": null,
"current_deadline": null,
"errors": []
}
}
When no connected account exists:
{
"hasAccount": false,
"isOnboarded": false,
"requirements": null
}
POST /stripe/account-link
Create a Stripe account onboarding link.
curl -X POST https://api.paylinks.ro/api/v1/stripe/account-link \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"refreshUrl": "https://paylinks.ro/dashboard/settings",
"returnUrl": "https://paylinks.ro/dashboard/settings"
}'
Response (200):
{ "url": "https://connect.stripe.com/setup/..." }
POST /stripe/accounts/:id/account-session
Create an embedded account session.
curl -X POST https://api.paylinks.ro/api/v1/stripe/accounts/acct_1234567890/account-session \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"component":"management"}'
Request Body:
| Field | Type | Required | Description |
|---|---|---|---|
component | string | No | onboarding (default) or management |
Response (200):
{ "client_secret": "seti_..._secret_..." }
GET /stripe/pk
Get the Stripe publishable key (public endpoint).
curl https://api.paylinks.ro/api/v1/stripe/pk
Response (200):
{ "publishableKey": "pk_live_..." }
GET /stripe/balance
Get connected account balance summary in the selected currency.
curl https://api.paylinks.ro/api/v1/stripe/balance \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "X-Currency: RON"
Response (200):
{
"currency": "RON",
"available": 4999,
"pending": 499,
"totalTransferred": 30000,
"processing": 250,
"minimumPayoutMajor": 200,
"reservedForFees": 10
}
If no account exists:
{
"currency": "RON",
"available": 0,
"pending": 0,
"totalTransferred": 0,
"minimumPayoutMajor": 200
}
GET /stripe/payouts
List payouts for the connected account.
curl "https://api.paylinks.ro/api/v1/stripe/payouts?limit=10" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "X-Currency: RON"
Query Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
limit | integer | 50 | Number of items (max 100) |
startingAfter | string | — | Stripe payout ID for pagination |
Response (200):
{
"items": [
{
"id": "po_1234567890",
"amountMinor": 100000,
"currency": "RON",
"status": "paid",
"created": "2026-02-17T10:00:00.000Z",
"arrivalDate": "2026-02-18T00:00:00.000Z",
"method": "standard",
"statementDescriptor": null
}
]
}
POST /stripe/payouts
Create a manual payout from available balance.
curl -X POST https://api.paylinks.ro/api/v1/stripe/payouts \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"currency":"RON","statementDescriptor":"PAYLINKS"}'
Request Body:
| Field | Type | Required | Description |
|---|---|---|---|
currency | string | No | RON, EUR, or GBP |
statementDescriptor | string | No | Max 22 chars |
Response (200):
{
"payout": {
"id": "po_1234567890",
"amount": 499900,
"currency": "ron",
"status": "pending"
}
}