AltoIRA · AsyncAPI Specification

Alto Investment Status Webhooks

Version 1.0.0

Alto pushes investment-lifecycle events to a Platform Partner's registered webhook endpoint so the partner can track an investor's progress through the Direction of Investment (DOI), funding and any post-commitment changes. Alto describes investment_signed, investment_paid and investment_cancelled as "the three most valuable webhooks provided". Investment status can also be pulled on demand with the getInvestment operation in the REST API.

View Spec View on GitHub CompanyFinancial ServicesRetirementSelf-Directed IRAAlternative InvestmentsPrivate MarketsFintechCustodyCryptocurrencyWealth ManagementInvestingCapital RaisingAsyncAPIWebhooksEvents

Channels

investmentEvents
A single webhook channel carrying every investment status event. The event is discriminated by the event_name field in the payload.

Messages

investmentSigned
Investment signed
Investor signs DOI for initial commitment amount
investmentPaid
Investment paid
Alto sends payment for the investor's commitment
investmentCancelled
Investment cancelled
The investor has alerted Alto that they have chosen to not take part in this investment. Note the two l's in "cancelled".
commitmentAmountChanged
Commitment amount changed
The investor has alerted Alto that they would like to make a change to their commitment amount.
newContributionApproved
New contribution approved
The investor has signed the DOI for an investment increase
investmentIncreaseRejected
Investment increase rejected
The investor has informed Alto that they do not intend to complete the DOI for an investment increase.

Servers

https
partnerEndpoint
The HTTPS endpoint the Platform Partner registers with Alto to receive investment events. Alto does not publish a single shared delivery host; the endpoint is configured per partner during onboarding.

AsyncAPI Specification

Raw ↑
# Derived by API Evangelist from Alto's published webhook documentation.
# Alto does NOT publish an AsyncAPI document. Every channel, event name, payload
# field and description below is taken verbatim from
# https://readme.altoira.com/docs/investment-status-and-webhooks
# The delivery URL is registered with Alto out of band (per-partner) and is not
# published, so the server is described generically rather than invented.
asyncapi: 3.0.0
info:
  title: Alto Investment Status Webhooks
  version: '1.0.0'
  description: >-
    Alto pushes investment-lifecycle events to a Platform Partner's registered
    webhook endpoint so the partner can track an investor's progress through the
    Direction of Investment (DOI), funding and any post-commitment changes. Alto
    describes investment_signed, investment_paid and investment_cancelled as "the
    three most valuable webhooks provided". Investment status can also be pulled
    on demand with the getInvestment operation in the REST API.
  contact:
    name: AltoIRA
    email: help@altoira.com
    url: https://www.altoira.com
  externalDocs:
    description: Investment Status and Webhooks
    url: https://readme.altoira.com/docs/investment-status-and-webhooks
defaultContentType: application/json
servers:
  partnerEndpoint:
    host: partner-supplied.example
    protocol: https
    description: >-
      The HTTPS endpoint the Platform Partner registers with Alto to receive
      investment events. Alto does not publish a single shared delivery host; the
      endpoint is configured per partner during onboarding.
channels:
  investmentEvents:
    address: /
    title: Investment lifecycle events
    description: >-
      A single webhook channel carrying every investment status event. The event
      is discriminated by the event_name field in the payload.
    messages:
      investmentSigned:
        $ref: '#/components/messages/investmentSigned'
      investmentPaid:
        $ref: '#/components/messages/investmentPaid'
      investmentCancelled:
        $ref: '#/components/messages/investmentCancelled'
      commitmentAmountChanged:
        $ref: '#/components/messages/commitmentAmountChanged'
      newContributionApproved:
        $ref: '#/components/messages/newContributionApproved'
      investmentIncreaseRejected:
        $ref: '#/components/messages/investmentIncreaseRejected'
operations:
  receiveInvestmentEvent:
    action: receive
    channel:
      $ref: '#/channels/investmentEvents'
    summary: Receive an investment status event from Alto
    messages:
    - $ref: '#/channels/investmentEvents/messages/investmentSigned'
    - $ref: '#/channels/investmentEvents/messages/investmentPaid'
    - $ref: '#/channels/investmentEvents/messages/investmentCancelled'
    - $ref: '#/channels/investmentEvents/messages/commitmentAmountChanged'
    - $ref: '#/channels/investmentEvents/messages/newContributionApproved'
    - $ref: '#/channels/investmentEvents/messages/investmentIncreaseRejected'
components:
  schemas:
    investmentEvent:
      type: object
      description: >-
        The event envelope Alto publishes in its documentation example. Field
        names are taken verbatim from the published sample payload.
      properties:
        event_name:
          type: string
          description: The name of the investment event being delivered.
        offering_id:
          type: string
          description: >-
            The external_id of the offering, i.e. the ID the Platform Partner
            uses internally to identify this offering.
        alto_investment_id:
          type: integer
          description: Alto's own identifier for the investment.
          examples:
          - 657
        external_investment_id:
          type: string
          description: The Platform Partner's own identifier for the investment.
        nonce:
          type: integer
          description: >-
            A per-delivery nonce included in the payload. Alto's documentation
            shows the field but does not publish a signature-verification scheme
            for it.
          examples:
          - 7074343911774
      required:
      - event_name
      - offering_id
      - alto_investment_id
  messages:
    investmentSigned:
      name: investment_signed
      title: Investment signed
      summary: Investor signs DOI for initial commitment amount
      contentType: application/json
      payload:
        $ref: '#/components/schemas/investmentEvent'
      examples:
      - name: investmentSigned
        payload:
          event_name: investment_signed
          offering_id: '[external_id]'
          alto_investment_id: 657
          external_investment_id: '[external_investment_id]'
          nonce: 7074343911774
    investmentPaid:
      name: investment_paid
      title: Investment paid
      summary: Alto sends payment for the investor's commitment
      contentType: application/json
      payload:
        $ref: '#/components/schemas/investmentEvent'
    investmentCancelled:
      name: investment_cancelled
      title: Investment cancelled
      summary: >-
        The investor has alerted Alto that they have chosen to not take part in
        this investment. Note the two l's in "cancelled".
      description: >-
        Not triggered if the investor has not completed their Direction of
        Investment.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/investmentEvent'
    commitmentAmountChanged:
      name: commitment_amount_changed
      title: Commitment amount changed
      summary: >-
        The investor has alerted Alto that they would like to make a change to
        their commitment amount.
      description: >-
        Alto describes this as extremely rare and recommends investors make
        commitment changes on the Platform Partner's site first.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/investmentEvent'
    newContributionApproved:
      name: new_contribution_approved
      title: New contribution approved
      summary: The investor has signed the DOI for an investment increase
      contentType: application/json
      payload:
        $ref: '#/components/schemas/investmentEvent'
    investmentIncreaseRejected:
      name: investment_increase_rejected
      title: Investment increase rejected
      summary: >-
        The investor has informed Alto that they do not intend to complete the
        DOI for an investment increase.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/investmentEvent'