OneInc Webhooks

The three webhook endpoints documented here handle all inbound communication from OneInc.

The Three Webhook Endpoints

EndpointPurposeFlow
OneIncAcknowledgePaymentMethodCustomer submitted bank account detailsPayout
OneIncPaymentFeedbackPayment status changed (issued, completed, failed, voided)Payout
OneIncManageAutoPayFeedbackCustomer enrolled in or canceled autopayAutoPay

All three are POST endpoints under /api/OnlinePolicyPayment/. All three are called BY OneInc — Origami never calls them itself.

Two Independent Workflows

OneInc handles two unrelated concerns for Origami. They share the same payment provider but do not interact with each other:

┌─────────────────────────────────────────────────────────────┐
│  PAYOUT FLOW                                                │
│  Purpose: Send money to a broker/customer (e.g., refund,    │
│  commission disbursement)                                   │
│                                                             │
│  Webhooks involved:                                         │
│    1. OneIncAcknowledgePaymentMethod (payment method saved) │
│    2. OneIncPaymentFeedback (payment status updates)        │
└─────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────┐
│  AUTOPAY FLOW                                               │
│  Purpose: Track whether a customer has enrolled in          │
│  recurring payments for a policy or billing account         │
│                                                             │
│  Webhook involved:                                          │
│    1. OneIncManageAutoPayFeedback (enrollment toggled)      │
└─────────────────────────────────────────────────────────────┘

Payout Flow — Complete Workflow

The payout flow sends money from Origami to a broker or customer via ACH. There are three possible paths depending on whether the customer already has a saved payment token.

Path A: Customer already has a saved payment token

No webhooks are involved from this document's set. Origami talks directly to OneInc's API.

Origami                          OneInc                         Customer
  │                                │                               │
  │  1. Create payout order        │                               │
  │  (internal — OnlineOrder)      │                               │
  │                                │                               │
  │  2. Check customer wallet      │                               │
  │  → Token exists                │                               │
  │                                │                               │
  │  3. CreditBankAccount API ───► │                               │
  │  (initiate ACH payout)         │                               │
  │                                │  4. Process ACH (2-3 days)    │
  │                                │                               │
  │  ◄─── OneIncPaymentFeedback    │                               │
  │  5. Status: Issued             │                               │
  │                                │                               │
  │  ◄─── OneIncPaymentFeedback    │                               │
  │  6. Status: Success            │  ◄─── Money deposited         │
  │  (order → Complete)            │                               │

Path B: Customer has no saved payment token

Both webhooks are involved. The process pauses while the customer provides bank details.

Origami                          OneInc                         Customer
  │                                │                               │
  │  1. Create payout order        │                               │
  │  (internal — OnlineOrder)      │                               │
  │                                │                               │
  │  2. Check customer wallet      │                               │
  │  → No token                    │                               │
  │                                │                               │
  │  3. SendSavePaymentMethodLink  │                               │
  │  API call ──────────────────►  │                               │
  │  (ClientReferenceData1 =       │  4. Email link ──────────► │
  │   "OnlineOrderID:456")         │                               │
  │                                │                               │
  │  Order status: SavePayment     │                               │
  │  (waiting)                     │                               │
  │         ┄┄┄┄┄ time passes (hours/days) ┄┄┄┄┄                   │
  │                                │                               │
  │                                │  5. Customer clicks link,     │
  │                                │  ◄── enters bank details ──── │
  │                                │                               │
  │  ◄─── OneIncAcknowledgePaymentMethod                           │
  │  6. Save token to wallet       │                               │
  │  7. Auto-initiate payout:      │                               │
  │     CreditBankAccount API ──►  │                               │
  │                                │                               │
  │                                │  8. Process ACH (2-3 days)    │
  │                                │                               │
  │  ◄─── OneIncPaymentFeedback    │                               │
  │  9. Status: Issued             │                               │
  │                                │                               │
  │  ◄─── OneIncPaymentFeedback    │                               │
  │  10. Status: Success           │  ◄─── Money deposited         │
  │  (order → Complete)            │                               │

Path C: Admin saves payment method for future use (no payout)

Only the first webhook is involved. No money moves.

Origami                          OneInc                         Customer/Broker
  │                                │                               │
  │  1. Admin clicks "Save         │                               │
  │  Payment Method" in UI         │                               │
  │                                │                               │
  │  2. SendSavePaymentMethodLink  │                               │
  │  API call ──────────────────►  │                               │
  │  (ClientReferenceData1 =       │  3. Email link ──────────► │
  │   "ManualSavePaymentMethod")   │                               │
  │                                │                               │
  │         ┄┄┄┄┄ time passes ┄┄┄┄┄                                │
  │                                │                               │
  │                                │  4. Broker clicks link,       │
  │                                │  ◄── enters bank details ──── │
  │                                │                               │
  │  ◄─── OneIncAcknowledgePaymentMethod                           │
  │  5. Save token to wallet       │                               │
  │  Done. Token available for     │                               │
  │  future payouts (Path A).      │                               │

Order Status Progression (Path B)

Pending → SavePayment → Payout → PayoutRequested → Issued → Complete
                                                          └→ Error
                                                          └→ Void
StatusSet byMeaning
PendingOrigami (order creation)Order created, not yet processed
SavePaymentOrigami (no token found)Waiting for customer to provide bank details via OneInc
PayoutOneIncAcknowledgePaymentMethodToken saved, CreditBankAccount API called
PayoutRequestedCreditBankAccount API responseOneInc accepted the payout request
IssuedOneIncPaymentFeedbackPayment issued by OneInc
CompleteOneIncPaymentFeedbackACH succeeded, PaidAmount and PaidDate set
ErrorOneIncPaymentFeedbackACH failed, LastErrorMessage set
VoidOneIncPaymentFeedbackPayment canceled or stopped
StopPendingOneIncPaymentFeedbackStop request is pending

AutoPay Flow — Complete Workflow

The autopay flow is simple. OneInc manages the customer-facing enrollment UI. When a customer enrolls or cancels, OneInc notifies Origami so it can update its records.

Origami                          OneInc                         Customer
  │                                │                               │
  │                                │  1. Customer enrolls in       │
  │                                │  ◄── autopay via OneInc UI ── │
  │                                │                               │
  │  ◄─── OneIncManageAutoPayFeedback                              │
  │  2. InstallmentPlanStatus =    │                               │
  │     "Active"                   │                               │
  │  3. Set IsRecurringPayment =   │                               │
  │     true on Policy or          │                               │
  │     BillingAccount             │                               │
  │  Done.                         │                               │

Cancellation is the same flow with InstallmentPlanStatus"Active", which sets IsRecurringPayment = false.

The target record is determined by ClientReferenceData1 (PolicyID) and ClientReferenceData2 (BillingAccountID). If PolicyID is nonzero, the Policy is updated. If PolicyID is "0", the BillingAccount is updated.


Configuration

Origami Settings

  • OnlinePaymentProvider must be set to "OneInc"
  • OneInc API credentials must be configured
  • OneInc modal authentication key must be set

OneInc Dashboard

Three webhook URLs must be registered:

Event typeWebhook URL
Payment method submittedhttps://{OrigamiEnvironment}/api/OnlinePolicyPayment/OneIncAcknowledgePaymentMethod
Payment status changedhttps://{OrigamiEnvironment}/api/OnlinePolicyPayment/OneIncPaymentFeedback
AutoPay enrollment changedhttps://{OrigamiEnvironment}/api/OnlinePolicyPayment/OneIncManageAutoPayFeedback

Key Origami Internal Methods

These are not API endpoints — they are internal Origami methods that initiate the outbound calls to OneInc:

MethodWhat it does
InitiateSavePaymentMethodOrCreditBankAccount(onlineOrder)Checks if customer has a token. If yes: calls CreditBankAccount. If no: calls SendSavePaymentMethodLink (sets ClientReferenceData1 = "OnlineOrderID:{id}").
InitiateManualSavePaymentMethod(brokerID)Calls SendSavePaymentMethodLink with ClientReferenceData1 = "ManualSavePaymentMethod". No order involved.
InitiateCreditBankAccount(onlineOrder)Calls OneInc's CreditBankAccount API using the customer's saved token.

Endpoint Details at a Glance

AcknowledgePaymentMethodPaymentFeedbackManageAutoPayFeedback
Route/api/OnlinePolicyPayment/OneIncAcknowledgePaymentMethod/api/OnlinePolicyPayment/OneIncPaymentFeedback/api/OnlinePolicyPayment/OneIncManageAutoPayFeedback
Called whenCustomer submits bank detailsPayment status changesCustomer enrolls/cancels autopay
Can fire multiple times?Once per payment method submissionYes, as status progressesOnce per enrollment change
Response formatStructured JSON (OneIncAcknowledgePaymentMethodResponse)Plain stringPlain string
Success response200 with IsSuccessful: true200 "Payment feedback acknowledged successfully"200 "OneInc AutoPay enrollment feedback acknowledged successfully"
Error responses400, 404, 304 (granular)500 only500 only
Creates transactions?Yes (multiple)Yes (one per status change)No
Updates order status?Yes (SavePaymentPayout)Yes (various transitions)No
Other side effectsSaves payment token, may initiate CreditBankAccountSets PaidAmount/PaidDate or LastErrorMessageSets IsRecurringPayment flag
FlowPayoutPayoutAutoPay
Full documentationLinkLinkLink

Key Database Tables

TableRole in OneInc integration
OnlineOrderTracks payout orders through their lifecycle (status, amount, errors)
OnlineTransactionAudit trail of all payment events (token saves, status changes, credits)
OnlineCustomerLinks Origami customers to OneInc customer IDs
OnlineCustomerPaymentTokenStores saved payment tokens (bank account references) for reuse
PolicyIsRecurringPayment flag toggled by autopay webhook
BillingAccountIsRecurringPayment flag toggled by autopay webhook