Skip to main content
This guide walks you through everything you need to make your first successful Diameter API call: obtaining credentials, authenticating, verifying your tenant, creating an end user, and sending a domestic wire payment. You will be up and running in under 15 minutes.

Environments

Use the sandbox environment for all development and testing. Switch to production only when you are ready to go live.
1

Get Your Credentials

Before you can make any API calls, you need a Client ID and Client Secret for your Tenant.Send an email to support@diameterpay.com requesting sandbox access. Include:
  • Your company name and website
  • A brief description of your use case
  • The partner bank(s) you intend to use (Portage Bank or Slovak Savings Bank)
The Diameter team will provision your Tenant, configure an initial Product, and reply with your client_id and client_secret. Store these values securely — treat them like passwords. Never commit them to source control or expose them in client-side code.
Your client_secret is shown only once during provisioning. If you lose it, contact support to rotate your credentials.
2

Obtain an Access Token

Diameter uses the OAuth 2.0 Client Credentials flow. Exchange your client_id and client_secret for a short-lived Bearer token by posting to the token endpoint. Tokens are valid for 600 seconds (10 minutes).
A successful response looks like:
Copy the access_token value — you will use it as a Bearer token in every subsequent request.
Request only the scopes your workflow needs. For a full list of available scopes, see the Authentication page.
3

Verify Your Tenant

Before building further, confirm your credentials and network connectivity by fetching your Tenant record.
The response returns your Tenant’s ID, name, configured Products, and feature flags. If you receive a 200 OK, your credentials are working correctly.
Note the products[].id value — you will need it in the next step.
4

Create an Individual End User

Onboard your first end user by posting their identity and compliance data. The productId field links the user to the bank product you verified in the previous step.
A 201 Created response returns the new end user record including the Diameter-assigned id and the bank-assigned account details (once bank onboarding processing completes).
The status moves from pending_bank_onboarding → active asynchronously. Subscribe to webhooks to receive real-time status updates, or poll GET /v1/end-users/individuals/{id} until status is active.
5

Initiate a Domestic Wire Payment

Once your end user is active and has a funded virtual account, you can initiate a domestic wire. Supply the debtorAccountId (the source account), creditor details, amount, and a unique endToEndId for payment tracking.
Instead of referencing a saved creditorId, you can also pass inline creditor details:
A 202 Accepted response confirms the payment has been queued for processing:
Track the payment by polling GET /v1/payments/{id} or by listening for payment.completed and payment.failed webhook events.

Idempotency

All write requests (POST, PATCH, PUT) require an x-idempotency-key header. Use a unique value per logical operation — a UUID v4 is a good choice. If you retry a request with the same idempotency key, Diameter returns the original response instead of creating a duplicate record. Idempotency keys are scoped to your Tenant and expire after 24 hours.

Next Steps

Authentication

Learn how tokens work, which scopes to request, and how to handle expiry gracefully.

Core Concepts

Deep-dive into Tenants, Products, End Users, Accounts, and the payment lifecycle.

Webhooks

Subscribe to real-time events so you never have to poll for status changes.