Introduction

This documentation aims to provide all the information you need to work with our API.

Authenticating requests

This API is not authenticated.

System

GET api/v1/healthcheck

GET
https://partners.staging.goescrow.net
/api/v1/healthcheck

Headers

Content-Type
Example:
application/json
Accept
Example:
application/json
Example request:
curl --request GET \
    --get "https://partners.staging.goescrow.net/api/v1/healthcheck" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:

Company Management

Manage Companies

Create a new company

POST
https://partners.staging.goescrow.net
/api/v1/companies
requires authentication

Creates a new company with a designated company representative. The company representative will be created as a user if they don't already exist.

Headers

Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request POST \
    "https://partners.staging.goescrow.net/api/v1/companies" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"Acme Corp Pty Ltd\",
    \"abn\": \"12345678901\",
    \"acn\": \"123456789\",
    \"email\": \"info@acmecorp.com.au\",
    \"phone\": \"+61298765432\",
    \"website\": \"https:\\/\\/www.acmecorp.com.au\",
    \"type\": \"Proprietary Limited\",
    \"majority_owned_by_another_australian_company\": false,
    \"majority_owned_by_overseas_person_or_company\": false,
    \"majority_owned_by_listed_australian_company\": false,
    \"acting_as_trustee_for_a_trust\": false
}"
Example response:
{
    "data": {
        "id": "comp_123",
        "name": "Acme Corp Pty Ltd"
    }
}

User Management

Manage Users

Create a new user

POST
https://partners.staging.goescrow.net
/api/v1/users
requires authentication

Creates a new user or returns an existing user if the email already exists. The user will be automatically associated with the authenticated partner.

Headers

Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request POST \
    "https://partners.staging.goescrow.net/api/v1/users" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"first_name\": \"John\",
    \"last_name\": \"Doe\",
    \"email\": \"john.doe@example.com\",
    \"phone\": \"+61412345678\",
    \"birth_date\": \"1990-01-15\"
}"
Example response:
{
    "id": 1,
    "reference": "USR-ABC123",
    "first_name": "John",
    "last_name": "Doe",
    "email": "john.doe@example.com",
    "phone": "+61412345678"
}

Send mobile verification code

GET
https://partners.staging.goescrow.net
/api/v1/users/{user_id}/verify-mobile
requires authentication

Sends a verification code via SMS to the user's registered phone number. The code will be valid for a limited time.

Headers

Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

user_id
string
required

The ID of the user.

Example:
0cf9acbc-2e7c-4281-a982-f1b5c03daca2
Example request:
curl --request GET \
    --get "https://partners.staging.goescrow.net/api/v1/users/0cf9acbc-2e7c-4281-a982-f1b5c03daca2/verify-mobile" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
[Empty response]

Verify mobile phone

POST
https://partners.staging.goescrow.net
/api/v1/users/{user_id}/verify-mobile
requires authentication

Verifies the mobile phone number using the code sent via SMS. Upon successful verification, the user's phone will be marked as verified.

Headers

Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

user_id
string
required

The ID of the user.

Example:
0cf9acbc-2e7c-4281-a982-f1b5c03daca2

Body Parameters

Example request:
curl --request POST \
    "https://partners.staging.goescrow.net/api/v1/users/0cf9acbc-2e7c-4281-a982-f1b5c03daca2/verify-mobile" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"code\": \"123456\"
}"
Example response:
[Empty response]

Send email verification code

GET
https://partners.staging.goescrow.net
/api/v1/users/{user_id}/verify-email
requires authentication

Sends a verification code via email to the user's registered email address. The code will be valid for a limited time.

Headers

Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

user_id
string
required

The ID of the user.

Example:
0cf9acbc-2e7c-4281-a982-f1b5c03daca2
Example request:
curl --request GET \
    --get "https://partners.staging.goescrow.net/api/v1/users/0cf9acbc-2e7c-4281-a982-f1b5c03daca2/verify-email" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
[Empty response]

Verify email address

POST
https://partners.staging.goescrow.net
/api/v1/users/{user_id}/verify-email
requires authentication

Verifies the email address using the code sent via email. Upon successful verification, the user's email will be marked as verified.

Headers

Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

user_id
string
required

The ID of the user.

Example:
0cf9acbc-2e7c-4281-a982-f1b5c03daca2

Body Parameters

Example request:
curl --request POST \
    "https://partners.staging.goescrow.net/api/v1/users/0cf9acbc-2e7c-4281-a982-f1b5c03daca2/verify-email" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"code\": \"123456\"
}"
Example response:
[Empty response]

Generate user bank statement

GET
https://partners.staging.goescrow.net
/api/v1/users/{user_id}/bank-statement
requires authentication

Generates and returns a PDF bank statement for the specified user. The statement includes transaction history and account details.

Headers

Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

user_id
string
required

The ID of the user.

Example:
0cf9acbc-2e7c-4281-a982-f1b5c03daca2
Example request:
curl --request GET \
    --get "https://partners.staging.goescrow.net/api/v1/users/0cf9acbc-2e7c-4281-a982-f1b5c03daca2/bank-statement" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
[]

Transaction Management

Manage Transactions

Create transaction

POST
https://partners.staging.goescrow.net
/api/v1/transactions
requires authentication

Creates a new anytime escrow transaction with disbursements. The transaction will be created with pending status and will go through verification checklists.

Headers

Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request POST \
    "https://partners.staging.goescrow.net/api/v1/transactions" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"sub_type\": \"super_disbursement\",
    \"user_id\": \"9d2e5c8a-1234-5678-9abc-def012345678\",
    \"company_id\": \"9d2e5c8a-1234-5678-9abc-def012345678\",
    \"details\": \"Dental Surgery\",
    \"amount\": 150000.5,
    \"disbursements\": [
        \"autem\"
    ]
}"
Example response:
{
    "data": {
        "id": "9d2e5c8a-1234-5678-9abc-def012345678",
        "reference": "TXN-2024-001234",
        "sub_type": "super_disbursement",
        "status": "pending",
        "funding_status": "pending",
        "amount": 150000.5,
        "details": "Property settlement for 123 Main St",
        "created_at": "2024-01-15T10:30:00Z"
    }
}

Get transaction quote

POST
https://partners.staging.goescrow.net
/api/v1/transactions/quote
requires authentication

Calculates fees and provides a quote for a transaction without creating it. Uses the same request structure as transaction creation. This allows partners to show pricing to their customers before committing to a transaction.

Headers

Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request POST \
    "https://partners.staging.goescrow.net/api/v1/transactions/quote" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"sub_type\": \"super_disbursement\",
    \"user_id\": \"9d2e5c8a-1234-5678-9abc-def012345678\",
    \"company_id\": \"9d2e5c8a-1234-5678-9abc-def012345678\",
    \"details\": \"Dental Surgery\",
    \"amount\": 150000.5,
    \"disbursements\": [
        \"autem\"
    ]
}"
Example response:
{
    "data": {
        "sub_type": "super_disbursement",
        "amount": 150000.5,
        "partner_fee": 750,
        "partner_fee_percentage": 0.5,
        "goescrow_fee": 300,
        "goescrow_fee_percentage": 0.2,
        "total_fees": 1050,
        "net_amount": 149950.5,
        "disbursements_count": 2
    }
}

User Identification Management

Manage User Identification Documents

Create or update user passport

POST
https://partners.staging.goescrow.net
/api/v1/users/{user_id}/passport
requires authentication

Creates a new passport record for the user or updates an existing one. Only one passport per user is allowed.

Headers

Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

user_id
string
required

The user ID

Example:
9d2e5c8a-1234-5678-9abc-def012345678

Body Parameters

Response Fields

Example request:
curl --request POST \
    "https://partners.staging.goescrow.net/api/v1/users/9d2e5c8a-1234-5678-9abc-def012345678/passport" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"document_number\": \"N1234567\",
    \"first_name\": \"John\",
    \"last_name\": \"Doe\",
    \"middle_name\": \"Michael\",
    \"nationality\": \"Australian\",
    \"date_of_birth\": \"1990-01-15\",
    \"date_of_issue\": \"2020-01-15\",
    \"date_of_expiration\": \"2030-01-15\",
    \"place_of_birth\": \"Sydney, Australia\",
    \"gender\": \"M\"
}"
Example response:
{
    "data": {
        "id": "9d2e5c8a-1234-5678-9abc-def012345678",
        "document_number": "N1234567",
        "first_name": "John",
        "last_name": "Doe",
        "middle_name": "Michael",
        "nationality": "Australian",
        "date_of_birth": "1990-01-15",
        "date_of_issue": "2020-01-15",
        "date_of_expiration": "2030-01-15",
        "place_of_birth": "Sydney, Australia",
        "gender": "M",
        "rapidid_verification_requested_at": null,
        "rapidid_verified_at": null,
        "rapidid_failed_at": null,
        "created_at": "2024-01-15T10:30:00Z",
        "updated_at": "2024-01-15T10:30:00Z"
    }
}

Get user passport

GET
https://partners.staging.goescrow.net
/api/v1/users/{user_id}/passport
requires authentication

Retrieves the passport information for the specified user.

Headers

Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

user_id
string
required

The user ID

Example:
9d2e5c8a-1234-5678-9abc-def012345678
Example request:
curl --request GET \
    --get "https://partners.staging.goescrow.net/api/v1/users/9d2e5c8a-1234-5678-9abc-def012345678/passport" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "data": {
        "id": "9d2e5c8a-1234-5678-9abc-def012345678",
        "document_number": "N1234567",
        "first_name": "John",
        "last_name": "Doe",
        "middle_name": "Michael",
        "nationality": "Australian",
        "date_of_birth": "1990-01-15",
        "date_of_issue": "2020-01-15",
        "date_of_expiration": "2030-01-15",
        "place_of_birth": "Sydney, Australia",
        "gender": "M",
        "rapidid_verification_requested_at": null,
        "rapidid_verified_at": null,
        "rapidid_failed_at": null,
        "created_at": "2024-01-15T10:30:00Z",
        "updated_at": "2024-01-15T10:30:00Z"
    }
}
{
    "error": "Passport not found for this user."
}

Delete user passport

DELETE
https://partners.staging.goescrow.net
/api/v1/users/{user_id}/passport
requires authentication

Deletes the passport record for the specified user.

Headers

Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

user_id
string
required

The user ID

Example:
9d2e5c8a-1234-5678-9abc-def012345678
Example request:
curl --request DELETE \
    "https://partners.staging.goescrow.net/api/v1/users/9d2e5c8a-1234-5678-9abc-def012345678/passport" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
[Empty response]
{
    "error": "Passport not found for this user."
}

Create or update user Medicare card

POST
https://partners.staging.goescrow.net
/api/v1/users/{user_id}/medicare
requires authentication

Creates a new Medicare card record for the user or updates an existing one. Only one Medicare card per user is allowed.

Headers

Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

user_id
string
required

The user ID

Example:
9d2e5c8a-1234-5678-9abc-def012345678

Body Parameters

Response Fields

Example request:
curl --request POST \
    "https://partners.staging.goescrow.net/api/v1/users/9d2e5c8a-1234-5678-9abc-def012345678/medicare" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"document_number\": \"1234567890\",
    \"name_on_card\": \"John Michael Doe\",
    \"card_color\": \"green\",
    \"individual_reference_number\": \"1\",
    \"expiration_date\": \"2025-12\"
}"
Example response:
{
    "data": {
        "id": "9d2e5c8a-1234-5678-9abc-def012345678",
        "document_number": "1234567890",
        "name_on_card": "John Michael Doe",
        "card_color": "green",
        "individual_reference_number": "1",
        "expiration_date": "2025-12",
        "rapidid_verification_requested_at": null,
        "rapidid_verified_at": null,
        "rapidid_failed_at": null,
        "created_at": "2024-01-15T10:30:00Z",
        "updated_at": "2024-01-15T10:30:00Z"
    }
}

Get user Medicare card

GET
https://partners.staging.goescrow.net
/api/v1/users/{user_id}/medicare
requires authentication

Retrieves the Medicare card information for the specified user.

Headers

Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

user_id
string
required

The user ID

Example:
9d2e5c8a-1234-5678-9abc-def012345678
Example request:
curl --request GET \
    --get "https://partners.staging.goescrow.net/api/v1/users/9d2e5c8a-1234-5678-9abc-def012345678/medicare" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "data": {
        "id": "9d2e5c8a-1234-5678-9abc-def012345678",
        "document_number": "1234567890",
        "name_on_card": "John Michael Doe",
        "card_color": "green",
        "individual_reference_number": "1",
        "expiration_date": "2025-12",
        "rapidid_verification_requested_at": null,
        "rapidid_verified_at": null,
        "rapidid_failed_at": null,
        "created_at": "2024-01-15T10:30:00Z",
        "updated_at": "2024-01-15T10:30:00Z"
    }
}
{
    "error": "Medicare card not found for this user."
}

Delete user Medicare card

DELETE
https://partners.staging.goescrow.net
/api/v1/users/{user_id}/medicare
requires authentication

Deletes the Medicare card record for the specified user.

Headers

Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

user_id
string
required

The user ID

Example:
9d2e5c8a-1234-5678-9abc-def012345678
Example request:
curl --request DELETE \
    "https://partners.staging.goescrow.net/api/v1/users/9d2e5c8a-1234-5678-9abc-def012345678/medicare" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
[Empty response]
{
    "error": "Medicare card not found for this user."
}

Create or update user driver license

POST
https://partners.staging.goescrow.net
/api/v1/users/{user_id}/driver-license
requires authentication

Creates a new driver license record for the user or updates an existing one. Only one driver license per user is allowed.

Headers

Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

user_id
string
required

The user ID

Example:
9d2e5c8a-1234-5678-9abc-def012345678

Body Parameters

Response Fields

Example request:
curl --request POST \
    "https://partners.staging.goescrow.net/api/v1/users/9d2e5c8a-1234-5678-9abc-def012345678/driver-license" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"state_issued\": \"NSW\",
    \"license_number\": \"12345678\",
    \"card_number\": \"1234567890\",
    \"expiration_date\": \"2030-01-15\",
    \"first_name\": \"John\",
    \"last_name\": \"Doe\",
    \"middle_name\": \"Michael\",
    \"date_of_birth\": \"1990-01-15\"
}"
Example response:
{
    "data": {
        "id": "9d2e5c8a-1234-5678-9abc-def012345678",
        "state_issued": "NSW",
        "license_number": "12345678",
        "card_number": "1234567890",
        "expiration_date": "2030-01-15",
        "first_name": "John",
        "last_name": "Doe",
        "middle_name": "Michael",
        "date_of_birth": "1990-01-15",
        "rapidid_verification_requested_at": null,
        "rapidid_verified_at": null,
        "rapidid_failed_at": null,
        "created_at": "2024-01-15T10:30:00Z",
        "updated_at": "2024-01-15T10:30:00Z"
    }
}

Get user driver license

GET
https://partners.staging.goescrow.net
/api/v1/users/{user_id}/driver-license
requires authentication

Retrieves the driver license information for the specified user.

Headers

Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

user_id
string
required

The user ID

Example:
9d2e5c8a-1234-5678-9abc-def012345678
Example request:
curl --request GET \
    --get "https://partners.staging.goescrow.net/api/v1/users/9d2e5c8a-1234-5678-9abc-def012345678/driver-license" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "data": {
        "id": "9d2e5c8a-1234-5678-9abc-def012345678",
        "state_issued": "NSW",
        "license_number": "12345678",
        "card_number": "1234567890",
        "expiration_date": "2030-01-15",
        "first_name": "John",
        "last_name": "Doe",
        "middle_name": "Michael",
        "date_of_birth": "1990-01-15",
        "rapidid_verification_requested_at": null,
        "rapidid_verified_at": null,
        "rapidid_failed_at": null,
        "created_at": "2024-01-15T10:30:00Z",
        "updated_at": "2024-01-15T10:30:00Z"
    }
}
{
    "error": "Driver license not found for this user."
}

Delete user driver license

DELETE
https://partners.staging.goescrow.net
/api/v1/users/{user_id}/driver-license
requires authentication

Deletes the driver license record for the specified user.

Headers

Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

user_id
string
required

The user ID

Example:
9d2e5c8a-1234-5678-9abc-def012345678
Example request:
curl --request DELETE \
    "https://partners.staging.goescrow.net/api/v1/users/9d2e5c8a-1234-5678-9abc-def012345678/driver-license" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
[Empty response]
{
    "error": "Driver license not found for this user."
}