Amtaar Partner API (2026-10-18)

Download OpenAPI specification:Download

Server-to-server API for partners — banks, brokers and fintech apps — that bring investors to Amtaar, the Egyptian fractional real-estate platform.

With it a partner can show Amtaar properties in its own app, open or link its customers' Amtaar accounts, place share purchases (settled by the partner or paid by card), follow every order to completion, read holdings and rental income, and track its commissions — with webhooks for every change.

Environments

Base URL Keys start with
Sandbox sent to you with your sandbox keys amtk_sandbox_
Live https://api.amtaar.co/open/v1 amtk_live_

A key only works on the environment that issued it. This server is the live environment. Sandbox has extra /sandbox/* endpoints that move orders and KYC along so you can test webhooks end to end; it never moves real money.

Authentication

Authorization: Bearer amtk_live_<keyId>_<secret>

Keys are issued by Amtaar (shown once — store them in a secret manager), carry scopes, and can be limited to your server IPs. What a key may do is also bounded by your partner account's capabilities, which Amtaar switches on as the partnership agreement allows: createCustomers, linkExistingCustomers, partnerKycReliance, partnerSettlementOrders, cardCheckoutOrders, portfolioAccess, walletAccess. GET /me shows yours.

Conventions

  • JSON in and out, UTF-8. Money is EGP with 2 decimals. Times are ISO-8601 UTC.
  • Ids are prefixed strings (cus_, ord_, prop_, evt_, we_ …). Treat them as opaque.
  • Lists are newest first with cursor pagination: ?limit=20&cursor=<nextCursor>.
  • metadata: up to 20 string key/value pairs of yours on customers and orders, returned as given.
  • Idempotency: POST /customers, POST /orders and POST /orders/{id}/settlement require an Idempotency-Key header. Always retry a failed or timed-out call with the same key.
  • Rate limit: per key (default 300 requests/minute). RateLimit-* headers on every answer; 429 + Retry-After when exceeded.
  • Every answer carries X-Request-ID (send your own to correlate) and Amtaar-Api-Version: 2026-10-18.

Versioning

/v1 only changes in backward-compatible ways: new endpoints, new optional request fields, new response fields, new event types, new enum values. Ignore fields you do not know and handle unknown enum values gracefully. A breaking change would ship as /v2, with /v1 kept running for at least 6 months.

Errors

{ "error": { "type": "invalid_request", "code": "invalid_phone", "message": "…", "param": "phone", "requestId": "…" } }

type is one of invalid_request (400), authentication_error (401), permission_denied (403), not_found (404), conflict (409), unprocessable / idempotency_error (422), rate_limited (429), api_error (500), service_unavailable (503). code is the precise, stable reason — branch on it, not on message.

Typical flows

A. Referral — the customer buys in the Amtaar app. POST /customers (opens or links the account, attributed to you) → send the customer to links.app → they sign in to the Amtaar app with the same mobile number, finish KYC and invest → you receive customer.kyc_verified, order.created … order.completed and commission.created.

B. Embedded purchase, settled by the partner. POST /customers → POST /quotes to show the price → debit your customer → POST /orders with funding.method = partner_settlement and the settlement (reference + exact amount) → transfer the money to Amtaar's account → Amtaar Finance confirms it (order.paid) → ownership is issued when the unit's funding closes (order.completed).

C. Embedded purchase, paid by card. POST /orders with funding.method = card_checkout → open funding.checkoutUrl (Paymob) in a web view → order.paid → order.completed.

Order lifecycle

awaiting_payment → payment_under_review (settlement or transfer proof received, Finance checking) → paid (money confirmed; waiting for the unit to be fully funded and ownership to be issued) → completed (the customer owns the shares; contract follows). Other outcomes: cancelled (by you, by the customer, or because the hold expired unpaid — shares are released), payment_rejected, cancellation_requested (the customer asked to cancel a paid order; Amtaar reviews it), refunded.

An unpaid API order keeps its shares reserved until expiresAt (your hold time, default 24 h; card checkout 60 min).

Webhooks

Register endpoints with POST /webhook-endpoints (or ask Amtaar). Each event is POSTed as the Event object. Verify every delivery:

Amtaar-Signature: t=1760000000,v1=5257a869e7ecebeda32affa62cdca3fa51cad7e77a0e56ff536d0ce8e108d8bd
expected = hex(HMAC_SHA256(endpoint_secret, t + "." + raw_request_body))

Compare in constant time and reject timestamps older than 5 minutes. Answer 2xx within 10 seconds (queue the work); anything else is retried after 1 m, 5 m, 15 m, 1 h, 3 h, 6 h, 12 h and 24 h. Deliveries can arrive more than once and out of order — deduplicate by Amtaar-Event-Id and re-read the object (GET /orders/{id}) when order matters. If you were offline, catch up with GET /events?after=<last event id>. Events are generated within about a minute of the change and kept 180 days.

Event types: customer.created, customer.linked, customer.kyc_verified, customer.unlinked, order.created, order.payment_under_review, order.paid, order.completed, order.cancelled, order.payment_rejected, order.refunded, order.cancellation_requested, payout.paid, commission.created, webhook.test.

Data protection

You only see customers linked to you. Linking an existing Amtaar investor needs their consent: Amtaar texts them a code that you must collect from them. Holdings, payouts and wallet are only available with the matching capability and scope. Use the data only for the purposes in your partnership agreement; DELETE /customers/{id} removes the link (the Amtaar account stays).

Account

Who you are, what your key and account may do.

Your account, key and capabilities

Use it as a health check for your key.

Authorizations:
apiKey

Responses

Response Schema: application/json
object
any
Value: "account"
object
environment
string
Enum: "live" "sandbox"
object
object
object
object
object

Response samples

Content type
application/json
{
  • "object": "account",
  • "partner": {
    },
  • "environment": "live",
  • "apiKey": {
    },
  • "capabilities": {
    },
  • "limits": {
    },
  • "links": {
    },
  • "commission": {
    }
}

Properties

The investable catalogue and indicative pricing.

List properties

Published properties, newest first. Drafts and internal test units never appear.

Scope: properties:read

Authorizations:
apiKey
query Parameters
status
string
Example: status=available

available, funded, resale — comma-separated.

city
string
search
string

Matches name (EN/AR), code, city, address, project.

limit
integer [ 1 .. 100 ]
Default: 20
cursor
string

nextCursor from the previous page.

Responses

Response Schema: application/json
object
required
any
Value: "list"
required
Array of objects (Property)
hasMore
required
boolean
nextCursor
string or null

Pass as cursor to get the next page.

Response samples

Content type
application/json
{
  • "object": "list",
  • "data": [
    ],
  • "hasMore": true,
  • "nextCursor": "string"
}

Get a property

By id (prop_…) or property code (AMT-26-017).

Scope: properties:read

Authorizations:
apiKey
path Parameters
id
required
string
Example: prop_6712c0ffee0123456789abcd

Property id or code

Responses

Response Schema: application/json
object
any
Value: "property"
id
string

prop_…

code
string or null
object (LocalizedText)
object (LocalizedText)
type
string or null
project
string or null
developer
string or null
object
areaSqm
number or null
status
string
Enum: "available" "funded" "resale"

available = open for investment

isRented
boolean
object
object
object
object

Amtaar's projections, not guarantees

fundingDeadline
string or null <date-time>
updatedAt
string or null <date-time>

Response samples

Content type
application/json
{
  • "object": "property",
  • "id": "string",
  • "code": "AMT-26-017",
  • "name": {
    },
  • "description": {
    },
  • "type": "Office",
  • "project": "string",
  • "developer": "string",
  • "location": {
    },
  • "areaSqm": 0,
  • "status": "available",
  • "isRented": true,
  • "media": {
    },
  • "shares": {
    },
  • "pricing": {
    },
  • "forecast": {
    },
  • "fundingDeadline": "2019-08-24T14:15:22Z",
  • "updatedAt": "2019-08-24T14:15:22Z"
}

Price a purchase

Indicative price of N shares, with fees, exactly as an order would be priced now. Reserves nothing.

Scope: properties:read

Authorizations:
apiKey
Request Body schema: application/json
required
property
required
string

Property id or code

shares
required
integer >= 1

Responses

Response Schema: application/json
object
any
Value: "quote"
object (PropertyRef)
shares
integer
currency
string
pricePerShare
number

Price of one share (EGP, 2 decimals)

subtotal
number

shares × price (EGP, 2 decimals)

Array of objects
total
number

What the order would cost (EGP, 2 decimals)

available
boolean
sharesAvailable
integer
note
string
quotedAt
string or null <date-time>

Request samples

Content type
application/json
{
  • "property": "AMT-26-017",
  • "shares": 10
}

Response samples

Content type
application/json
{
  • "object": "quote",
  • "property": {
    },
  • "shares": 0,
  • "currency": "string",
  • "pricePerShare": 0,
  • "subtotal": 0,
  • "fees": [
    ],
  • "total": 0,
  • "available": true,
  • "sharesAvailable": 0,
  • "note": "string",
  • "quotedAt": "2019-08-24T14:15:22Z"
}

Customers

Investors you brought or linked.

Create or link a customer

Give the customer's Egyptian mobile number (the one they will use in the Amtaar app).

  • New to Amtaar → an Amtaar account is opened and attributed to you (201, status onboarding or active). Needs createCustomers.
  • Already an Amtaar investor → a link waiting for their consent is created (201, status pending_consent); nothing about them is shared until they confirm the code Amtaar texts them (/consent, /consent/verify). Needs linkExistingCustomers.
  • Already linked to you (same phone or same externalId) → the existing customer (200).

kyc lets you vouch for your own regulated KYC of this person; it counts for API orders only if your account has partnerKycReliance. Otherwise the customer completes Amtaar KYC in the app.

Scope: customers:write

Authorizations:
apiKey
header Parameters
Idempotency-Key
required
string [ 8 .. 255 ] characters

Unique value per operation (a UUID). Retrying with the same key and body returns the first answer and never repeats the action. Kept 24 hours.

Request Body schema: application/json
required
phone
required
string

Egyptian mobile, any common format (+2010…, 010…)

externalId
string <= 128 characters

Your id for this person (unique per partner)

email
string <email>
object (LocalizedText)
language
string
Default: "en"
Enum: "en" "ar"
nationalId
string

14-digit Egyptian national ID — only used to stop duplicate accounts; not stored

object (KycAttestation)

Your own KYC of this person. Counts for API orders only with the partnerKycReliance capability.

object (Metadata) <= 20 properties

Your key/value pairs

Responses

Response Schema: application/json
object
any
Value: "customer"
id
string

cus_…

externalId
string or null
status
string
Enum: "pending_consent" "onboarding" "active" "suspended" "unlinked"

pending_consent = waiting for the code; onboarding = linked, cannot invest yet; active = can invest; suspended = account blocked by Amtaar

origin
string
Enum: "created" "linked"
phone
string or null

Masked until linked

email
string or null
object (LocalizedText)
language
string
object
canInvest
boolean

Whether POST /orders will accept this customer now

object
object
object
object (Metadata) <= 20 properties

Your key/value pairs

createdAt
string or null <date-time>
linkedAt
string or null <date-time>

Request samples

Content type
application/json
Example
{
  • "phone": "+201001234567",
  • "externalId": "telda-user-88213"
}

Response samples

Content type
application/json
{
  • "object": "customer",
  • "id": "string",
  • "externalId": "string",
  • "status": "pending_consent",
  • "origin": "created",
  • "phone": "string",
  • "email": "string",
  • "name": {
    },
  • "language": "string",
  • "kyc": {
    },
  • "canInvest": true,
  • "attribution": {
    },
  • "links": {
    },
  • "nextAction": {
    },
  • "metadata": {
    },
  • "createdAt": "2019-08-24T14:15:22Z",
  • "linkedAt": "2019-08-24T14:15:22Z"
}

List customers

Your customers, newest first.

Scope: customers:read

Authorizations:
apiKey
query Parameters
externalId
string
status
string
Enum: "pending_consent" "active" "unlinked"

Link status.

limit
integer [ 1 .. 100 ]
Default: 20
cursor
string

nextCursor from the previous page.

Responses

Response Schema: application/json
object
required
any
Value: "list"
required
Array of objects (Customer)
hasMore
required
boolean
nextCursor
string or null

Pass as cursor to get the next page.

Response samples

Content type
application/json
{
  • "object": "list",
  • "data": [
    ],
  • "hasMore": true,
  • "nextCursor": "string"
}

Get a customer

Includes KYC progress (kyc.missingSteps) and whether they can invest through the API (canInvest).

Scope: customers:read

Authorizations:
apiKey
path Parameters
id
required
string
Example: cus_6712c0ffee0123456789abcd

Customer id

Responses

Response Schema: application/json
object
any
Value: "customer"
id
string

cus_…

externalId
string or null
status
string
Enum: "pending_consent" "onboarding" "active" "suspended" "unlinked"

pending_consent = waiting for the code; onboarding = linked, cannot invest yet; active = can invest; suspended = account blocked by Amtaar

origin
string
Enum: "created" "linked"
phone
string or null

Masked until linked

email
string or null
object (LocalizedText)
language
string
object
canInvest
boolean

Whether POST /orders will accept this customer now

object
object
object
object (Metadata) <= 20 properties

Your key/value pairs

createdAt
string or null <date-time>
linkedAt
string or null <date-time>

Response samples

Content type
application/json
{
  • "object": "customer",
  • "id": "string",
  • "externalId": "string",
  • "status": "pending_consent",
  • "origin": "created",
  • "phone": "string",
  • "email": "string",
  • "name": {
    },
  • "language": "string",
  • "kyc": {
    },
  • "canInvest": true,
  • "attribution": {
    },
  • "links": {
    },
  • "nextAction": {
    },
  • "metadata": {
    },
  • "createdAt": "2019-08-24T14:15:22Z",
  • "linkedAt": "2019-08-24T14:15:22Z"
}

Update a customer

Change your externalId, metadata (merged; a null value removes a key) or your kyc attestation (null withdraws it). The person's own data is theirs to change in the app.

Scope: customers:write

Authorizations:
apiKey
path Parameters
id
required
string
Example: cus_6712c0ffee0123456789abcd

Customer id

Request Body schema: application/json
required
externalId
string or null
object (Metadata) <= 20 properties

Your key/value pairs

KycAttestation (object) or null

Responses

Response Schema: application/json
object
any
Value: "customer"
id
string

cus_…

externalId
string or null
status
string
Enum: "pending_consent" "onboarding" "active" "suspended" "unlinked"

pending_consent = waiting for the code; onboarding = linked, cannot invest yet; active = can invest; suspended = account blocked by Amtaar

origin
string
Enum: "created" "linked"
phone
string or null

Masked until linked

email
string or null
object (LocalizedText)
language
string
object
canInvest
boolean

Whether POST /orders will accept this customer now

object
object
object
object (Metadata) <= 20 properties

Your key/value pairs

createdAt
string or null <date-time>
linkedAt
string or null <date-time>

Request samples

Content type
application/json
{
  • "externalId": "string",
  • "metadata": {
    },
  • "kyc": {
    }
}

Response samples

Content type
application/json
{
  • "object": "customer",
  • "id": "string",
  • "externalId": "string",
  • "status": "pending_consent",
  • "origin": "created",
  • "phone": "string",
  • "email": "string",
  • "name": {
    },
  • "language": "string",
  • "kyc": {
    },
  • "canInvest": true,
  • "attribution": {
    },
  • "links": {
    },
  • "nextAction": {
    },
  • "metadata": {
    },
  • "createdAt": "2019-08-24T14:15:22Z",
  • "linkedAt": "2019-08-24T14:15:22Z"
}

Unlink a customer

Stops all access and events for this customer. Their Amtaar account, holdings and attribution are not affected.

Scope: customers:write

Authorizations:
apiKey
path Parameters
id
required
string
Example: cus_6712c0ffee0123456789abcd

Customer id

Responses

Response Schema: application/json
object
any
Value: "customer"
id
string

cus_…

externalId
string or null
status
string
Enum: "pending_consent" "onboarding" "active" "suspended" "unlinked"

pending_consent = waiting for the code; onboarding = linked, cannot invest yet; active = can invest; suspended = account blocked by Amtaar

origin
string
Enum: "created" "linked"
phone
string or null

Masked until linked

email
string or null
object (LocalizedText)
language
string
object
canInvest
boolean

Whether POST /orders will accept this customer now

object
object
object
object (Metadata) <= 20 properties

Your key/value pairs

createdAt
string or null <date-time>
linkedAt
string or null <date-time>

Response samples

Content type
application/json
{
  • "object": "customer",
  • "id": "string",
  • "externalId": "string",
  • "status": "pending_consent",
  • "origin": "created",
  • "phone": "string",
  • "email": "string",
  • "name": {
    },
  • "language": "string",
  • "kyc": {
    },
  • "canInvest": true,
  • "attribution": {
    },
  • "links": {
    },
  • "nextAction": {
    },
  • "metadata": {
    },
  • "createdAt": "2019-08-24T14:15:22Z",
  • "linkedAt": "2019-08-24T14:15:22Z"
}

Text the consent code

For a pending_consent customer: Amtaar texts them a 6-digit code (valid 10 minutes; at most one per minute, five per link). In sandbox no SMS is sent and the code is returned as sandboxCode.

Scope: customers:write

Authorizations:
apiKey
path Parameters
id
required
string
Example: cus_6712c0ffee0123456789abcd

Customer id

Responses

Response samples

Content type
application/json
{
  • "object": "consent_request",
  • "customer": "string",
  • "sentTo": "string",
  • "expiresAt": "2019-08-24T14:15:22Z",
  • "sandboxCode": "string"
}

Confirm the consent code

The code the customer read out to you. Five wrong tries cancel the code. On success the customer becomes linked (event customer.linked).

Scope: customers:write

Authorizations:
apiKey
path Parameters
id
required
string
Example: cus_6712c0ffee0123456789abcd

Customer id

Request Body schema: application/json
required
code
required
string^\d{6}$

6 digits

Responses

Response Schema: application/json
object
any
Value: "customer"
id
string

cus_…

externalId
string or null
status
string
Enum: "pending_consent" "onboarding" "active" "suspended" "unlinked"

pending_consent = waiting for the code; onboarding = linked, cannot invest yet; active = can invest; suspended = account blocked by Amtaar

origin
string
Enum: "created" "linked"
phone
string or null

Masked until linked

email
string or null
object (LocalizedText)
language
string
object
canInvest
boolean

Whether POST /orders will accept this customer now

object
object
object
object (Metadata) <= 20 properties

Your key/value pairs

createdAt
string or null <date-time>
linkedAt
string or null <date-time>

Request samples

Content type
application/json
{
  • "code": "string"
}

Response samples

Content type
application/json
{
  • "object": "customer",
  • "id": "string",
  • "externalId": "string",
  • "status": "pending_consent",
  • "origin": "created",
  • "phone": "string",
  • "email": "string",
  • "name": {
    },
  • "language": "string",
  • "kyc": {
    },
  • "canInvest": true,
  • "attribution": {
    },
  • "links": {
    },
  • "nextAction": {
    },
  • "metadata": {
    },
  • "createdAt": "2019-08-24T14:15:22Z",
  • "linkedAt": "2019-08-24T14:15:22Z"
}

Portfolio

Holdings, rental payouts, contracts and wallet of a linked customer.

Holdings

Shares the customer owns per property, what they paid, and total rental income received.

Scope: portfolio:read · Capability: portfolioAccess (switched on by Amtaar)

Authorizations:
apiKey
path Parameters
id
required
string
Example: cus_6712c0ffee0123456789abcd

Customer id

Responses

Response Schema: application/json
object
any
Value: "portfolio"
customer
string
currency
string
object
Array of objects (Holding)

Response samples

Content type
application/json
{
  • "object": "portfolio",
  • "customer": "string",
  • "currency": "string",
  • "summary": {
    },
  • "holdings": [
    ]
}

Rental payouts

Rental income paid to the customer's Amtaar wallet, newest first.

Scope: portfolio:read · Capability: portfolioAccess (switched on by Amtaar)

Authorizations:
apiKey
path Parameters
id
required
string
Example: cus_6712c0ffee0123456789abcd

Customer id

query Parameters
limit
integer [ 1 .. 100 ]
Default: 20
cursor
string

nextCursor from the previous page.

Responses

Response Schema: application/json
object
required
any
Value: "list"
required
Array of objects (Payout)
hasMore
required
boolean
nextCursor
string or null

Pass as cursor to get the next page.

Response samples

Content type
application/json
{
  • "object": "list",
  • "data": [
    ],
  • "hasMore": true,
  • "nextCursor": "string"
}

Investment contracts

Contract numbers and signing status. Documents are available to the customer in the Amtaar app.

Scope: portfolio:read · Capability: portfolioAccess (switched on by Amtaar)

Authorizations:
apiKey
path Parameters
id
required
string
Example: cus_6712c0ffee0123456789abcd

Customer id

Responses

Response Schema: application/json
object
required
any
Value: "list"
required
Array of objects (Contract)
hasMore
required
boolean
nextCursor
string or null

Pass as cursor to get the next page.

Response samples

Content type
application/json
{
  • "object": "list",
  • "data": [
    ],
  • "hasMore": true,
  • "nextCursor": "string"
}

Wallet balance

The customer's Amtaar wallet: cash (rental income, top-ups, refunds) and rewards; reserved is held for pending orders or withdrawals.

Scope: wallet:read · Capability: walletAccess (switched on by Amtaar)

Authorizations:
apiKey
path Parameters
id
required
string
Example: cus_6712c0ffee0123456789abcd

Customer id

Responses

Response Schema: application/json
object
any
Value: "wallet"
customer
string
currency
string
object
object
total
number

Available cash + available rewards

Response samples

Content type
application/json
{
  • "object": "wallet",
  • "customer": "string",
  • "currency": "string",
  • "cash": {
    },
  • "rewards": {
    },
  • "total": 0
}

Orders

Share purchases — placed by you, or by your customers in the Amtaar app.

Place an order

Reserves the shares at today's price and opens the order. The customer must be linked and able to invest (canInvest).

  • partner_settlement (needs partnerSettlementOrders): you collect the money from your customer. Include funding.settlement now if you already debited them, or call /orders/{id}/settlement before expiresAt. The amount must equal amounts.payable.
  • card_checkout (needs cardCheckoutOrders): open funding.checkoutUrl for the customer within 60 minutes.

Your per-order and daily limits apply (see GET /me).

Scope: orders:write

Authorizations:
apiKey
header Parameters
Idempotency-Key
required
string [ 8 .. 255 ] characters

Unique value per operation (a UUID). Retrying with the same key and body returns the first answer and never repeats the action. Kept 24 hours.

Request Body schema: application/json
required
customer
required
string

cus_…

property
required
string

Property id or code

shares
required
integer >= 1
required
object
externalReference
string <= 128 characters

Your order id (unique per partner)

object (Metadata) <= 20 properties

Your key/value pairs

Responses

Response Schema: application/json
object
any
Value: "order"
id
string

ord_…

number
string

Amtaar order number

customer
string

cus_…

status
string
Enum: "awaiting_payment" "payment_under_review" "paid" "completed" "cancelled" "payment_rejected" "cancellation_requested" "refunded"
source
string
Enum: "api" "app"
externalReference
string or null
Array of objects
PropertyRef (object) or null

Set when the order has one property (API orders always do)

shares
integer
object
object
expiresAt
string or null <date-time>

When the unpaid reservation ends

object or null
object (Metadata) <= 20 properties

Your key/value pairs

createdAt
string or null <date-time>
updatedAt
string or null <date-time>
completedAt
string or null <date-time>

Request samples

Content type
application/json
Example
{
  • "customer": "cus_6712c0ffee0123456789abcd",
  • "property": "AMT-26-017",
  • "shares": 10,
  • "externalReference": "telda-ord-55120",
  • "funding": {
    },
  • "metadata": {
    }
}

Response samples

Content type
application/json
{
  • "object": "order",
  • "id": "string",
  • "number": "AM2610180001",
  • "customer": "string",
  • "status": "awaiting_payment",
  • "source": "api",
  • "externalReference": "string",
  • "items": [
    ],
  • "property": {
    },
  • "shares": 0,
  • "amounts": {
    },
  • "funding": {
    },
  • "expiresAt": "2019-08-24T14:15:22Z",
  • "cancellation": {
    },
  • "metadata": {
    },
  • "createdAt": "2019-08-24T14:15:22Z",
  • "updatedAt": "2019-08-24T14:15:22Z",
  • "completedAt": "2019-08-24T14:15:22Z"
}

List orders

Orders you placed (source=api) and orders your linked customers placed in the Amtaar app (source=app).

Scope: orders:read

Authorizations:
apiKey
query Parameters
customer
string
status
string

Public status, comma-separated.

source
string
Enum: "api" "app"
externalReference
string
limit
integer [ 1 .. 100 ]
Default: 20
cursor
string

nextCursor from the previous page.

Responses

Response Schema: application/json
object
required
any
Value: "list"
required
Array of objects (Order)
hasMore
required
boolean
nextCursor
string or null

Pass as cursor to get the next page.

Response samples

Content type
application/json
{
  • "object": "list",
  • "data": [
    ],
  • "hasMore": true,
  • "nextCursor": "string"
}

Get an order

The current state — the source of truth when webhooks arrive out of order.

Scope: orders:read

Authorizations:
apiKey
path Parameters
id
required
string
Example: ord_6712c0ffee0123456789abcd

Order id

Responses

Response Schema: application/json
object
any
Value: "order"
id
string

ord_…

number
string

Amtaar order number

customer
string

cus_…

status
string
Enum: "awaiting_payment" "payment_under_review" "paid" "completed" "cancelled" "payment_rejected" "cancellation_requested" "refunded"
source
string
Enum: "api" "app"
externalReference
string or null
Array of objects
PropertyRef (object) or null

Set when the order has one property (API orders always do)

shares
integer
object
object
expiresAt
string or null <date-time>

When the unpaid reservation ends

object or null
object (Metadata) <= 20 properties

Your key/value pairs

createdAt
string or null <date-time>
updatedAt
string or null <date-time>
completedAt
string or null <date-time>

Response samples

Content type
application/json
{
  • "object": "order",
  • "id": "string",
  • "number": "AM2610180001",
  • "customer": "string",
  • "status": "awaiting_payment",
  • "source": "api",
  • "externalReference": "string",
  • "items": [
    ],
  • "property": {
    },
  • "shares": 0,
  • "amounts": {
    },
  • "funding": {
    },
  • "expiresAt": "2019-08-24T14:15:22Z",
  • "cancellation": {
    },
  • "metadata": {
    },
  • "createdAt": "2019-08-24T14:15:22Z",
  • "updatedAt": "2019-08-24T14:15:22Z",
  • "completedAt": "2019-08-24T14:15:22Z"
}

Report your settlement

For a partner_settlement order awaiting payment: the reference and exact amount of the transfer you are making to Amtaar. The order moves to payment_under_review until Amtaar Finance confirms the money arrived.

Scope: orders:write · Capability: partnerSettlementOrders (switched on by Amtaar)

Authorizations:
apiKey
path Parameters
id
required
string
Example: ord_6712c0ffee0123456789abcd

Order id

header Parameters
Idempotency-Key
required
string [ 8 .. 255 ] characters

Unique value per operation (a UUID). Retrying with the same key and body returns the first answer and never repeats the action. Kept 24 hours.

Request Body schema: application/json
required
reference
required
string

Your transfer / transaction reference to Amtaar's account

amount
required
number

Must equal the order's amounts.payable (EGP, 2 decimals)

paidAt
string <date-time>
proofUrl
string

https link to a transfer receipt, if you have one

note
string <= 300 characters

Free text for Amtaar Finance

Responses

Response Schema: application/json
object
any
Value: "order"
id
string

ord_…

number
string

Amtaar order number

customer
string

cus_…

status
string
Enum: "awaiting_payment" "payment_under_review" "paid" "completed" "cancelled" "payment_rejected" "cancellation_requested" "refunded"
source
string
Enum: "api" "app"
externalReference
string or null
Array of objects
PropertyRef (object) or null

Set when the order has one property (API orders always do)

shares
integer
object
object
expiresAt
string or null <date-time>

When the unpaid reservation ends

object or null
object (Metadata) <= 20 properties

Your key/value pairs

createdAt
string or null <date-time>
updatedAt
string or null <date-time>
completedAt
string or null <date-time>

Request samples

Content type
application/json
{
  • "reference": "string",
  • "amount": 0,
  • "paidAt": "2019-08-24T14:15:22Z",
  • "proofUrl": "string",
  • "note": "string"
}

Response samples

Content type
application/json
{
  • "object": "order",
  • "id": "string",
  • "number": "AM2610180001",
  • "customer": "string",
  • "status": "awaiting_payment",
  • "source": "api",
  • "externalReference": "string",
  • "items": [
    ],
  • "property": {
    },
  • "shares": 0,
  • "amounts": {
    },
  • "funding": {
    },
  • "expiresAt": "2019-08-24T14:15:22Z",
  • "cancellation": {
    },
  • "metadata": {
    },
  • "createdAt": "2019-08-24T14:15:22Z",
  • "updatedAt": "2019-08-24T14:15:22Z",
  • "completedAt": "2019-08-24T14:15:22Z"
}

Cancel an unpaid order

Only orders you placed, while awaiting_payment. The shares are released at once. A paid order can only be cancelled by the customer in the app (fees may apply).

Scope: orders:write

Authorizations:
apiKey
path Parameters
id
required
string
Example: ord_6712c0ffee0123456789abcd

Order id

header Parameters
Idempotency-Key
string [ 8 .. 255 ] characters

Unique value per operation (a UUID). Retrying with the same key and body returns the first answer and never repeats the action. Kept 24 hours.

Request Body schema: application/json
required
reason
string <= 200 characters

Shown to Amtaar staff

Responses

Response Schema: application/json
object
any
Value: "order"
id
string

ord_…

number
string

Amtaar order number

customer
string

cus_…

status
string
Enum: "awaiting_payment" "payment_under_review" "paid" "completed" "cancelled" "payment_rejected" "cancellation_requested" "refunded"
source
string
Enum: "api" "app"
externalReference
string or null
Array of objects
PropertyRef (object) or null

Set when the order has one property (API orders always do)

shares
integer
object
object
expiresAt
string or null <date-time>

When the unpaid reservation ends

object or null
object (Metadata) <= 20 properties

Your key/value pairs

createdAt
string or null <date-time>
updatedAt
string or null <date-time>
completedAt
string or null <date-time>

Request samples

Content type
application/json
{
  • "reason": "string"
}

Response samples

Content type
application/json
{
  • "object": "order",
  • "id": "string",
  • "number": "AM2610180001",
  • "customer": "string",
  • "status": "awaiting_payment",
  • "source": "api",
  • "externalReference": "string",
  • "items": [
    ],
  • "property": {
    },
  • "shares": 0,
  • "amounts": {
    },
  • "funding": {
    },
  • "expiresAt": "2019-08-24T14:15:22Z",
  • "cancellation": {
    },
  • "metadata": {
    },
  • "createdAt": "2019-08-24T14:15:22Z",
  • "updatedAt": "2019-08-24T14:15:22Z",
  • "completedAt": "2019-08-24T14:15:22Z"
}

Commissions

What you earn under your partner agreement.

Commission ledger

Every credit and debit on your partner ledger: signup fees, purchase commissions, bonuses, payouts to you, adjustments and reversals. testMode rows were recorded while your account was in test (dry-run) mode and are not payable.

Scope: commissions:read

Authorizations:
apiKey
query Parameters
type
string

signup_fee, purchase_commission, bonus, payout, adjustment, reversal — comma-separated.

from
string <date-time>
to
string <date-time>
limit
integer [ 1 .. 100 ]
Default: 20
cursor
string

nextCursor from the previous page.

Responses

Response Schema: application/json
object
required
any
Value: "list"
required
Array of objects (Commission)
hasMore
required
boolean
nextCursor
string or null

Pass as cursor to get the next page.

Response samples

Content type
application/json
{
  • "object": "list",
  • "data": [
    ],
  • "hasMore": true,
  • "nextCursor": "string"
}

Commission totals

Totals earned and paid out, and the balance Amtaar owes you (test-mode rows excluded).

Scope: commissions:read

Authorizations:
apiKey

Responses

Response Schema: application/json
object
any
Value: "commission_summary"
currency
string
object
object
paidOut
number
balance
number

Owed to you now

Response samples

Content type
application/json
{
  • "object": "commission_summary",
  • "currency": "string",
  • "earned": {
    },
  • "counts": {
    },
  • "paidOut": 0,
  • "balance": 0
}

Events

Everything that happened, for polling or catching up after downtime.

List events

Newest first. With after=<event id> the list is oldest first from that event on — use it to catch up after downtime (repeat with lastEventId until hasMore is false).

Scope: events:read

Authorizations:
apiKey
query Parameters
type
string

Comma-separated event types.

after
string

Event id to continue after.

limit
integer [ 1 .. 100 ]
Default: 20
cursor
string

nextCursor from the previous page.

Responses

Response Schema: application/json
object
required
any
Value: "list"
required
Array of objects (Event)
hasMore
required
boolean
nextCursor
string or null

Pass as cursor to get the next page.

Response samples

Content type
application/json
{
  • "object": "list",
  • "data": [
    ],
  • "hasMore": true,
  • "nextCursor": "string"
}

Get an event

Scope: events:read

Authorizations:
apiKey
path Parameters
id
required
string
Example: evt_6712c0ffee0123456789abcd

Event id

Responses

Response Schema: application/json
object
any
Value: "event"
id
string

evt_…

type
string
Enum: "customer.created" "customer.linked" "customer.kyc_verified" "customer.unlinked" "order.created" "order.payment_under_review" "order.paid" "order.completed" "order.cancelled" "order.payment_rejected" "order.refunded" "order.cancellation_requested" "payout.paid" "commission.created" "webhook.test"
environment
string
Enum: "live" "sandbox"
apiVersion
string
createdAt
string or null <date-time>
object

customer / order / payout / commission objects, as in the API

Response samples

Content type
application/json
{
  • "object": "event",
  • "id": "string",
  • "type": "customer.created",
  • "environment": "live",
  • "apiVersion": "string",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

Webhooks

Endpoints Amtaar pushes events to, and their deliveries.

List webhook endpoints

Scope: webhooks:manage

Authorizations:
apiKey

Responses

Response Schema: application/json
object
required
any
Value: "list"
required
Array of objects (WebhookEndpoint)
hasMore
required
boolean
nextCursor
string or null

Pass as cursor to get the next page.

Response samples

Content type
application/json
{
  • "object": "list",
  • "data": [
    ],
  • "hasMore": true,
  • "nextCursor": "string"
}

Add a webhook endpoint

Live endpoints must be public https URLs. The signing secret is returned only in this answer. At most 10 endpoints.

Scope: webhooks:manage

Authorizations:
apiKey
Request Body schema: application/json
required
url
required
string <uri>
events
Array of strings
Default: ["*"]
Items Enum: "*" "customer.created" "customer.linked" "customer.kyc_verified" "customer.unlinked" "order.created" "order.payment_under_review" "order.paid" "order.completed" "order.cancelled" "order.payment_rejected" "order.refunded" "order.cancellation_requested" "payout.paid" "commission.created" "webhook.test"
description
string <= 200 characters

Responses

Response Schema: application/json
object
any
Value: "webhook_endpoint"
id
string

we_…

url
string
description
string or null
events
Array of strings
status
string
Enum: "enabled" "disabled"
disabledReason
string or null
secretPrefix
string
secret
string

Only when created or rotated

lastSuccessAt
string or null <date-time>
lastFailureAt
string or null <date-time>
createdAt
string or null <date-time>

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{
  • "object": "webhook_endpoint",
  • "id": "string",
  • "url": "string",
  • "description": "string",
  • "events": [
    ],
  • "status": "enabled",
  • "disabledReason": "string",
  • "secretPrefix": "string",
  • "secret": "string",
  • "lastSuccessAt": "2019-08-24T14:15:22Z",
  • "lastFailureAt": "2019-08-24T14:15:22Z",
  • "createdAt": "2019-08-24T14:15:22Z"
}

Get a webhook endpoint

Scope: webhooks:manage

Authorizations:
apiKey
path Parameters
id
required
string
Example: we_6712c0ffee0123456789abcd

Endpoint id

Responses

Response Schema: application/json
object
any
Value: "webhook_endpoint"
id
string

we_…

url
string
description
string or null
events
Array of strings
status
string
Enum: "enabled" "disabled"
disabledReason
string or null
secretPrefix
string
secret
string

Only when created or rotated

lastSuccessAt
string or null <date-time>
lastFailureAt
string or null <date-time>
createdAt
string or null <date-time>

Response samples

Content type
application/json
{
  • "object": "webhook_endpoint",
  • "id": "string",
  • "url": "string",
  • "description": "string",
  • "events": [
    ],
  • "status": "enabled",
  • "disabledReason": "string",
  • "secretPrefix": "string",
  • "secret": "string",
  • "lastSuccessAt": "2019-08-24T14:15:22Z",
  • "lastFailureAt": "2019-08-24T14:15:22Z",
  • "createdAt": "2019-08-24T14:15:22Z"
}

Update a webhook endpoint

Change url, events, description, or status (enabled re-enables an endpoint that was disabled after repeated failures).

Scope: webhooks:manage

Authorizations:
apiKey
path Parameters
id
required
string
Example: we_6712c0ffee0123456789abcd

Endpoint id

Request Body schema: application/json
required
url
string <uri>
events
Array of strings
description
string or null
status
string
Enum: "enabled" "disabled"

Responses

Response Schema: application/json
object
any
Value: "webhook_endpoint"
id
string

we_…

url
string
description
string or null
events
Array of strings
status
string
Enum: "enabled" "disabled"
disabledReason
string or null
secretPrefix
string
secret
string

Only when created or rotated

lastSuccessAt
string or null <date-time>
lastFailureAt
string or null <date-time>
createdAt
string or null <date-time>

Request samples

Content type
application/json
{
  • "events": [
    ],
  • "description": "string",
  • "status": "enabled"
}

Response samples

Content type
application/json
{
  • "object": "webhook_endpoint",
  • "id": "string",
  • "url": "string",
  • "description": "string",
  • "events": [
    ],
  • "status": "enabled",
  • "disabledReason": "string",
  • "secretPrefix": "string",
  • "secret": "string",
  • "lastSuccessAt": "2019-08-24T14:15:22Z",
  • "lastFailureAt": "2019-08-24T14:15:22Z",
  • "createdAt": "2019-08-24T14:15:22Z"
}

Delete a webhook endpoint

Scope: webhooks:manage

Authorizations:
apiKey
path Parameters
id
required
string
Example: we_6712c0ffee0123456789abcd

Endpoint id

Responses

Response Schema: application/json
object

Response samples

Content type
application/json
{ }

Roll the signing secret

The old secret stops working immediately; the new one is in this answer only.

Scope: webhooks:manage

Authorizations:
apiKey
path Parameters
id
required
string
Example: we_6712c0ffee0123456789abcd

Endpoint id

Responses

Response Schema: application/json
object
any
Value: "webhook_endpoint"
id
string

we_…

url
string
description
string or null
events
Array of strings
status
string
Enum: "enabled" "disabled"
disabledReason
string or null
secretPrefix
string
secret
string

Only when created or rotated

lastSuccessAt
string or null <date-time>
lastFailureAt
string or null <date-time>
createdAt
string or null <date-time>

Response samples

Content type
application/json
{
  • "object": "webhook_endpoint",
  • "id": "string",
  • "url": "string",
  • "description": "string",
  • "events": [
    ],
  • "status": "enabled",
  • "disabledReason": "string",
  • "secretPrefix": "string",
  • "secret": "string",
  • "lastSuccessAt": "2019-08-24T14:15:22Z",
  • "lastFailureAt": "2019-08-24T14:15:22Z",
  • "createdAt": "2019-08-24T14:15:22Z"
}

Send a test event

Delivers a signed webhook.test event now and reports your server's answer.

Scope: webhooks:manage

Authorizations:
apiKey
path Parameters
id
required
string
Example: we_6712c0ffee0123456789abcd

Endpoint id

Responses

Response Schema: application/json
ok
boolean
statusCode
integer or null
error
string or null
durationMs
integer
eventId
string
deliveryId
string

Response samples

Content type
application/json
{
  • "ok": true,
  • "statusCode": 0,
  • "error": "string",
  • "durationMs": 0,
  • "eventId": "string",
  • "deliveryId": "string"
}

List deliveries

Delivery attempts and their outcome, newest first.

Scope: webhooks:manage

Authorizations:
apiKey
query Parameters
status
string
Enum: "pending" "succeeded" "failed"
endpoint
string
limit
integer [ 1 .. 100 ]
Default: 20
cursor
string

nextCursor from the previous page.

Responses

Response Schema: application/json
object
required
any
Value: "list"
required
Array of objects (WebhookDelivery)
hasMore
required
boolean
nextCursor
string or null

Pass as cursor to get the next page.

Response samples

Content type
application/json
{
  • "object": "list",
  • "data": [
    ],
  • "hasMore": true,
  • "nextCursor": "string"
}

Retry a delivery

Queues a failed (or pending) delivery to be sent again now.

Scope: webhooks:manage

Authorizations:
apiKey
path Parameters
id
required
string
Example: whd_6712c0ffee0123456789abcd

Delivery id

Responses

Response samples

Content type
application/json
{ }

Sandbox

Sandbox only — simulate what Amtaar staff and customers would do.

Complete KYC (sandbox)

Marks the customer as fully verified, as if they finished KYC in the app. Fires customer.kyc_verified within a minute.

Scope: customers:write

Authorizations:
apiKey
path Parameters
id
required
string
Example: cus_6712c0ffee0123456789abcd

Customer id

Responses

Response Schema: application/json
object
any
Value: "customer"
id
string

cus_…

externalId
string or null
status
string
Enum: "pending_consent" "onboarding" "active" "suspended" "unlinked"

pending_consent = waiting for the code; onboarding = linked, cannot invest yet; active = can invest; suspended = account blocked by Amtaar

origin
string
Enum: "created" "linked"
phone
string or null

Masked until linked

email
string or null
object (LocalizedText)
language
string
object
canInvest
boolean

Whether POST /orders will accept this customer now

object
object
object
object (Metadata) <= 20 properties

Your key/value pairs

createdAt
string or null <date-time>
linkedAt
string or null <date-time>

Response samples

Content type
application/json
{
  • "object": "customer",
  • "id": "string",
  • "externalId": "string",
  • "status": "pending_consent",
  • "origin": "created",
  • "phone": "string",
  • "email": "string",
  • "name": {
    },
  • "language": "string",
  • "kyc": {
    },
  • "canInvest": true,
  • "attribution": {
    },
  • "links": {
    },
  • "nextAction": {
    },
  • "metadata": {
    },
  • "createdAt": "2019-08-24T14:15:22Z",
  • "linkedAt": "2019-08-24T14:15:22Z"
}

Move an order along (sandbox)

paid = Finance accepted the payment; completed = paid and ownership issued; payment_rejected = Finance rejected it.

Scope: orders:write

Authorizations:
apiKey
path Parameters
id
required
string
Example: ord_6712c0ffee0123456789abcd

Order id

Request Body schema: application/json
required
to
required
string
Enum: "paid" "completed" "payment_rejected"

Responses

Response Schema: application/json
object
any
Value: "order"
id
string

ord_…

number
string

Amtaar order number

customer
string

cus_…

status
string
Enum: "awaiting_payment" "payment_under_review" "paid" "completed" "cancelled" "payment_rejected" "cancellation_requested" "refunded"
source
string
Enum: "api" "app"
externalReference
string or null
Array of objects
PropertyRef (object) or null

Set when the order has one property (API orders always do)

shares
integer
object
object
expiresAt
string or null <date-time>

When the unpaid reservation ends

object or null
object (Metadata) <= 20 properties

Your key/value pairs

createdAt
string or null <date-time>
updatedAt
string or null <date-time>
completedAt
string or null <date-time>

Request samples

Content type
application/json
{
  • "to": "paid"
}

Response samples

Content type
application/json
{
  • "object": "order",
  • "id": "string",
  • "number": "AM2610180001",
  • "customer": "string",
  • "status": "awaiting_payment",
  • "source": "api",
  • "externalReference": "string",
  • "items": [
    ],
  • "property": {
    },
  • "shares": 0,
  • "amounts": {
    },
  • "funding": {
    },
  • "expiresAt": "2019-08-24T14:15:22Z",
  • "cancellation": {
    },
  • "metadata": {
    },
  • "createdAt": "2019-08-24T14:15:22Z",
  • "updatedAt": "2019-08-24T14:15:22Z",
  • "completedAt": "2019-08-24T14:15:22Z"
}

customer.created Webhook

Sent when you opened a new Amtaar account (data.customer).

Authorizations:
apiKey
header Parameters
Amtaar-Signature
required
string
Amtaar-Event-Id
required
string
Amtaar-Event-Type
required
string
Amtaar-Delivery-Id
required
string
Request Body schema: application/json
object
any
Value: "event"
id
string

evt_…

type
string
Enum: "customer.created" "customer.linked" "customer.kyc_verified" "customer.unlinked" "order.created" "order.payment_under_review" "order.paid" "order.completed" "order.cancelled" "order.payment_rejected" "order.refunded" "order.cancellation_requested" "payout.paid" "commission.created" "webhook.test"
environment
string
Enum: "live" "sandbox"
apiVersion
string
createdAt
string or null <date-time>
object

customer / order / payout / commission objects, as in the API

Responses

Request samples

Content type
application/json
{
  • "object": "event",
  • "id": "string",
  • "type": "customer.created",
  • "environment": "live",
  • "apiVersion": "string",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

customer.linked Webhook

Sent when an existing investor confirmed the link (data.customer).

Authorizations:
apiKey
header Parameters
Amtaar-Signature
required
string
Amtaar-Event-Id
required
string
Amtaar-Event-Type
required
string
Amtaar-Delivery-Id
required
string
Request Body schema: application/json
object
any
Value: "event"
id
string

evt_…

type
string
Enum: "customer.created" "customer.linked" "customer.kyc_verified" "customer.unlinked" "order.created" "order.payment_under_review" "order.paid" "order.completed" "order.cancelled" "order.payment_rejected" "order.refunded" "order.cancellation_requested" "payout.paid" "commission.created" "webhook.test"
environment
string
Enum: "live" "sandbox"
apiVersion
string
createdAt
string or null <date-time>
object

customer / order / payout / commission objects, as in the API

Responses

Request samples

Content type
application/json
{
  • "object": "event",
  • "id": "string",
  • "type": "customer.created",
  • "environment": "live",
  • "apiVersion": "string",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

customer.kyc_verified Webhook

Sent when a linked customer finished Amtaar KYC (data.customer).

Authorizations:
apiKey
header Parameters
Amtaar-Signature
required
string
Amtaar-Event-Id
required
string
Amtaar-Event-Type
required
string
Amtaar-Delivery-Id
required
string
Request Body schema: application/json
object
any
Value: "event"
id
string

evt_…

type
string
Enum: "customer.created" "customer.linked" "customer.kyc_verified" "customer.unlinked" "order.created" "order.payment_under_review" "order.paid" "order.completed" "order.cancelled" "order.payment_rejected" "order.refunded" "order.cancellation_requested" "payout.paid" "commission.created" "webhook.test"
environment
string
Enum: "live" "sandbox"
apiVersion
string
createdAt
string or null <date-time>
object

customer / order / payout / commission objects, as in the API

Responses

Request samples

Content type
application/json
{
  • "object": "event",
  • "id": "string",
  • "type": "customer.created",
  • "environment": "live",
  • "apiVersion": "string",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

customer.unlinked Webhook

Sent when a customer was unlinked (data.customer).

Authorizations:
apiKey
header Parameters
Amtaar-Signature
required
string
Amtaar-Event-Id
required
string
Amtaar-Event-Type
required
string
Amtaar-Delivery-Id
required
string
Request Body schema: application/json
object
any
Value: "event"
id
string

evt_…

type
string
Enum: "customer.created" "customer.linked" "customer.kyc_verified" "customer.unlinked" "order.created" "order.payment_under_review" "order.paid" "order.completed" "order.cancelled" "order.payment_rejected" "order.refunded" "order.cancellation_requested" "payout.paid" "commission.created" "webhook.test"
environment
string
Enum: "live" "sandbox"
apiVersion
string
createdAt
string or null <date-time>
object

customer / order / payout / commission objects, as in the API

Responses

Request samples

Content type
application/json
{
  • "object": "event",
  • "id": "string",
  • "type": "customer.created",
  • "environment": "live",
  • "apiVersion": "string",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

order.created Webhook

Sent when an order exists — placed by you, or by your customer in the app (data.order).

Authorizations:
apiKey
header Parameters
Amtaar-Signature
required
string
Amtaar-Event-Id
required
string
Amtaar-Event-Type
required
string
Amtaar-Delivery-Id
required
string
Request Body schema: application/json
object
any
Value: "event"
id
string

evt_…

type
string
Enum: "customer.created" "customer.linked" "customer.kyc_verified" "customer.unlinked" "order.created" "order.payment_under_review" "order.paid" "order.completed" "order.cancelled" "order.payment_rejected" "order.refunded" "order.cancellation_requested" "payout.paid" "commission.created" "webhook.test"
environment
string
Enum: "live" "sandbox"
apiVersion
string
createdAt
string or null <date-time>
object

customer / order / payout / commission objects, as in the API

Responses

Request samples

Content type
application/json
{
  • "object": "event",
  • "id": "string",
  • "type": "customer.created",
  • "environment": "live",
  • "apiVersion": "string",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

order.payment_under_review Webhook

Sent when payment evidence arrived and Finance is checking it (data.order).

Authorizations:
apiKey
header Parameters
Amtaar-Signature
required
string
Amtaar-Event-Id
required
string
Amtaar-Event-Type
required
string
Amtaar-Delivery-Id
required
string
Request Body schema: application/json
object
any
Value: "event"
id
string

evt_…

type
string
Enum: "customer.created" "customer.linked" "customer.kyc_verified" "customer.unlinked" "order.created" "order.payment_under_review" "order.paid" "order.completed" "order.cancelled" "order.payment_rejected" "order.refunded" "order.cancellation_requested" "payout.paid" "commission.created" "webhook.test"
environment
string
Enum: "live" "sandbox"
apiVersion
string
createdAt
string or null <date-time>
object

customer / order / payout / commission objects, as in the API

Responses

Request samples

Content type
application/json
{
  • "object": "event",
  • "id": "string",
  • "type": "customer.created",
  • "environment": "live",
  • "apiVersion": "string",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

order.paid Webhook

Sent when the money is confirmed (data.order).

Authorizations:
apiKey
header Parameters
Amtaar-Signature
required
string
Amtaar-Event-Id
required
string
Amtaar-Event-Type
required
string
Amtaar-Delivery-Id
required
string
Request Body schema: application/json
object
any
Value: "event"
id
string

evt_…

type
string
Enum: "customer.created" "customer.linked" "customer.kyc_verified" "customer.unlinked" "order.created" "order.payment_under_review" "order.paid" "order.completed" "order.cancelled" "order.payment_rejected" "order.refunded" "order.cancellation_requested" "payout.paid" "commission.created" "webhook.test"
environment
string
Enum: "live" "sandbox"
apiVersion
string
createdAt
string or null <date-time>
object

customer / order / payout / commission objects, as in the API

Responses

Request samples

Content type
application/json
{
  • "object": "event",
  • "id": "string",
  • "type": "customer.created",
  • "environment": "live",
  • "apiVersion": "string",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

order.completed Webhook

Sent when the shares are issued to the customer (data.order).

Authorizations:
apiKey
header Parameters
Amtaar-Signature
required
string
Amtaar-Event-Id
required
string
Amtaar-Event-Type
required
string
Amtaar-Delivery-Id
required
string
Request Body schema: application/json
object
any
Value: "event"
id
string

evt_…

type
string
Enum: "customer.created" "customer.linked" "customer.kyc_verified" "customer.unlinked" "order.created" "order.payment_under_review" "order.paid" "order.completed" "order.cancelled" "order.payment_rejected" "order.refunded" "order.cancellation_requested" "payout.paid" "commission.created" "webhook.test"
environment
string
Enum: "live" "sandbox"
apiVersion
string
createdAt
string or null <date-time>
object

customer / order / payout / commission objects, as in the API

Responses

Request samples

Content type
application/json
{
  • "object": "event",
  • "id": "string",
  • "type": "customer.created",
  • "environment": "live",
  • "apiVersion": "string",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

order.cancelled Webhook

Sent when the order was cancelled or expired unpaid; its shares are released (data.order).

Authorizations:
apiKey
header Parameters
Amtaar-Signature
required
string
Amtaar-Event-Id
required
string
Amtaar-Event-Type
required
string
Amtaar-Delivery-Id
required
string
Request Body schema: application/json
object
any
Value: "event"
id
string

evt_…

type
string
Enum: "customer.created" "customer.linked" "customer.kyc_verified" "customer.unlinked" "order.created" "order.payment_under_review" "order.paid" "order.completed" "order.cancelled" "order.payment_rejected" "order.refunded" "order.cancellation_requested" "payout.paid" "commission.created" "webhook.test"
environment
string
Enum: "live" "sandbox"
apiVersion
string
createdAt
string or null <date-time>
object

customer / order / payout / commission objects, as in the API

Responses

Request samples

Content type
application/json
{
  • "object": "event",
  • "id": "string",
  • "type": "customer.created",
  • "environment": "live",
  • "apiVersion": "string",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

order.payment_rejected Webhook

Sent when Finance rejected the payment (data.order).

Authorizations:
apiKey
header Parameters
Amtaar-Signature
required
string
Amtaar-Event-Id
required
string
Amtaar-Event-Type
required
string
Amtaar-Delivery-Id
required
string
Request Body schema: application/json
object
any
Value: "event"
id
string

evt_…

type
string
Enum: "customer.created" "customer.linked" "customer.kyc_verified" "customer.unlinked" "order.created" "order.payment_under_review" "order.paid" "order.completed" "order.cancelled" "order.payment_rejected" "order.refunded" "order.cancellation_requested" "payout.paid" "commission.created" "webhook.test"
environment
string
Enum: "live" "sandbox"
apiVersion
string
createdAt
string or null <date-time>
object

customer / order / payout / commission objects, as in the API

Responses

Request samples

Content type
application/json
{
  • "object": "event",
  • "id": "string",
  • "type": "customer.created",
  • "environment": "live",
  • "apiVersion": "string",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

order.refunded Webhook

Sent when the order was refunded (data.order).

Authorizations:
apiKey
header Parameters
Amtaar-Signature
required
string
Amtaar-Event-Id
required
string
Amtaar-Event-Type
required
string
Amtaar-Delivery-Id
required
string
Request Body schema: application/json
object
any
Value: "event"
id
string

evt_…

type
string
Enum: "customer.created" "customer.linked" "customer.kyc_verified" "customer.unlinked" "order.created" "order.payment_under_review" "order.paid" "order.completed" "order.cancelled" "order.payment_rejected" "order.refunded" "order.cancellation_requested" "payout.paid" "commission.created" "webhook.test"
environment
string
Enum: "live" "sandbox"
apiVersion
string
createdAt
string or null <date-time>
object

customer / order / payout / commission objects, as in the API

Responses

Request samples

Content type
application/json
{
  • "object": "event",
  • "id": "string",
  • "type": "customer.created",
  • "environment": "live",
  • "apiVersion": "string",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

order.cancellation_requested Webhook

Sent when the customer asked to cancel a paid order (data.order).

Authorizations:
apiKey
header Parameters
Amtaar-Signature
required
string
Amtaar-Event-Id
required
string
Amtaar-Event-Type
required
string
Amtaar-Delivery-Id
required
string
Request Body schema: application/json
object
any
Value: "event"
id
string

evt_…

type
string
Enum: "customer.created" "customer.linked" "customer.kyc_verified" "customer.unlinked" "order.created" "order.payment_under_review" "order.paid" "order.completed" "order.cancelled" "order.payment_rejected" "order.refunded" "order.cancellation_requested" "payout.paid" "commission.created" "webhook.test"
environment
string
Enum: "live" "sandbox"
apiVersion
string
createdAt
string or null <date-time>
object

customer / order / payout / commission objects, as in the API

Responses

Request samples

Content type
application/json
{
  • "object": "event",
  • "id": "string",
  • "type": "customer.created",
  • "environment": "live",
  • "apiVersion": "string",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

payout.paid Webhook

Sent when rental income reached the customer's wallet (data.customer, data.payout). Needs portfolioAccess.

Authorizations:
apiKey
header Parameters
Amtaar-Signature
required
string
Amtaar-Event-Id
required
string
Amtaar-Event-Type
required
string
Amtaar-Delivery-Id
required
string
Request Body schema: application/json
object
any
Value: "event"
id
string

evt_…

type
string
Enum: "customer.created" "customer.linked" "customer.kyc_verified" "customer.unlinked" "order.created" "order.payment_under_review" "order.paid" "order.completed" "order.cancelled" "order.payment_rejected" "order.refunded" "order.cancellation_requested" "payout.paid" "commission.created" "webhook.test"
environment
string
Enum: "live" "sandbox"
apiVersion
string
createdAt
string or null <date-time>
object

customer / order / payout / commission objects, as in the API

Responses

Request samples

Content type
application/json
{
  • "object": "event",
  • "id": "string",
  • "type": "customer.created",
  • "environment": "live",
  • "apiVersion": "string",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

commission.created Webhook

Sent when a row was added to your commission ledger (data.commission).

Authorizations:
apiKey
header Parameters
Amtaar-Signature
required
string
Amtaar-Event-Id
required
string
Amtaar-Event-Type
required
string
Amtaar-Delivery-Id
required
string
Request Body schema: application/json
object
any
Value: "event"
id
string

evt_…

type
string
Enum: "customer.created" "customer.linked" "customer.kyc_verified" "customer.unlinked" "order.created" "order.payment_under_review" "order.paid" "order.completed" "order.cancelled" "order.payment_rejected" "order.refunded" "order.cancellation_requested" "payout.paid" "commission.created" "webhook.test"
environment
string
Enum: "live" "sandbox"
apiVersion
string
createdAt
string or null <date-time>
object

customer / order / payout / commission objects, as in the API

Responses

Request samples

Content type
application/json
{
  • "object": "event",
  • "id": "string",
  • "type": "customer.created",
  • "environment": "live",
  • "apiVersion": "string",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "data": {
    }
}