How a payment flows
You create the payment, the platform routes it through the SWIFT network to the correspondent bank, and every status change comes back to you as a webhook. The final outcome is confirmed by tracking the payment via the SWIFT Frontend API. Whether a payment needs approval before it goes out depends on the transaction signing setting of your tenant (see Before you send).- Without signing (default)
- With signing
- Rejected
- Returned
Created → Sent to clear → Accepted → CompletedFull status lifecycle, error flows and webhook reference: Payment statuses.
Before you send
Check the beneficiary bank
Check the beneficiary bank
One call covers it all - Bank Information API (Use it to validate the IBAN and confirm the beneficiary bank is a reachable SWIFT participant (
GET /v1/bank-info/{iban}) returns the bank’s BIC, name and a per-scheme reachability map including SWIFTCORE:SWIFTCORE: true). The same check also runs automatically during payment processing - a payment to an unreachable bank is rejected with a clear validation error instead of being sent.Beneficiary bank BIC is resolved for you
Beneficiary bank BIC is resolved for you
You do not need to supply the beneficiary bank’s BIC - when the creditor account is an IBAN, the platform resolves the BIC from it automatically. Provide
creditor.agentBic only when the account is not an IBAN.Use idempotency
Use idempotency
Always send an
Idempotency-Key header when creating payments to prevent duplicates during retries.Transaction signing (optional)
Transaction signing (optional)
Signing is a per-tenant setting - it can be enabled or disabled for your account.Signing disabled (default): no approval step is needed - the payment goes straight out.
Created → Sent to clear → ...Signing enabled: every payment must be approved before it is sent. It waits in To sign until approved via the sign, approve or decline APIs (or the PGW UI). Declining cancels the payment.Created → To sign → Signed → Sent to clear → ...Create a payment
Charge bearer
SWIFT transfers may incur correspondent bank charges. Choose who pays viacharges.bearer:
DEBT
You pay all chargesBeneficiary receives the full amount
SHAR
Shared charges (default)Each party pays their bank’s fees
CRED
Beneficiary paysCharges deducted from the amount
Integration Checklist
1
Implement idempotency
Generate and persist
Idempotency-Key for each payment2
Check beneficiary bank reachability
Use the Bank Information API to confirm the beneficiary bank is a reachable SWIFT participant
3
Handle multi-currency
Specify source and target currencies correctly
4
Implement webhook receiver
Track payment status via webhooks
API Reference
Create SWIFT payment
POST /v2/transactions/swift - complete field documentationBank information
GET /v1/bank-info/{iban} - BIC and SWIFT reachability checkSign transactions
POST /v1/transactions/signatures - sign payments waiting in To signApprove / decline
PATCH /v1/transactions/{id}:approve and :declineNext Steps
Payment statuses
What happens after you send - every status explained
Cancel SWIFT payments
Stop a payment that should not go through