> ## Documentation Index
> Fetch the complete documentation index at: https://waffo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Self-Serve Sign-up, Sandbox & Account Verification

> The path a self-registered merchant actually walks: create an account, verify your email, answer the company questions, shape a sandbox through the six-step setup wizard, collect your sandbox credentials, then complete the seven-step account verification — including what to do when an application is returned.

[Quickstart](/docs/en/developer-docs/getting-started/quickstart) begins where you already hold credentials.
This page covers everything before that: what the Portal asks a self-registered merchant for, in what
order. Self-serve sign-up and the sandbox setup wizard are enabled per account — **if you can see the
screen in the Portal, it is available to you**; where an entry point is not shown, ask
[support@waffo.com](mailto:support@waffo.com) to open it.

## What is the whole path from sign-up to live payments?

| Stage | Where | What it produces |
| - | - | - |
| Sign up | `/auth/sign-up` | An account, email not yet verified |
| Verify email | `/auth/sign-up/verify-email` | A usable login |
| Company basics | `/auth/get-started` | A first draft record; sandbox provisioning starts |
| Sandbox Setup wizard | `/sandbox-setup/step/1` … `/step/6` | A configured sandbox and API credentials |
| Account verification | `/verify-account` | A submitted verification application |
| Go live | after verification is approved | Ability to accept real payments |

The Home page carries a progress panel mirroring this list, so you can leave and resume anywhere.

## How do I create the account and verify my email?

Sign-up takes an email address and a password; the strength indicator checks for upper case, lower case,
a digit and a minimum length. Google sign-in is offered as an alternative. Verification then arrives in
one of two shapes, depending on how the account was created: **a 6-digit code** you type into the
verification screen (paste works — the six boxes fill themselves), or **a verification link** you click
in the email. A countdown runs before **Resend** becomes available again; if the code never arrives,
resend once the countdown clears rather than signing up again — a second sign-up starts a new account.

The **Get started** screen that follows asks only for your **company legal name** and **incorporation
country/region** — enough to create your first record and begin preparing a sandbox. It reappears
pre-filled later in account verification.

## What do the six Sandbox Setup steps ask for?

| Step | Screen | What you supply |
| - | - | - |
| 1 | Tell us about your business | Legal company name, official website (optional), primary business type, incorporation country |
| 2 | Select your Waffo products | One-time payment, subscription payment, or both |
| 3 | Choose pricing strategy | Global USD pricing, or local currency pricing |
| 4 | Select your target markets | Countries/regions grouped by region, plus a **Global** option; drag-select and per-region select-all are supported |
| 5 | Manage your payment methods | Enable/disable each generated row and pick its order currencies |
| 6 | Sandbox Ready | Nothing — the wizard waits for provisioning, then hands you your next steps |

Steps are gated by progress: the wizard redirects you back to the furthest step you actually completed,
so you cannot deep-link past unanswered questions. **Business type** is a single-select list of
categories (AI/SaaS, gaming, e-commerce, streaming, education, travel, fintech, marketplace, social and
chat apps, digital content and more). **Incorporation country** on step 1 is a short card list — if yours
is not on it, use the *Contact us* link on that step rather than picking the nearest match.

## How do product, pricing strategy and markets change what I can test?

They are inputs to the payment method list, not cosmetic. When you leave step 4 the Portal previews
payment methods for the exact combination you selected, and step 5 renders only what comes back.

| Field | Values |
| - | - |
| `productSolution` | `ONE_TIME_PAYMENT`, `SUBSCRIPTION`, `BOTH` (selecting both products on step 2 sends `BOTH`) |
| `pricingStrategy` | `GLOBAL_USD`, `LOCAL_CURRENCY` |

Two consequences worth knowing before you pick: **subscription-only + Global USD pricing** leaves no
local markets selectable, only the Global option; **subscription-only + local currency pricing** narrows
step 4 to the small set of markets where local-currency subscriptions are offered, with the remaining
market chips greyed out rather than hidden. Changing your product selection or pricing strategy after the
fact **clears your downstream choices** on purpose — the previous list is no longer valid.

Step 5 lists Country/Region, Product, Payment method type, Payment method, Order currency and Status,
filterable by country, method type and enabled/disabled. Popular methods come pre-enabled; every row you
leave enabled must have at least one order currency selected, or the step will not advance.

## What is the difference between the Global market and a country?

**Global** sits in the market list next to the countries, but it is not one. It stands for the
global card schemes, which do not belong to any single country, while every other entry in the list
is a country or region whose local payment methods you want to test.

The two are **not alternatives**, and this is the most common misreading of step 4:

| What you select | What step 5 gives you |
| - | - |
| Global only | Global card payment methods, and nothing local |
| Countries only | Local payment methods for those countries, and no global cards |
| Global **and** countries | Both — the usual choice |

Selecting Global does not clear your countries, and selecting a country does not clear Global. If
you intend to take card payments anywhere in the world *and* local methods in two markets, select
all three. On step 5 the global rows are grouped under a **Global** country label and sorted to the
top, so you can tell them apart from the country rows at a glance.

## Why is a payment method I expected missing from step 5?

Step 5 does not query anything. The list is produced when you leave **step 4**, from exactly three
inputs — your product selection, your pricing strategy, and your markets — and step 5 renders what
came back. So work through the inputs in that order:

| Check | Why it bites |
| - | - |
| Is the method's country selected on step 4? | Nothing outside your selected markets is offered. Global cards need the **Global** entry, not a country |
| Are the step-5 filters clear? | Country, payment-method type and enabled/disabled are **display filters** over the list you already have. A filter left set hides rows without saying so |
| Does your product selection cover it? | The list is produced per product. A method offered for one-time payments only will not appear in a subscription-only preview |
| Does your pricing strategy allow the currency? | Under Global USD pricing the order-currency cell is **read-only**. You can only ever enable a row in the currencies the preview returned for it |

If the table comes back empty altogether, it renders as an empty table rather than an explanation —
go back to step 4 and widen the markets rather than assuming the step is broken.

Two things this step is *not*: it is not your production contract (see below), and it is not the
complete Waffo catalogue. What your live account can accept is
[Service → Payin](/docs/en/support/payin-agreements-and-limits-faq), and from code
`/api/v1/paymethodconfig/inquiry` — see
[Payment Method Configuration & Limits](/docs/en/support/payment-method-config-and-limits-faq).

## If I turn a payment method off in the sandbox, does production change?

No. The wizard and **Settings → Sandbox Config** write your *sandbox* configuration only. What you
can accept in production is your payin agreement, which is set up on Waffo's side and read on
**Service → Payin** — the wizard never writes to it.

The implication runs both ways, and it is worth internalising before go-live:

| Situation | What it means |
| - | - |
| Enabled in the sandbox, absent from Service → Payin | Not contracted in production. Enabling it for testing did not enable it for real |
| Disabled in the sandbox, `Active` on Service → Payin | Live payments are unaffected. You have only narrowed what you test against |
| Present in both | The one you can integrate end to end today |

A method that works in the sandbox and fails in production is the visible symptom of the first row;
[Limits, Currency & Configuration Errors](/docs/en/support/error-codes-and-limits-supplement) covers what
that failure looks like, and
[Sandbox Environment & Access](/docs/en/support/sandbox-environment-and-access-faq) covers how the two
environments are isolated from each other.

## The page says "Default configuration". Can I test without configuring anything?

Yes. **Settings → Sandbox Config** carries one of two badges:

| Badge | What it means |
| - | - |
| `Default configuration` | You have not completed the setup wizard. A starting selection of products, pricing strategy, markets and popular payment methods is in place so you can start testing immediately |
| `Configured` | Your own submitted configuration is in force |

Read the actual default set off that page rather than from any document — it is what the page shows
you, and it is a starting point, not a commitment. **Customize** re-enters the wizard at step 1
seeded with the current values, and none of these controls touch your API credentials. What
**Reset** and **Clear all** do to an edit in progress, and how re-submitting replaces rather than
patches your selection, are in
[Sandbox Environment & Access](/docs/en/support/sandbox-environment-and-access-faq).

## My submission came back with an error. What do I do?

The submission is all-or-nothing and the failure arrives as a single message rather than field-level
errors, so there is no partial state to clean up. Your answers stay in the wizard: fix what the
message names and submit again.

Before submitting, one rule is enforced locally — **every payment method you leave enabled must have
at least one order currency selected**, or the step refuses to advance and tells you so. That is the
most common reason a submission cannot be attempted at all.

If the final step reports that no sandbox configuration exists, it returns you to step 5. Nothing
was lost: the submission never landed, so re-submit from there.

## Where do I get my sandbox credentials?

Step 6 polls for credential readiness every couple of seconds and shows a "setting up your sandbox"
state until they exist. **The poll has no timeout**, so a page that spins for a long time is not
counting down to anything — it is still waiting for readiness, and it is worth raising rather than
waiting out. Once
ready, the sandbox MID, API key and key material live under **Settings → Integration → API Keys**, and
the test card library (success and decline scenarios only — there is no 3DS-challenge test card) under
**Settings → Integration → Test cards**. If step 6 reports that no sandbox configuration exists, the wizard sends you back to step 5
to submit — the submission never landed; credentials were not lost.

Afterwards, **Settings → Sandbox Config** exposes the same four decisions as an editable review flow.
Re-submitting replaces the whole selected set rather than patching one row, and your API credentials are
unaffected by a configuration change.

## What does account verification ask for?

`/verify-account` is a seven-step wizard (eight when extra documents are requested of you). Each step
must be complete before you continue:

| Step | Required to continue |
| - | - |
| Business type | Country of incorporation, business type, legal structure |
| Business details | Company legal name, registration number, official website, registered address (address, city, country) |
| Products & channels | Product category, product description, at least one sales channel with both a channel type and a URL |
| Key people | Signing director (first/last name, ID type, issuing country, ID number); plus a main contact unless you tick "same as signing director" |
| Ownership & control | Ownership type; for individual or mixed ownership, at least one UBO with full personal, ID and residential-address details, percentages totalling no more than 100% |
| Documents | Derived from your earlier answers — see below |
| Additional Requirements | Appears only when extra documents are requested; every requested file must be uploaded |
| Review & Submit | All previous steps complete, plus your final confirmation |

**Documents** is not a fixed checklist. It always asks for a Certificate of Incorporation and the signing
director's ID document, then adds a shareholding structure chart for corporate or mixed ownership, the
main contact's ID document when that is a different person, and per-UBO ID document and proof of address.
Anyone already listed as signing director or main contact is not asked for the same ID twice. Accepted
formats are PDF, JPG, JPEG and PNG, each encrypted before storage. The size limit is shown on the Documents
panel itself — read it there rather than from this page, because it is enforced per uploader. Upload
colour images with clear, complete edges — every field has a *Guidelines* panel with a reference example.

Your answers are saved as a draft each time you continue, and reopening `/verify-account` restores them,
uploaded files and reached step included. Submitting is the point of no return: the application enters
review and **cannot be edited unless it is returned to you**.

## My application came back as Returned. What do I fix?

| Status shown | What the wizard lets you do |
| - | - |
| Draft | Edit everything |
| In review | Read-only |
| Returned | Edit only the flagged items |
| Approved / verified | Read-only |
| Rejected | Read-only |

In returned mode the wizard is precise about scope: reviewer notes appear at the top, the step indicator
marks which steps contain returned items, individual fields and documents are flagged in place with the
note for that item, and everything else stays locked. A step stops being flagged once you address its
items, so the marks double as your to-do list. Fix them and re-submit — a re-submitted application counts
as in review again.

## The Portal shows an email address and my integration has a support group. Which do I use?

They answer different halves of onboarding, and using the wrong one is the usual reason a question
sits unanswered:

| Ask | Where it goes |
| - | - |
| A wizard step, a Portal screen, a missing entry point, a verification application | The onboarding address shown on the screen you are on |
| Integration behaviour, error codes, sandbox test results, and **anything to do with acceptance** | Your Waffo technical support group |

Acceptance in particular is group-only: the completed
[acceptance template](/docs/en/developer-docs/tools-and-references/references/acceptance-criteria) is
submitted to the technical support group and confirmed there — see also
[Quickstart](/docs/en/developer-docs/getting-started/quickstart), which ends at the same place.

***

Stuck at a step, or an entry point missing from your Portal? Email
[support@waffo.com](mailto:support@waffo.com) with the screen you are on.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.