v1

latestOpenAPI 3.0.02026-07-24103118224.7 KB
Payment

Create a payment in the server to server process

ℹ️ Note: To transmit card information directly through this API (server-to-server), replace the default base URL with https://api-card.inflowpay.com — contact support to get the required authorization.

If you are not transmitting card information directly (e.g. you're using our SDK to collect card details), keep the default base URL.

Creates a new payment transaction using card details. Product prices are excluding tax (HT).

post/api/server/payment

Request body

currency'EUR' | 'USD' required

Payment currency

customerEmailstring email required

Customer email address

savePaymentMethodboolean

Whether to save the payment method. Cannot be used if useCustomerPaymentMethod is true.

useCustomerPaymentMethodboolean

Whether to use the last saved customer payment method. Cannot be used if savePaymentMethod is true.

offSessionboolean

Off-session payment (payer absent), Merchant Initiated. Requires a saved payment method (useCustomerPaymentMethod) and that the merchant is allowed to use off-session payments. Cannot be combined with force3ds or with card information.

force3dsboolean

Force an on-session (payer present) 3DS browser challenge. With card information the 3DS is forced even if it would not normally be required. With useCustomerPaymentMethod the browser 3DS is performed before charging. Cannot be combined with offSession.

billingCountrystring required

Billing country code (ISO 3166-1 alpha-2)

postalCodestring

Billing postal code (required for some countries like US)

purchasingAsBusinessboolean required

Whether the purchase is for a business

businessNamestring

Business name (required if purchasingAsBusiness is true)

taxIdstring

Business tax ID (required if purchasingAsBusiness is true)

firstNamestring

First name, is optional but can cause issues with the 3DS authentication if not provided

lastNamestring

Last name, is optional but can cause issues with the 3DS authentication if not provided

metadatasobject

Optional metadata (key-value pairs)

autoConfirmboolean

Auto-confirm the payment (default false). When enabled, the payment is processed immediately if no 3DS step is required, or right after a successful 3DS authentication.

pricingMode'TAX_EXCLUSIVE' | 'TAX_INCLUSIVE'

Pricing mode for the products. TAX_EXCLUSIVE (default): Product prices are excluding tax (HT), tax is added on top to calculate the final amount. TAX_INCLUSIVE: Product prices include tax (TTC), tax is extracted from the total while keeping the final amount fixed.

threeDsSuccessUrlstring

URL to redirect to after successful 3DS authentication, only required if card information is provided

threeDsFailureUrlstring

URL to redirect to after failed 3DS authentication, only required if card information is provided

marketplaceFeeInCentsnumber

Connect only: explicit marketplace take on this payin in cents. Only the parent marketplace may set this for sub-merchant payins (X-On-Behalf-Of). When omitted, the marketplace default from settings applies at checkout success.

captureMode'AUTOMATIC' | 'MANUAL'

Capture mode for card payments. AUTOMATIC (default): funds are captured when the customer pays. MANUAL: funds are authorized at checkout and must be captured later via POST /api/payment/:paymentId/capture (full amount only).

statementDescriptorstring

Optional statement descriptor (max 11 characters) shown on the customer's bank statement as 'INFLOWPAY* <descriptor>'. Falls back to the account-level statement descriptor if omitted.

Example request

{
  "card": {
    "number": "4242424242424242",
    "expiration_month": 12,
    "expiration_year": 2025,
    "cvc": "123"
  },
  "products": [
    {
      "name": "Premium Subscription",
      "price": 10000,
      "quantity": 1
    },
    {
      "name": "Setup Fee",
      "price": 5000,
      "quantity": 1
    }
  ],
  "items": [
    {
      "priceId": "price_1234567890abcdef",
      "productId": "pro_1234567890abcdef",
      "quantity": 1
    }
  ],
  "currency": "EUR",
  "customerEmail": "customer@example.com",
  "billingCountry": "FR",
  "postalCode": "75001",
  "businessName": "Acme Corp",
  "taxId": "FR12345678901",
  "firstName": "John",
  "lastName": "Doe",
  "pricingMode": "TAX_EXCLUSIVE",
  "threeDsSuccessUrl": "https://yourapp.com/payment/success?paymentId=pay_123",
  "threeDsFailureUrl": "https://yourapp.com/payment/failure?paymentId=pay_123",
  "marketplaceFeeInCents": 200,
  "captureMode": "AUTOMATIC",
  "statementDescriptor": "MY BRAND"
}

Response

Create a payment in the server to server process successful

idstring required

The id of the payment

amountnumber required

The amount of the payment in cents, this has been calculated from the products prices and quantities

customerEmailstring required

The email of the customer

customerIdstring nullable

The id of the customer

currency'EUR' | 'GBP' | 'USD' required

The currency of the payment, this currency will refer to product list prices

metadatasobject

The metadatas of the payment

status'INITIATION' | 'CHECKOUT_PENDING' | 'CHECKOUT_AUTHORIZED' | 'CHECKOUT_SUCCESS' | 'CHECKOUT_CANCELED' | 'CANCELED' | 'PAYMENT_RECEIVED' | 'PAYMENT_SUCCESS' | 'PAYMENT_FAILED' | 'PARTIAL_REFUNDED' | 'FULLY_REFUNDED' | 'REFUND_PENDING' | 'REFUND_FAILED' | 'DISPUTE_INQUIRY' | 'DISPUTE_INQUIRY_CLOSED' | 'DISPUTE_OPENED' | 'DISPUTE_EVIDENCE_SUBMITTED' | 'DISPUTE_UNDER_REVIEW' | 'DISPUTE_WON' | 'DISPUTE_LOST' | 'DISPUTE_ACCEPTED' | 'DISPUTE_PREVENTED' | 'FRAUD_FLAGGED' required

The status of the payment, exhaustive list of status to come

captureMode'AUTOMATIC' | 'MANUAL' required

AUTOMATIC or MANUAL (authorize now, capture later)

authorizedAtstring date-time nullable
capturedAmountInCentsnumber required

Total amount captured in cents (TTC)

createdAtstring date-time required

The creation date of the payment

updatedAtstring date-time required

The last update date of the payment

subscriptionIdstring nullable

The subscription id if payment is part of a subscription

taxCountrystring nullable

The tax country of the payment

amountTaxesIncludednumber nullable

The total amount including taxes in cents

depositStatusstring nullable

The status from the deposit payment service provider

taxRateInPercentagenumber nullable

The tax rate in percentage applied to the payment

pricingModestring nullable

The pricing mode used for the payment. TAX_EXCLUSIVE (default): Prices are excluding tax (HT), tax is added on top. TAX_INCLUSIVE: Prices include tax (TTC), tax is extracted from total.

expiresAtstring date-time nullable

The expiration date of the payment

invoiceUrlstring nullable

URL to view and download the invoice (available after payment success)

threeDsSessionUrlobject nullable

The URL to redirect to after successful 3DS authentication

Example response

{
  "lastDepositAttempt": {
    "status": "succeeded",
    "amount": 10000,
    "paymentMethod": "CARD",
    "error": "card_declined",
    "attemptedAt": "2025-10-24T14:35:00Z"
  },
  "taxRateInPercentage": 20,
  "pricingMode": "TAX_EXCLUSIVE",
  "lastThreeDsAttempt": {
    "status": "succeeded",
    "cardBrand": "Visa",
    "createdDate": "2025-11-12T21:51:33.530Z"
  },
  "invoiceUrl": "https://api.inflowpay.com/invoice/download?token=abc123xyz",
  "customerPaymentMethod": {
    "id": "cpm_abc123",
    "type": "card",
    "cardBrand": "visa",
    "cardLast4": "4242"
  }
}