Skip to main content

Send Your First Payment

Inventi routes your SEPA payments through CSM, giving you direct access to European clearing networks.
What happens when you send a payment:
  1. You submit the payment via API
  2. Inventi validates and forwards to CSM
  3. The clearing system routes to the beneficiary bank
  4. You receive status updates via webhooks

Supported Payment Types

SEPA Credit Transfer

Standard transfers with next business day settlement

SEPA Instant

Real-time payments settled in under 10 seconds

API Reference

Create SEPA Payment

Initiate SCT or Instant payment

Sign Transactions

Approve payments requiring signature

Approve Transaction

Single transaction approval

Decline Transaction

Reject a pending transaction

Transaction Status Webhook

Track payment lifecycle

Get Transaction

Retrieve payment details

Business Requirements

Always send an Idempotency-Key header when creating payments. If your request times out, retry with the same key to prevent duplicate payments.
Without idempotency, network retries can result in duplicate transactions.
The create response returns result.id (transaction ID). Persist it immediately and use it for all subsequent operations.
Store both trx_id and end_to_end_id for complete tracking and reconciliation.
Use the Payment Status Change webhook to update transaction state in real-time. Implement API polling only as a fallback for reconciliation.
Depending on your tenant configuration, transactions may require approval before processing. When status is To sign, use one of these methods:
  • Single approval: PATCH /v1/transactions/{id}:approve
  • Bulk signing: POST /v1/transactions/signatures
Choose based on your UX: single-button approve for simple flows, bulk signing for queue-based approval workflows.

Transaction Lifecycle

Transaction Statuses

Create a Payment

Request Fields

string
required
Debtor IBAN (sender account)
string
required
Debtor name
integer
required
Amount in cents
string
required
Currency code (EUR)
string
required
Creditor IBAN (recipient account)
string
required
Creditor name
integer
required
Amount in cents
string
required
Currency code (EUR)
boolean
true for SEPA Instant, false for SCT
string
Payment reference / remittance info

Payment Flows

Standard flow when approval is not required.

Sign Transactions

If failedToSignTransactionIds is not empty, those transactions were not signed. Check their status and retry if needed.

Webhook Integration

Payment Status Change

Each status transition triggers a webhook notification with these fields:
string
required
Transaction identifier
string
End-to-end reference
string
required
OUTBOUND for sent payments
string
required
Current transaction status
integer
required
Amount in cents
string
required
Currency code
datetime
required
Status change timestamp

Signature Verification

Verify webhook authenticity using these headers: See Signature Verification for implementation details.
If your webhook endpoint fails, the platform retries and holds all subsequent notifications until the blocked one succeeds.

Reconciliation

Use API polling as a fallback when webhooks may have gaps.

Get Transaction

Retrieve current transaction details

Status History

View complete status timeline
Run a nightly job to fetch recent transactions and compare statuses. Store any missing transitions for audit completeness.

Data Model

Store these fields for complete tracking:
string
required
Platform transaction ID (primary key)
string
Customer reference for reconciliation
string
required
Your generated key for retry safety
string
required
Latest transaction status
array
required
Append-only list of status transitions

Integration Checklist

1

Implement idempotency

Generate and persist an Idempotency-Key for each payment intent before calling the API
2

Store transaction ID

Persist trx_id from the response immediately after creation
3

Implement webhook receiver

Create an idempotent endpoint that responds 2xx quickly and processes asynchronously
4

Verify webhook signatures

Validate authenticity using the provided signature headers
5

Handle signing flow

If approval is required, implement signing/approval actions for To sign transactions
6

Build reconciliation

Implement status polling as a fallback for missed webhooks

What’s Next?

You can now send payments. Next, set up your system to receive payments and handle the full payment lifecycle:

Receive Payments

Handle incoming SEPA payments via webhooks

Track and Reconcile

Monitor transactions and reconcile with Nostro statements

Cancel Payments

Request cancellation when needed

SWIFT Payments

Send international transfers outside SEPA
Last modified on July 10, 2026