SettleFlow API
API ReferencePayments

Create a payment

POST
/payments

Creates a payment. For a card without a PAN in the request, a one-time client_secret is returned; the hosted-fields SDK collects the card client-side and submits it against that secret (the card never touches the API, SAQ A-EP). Sending payment_method.card_data charges the card server-to-server (SAQ D) — device.ip is then required for risk scoring. wallet/APM payments return a redirect_url the client follows; pay_by_bank returns the hosted form url where the payer picks their bank. capture_mode automatic (default) authorizes and captures; manual authorizes only.

X-Api-Key<token>

Merchant API key for authentication

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/payments" \  -H "Content-Type: application/json" \  -d '{    "amount": 1000,    "currency": "EUR",    "reference": "order_12345",    "capture_mode": "automatic",    "payment_method": {      "type": "card"    },    "customer": {      "reference": "cus_9f8e7d",      "email": "buyer@example.com",      "billing_address": {        "line1": "1 rue de Rivoli",        "city": "Paris",        "postal_code": "75001",        "country": "FR"      }    },    "metadata": {      "orderId": "12345"    }  }'
{  "id": "pr_a1b2c3d4e5f6",  "amount": 1000,  "currency": "EUR",  "status": "pending",  "capture_mode": "automatic",  "authorized_amount": 0,  "captured_amount": 0,  "refunded_amount": 0,  "disputed_amount": 0,  "used_method_family": null,  "used_method_type": null,  "reference": "order_12345",  "customer": {    "reference": "cus_9f8e7d",    "email": "buyer@example.com"  },  "metadata": {    "orderId": "12345"  },  "client_secret": "pr_a1b2c3d4e5f6_secret_9f8e7d6c5b4a3210",  "redirect_url": null,  "created_at": "2026-07-17T10:00:00.000Z",  "updated_at": "2026-07-17T10:00:00.000Z"}