Record a payment against a fee

Records a manual (offline/bank-transfer) payment against a payment plan fee, mirroring the internal staff manual-transaction flow: creating the transaction recomputes the fee's paid status and the plan status. The currency must match the fee's currency and the amount must be a positive integer in minor units, otherwise the request is rejected with 422 field errors. Requires an API token with write access. Pass an Idempotency-Key header to make retries safe.

Path Parameters
  • profile_id
    Type: string
    required

    Unique identifier of the profile the fee belongs to.

  • fee_id
    Type: string
    required

    Unique identifier of the payment plan fee being paid.

Headers
  • Idempotency-Key
    Type: string
    max length:  
    255

    Optional client-generated key (at most 255 characters) that makes the request safe to retry. A repeat carrying the same key replays the original response instead of recording a duplicate (the replay carries an Idempotent-Replayed: true header); the key is scoped to the token, method, and path. A repeat with the same key but a different request (a different body or query string) returns 422, and a repeat while the first request is still in progress returns 409.

Body
required
application/json
  • amount
    Type: integer
    required

    Amount paid, in the fee's minor currency units (e.g. cents). Must be a positive integer; fractional or non-integer values are rejected.

  • currency
    Type: string
    required

    ISO currency code. Must match the fee's currency.

  • description
    Type: string
    required

    Human-readable description of the payment.

  • date
    Type: string

    Optional payment date in ISO 8601 (yyyy-mm-dd). When omitted the transaction has no payment date (returned as an empty string); created_at records when it was created.

  • reference
    Type: string

    Optional free-form reference (e.g. a bank transfer id). A label only; it is not used for idempotency.

Responses
  • application/json
  • application/json
  • application/json
  • application/json
  • application/json
  • application/json
  • application/json
Request Example for post/apis/payments/profiles/{profile_id}/fees/{fee_id}/transactions
curl https://ff-business-school.fullfabric.cloud/apis/payments/profiles/6385bdd4976a7719120108e9/fees/6977b3de3b5d00baac7cd25e/transactions \
  --request POST \
  --header 'Content-Type: application/json' \
  --header 'FF-Auth: YOUR_SECRET_TOKEN' \
  --data '{
  "amount": 500000,
  "currency": "EUR",
  "description": "Deposit – MBA Standard Payment Plan",
  "date": "2026-04-15",
  "reference": "INV-2026-001"
}'
{
  "id": "6311b20d9a52af7df8000200",
  "state": "succeeded",
  "amount": 500000,
  "currency": "EUR",
  "description": "Deposit – MBA Standard Payment Plan",
  "date": "2026-04-15",
  "reference": "INV-2026-001",
  "reverses_id": null,
  "payable_id": "6977b3de3b5d00baac7cd25e",
  "payable_type": "BookKeeper::PaymentPlan::Fee",
  "profile_id": "6385bdd4976a7719120108e9",
  "created_at": 1744675200,
  "updated_at": 1744675200,
  "payment_id": "6977b3de3b5d00baac7cd25e",
  "fee_id": "6977b3de3b5d00baac7cd25e"
}