SettleFlow API

Payment

Authorize and capture a card payment with POST /v1/payment/direct

Endpoint

POST https://api.settleflow.io/v1/payment/direct

Accepts a card, returns an E-PRO response carrying the authorization status and — when 3DS is required — a redirect URL.

Request

Headers

HeaderValue
epro-api-keyYour API key (see Authentication)
Content-Typeapplication/json

Body

All fields below are sent as JSON strings unless stated otherwise. Required fields are marked .

Transaction

FieldReq.TypeDescription
AmountstringInteger amount in the smallest currency unit (e.g. "1234" = €12.34).
UidstringYour stable identifier for the end customer (max 64 chars).
TidstringYour unique transaction / order reference (max 64 chars).
EmailstringCustomer email.
DescriptionstringFree-text order description (max 256).

Card

FieldReq.TypeDescription
CardNumberstring13–19 digits, Luhn-checked.
CardMonthstringExpiry month, 112 (1–2 digits).
CardYearstringExpiry year (2 or 4 digits).
CardCVVstring3 or 4 digits.
CardOwnerstringCardholder name (max 64).

Billing details

These fields are optional by default, but some may be mandatory depending on your account configuration (for example Address, ZipCode, City, Country, BirthDate, Phone, Firstname, Lastname). When a required field is missing, the payment is rejected with error 222. Ask your account manager which fields your account requires.

FieldTypeDescription
FirstnamestringCustomer first name (max 64).
LastnamestringCustomer last name (max 64).
AddressstringStreet address (max 128).
ZipCodestringPostal code (max 16).
CitystringCity (max 64).
CountrystringISO 3166-1 Alpha-3 country code (e.g. FRA).
PhonestringPhone number (max 32).
BirthDatestringYYYY-MM-DD (max 10).
BirthPlacestringBirth city / place (max 64).
ClientIpstringCustomer IP address (max 15).

Flow control

FieldTypeDescription
ReturnUrlURLWhere the customer lands after redirect-based authentication (e.g. 3D Secure). The gateway sends them there with a POST by default — see 3D Secure.

3D Secure is applied automatically by the payment provider when required — you no longer pass a 3DS flag. If the response carries a 3DSecureUrl, redirect the customer there.

Example request

curl -X POST https://api.sandbox.settleflow.io/v1/payment/direct \
  -H "epro-api-key: pk_test_..." \
  -H "Content-Type: application/json" \
  -d '{
    "Amount": "4999",
    "Uid": "customer-42",
    "Tid": "order-2026-001",
    "Email": "jane@example.com",
    "Firstname": "Jane",
    "Lastname": "Doe",
    "CardNumber": "4111111111111111",
    "CardMonth": "12",
    "CardYear": "2028",
    "CardCVV": "123",
    "ReturnUrl": "https://your-shop.com/payment/return"
  }'

Response

Success envelope

{
  "Code": 0,
  "Result": {
    "OperationType": "payment",
    "Status": "captured",
    "Tid": "order-2026-001",
    "Reference": "pr_abc123",
    "Amount": "49.99",
    "Currency": "EUR",
    "UserId": "customer-42",
    "Message": "Payment was successful",
    "Date": "2026-04-22 14:30:45",
    "3DSecure": "no"
  }
}

Result fields

FieldTypeDescription
OperationTypestringAlways "payment" for this endpoint.
StatusstringSee Status values below.
TidstringYour reference, echoed back.
ReferencestringThe payment request ID — use it for refunds and status queries.
AmountnumberAmount in major currency units (e.g. 49.99).
CurrencystringISO 4217 currency code.
UserIdstringYour Uid, echoed back.
MessagestringHuman-readable status message.
DatestringYYYY-MM-DD HH:mm:ss server time (UTC).
3DSecureyes/noWhether 3DS was applied.
3DSecureUrlstringPresent only when a redirect is required. Always a URL on the API host — redirect the customer's browser to it as-is. Short-lived. See 3D Secure.
AliasstringAlias of the card registered during the transaction — reusable later for a one-click payment.

Status values

StatusMeaning
capturedFunds have been captured. Final state.
authorizedAuthorization succeeded; capture pending (if manual capture).
pendingAwaiting PSP confirmation (e.g. 3DS challenge in progress).
failedPayment declined or could not be completed.
cancelledAuthorization was voided.
rejected_pwRejected by the password (cardholder) step.

Errors

Errors are returned as HTTP 200 with a non-zero Code:

{ "Code": 206, "Error": "Invalid parameter CardNumber, check format or Luhn algorithm" }

Common codes:

CodeMeaning
3Invalid API key (see Authentication)
4API key missing
5Missing required parameter
83DSecure not allowed on this account
22Maestro cards require 3DSecure
104Tid already used for another transaction
106ReturnUrl is mandatory for redirect-based authentication
200221Parameter validation failures (one per field)
222A field your account requires is missing (see Billing details)
300Amount exceeds merchant's per-transaction limit

The full catalog is on the Error codes page.

Notes

  • Currency defaults to EUR. The account's configured settlement currency is used.
  • Idempotency via Tid. Re-submitting the same Tid returns error 104 — use your own unique reference per attempt.
  • Partial capture is not available on V1. The payment is captured automatically when the PSP authorizes it.
  • 3DS flow: if 3DSecure=yes in the response, redirect the browser to 3DSecureUrl, then poll POST /v1/status after the customer returns.

On this page