Merchants

Create a merchant

Creates a merchant. By default (no acquirers in the body) the merchant is identity-only: status is pending, no processing connection is attached, and a fresh API token is generated. The merchant can't take payments until a processing connection is boarded and the merchant is activated. Pass an acquirers array to create and board in one call (see Combined create-and-board below).

The response is 201 with the merchant object and a one-time credentials.token. The token is shown once here and never again on reads — store it.

username may be omitted; one is derived from the trading/business name. Either way the stored username is prefixed with the partner's reseller prefix.

A create is rejected with 409 conflict ("merchant exists") when this partner already has a merchant with the same ABN, business name and trading name — a repeated submit of the same business. A shared ABN alone is allowed: it creates a new merchant.

Combined create-and-board. When the body carries an acquirers array, the merchant is created, every named acquirer is boarded, and the merchant is activated — all in one call. If any acquirer can't be boarded the whole request fails and nothing is created: no merchant, no connections. The failure is reported the same way as the standalone board endpoint:

  • 422 validation_error — something the caller can fix: an unsupported currency or card type, a duplicate/missing merchant_id, no processor supports the acquirer for the requested currencies, or a processor rejecting a field (e.g. the MID). fields names the offending field.
  • 422 processor_error — an unactionable upstream failure: a processor was unreachable, busy, or rejected the board for a reason the caller can't fix. fields is empty; retry or escalate.
  • 404 not_found — an acquirer is unknown or not available to this partner.

Idempotency and retries. Boarding is synchronous and recovery is always the partner re-issuing a call. Safe-retry behaviour is built into the operations themselves:

  • Identity create dedupes on the triple (ABN, business name, trading name) — re-posting the same business returns 409 conflict ("merchant exists") instead of producing a duplicate. A shared ABN alone is allowed and creates a new merchant.
  • Combined create-and-board either creates the merchant and every requested connection, or creates nothing. On failure the partner re-issues the same request — there is no partial state to clean up.
  • Standalone board (POST /merchants/{username}/acquirers) is idempotent per acquirer: re-posting the same acquirer against a merchant that already has it returns the existing connection instead of creating a duplicate. A processor_error retry is safe for the same reason.

What to do on each failure:

  • 422 validation_error → read fields, correct the named input (currency, MID, card type, etc.), POST again. Idempotency makes a corrected retry safe.
  • 422 processor_error → the request itself is fine; the upstream processor isn't. Back off and re-post the identical request, or escalate if it persists. Don't mutate the payload.
  • 409 conflict on create → the merchant already exists for this partner; fetch it with GET /merchants/{username} instead of re-creating.
post/merchants

Request

  • Base URL
    https://gateway.pmnts.io/v2/partners
  • URL
    https://gateway.pmnts.io/v2/partners/merchants
  • Auth
    HTTP basic

Request body

namestring required

Required. The merchant's legal/business name.

mccstring required

Required. Merchant category code (ISO 18245, 4 digits). No default — omitting or blanking it returns 422 validation_error.

trading_namestring

Optional at create (defaults to name). May be required to board some acquirers.

company_numberstring

The merchant's company/business registration number (e.g. an Australian Business Number). Optional at create. May be required to board some acquirers.

industrystring

Optional. Free-text industry descriptor for the merchant.

contactstring

Optional. Primary contact person's name.

websitestring

Optional.

emailstring email

Optional.

accounts_emailstring[]

Optional. Accounts/billing email recipients.

phonestring

Optional.

statement_descriptorstring

Optional. Card-acceptor name. Defaults to the trading/business name, truncated to 25 chars.

government_controlledboolean

Optional. Whether the merchant is government-controlled. Defaults to false.

country_of_originstring

Optional. ISO-3166 alpha-2 country of origin.

country_codestring

Optional. ISO-3166 numeric country code.

fee_program_indicatorstring

Optional. Scheme fee program indicator.

mastercard_iso_idstring

Optional. Mastercard ISO/acquirer identifier.

visa_iso_idstring

Optional. Visa ISO/acquirer identifier.

mastercard_assigned_idstring

Optional. Mastercard Assigned ID (MAID).

visa_merchant_verification_valuestring

Optional. Visa Merchant Verification Value (MVV).

visa_marketplace_identifierstring

Optional. Visa Marketplace Identifier (MPI) for marketplace merchants.

visa_payment_facilitator_indicatorstring

Optional. Visa payment facilitator indicator for scheme rules.

mastercard_payment_facilitator_indicatorstring

Optional. Mastercard payment facilitator indicator for scheme rules.

bill_payment_providerboolean

Optional. Whether the merchant is a Bill Payment Service Provider (BPSP). Defaults to false.

aggregator_fields_enabledboolean

Optional. Allow sub-merchant aggregator fields in transaction requests (requires an aggregator agreement with the acquirer). Defaults to false.

customer_support_phonestring

Optional. Customer support phone number shown to cardholders.

card_acceptor_namestring

Optional. Card-acceptor name sent to the card schemes. Defaults to the statement descriptor / trading name when omitted.

card_acceptor_locationstring

Optional. Card-acceptor location (city) sent to the card schemes.

card_acceptor_countrystring

Optional. Card-acceptor country, ISO-3166 alpha-2.

timezonestring

Optional. IANA timezone identifier the merchant operates in.

merchant_identifierstring

Optional. A partner-assigned identifier for the merchant. Distinct from the acquirer-assigned merchant_id (MID) — this is a free-form label the partner uses to track the merchant in their own systems.

usernamestring

Optional. When omitted, one is derived from the trading/business name. Either way the stored username is prefixed with the partner's reseller prefix. Immutable post-creation.

Example request

{
  "name": "Acme Pty Ltd",
  "mcc": "5411",
  "trading_name": "Acme Store",
  "company_number": "51824753556",
  "website": "https://acme.example",
  "email": "ops@acme.example",
  "phone": "+61 7 3000 0000",
  "address": {
    "line1": "1 Market St",
    "line2": "Level 4",
    "city": "Brisbane",
    "state": "QLD",
    "postcode": "4000",
    "country": "AU"
  },
  "statement_descriptor": "ACME STORE",
  "government_controlled": false,
  "country_of_origin": "AU",
  "country_code": "036",
  "fee_program_indicator": "S",
  "mastercard_iso_id": "00001234",
  "visa_iso_id": "00005678",
  "mastercard_assigned_id": "MAID12345",
  "visa_merchant_verification_value": "MVV98765",
  "customer_support_phone": "+61 7 1234 5678",
  "card_acceptor_name": "ACME STORE",
  "card_acceptor_location": "BRISBANE",
  "card_acceptor_country": "AU",
  "acquirers": [
    {
      "acquirer": "nab",
      "merchant_id": "MID0012345",
      "terminal_id": "12345678",
      "currencies": [
        "AUD"
      ]
    }
  ]
}

Response

Created merchant, with a one-time token. An identity-only create (no acquirers) returns a bare Merchant. A combined create (with acquirers) returns a MerchantOnboardingResult — a slim payload of the merchant's status, username and token plus a per-acquirer boarding status list. A 201 means the merchant and every requested acquirer boarded; a boarding failure rolls the whole create back and returns the relevant error below.

OR

Example response

{
  "timezone": "Australia/Sydney"
}

Changes

No recorded changes to this operation across all 1 revision of this API.