Setting up, end to end
The page-by-page guides answer “what does this screen do”. This one answers “what do I do first”, and it is the only page here written as a sequence.
Nothing below is optional in the sense of being skippable: each step unlocks the one after it, and the platform refuses the later ones outright rather than half-working. The whole run takes an afternoon of your time, plus however long our review of your documents takes.
The four facts that gate live money
Section titled “The four facts that gate live money”Read these first, because every step below exists to satisfy one of them. A live charge is refused unless all four hold:
| Must be true | Set by | Where |
|---|---|---|
| A pricing plan is attached to the account | Us | Ask your account contact; the symptom is every transaction refused as unpriced |
| Verification is at the level the scope needs | You file, we review | Verification |
| A settlement destination exists and is verified | You add it, we verify it | Settlement destinations |
| Live is activated on the account | Us, under dual control | Requested by our staff once the three above hold |
Until the fourth, the environment switch in the top bar refuses to move and says so: “Live payments are not activated on this account yet.” That switch is the clearest signal of where you are in this run.
1. Get an account, and get into it
Section titled “1. Get an account, and get into it”| You are… | Do this | Read |
|---|---|---|
| The first person at your business | /signup — two steps: the business, then you. You become the owner. |
Opening an account |
| Being added by a colleague | Follow the invitation link in your email. If you already sign in to PaySigna with that address, accept with your existing password. | Accepting an invitation |
| Already on PaySigna, and starting a separate business | /signup with the email you already use, and your existing password. The business is added to your sign-in. |
Signing up with an email you already use |
| Adding another app or brand of a business that is already here | Account → Accounts → Open an account, from the existing account. It shares the company’s verification. | Accounts |
One sign-in covers every account you hold. You never need a second login for a second business — switch between them from the account menu. See Switching account.
Two things from signup are permanent and worth getting right: the account code, which is printed on reconciliation files and never changed (you do not need it to sign in), and the country and settlement currency, both immutable after creation. Everything else on the profile is editable later.
Then confirm your email. Until you do, the console sends you to the confirmation screen, and you can read but not change anything. Confirming sends the account’s opener a welcome email (“Welcome to PaySigna: your first steps”) with the steps on this page, each linked. Then turn on two-factor authentication from Settings. The Team page marks every colleague who has not — you do not want to be that row.
2. Add a second person, before you need one
Section titled “2. Add a second person, before you need one”A single account holder is an outage waiting for a lost phone. Invite at least one other person from Your team, and give them a role rather than sharing yours — there are five, and they are enforced rather than advisory.
An invitation lapses after 48 hours and there is no resend, so send it when the person is around to accept it.
3. Build against test
Section titled “3. Build against test”| Step | Page |
|---|---|
| Mint a test API key. Every scope is grantable at level 0. | API keys |
| Register a test webhook endpoint and store its signing secret. | Webhooks |
| Make your first charge. | Quickstart |
The key and the secret are each shown once, in a panel that only closes when you say you have stored the value. There is no second viewing and no recovery — only a fresh key.
Test and live share nothing: not keys, not endpoints, not signing secrets, not
history. A psg_test_… key cannot touch live data, and the test endpoints you
register now will not receive live events. You will do this step again in live.
4. Add a settlement destination
Section titled “4. Add a settlement destination”This is the step people leave until last and should not, because it has a dependency outside your control: it has to be verified, by a name enquiry at the bank or network.
| Step | Notes |
|---|---|
| Add destination | From the Settlements header or the Withdraw form. Bank account or mobile money — two genuinely different records. |
| Enter the account name exactly as the bank holds it | — |
| Choose the bank or network | Only banks we can pay out to are listed. If yours is missing, ask us. |
| Wait for Verified | Usually within minutes: we ask the bank or network who holds the account, and if it matches your registered business name the destination is verified automatically. Otherwise our team reviews it, usually within one working day. |
| Make default | Only available once verified. One default per currency. |
Without a verified destination, money collected has nowhere to go: withdrawals and
settlements are impossible, and in live the charge itself is refused with
settlement_destination_missing.
5. Apply for a verification level
Section titled “5. Apply for a verification level”Verification is four acts: apply for a level, give your Ghana Card number and upload the other documents, send it for review, then wait. The Ghana Card is never photographed or uploaded — the law forbids copying it, and we check the number with NIA. Pick the level by what you need to do, not by thoroughness:
| You need to… | Minimum level |
|---|---|
| Collect from customers, store customers, run name enquiries | 1 — Basic |
| Send payouts, issue refunds, carry higher limits | 2 — Standard |
| Trade at high value, or in a higher-risk category | 3 — Enhanced |
The scope list on the live key-creation form is narrowed to what your level
carries, so a level-1 account cannot mint a live key with payout.create on it —
the form shows the shortened list rather than letting you create a key production
would refuse.
Levels 1 and 2 stand for 24 months, level 3 for 12. The expiry is on the tab, and lapsed verification stops live traffic as surely as never having filed.
6. Go live
Section titled “6. Go live”When the plan, the verification and the verified destination are all in place, our staff raise a go-live request — two people on our side have to agree to it, so it is not instant. When it completes, the environment switch unlocks.
Then, in live:
- Mint a live key (
psg_live_…), scoped to what your level carries. - Register your live webhook endpoint and store the new signing secret.
- Point the integration at
api.paysigna.comand put one real, small payment through end to end before you announce anything.
Going live is the API-side version of this step.
7. What the week then looks like
Section titled “7. What the week then looks like”| Rhythm | Page |
|---|---|
| Daily — what came in, what failed | Transactions, Dashboard |
| Daily — what is actually spendable | Balances |
| Weekly — what was paid out, and the fees against it | Settlements |
| As needed — moving money out ahead of a settlement | Withdrawals |
| As they arrive — refunds and disputes, both deadline-bound | Refunds, Disputes |
How a record behaves here, and why
Section titled “How a record behaves here, and why”The same few principles sit under every screen, and knowing them makes the portal predictable rather than surprising.
Nothing that affected money is edited or deleted. A refund, a settlement, a dispute, a revoked key all stay readable after the fact. A record that moved money is a historical fact, and rewriting it would make what already happened unexplainable.
A reason is part of the record, not a formality. Where the portal asks why, that text is stored, and it may be read by us, by our auditors, or quoted back to you in a support conversation months later.
Secrets exist once. Keys and signing secrets are shown at creation and never again. The mechanism is replacement, not recovery.
Test and live are separate worlds, always. When a number here disagrees with what your integration reports, check which environment each of you is in before anything else. It is the explanation more often than not.
A table footer holds the API’s totals over your whole filter, not a sum of the rows on screen. The two will not agree, and the footer is the one to quote.

