Skip to main content
The generic connector works with any bank, payment provider or wallet, including one PanoQore does not list. Your code talks to the provider, and posts each money movement to PanoQore as an entry, with the provider’s reference.

Capabilities

Set up

1

Mirror the provider

Create a settlement account for the provider in each currency it holds. Its balance is the money you have at the provider, as your ledger sees it. See Ledgers and accounts.
2

Listen to the provider

Take the provider’s webhooks, or poll it, in your own code.
3

Post each movement

For every movement the provider confirms, post an entry that moves the settlement account, with the provider’s transaction id as externalRef.

Record a credit

Money arrived at the provider for a customer: debit settlement, credit the customer’s wallet.
A payout is the other way round: debit the wallet and credit settlement once the provider confirms it. Use a hold or a pending entry to reserve the money while you wait.

Never post twice

Providers send the same event more than once. Two things stop it posting twice:
  • Idempotency-Key. Derive it from the provider’s transaction id, as above, so a retry with the same key returns the first entry. See Idempotency.
  • uniqueExternalRef: true. Only one live entry can hold that externalRef. A second is refused with 409 EXTERNAL_REF_EXISTS, even with a different key or when two workers race.
To check whether a movement is already recorded:

Reconcile

Upload the provider’s statement each day and PanoQore matches it against what you posted. See Statement upload.

Compared with a bank connector