Skip to main content
POST
/
v1
/
platform
/
payments
Submit Payment
curl --request POST \
  --url https://api.sandbox.finogates.com/v1/platform/payments \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "user_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "wallet_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "amount": 123,
  "idempotency_key": "<string>",
  "product_id": "d4e5f6a7-b8c9-0123-4567-890abcdef012",
  "destination_wallet_id": "c3d4e5f6-a7b8-9012-3456-7890abcdef01",
  "payment_method_id": "e5f6a7b8-c9d0-1234-5678-90abcdef0123",
  "payee_payment_method_id": "f6a7b8c9-d0e1-2345-6789-0abcdef01234",
  "payee_destination_id": "c8d9e0f1-a2b3-4567-89ab-cdef01234567",
  "currency": "USD",
  "intent_type": "payout",
  "hold": false,
  "metadata": {}
}
'
{
  "status_code": 123,
  "data": "<unknown>",
  "query_generated_time": 123
}

Documentation Index

Fetch the complete documentation index at: https://developer.finogates.com/llms.txt

Use this file to discover all available pages before exploring further.

Authorizations

Authorization
string
header
required

The access token received from the authorization server in the OAuth 2.0 flow.

Body

application/json

Create a new payment on the platform.

Maps to creating a payment intent internally. Only public UUIDs are accepted — no internal IDs are ever exposed.

user_id
string<uuid>
required

UUID of the end user initiating the payment.

Example:

"b3a9b622-cc63-4d3c-aad6-2d8e29e6f9d4"

wallet_id
string<uuid>
required

UUID of the wallet to debit (or credit for funding).

Example:

"a1b2c3d4-e5f6-7890-abcd-ef1234567890"

amount
number
required

Payment amount in major currency units (e.g. dollars).

Example:

100.5

idempotency_key
string
required

Unique key to ensure idempotent payment creation.

Required string length: 1 - 120
Example:

"pay_req_20260401_abc123"

product_id
string<uuid> | null

UUID of the product (rail+provider route). Required for funding, payout, and relay intents.

Example:

"d4e5f6a7-b8c9-0123-4567-890abcdef012"

destination_wallet_id
string<uuid> | null

UUID of the destination wallet. Required for transfer intents.

Example:

"c3d4e5f6-a7b8-9012-3456-7890abcdef01"

payment_method_id
string<uuid> | null

UUID of the payer's payment method. Required for funding and relay intents.

Example:

"e5f6a7b8-c9d0-1234-5678-90abcdef0123"

payee_payment_method_id
string<uuid> | null

UUID of the payee's payment method (legacy field). For payout and relay intents either payee_payment_method_id OR payee_destination_id is required — the modern flows (including Checkbook auto-deposit) use payee_destination_id.

Example:

"f6a7b8c9-d0e1-2345-6789-0abcdef01234"

payee_destination_id
string<uuid> | null

UUID of the payee's destination (modern field). Required for payout and relay intents that use a PayeeDestination (bank or email) — the canonical model for ACH-push, Checkbook auto-deposit, and email-tokenized payouts. Either this OR payee_payment_method_id must be supplied.

Example:

"c8d9e0f1-a2b3-4567-89ab-cdef01234567"

currency
string
default:USD

ISO 4217 currency code.

Required string length: 3
Example:

"USD"

intent_type
string
default:payout

Type of payment intent. One of funding, payout, transfer, or relay.

Maximum string length: 50
Example:

"payout"

hold
boolean
default:false

If true, funds are held in escrow (transfer only).

Example:

false

metadata
Metadata · object

Arbitrary key-value metadata to attach to the payment.

Example:
{ "order_id": "ORD-12345" }

Response

Successful Response

Standard response wrapper for single-object responses and errors.

status_code
integer
required

HTTP status code for the response.

data
any
required

Payload or error details.

query_generated_time
integer
required

UTC timestamp (milliseconds since epoch) when response was generated.