Fipto · AsyncAPI Specification

Fipto Webhooks

Version

View Spec View on GitHub CompanyBlockchainPaymentsStablecoinsBankingTreasuryCross-Border PaymentsDigital CurrencyFintechWalletsAsyncAPIWebhooksEvents

AsyncAPI Specification

Raw ↑
generated: '2026-08-17'
method: searched
source: https://docs.fipto.com/docs/webhooks
spec_type: none
note: >-
  Fipto publishes NO AsyncAPI document. It does publish a complete, well-specified webhook contract —
  event catalog, payload field tables, signature verification with per-environment public keys, an IP
  allowlist, an exact retry schedule and an explicit de-duplication rule. That surface is captured here
  and wired as `type: Webhooks`. No AsyncAPI pointer is emitted, because none exists and fabricating
  one would misrepresent what Fipto ships.
delivery:
  transport: https-webhook
  method: POST
  content_type: application/json
  configuration: >-
    Not self-serve. A customer prepares an HTTPS endpoint and contacts Fipto customer support to have
    the webhook registered. There is no webhook-management API operation in the published OpenAPI.
  requirement: The receiving endpoint must use HTTPS.
security:
  signature_header: Fipto-Signature
  algorithm: Base64(RSASSA-PKCS1-v1_5(webhook private key, SHA-512, SHA-512(eventBody)))
  verification: RSA-SHA512 verify against Fipto's published per-environment public key
  public_keys_published: true
  public_keys_location: https://docs.fipto.com/docs/webhooks
  ip_allowlist:
    demo: [3.77.91.94, 3.73.145.20, 3.120.72.252]
    production: [3.77.126.242, 52.29.119.142, 3.120.13.37]
reliability:
  expected_response: any 2XX
  timeout_seconds: 5
  retries_max: 10
  backoff: exponential
  retry_schedule_seconds: [2, 4, 8, 16, 32, 64, 128, 256, 512, 900]
  total_window: approximately 32 minutes after the first failure
  duplicate_delivery: possible
  deduplication_key: event_id
  deduplication_note: Consumers are instructed to ignore events whose event_id was already processed.
payload:
  envelope:
    event: string — the event type
    event_id: uuid — de-duplication key
    data.id: uuid
    data.type: 'payin | payout'
    data.attributes: object — type-specific
events:
- name: PAYIN_CREATED
  data_type: payin
  description: A payin has been created against a company wallet.
- name: PAYIN_COMPLETED
  data_type: payin
  description: A payin has settled.
- name: PAYIN_REJECTED
  data_type: payin
  description: A payin was rejected.
- name: PAYOUT_COMPLETED
  data_type: payout
  description: A payout has settled.
- name: PAYOUT_REJECTED
  data_type: payout
  description: A payout was rejected.
- name: PAYMENT_LINK_COMPLETED
  data_type: payment link
  description: A payment link has been paid.
event_count: 6
payload_fields:
  payin:
  - amount
  - asset_code
  - created_at
  - source.address
  - source.iban
  - source.bic
  - source.name
  - source.physical_address
  - source.country
  - destination.wallet_id
  - destination.wallet_name
  - destination.wallet_details_name
  - destination.wallet_details_address
  - destination.wallet_details_tag
  - destination.wallet_details_iban
  - reference
  - status
  - transaction_id
  - valuations[].asset
  - valuations[].value
  - blockchain_data.transaction_hash
  - blockchain_data.block_explorer_link
gaps:
- No AsyncAPI or machine-readable event schema is published; the payload contract is a markdown table.
- Webhook endpoints cannot be registered, listed or rotated through the API — it is a support ticket.
- Events cover payin, payout and payment link only. Conversions, quotes, beneficiary verification and
  automation-rule executions raise no webhook, so those must be polled.