It takes just a couple of steps to get up and running. If you’re not yet an Upsider the first thing you’ll need to do is sign up here: https://up.com.au/download/. Great! Let’s go to the next step.

Your personal access token is the key to your financial kingdom. Guard it fiercely and never share it online or give it out. If you are worried it may have fallen into the wrong hands it’s easy to generate a new one (and expire the old one) - see below.
1. Go to https://api.up.com.au (or tap the Personal Access Token button in the top right) in a web browser. This must be done on a tablet or computer.
2. Open the Up app on your mobile, swipe right and select "Scan QR Code".
3. Scan the QR code displayed on the webpage.
4. Presto! You now have a Personal Access Token. Copy this and store it safely.
It’s better to be safe than sorry. If, for any reason, you’re worried about the safety of your Personal Access Token follow these very simple steps to generate a new one.
1. Follow the instructions above to log in to https://api.up.com.au.
2. You should now be looking at your access token – simply click the refresh button to generate a new one. Your old token will immediately stop working.
Ok let's get our hands dirty! The simplest request in the book is to first verify that your token works.
To test your access token, make a request to the /util/ping endpoint. You'll need to put your access token in the Authorization header like so:
Authorization: Bearer $your_access_token
You should get a JSON response with a HTTP 200 status.
Sample Request
curl https://api.up.com.au/api/v1/util/ping \-H "Authorization: Bearer $your_access_token"
Sample Response
{"meta": {"id": "3b5d17a4-6778-48dc-ae7d-9f8aace2e2fc","statusEmoji": "⚡️"}}
If the Authorization header is missing, is malformed, or contains an invalid access token, an error response will be returned with a HTTP 401 status.
v1 (beta). New endpoints will be added over time and existing endpoints will be extended. Some endpoints or fields within an endpoint may be deprecated, but nothing will be removed within any given version, in order to maintain backwards compatibility with existing clients.The endpoints documented in this reference must all be appended to the base URL before they can be called.
https://api.up.com.au/api/v1
For example, the GET /accounts endpoint is callable at
https://api.up.com.au/api/v1/accounts
Authorization header. The bearer scheme is used to construct the Authorization header.Sample Header
Authorization: Bearer $your_access_token
Currently the Up Banking API is only available for use with a personal access token, which can be obtained by visiting api.up.com.au and following the prompts.
Only one personal access token can be used at a time. Generating a new personal access token revokes any existing personal access tokens.
links field at the top-level of the response JSON and its data field contains an array of resources specific to the endpoint.Sample Response
{"data": [...],"links": {"prev": "https://api.up.com.au/api/v1/accounts?page[before]=x","next": "https://api.up.com.au/api/v1/accounts?page[after]=y"}}
prev and next links to move between pages.On each page of results, the client consumes each of the resources contained in the data array. Forwards pagination is achieved by following the next link repeatedly until the next link is set to null . When the next link is null , there are no more pages available and pagination terminates. Backwards pagination is achieved by following the prev link repeatedly until the prev link is set to null . When the prev link is null , there are no more pages available and pagination terminates.
Endpoints that support pagination accept a page[size] query parameter. This value must be a positive integer and is generally constrained to an upper limit of 100 , however individual endpoints may impose different constraints.
Sample URL
https://api.up.com.au/api/v1/accounts?page[size]=10
When the page[size] is specified, no more than page[size] resources will be included in the response's data field. This parameter is set to a sensible default, which varies depending on the endpoint.
2xx range. Error responses will be in the usually be in the 4xx range, or more rarely, in the 5xx range.200
Successful response: Everything worked as intended
201
Successful response: A new resource was created successfully—Typically used with POST requests.
204
Successful response: No content—typically used with DELETE requests.
400
Bad request: Typically a problem with the query string or an encoding error.
401
Not authorized: The request was not authenticated.
404
Not found: Either the endpoint does not exist, or the requested resource does not exist.
422
Invalid request: The request contains invalid data and was not processed.
429
Too many requests: You have been rate limited—try later, ideally with exponential backoff.
500 502 503 504
Server-side errors: Try again later.
When a response is received in the 4xx or 5xx range, it includes errors that should be referred for more detail.
Generic error response that returns one or more errors.
errorsArray [ErrorObject]
The list of errors returned in this response.
statusstring
The HTTP status code associated with this error. This can also be obtained from the response headers. The status indicates the broad type of error according to HTTP semantics.
titlestring
A short description of this error. This should be stable across multiple occurrences of this type of error and typically expands on the reason for the status code.
detailstring
A detailed description of this error. This should be considered unique to individual occurrences of an error and subject to change. It is useful for debugging purposes.
sourceobject
If applicable, location in the request that this error relates to. This may be a parameter in the query string, or a an attribute in the request body.
parameterstring
If this error relates to a query parameter, the name of the parameter.
pointerstring
If this error relates to an attribute in the request body, a rfc-6901 JSON pointer to the attribute.
Clients should typically convert these error responses to exceptions and handle them as necessary.
Accounts represent the underlying store used to track balances
and the transactions that have occurred to modify those balances
over time. Up currently has two types of account: SAVER—used to
earn interest and to hit savings goals, and TRANSACTIONAL—used
for everyday spending.
GET /accountsRetrieve a paginated list of all accounts for the currently
authenticated user. The returned list is paginated and can be scrolled
by following the prev and next links where present.
page[size]integer
The number of records to return in each page.
?page[size]=30"+" must be encoded as "%2B" in order to be received as a plus-sign and not as a space character.dataArray [AccountResource]
The list of accounts returned in this response.
typestring
The type of this resource: accounts
idstring
The unique identifier for this account.
attributesobject
displayNamestring
The name associated with the account in the Up application.
accountTypeAccountTypeEnum
The bank account type of this account.
balanceMoneyObject
The available balance of the account, taking into account any amounts that are currently on hold.
currencyCodestring
The ISO 4217 currency code.
valuestring
The amount of money, formatted as a string in the relevant currency.
For example, for an Australian dollar value of $10.56, this field will
be "10.56". The currency symbol is not included in the string.
valueInBaseUnitsinteger
The amount of money in the smallest denomination for the currency, as a
64-bit integer. For example, for an Australian dollar value of $10.56,
this field will be 1056.
createdAtstring (date-time)
The date-time at which this account was first opened.
relationshipsobject
transactionsobject
linksobject
relatedstring
The link to retrieve the related resource(s) in this relationship.
linksobject
selfstring
The canonical link to this resource within the API.
linksobject
prevstring
The link to the previous page in the results. If this value is null
there is no previous page.
nextstring
The link to the next page in the results. If this value is null
there is no next page.
Sample Request
curl https://api.up.com.au/api/v1/accounts \-G \-H 'Authorization: Bearer up:demo:l1kQeuyWPj4tvdGu' \-d 'page[size]=1'
Sample Response
{"data": [{"type": "accounts","id": "b20b3e0a-fc43-4525-8cd1-f701e57db03d","attributes": {"displayName": "Up Account","accountType": "TRANSACTIONAL","balance": {"currencyCode": "AUD","value": "1.00","valueInBaseUnits": 100},"createdAt": "2021-02-23T13:16:23+11:00"},"relationships": {"transactions": {"links": {"related": "https://api.up.com.au/api/v1/accounts/b20b3e0a-fc43-4525-8cd1-f701e57db03d/transactions"}}},"links": {"self": "https://api.up.com.au/api/v1/accounts/b20b3e0a-fc43-4525-8cd1-f701e57db03d"}}],"links": {"prev": null,"next": "https://api.up.com.au/api/v1/accounts?page%5Bafter%5D=WyIyMDIxLTAyLTIzVDAyOjE2OjIzLjQyNzI0NTAwMFoiLCJiMjBiM2UwYS1mYzQzLTQ1MjUtOGNkMS1mNzAxZTU3ZGIwM2QiXQ%3D%3D&page%5Bsize%5D=1"}}
GET /accounts/{id}Retrieve a specific account by providing its unique identifier.
idstring
The unique identifier for the account.
5960803c-2aa5-4d97-abdb-86a0400626c6dataAccountResource
The account returned in this response.
typestring
The type of this resource: accounts
idstring
The unique identifier for this account.
attributesobject
displayNamestring
The name associated with the account in the Up application.
accountTypeAccountTypeEnum
The bank account type of this account.
balanceMoneyObject
The available balance of the account, taking into account any amounts that are currently on hold.
currencyCodestring
The ISO 4217 currency code.
valuestring
The amount of money, formatted as a string in the relevant currency.
For example, for an Australian dollar value of $10.56, this field will
be "10.56". The currency symbol is not included in the string.
valueInBaseUnitsinteger
The amount of money in the smallest denomination for the currency, as a
64-bit integer. For example, for an Australian dollar value of $10.56,
this field will be 1056.
createdAtstring (date-time)
The date-time at which this account was first opened.
relationshipsobject
transactionsobject
linksobject
relatedstring
The link to retrieve the related resource(s) in this relationship.
linksobject
selfstring
The canonical link to this resource within the API.
Sample Request
curl https://api.up.com.au/api/v1/accounts/a363aacf-666c-433f-aea9-c33444c254ae \-H 'Authorization: Bearer up:demo:a6IBJC68h2830ZHH'
Sample Response
{"data": {"type": "accounts","id": "a363aacf-666c-433f-aea9-c33444c254ae","attributes": {"displayName": "🐷 Savings","accountType": "SAVER","balance": {"currencyCode": "AUD","value": "125.36","valueInBaseUnits": 12536},"createdAt": "2021-02-23T13:16:25+11:00"},"relationships": {"transactions": {"links": {"related": "https://api.up.com.au/api/v1/accounts/a363aacf-666c-433f-aea9-c33444c254ae/transactions"}}},"links": {"self": "https://api.up.com.au/api/v1/accounts/a363aacf-666c-433f-aea9-c33444c254ae"}}}
Categories enable understanding where your money goes by driving powerful insights in Up. All categories in Up are pre-defined and are automatically assigned to new purchases in most cases. A parent-child relationship is used to represent categories, however parent categories cannot be directly assigned to transactions.
GET /categoriesRetrieve a list of all categories and their ancestry. The returned list is not paginated.
filter[parent]string
The unique identifier of a parent category for which to
return only its children. Providing an invalid category
identifier results in a 404 response.
?filter[parent]=good-life"+" must be encoded as "%2B" in order to be received as a plus-sign and not as a space character.dataArray [CategoryResource]
The list of categories returned in this response.
typestring
The type of this resource: categories
idstring
The unique identifier for this category. This is a human-readable but URL-safe value.
attributesobject
namestring
The name of this category as seen in the Up application.
relationshipsobject
parentobject
dataobject
typestring
The type of this resource: categories
idstring
The unique identifier of the resource within its type.
linksobject
relatedstring
The link to retrieve the related resource(s) in this relationship.
childrenobject
dataArray [object]
typestring
The type of this resource: categories
idstring
The unique identifier of the resource within its type.
linksobject
relatedstring
The link to retrieve the related resource(s) in this relationship.
linksobject
selfstring
The canonical link to this resource within the API.
Sample Request
curl https://api.up.com.au/api/v1/categories \-G \-H 'Authorization: Bearer up:demo:X57KArW0NEqNdiop' \-d 'filter[parent]=good-life'
Sample Response
{"data": [{"type": "categories","id": "hobbies","attributes": {"name": "Hobbies"},"relationships": {"parent": {"data": {"type": "categories","id": "good-life"},"links": {"related": "https://api.up.com.au/api/v1/categories/good-life"}},"children": {"data": [],"links": {"related": "https://api.up.com.au/api/v1/categories?filter%5Bparent%5D=hobbies"}}},"links": {"self": "https://api.up.com.au/api/v1/categories/hobbies"}},{"type": "categories","id": "restaurants-and-cafes","attributes": {"name": "Restaurants & Cafes"},"relationships": {"parent": {"data": {"type": "categories","id": "good-life"},"links": {"related": "https://api.up.com.au/api/v1/categories/good-life"}},"children": {"data": [],"links": {"related": "https://api.up.com.au/api/v1/categories?filter%5Bparent%5D=restaurants-and-cafes"}}},"links": {"self": "https://api.up.com.au/api/v1/categories/restaurants-and-cafes"}}]}
GET /categories/{id}Retrieve a specific category by providing its unique identifier.
idstring
The unique identifier for the category.
restaurants-and-cafesdataCategoryResource
The category returned in this response.
typestring
The type of this resource: categories
idstring
The unique identifier for this category. This is a human-readable but URL-safe value.
attributesobject
namestring
The name of this category as seen in the Up application.
relationshipsobject
parentobject
dataobject
typestring
The type of this resource: categories
idstring
The unique identifier of the resource within its type.
linksobject
relatedstring
The link to retrieve the related resource(s) in this relationship.
childrenobject
dataArray [object]
typestring
The type of this resource: categories
idstring
The unique identifier of the resource within its type.
linksobject
relatedstring
The link to retrieve the related resource(s) in this relationship.
linksobject
selfstring
The canonical link to this resource within the API.
Sample Request
curl https://api.up.com.au/api/v1/categories/home \-H 'Authorization: Bearer up:demo:E0BtvLndmNWhNhvA'
Sample Response
{"data": {"type": "categories","id": "home","attributes": {"name": "Home"},"relationships": {"parent": {"data": null},"children": {"data": [{"type": "categories","id": "groceries"}],"links": {"related": "https://api.up.com.au/api/v1/categories?filter%5Bparent%5D=home"}}},"links": {"self": "https://api.up.com.au/api/v1/categories/home"}}}
Transactions represent the movement of money into and out of an
account. They have many characteristics that vary depending on
the kind of transaction. Transactions may be temporarily HELD
(pending) or SETTLED, typically depending on which payment
method was used at the point of sale.
GET /transactionsRetrieve a list of all transactions across all accounts for the currently
authenticated user. The returned list is paginated and can
be scrolled by following the next and prev links where present. To
narrow the results to a specific date range pass one or both of
filter[since] and filter[until] in the query string. These filter
parameters should not be used for pagination. Results are ordered
newest first to oldest last.
page[size]integer
The number of records to return in each page.
?page[size]=30filter[status]
The transaction status for which to return records. This
can be used to filter HELD transactions from those
that are SETTLED.
?filter[status]=HELDfilter[since]string
The start date-time from which to return records, formatted according to rfc-3339. Not to be used for pagination purposes.
?filter[since]=2020-01-01T01:02:03+10:00filter[until]string
The end date-time up to which to return records, formatted according to rfc-3339. Not to be used for pagination purposes.
?filter[until]=2020-02-01T01:02:03+10:00filter[category]string
The category identifier for which to filter transactions.
Both parent and child categories can be filtered through
this parameter. Providing an invalid category identifier
results in a 404 response.
?filter[category]=good-lifefilter[tag]string
A transaction tag to filter for which to return records. If the tag does not exist, zero records are returned and a success response is given.
?filter[tag]=Holiday"+" must be encoded as "%2B" in order to be received as a plus-sign and not as a space character.dataArray [TransactionResource]
The list of transactions returned in this response.
typestring
The type of this resource: transactions
idstring
The unique identifier for this transaction.
attributesobject
statusTransactionStatusEnum
The current processing status of this transaction, according to whether or not this transaction has settled or is still held.
rawTextstring
The original, unprocessed text of the transaction. This is often not a perfect indicator of the actual merchant, but it is useful for reconciliation purposes in some cases.
descriptionstring
A short description for this transaction. Usually the merchant name for purchases.
messagestring
Attached message for this transaction, such as a payment message, or a transfer note.
holdInfoHoldInfoObject
If this transaction is currently in the HELD status, or was ever in
the HELD status, the amount and foreignAmount of the
transaction while HELD.
amountMoneyObject
The amount of this transaction while in the HELD status, in
Australian dollars.
currencyCodestring
The ISO 4217 currency code.
valuestring
The amount of money, formatted as a string in the relevant currency.
For example, for an Australian dollar value of $10.56, this field will
be "10.56". The currency symbol is not included in the string.
valueInBaseUnitsinteger
The amount of money in the smallest denomination for the currency, as a
64-bit integer. For example, for an Australian dollar value of $10.56,
this field will be 1056.
foreignAmountMoneyObject
The foreign currency amount of this transaction while in the HELD
status. This field will be null for domestic transactions. The amount
was converted to the AUD amount reflected in the amount field.
currencyCodestring
The ISO 4217 currency code.
valuestring
The amount of money, formatted as a string in the relevant currency.
For example, for an Australian dollar value of $10.56, this field will
be "10.56". The currency symbol is not included in the string.
valueInBaseUnitsinteger
The amount of money in the smallest denomination for the currency, as a
64-bit integer. For example, for an Australian dollar value of $10.56,
this field will be 1056.
roundUpRoundUpObject
Details of how this transaction was rounded-up. If no Round Up was
applied this field will be null.
amountMoneyObject
The total amount of this Round Up, including any boosts, represented as a negative value.
currencyCodestring
The ISO 4217 currency code.
valuestring
The amount of money, formatted as a string in the relevant currency.
For example, for an Australian dollar value of $10.56, this field will
be "10.56". The currency symbol is not included in the string.
valueInBaseUnitsinteger
The amount of money in the smallest denomination for the currency, as a
64-bit integer. For example, for an Australian dollar value of $10.56,
this field will be 1056.
boostPortionMoneyObject
The portion of the Round Up amount owing to boosted Round Ups,
represented as a negative value. If no boost was added to the Round Up
this field will be null.
currencyCodestring
The ISO 4217 currency code.
valuestring
The amount of money, formatted as a string in the relevant currency.
For example, for an Australian dollar value of $10.56, this field will
be "10.56". The currency symbol is not included in the string.
valueInBaseUnitsinteger
The amount of money in the smallest denomination for the currency, as a
64-bit integer. For example, for an Australian dollar value of $10.56,
this field will be 1056.
cashbackCashbackObject
If all or part of this transaction was instantly reimbursed in the form of cashback, details of the reimbursement.
descriptionstring
A brief description of why this cashback was paid.
amountMoneyObject
The total amount of cashback paid, represented as a positive value.
currencyCodestring
The ISO 4217 currency code.
valuestring
The amount of money, formatted as a string in the relevant currency.
For example, for an Australian dollar value of $10.56, this field will
be "10.56". The currency symbol is not included in the string.
valueInBaseUnitsinteger
The amount of money in the smallest denomination for the currency, as a
64-bit integer. For example, for an Australian dollar value of $10.56,
this field will be 1056.
amountMoneyObject
The amount of this transaction in Australian dollars. For
transactions that were once HELD but are now SETTLED, refer to
the holdInfo field for the original amount the transaction was
HELD at.
currencyCodestring
The ISO 4217 currency code.
valuestring
The amount of money, formatted as a string in the relevant currency.
For example, for an Australian dollar value of $10.56, this field will
be "10.56". The currency symbol is not included in the string.
valueInBaseUnitsinteger
The amount of money in the smallest denomination for the currency, as a
64-bit integer. For example, for an Australian dollar value of $10.56,
this field will be 1056.
foreignAmountMoneyObject
The foreign currency amount of this transaction. This field will be
null for domestic transactions. The amount was converted to the AUD
amount reflected in the amount of this transaction. Refer to the
holdInfo field for the original foreignAmount the transaction was
HELD at.
currencyCodestring
The ISO 4217 currency code.
valuestring
The amount of money, formatted as a string in the relevant currency.
For example, for an Australian dollar value of $10.56, this field will
be "10.56". The currency symbol is not included in the string.
valueInBaseUnitsinteger
The amount of money in the smallest denomination for the currency, as a
64-bit integer. For example, for an Australian dollar value of $10.56,
this field will be 1056.
settledAtstring (date-time)
The date-time at which this transaction settled. This field will be
null for transactions that are currently in the HELD status.
createdAtstring (date-time)
The date-time at which this transaction was first encountered.
relationshipsobject
accountobject
dataobject
typestring
The type of this resource: accounts
idstring
The unique identifier of the resource within its type.
linksobject
relatedstring
The link to retrieve the related resource(s) in this relationship.
transferAccountobject
If this transaction is a transfer between accounts, this field will
contain the account the transaction went to/came from. The amount
field can be used to determine the direction of the transfer.
dataobject
typestring
The type of this resource: accounts
idstring
The unique identifier of the resource within its type.
linksobject
relatedstring
The link to retrieve the related resource(s) in this relationship.
categoryobject
dataobject
typestring
The type of this resource: categories
idstring
The unique identifier of the resource within its type.
linksobject
relatedstring
The link to retrieve the related resource(s) in this relationship.
parentCategoryobject
dataobject
typestring
The type of this resource: categories
idstring
The unique identifier of the resource within its type.
linksobject
relatedstring
The link to retrieve the related resource(s) in this relationship.
tagsobject
dataArray [object]
typestring
The type of this resource: tags
idstring
The label of the tag, which also acts as the tag’s unique identifier.
linksobject
selfstring
The link to retrieve or modify linkage between this resources and the related resource(s) in this relationship.
linksobject
selfstring
The canonical link to this resource within the API.
linksobject
prevstring
The link to the previous page in the results. If this value is null
there is no previous page.
nextstring
The link to the next page in the results. If this value is null
there is no next page.
Sample Request
curl https://api.up.com.au/api/v1/transactions \-G \-H 'Authorization: Bearer up:demo:6kypYsqBMM6SPirQ' \-d 'page[size]=1' \-d 'filter[tag]=Pizza Night' \-d 'filter[status]=SETTLED'
Sample Response
{"data": [{"type": "transactions","id": "c4629293-5417-4c93-a647-081d8797c5ab","attributes": {"status": "SETTLED","rawText": null,"description": "David Taylor","message": "Money for the pizzas last night.","holdInfo": null,"roundUp": null,"cashback": null,"amount": {"currencyCode": "AUD","value": "-59.98","valueInBaseUnits": -5998},"foreignAmount": null,"settledAt": "2021-02-22T06:14:44+11:00","createdAt": "2021-02-22T06:14:44+11:00"},"relationships": {"account": {"data": {"type": "accounts","id": "65ec72f7-3c24-438d-adae-c96a6f37d005"},"links": {"related": "https://api.up.com.au/api/v1/accounts/65ec72f7-3c24-438d-adae-c96a6f37d005"}},"transferAccount": {"data": null},"category": {"data": null},"parentCategory": {"data": null},"tags": {"data": [{"type": "tags","id": "Pizza Night"}],"links": {"self": "https://api.up.com.au/api/v1/transactions/c4629293-5417-4c93-a647-081d8797c5ab/relationships/tags"}}},"links": {"self": "https://api.up.com.au/api/v1/transactions/c4629293-5417-4c93-a647-081d8797c5ab"}}],"links": {"prev": null,"next": null}}
GET /transactions/{id}Retrieve a specific transaction by providing its unique identifier.
idstring
The unique identifier for the transaction.
0e583d4f-63b4-497c-a0b9-d3f921817b04dataTransactionResource
The transaction returned in this response.
typestring
The type of this resource: transactions
idstring
The unique identifier for this transaction.
attributesobject
statusTransactionStatusEnum
The current processing status of this transaction, according to whether or not this transaction has settled or is still held.
rawTextstring
The original, unprocessed text of the transaction. This is often not a perfect indicator of the actual merchant, but it is useful for reconciliation purposes in some cases.
descriptionstring
A short description for this transaction. Usually the merchant name for purchases.
messagestring
Attached message for this transaction, such as a payment message, or a transfer note.
holdInfoHoldInfoObject
If this transaction is currently in the HELD status, or was ever in
the HELD status, the amount and foreignAmount of the
transaction while HELD.
amountMoneyObject
The amount of this transaction while in the HELD status, in
Australian dollars.
currencyCodestring
The ISO 4217 currency code.
valuestring
The amount of money, formatted as a string in the relevant currency.
For example, for an Australian dollar value of $10.56, this field will
be "10.56". The currency symbol is not included in the string.
valueInBaseUnitsinteger
The amount of money in the smallest denomination for the currency, as a
64-bit integer. For example, for an Australian dollar value of $10.56,
this field will be 1056.
foreignAmountMoneyObject
The foreign currency amount of this transaction while in the HELD
status. This field will be null for domestic transactions. The amount
was converted to the AUD amount reflected in the amount field.
currencyCodestring
The ISO 4217 currency code.
valuestring
The amount of money, formatted as a string in the relevant currency.
For example, for an Australian dollar value of $10.56, this field will
be "10.56". The currency symbol is not included in the string.
valueInBaseUnitsinteger
The amount of money in the smallest denomination for the currency, as a
64-bit integer. For example, for an Australian dollar value of $10.56,
this field will be 1056.
roundUpRoundUpObject
Details of how this transaction was rounded-up. If no Round Up was
applied this field will be null.
amountMoneyObject
The total amount of this Round Up, including any boosts, represented as a negative value.
currencyCodestring
The ISO 4217 currency code.
valuestring
The amount of money, formatted as a string in the relevant currency.
For example, for an Australian dollar value of $10.56, this field will
be "10.56". The currency symbol is not included in the string.
valueInBaseUnitsinteger
The amount of money in the smallest denomination for the currency, as a
64-bit integer. For example, for an Australian dollar value of $10.56,
this field will be 1056.
boostPortionMoneyObject
The portion of the Round Up amount owing to boosted Round Ups,
represented as a negative value. If no boost was added to the Round Up
this field will be null.
currencyCodestring
The ISO 4217 currency code.
valuestring
The amount of money, formatted as a string in the relevant currency.
For example, for an Australian dollar value of $10.56, this field will
be "10.56". The currency symbol is not included in the string.
valueInBaseUnitsinteger
The amount of money in the smallest denomination for the currency, as a
64-bit integer. For example, for an Australian dollar value of $10.56,
this field will be 1056.
cashbackCashbackObject
If all or part of this transaction was instantly reimbursed in the form of cashback, details of the reimbursement.
descriptionstring
A brief description of why this cashback was paid.
amountMoneyObject
The total amount of cashback paid, represented as a positive value.
currencyCodestring
The ISO 4217 currency code.
valuestring
The amount of money, formatted as a string in the relevant currency.
For example, for an Australian dollar value of $10.56, this field will
be "10.56". The currency symbol is not included in the string.
valueInBaseUnitsinteger
The amount of money in the smallest denomination for the currency, as a
64-bit integer. For example, for an Australian dollar value of $10.56,
this field will be 1056.
amountMoneyObject
The amount of this transaction in Australian dollars. For
transactions that were once HELD but are now SETTLED, refer to
the holdInfo field for the original amount the transaction was
HELD at.
currencyCodestring
The ISO 4217 currency code.
valuestring
The amount of money, formatted as a string in the relevant currency.
For example, for an Australian dollar value of $10.56, this field will
be "10.56". The currency symbol is not included in the string.
valueInBaseUnitsinteger
The amount of money in the smallest denomination for the currency, as a
64-bit integer. For example, for an Australian dollar value of $10.56,
this field will be 1056.
foreignAmountMoneyObject
The foreign currency amount of this transaction. This field will be
null for domestic transactions. The amount was converted to the AUD
amount reflected in the amount of this transaction. Refer to the
holdInfo field for the original foreignAmount the transaction was
HELD at.
currencyCodestring
The ISO 4217 currency code.
valuestring
The amount of money, formatted as a string in the relevant currency.
For example, for an Australian dollar value of $10.56, this field will
be "10.56". The currency symbol is not included in the string.
valueInBaseUnitsinteger
The amount of money in the smallest denomination for the currency, as a
64-bit integer. For example, for an Australian dollar value of $10.56,
this field will be 1056.
settledAtstring (date-time)
The date-time at which this transaction settled. This field will be
null for transactions that are currently in the HELD status.
createdAtstring (date-time)
The date-time at which this transaction was first encountered.
relationshipsobject
accountobject
dataobject
typestring
The type of this resource: accounts
idstring
The unique identifier of the resource within its type.
linksobject
relatedstring
The link to retrieve the related resource(s) in this relationship.
transferAccountobject
If this transaction is a transfer between accounts, this field will
contain the account the transaction went to/came from. The amount
field can be used to determine the direction of the transfer.
dataobject
typestring
The type of this resource: accounts
idstring
The unique identifier of the resource within its type.
linksobject
relatedstring
The link to retrieve the related resource(s) in this relationship.
categoryobject
dataobject
typestring
The type of this resource: categories
idstring
The unique identifier of the resource within its type.
linksobject
relatedstring
The link to retrieve the related resource(s) in this relationship.
parentCategoryobject
dataobject
typestring
The type of this resource: categories
idstring
The unique identifier of the resource within its type.
linksobject
relatedstring
The link to retrieve the related resource(s) in this relationship.
tagsobject
dataArray [object]
typestring
The type of this resource: tags
idstring
The label of the tag, which also acts as the tag’s unique identifier.
linksobject
selfstring
The link to retrieve or modify linkage between this resources and the related resource(s) in this relationship.
linksobject
selfstring
The canonical link to this resource within the API.
Sample Request
curl https://api.up.com.au/api/v1/transactions/6af0d511-e5a8-4adb-9b8e-f21e69ee2e44 \-H 'Authorization: Bearer up:demo:sPhxnHEPERKOnXN9'
Sample Response
{"data": {"type": "transactions","id": "6af0d511-e5a8-4adb-9b8e-f21e69ee2e44","attributes": {"status": "SETTLED","rawText": "WARUNG BEBEK, UBUD INDONES","description": "Warung Bebek Bengil","message": null,"holdInfo": {"amount": {"currencyCode": "AUD","value": "-107.92","valueInBaseUnits": -10792},"foreignAmount": null},"roundUp": {"amount": {"currencyCode": "AUD","value": "-0.08","valueInBaseUnits": -8},"boostPortion": null},"cashback": null,"amount": {"currencyCode": "AUD","value": "-107.92","valueInBaseUnits": -10792},"foreignAmount": {"currencyCode": "IDR","value": "-1053698.77","valueInBaseUnits": -105369877},"settledAt": "2021-02-20T04:00:00+11:00","createdAt": "2021-02-20T04:00:00+11:00"},"relationships": {"account": {"data": {"type": "accounts","id": "ca92068f-6c0e-4f63-9169-cbf0ecf97adb"},"links": {"related": "https://api.up.com.au/api/v1/accounts/ca92068f-6c0e-4f63-9169-cbf0ecf97adb"}},"transferAccount": {"data": null},"category": {"data": null},"parentCategory": {"data": null},"tags": {"data": [],"links": {"self": "https://api.up.com.au/api/v1/transactions/6af0d511-e5a8-4adb-9b8e-f21e69ee2e44/relationships/tags"}}},"links": {"self": "https://api.up.com.au/api/v1/transactions/6af0d511-e5a8-4adb-9b8e-f21e69ee2e44"}}}
GET /accounts/{accountId}/transactionsRetrieve a list of all transactions for a specific account. The returned
list is paginated and can be scrolled by following the
next and prev links where present. To narrow the results to a
specific date range pass one or both of filter[since] and
filter[until] in the query string. These filter parameters
should not be used for pagination. Results are ordered newest first
to oldest last.
accountIdstring
The unique identifier for the account.
33b2e9f7-e464-4c64-9829-7ea9e1605a2apage[size]integer
The number of records to return in each page.
?page[size]=30filter[status]
The transaction status for which to return records. This
can be used to filter HELD transactions from those
that are SETTLED.
?filter[status]=HELDfilter[since]string
The start date-time from which to return records, formatted according to rfc-3339. Not to be used for pagination purposes.
?filter[since]=2020-01-01T01:02:03+10:00filter[until]string
The end date-time up to which to return records, formatted according to rfc-3339. Not to be used for pagination purposes.
?filter[until]=2020-02-01T01:02:03+10:00filter[category]string
The category identifier for which to filter transactions.
Both parent and child categories can be filtered through
this parameter. Providing an invalid category identifier
results in a 404 response.
?filter[category]=good-lifefilter[tag]string
A transaction tag to filter for which to return records. If the tag does not exist, zero records are returned and a success response is given.
?filter[tag]=Holiday"+" must be encoded as "%2B" in order to be received as a plus-sign and not as a space character.dataArray [TransactionResource]
The list of transactions returned in this response.
typestring
The type of this resource: transactions
idstring
The unique identifier for this transaction.
attributesobject
statusTransactionStatusEnum
The current processing status of this transaction, according to whether or not this transaction has settled or is still held.
rawTextstring
The original, unprocessed text of the transaction. This is often not a perfect indicator of the actual merchant, but it is useful for reconciliation purposes in some cases.
descriptionstring
A short description for this transaction. Usually the merchant name for purchases.
messagestring
Attached message for this transaction, such as a payment message, or a transfer note.
holdInfoHoldInfoObject
If this transaction is currently in the HELD status, or was ever in
the HELD status, the amount and foreignAmount of the
transaction while HELD.
amountMoneyObject
The amount of this transaction while in the HELD status, in
Australian dollars.
currencyCodestring
The ISO 4217 currency code.
valuestring
The amount of money, formatted as a string in the relevant currency.
For example, for an Australian dollar value of $10.56, this field will
be "10.56". The currency symbol is not included in the string.
valueInBaseUnitsinteger
The amount of money in the smallest denomination for the currency, as a
64-bit integer. For example, for an Australian dollar value of $10.56,
this field will be 1056.
foreignAmountMoneyObject
The foreign currency amount of this transaction while in the HELD
status. This field will be null for domestic transactions. The amount
was converted to the AUD amount reflected in the amount field.
currencyCodestring
The ISO 4217 currency code.
valuestring
The amount of money, formatted as a string in the relevant currency.
For example, for an Australian dollar value of $10.56, this field will
be "10.56". The currency symbol is not included in the string.
valueInBaseUnitsinteger
The amount of money in the smallest denomination for the currency, as a
64-bit integer. For example, for an Australian dollar value of $10.56,
this field will be 1056.
roundUpRoundUpObject
Details of how this transaction was rounded-up. If no Round Up was
applied this field will be null.
amountMoneyObject
The total amount of this Round Up, including any boosts, represented as a negative value.
currencyCodestring
The ISO 4217 currency code.
valuestring
The amount of money, formatted as a string in the relevant currency.
For example, for an Australian dollar value of $10.56, this field will
be "10.56". The currency symbol is not included in the string.
valueInBaseUnitsinteger
The amount of money in the smallest denomination for the currency, as a
64-bit integer. For example, for an Australian dollar value of $10.56,
this field will be 1056.
boostPortionMoneyObject
The portion of the Round Up amount owing to boosted Round Ups,
represented as a negative value. If no boost was added to the Round Up
this field will be null.
currencyCodestring
The ISO 4217 currency code.
valuestring
The amount of money, formatted as a string in the relevant currency.
For example, for an Australian dollar value of $10.56, this field will
be "10.56". The currency symbol is not included in the string.
valueInBaseUnitsinteger
The amount of money in the smallest denomination for the currency, as a
64-bit integer. For example, for an Australian dollar value of $10.56,
this field will be 1056.
cashbackCashbackObject
If all or part of this transaction was instantly reimbursed in the form of cashback, details of the reimbursement.
descriptionstring
A brief description of why this cashback was paid.
amountMoneyObject
The total amount of cashback paid, represented as a positive value.
currencyCodestring
The ISO 4217 currency code.
valuestring
The amount of money, formatted as a string in the relevant currency.
For example, for an Australian dollar value of $10.56, this field will
be "10.56". The currency symbol is not included in the string.
valueInBaseUnitsinteger
The amount of money in the smallest denomination for the currency, as a
64-bit integer. For example, for an Australian dollar value of $10.56,
this field will be 1056.
amountMoneyObject
The amount of this transaction in Australian dollars. For
transactions that were once HELD but are now SETTLED, refer to
the holdInfo field for the original amount the transaction was
HELD at.
currencyCodestring
The ISO 4217 currency code.
valuestring
The amount of money, formatted as a string in the relevant currency.
For example, for an Australian dollar value of $10.56, this field will
be "10.56". The currency symbol is not included in the string.
valueInBaseUnitsinteger
The amount of money in the smallest denomination for the currency, as a
64-bit integer. For example, for an Australian dollar value of $10.56,
this field will be 1056.
foreignAmountMoneyObject
The foreign currency amount of this transaction. This field will be
null for domestic transactions. The amount was converted to the AUD
amount reflected in the amount of this transaction. Refer to the
holdInfo field for the original foreignAmount the transaction was
HELD at.
currencyCodestring
The ISO 4217 currency code.
valuestring
The amount of money, formatted as a string in the relevant currency.
For example, for an Australian dollar value of $10.56, this field will
be "10.56". The currency symbol is not included in the string.
valueInBaseUnitsinteger
The amount of money in the smallest denomination for the currency, as a
64-bit integer. For example, for an Australian dollar value of $10.56,
this field will be 1056.
settledAtstring (date-time)
The date-time at which this transaction settled. This field will be
null for transactions that are currently in the HELD status.
createdAtstring (date-time)
The date-time at which this transaction was first encountered.
relationshipsobject
accountobject
dataobject
typestring
The type of this resource: accounts
idstring
The unique identifier of the resource within its type.
linksobject
relatedstring
The link to retrieve the related resource(s) in this relationship.
transferAccountobject
If this transaction is a transfer between accounts, this field will
contain the account the transaction went to/came from. The amount
field can be used to determine the direction of the transfer.
dataobject
typestring
The type of this resource: accounts
idstring
The unique identifier of the resource within its type.
linksobject
relatedstring
The link to retrieve the related resource(s) in this relationship.
categoryobject
dataobject
typestring
The type of this resource: categories
idstring
The unique identifier of the resource within its type.
linksobject
relatedstring
The link to retrieve the related resource(s) in this relationship.
parentCategoryobject
dataobject
typestring
The type of this resource: categories
idstring
The unique identifier of the resource within its type.
linksobject
relatedstring
The link to retrieve the related resource(s) in this relationship.
tagsobject
dataArray [object]
typestring
The type of this resource: tags
idstring
The label of the tag, which also acts as the tag’s unique identifier.
linksobject
selfstring
The link to retrieve or modify linkage between this resources and the related resource(s) in this relationship.
linksobject
selfstring
The canonical link to this resource within the API.
linksobject
prevstring
The link to the previous page in the results. If this value is null
there is no previous page.
nextstring
The link to the next page in the results. If this value is null
there is no next page.
Sample Request
curl https://api.up.com.au/api/v1/accounts/a1d0f9fb-3a2e-4c99-9363-76c024fffc9b/transactions \-G \-H 'Authorization: Bearer up:demo:BXn56KhtxgnzOOxd' \-d 'page[size]=1' \-d 'filter[status]=HELD' \-d 'filter[category]=good-life'
Sample Response
{"data": [{"type": "transactions","id": "733d8cdb-97d5-4a73-be1e-6378159d934a","attributes": {"status": "HELD","rawText": "Spotify 0123456789","description": "Spotify","message": null,"holdInfo": {"amount": {"currencyCode": "AUD","value": "-11.95","valueInBaseUnits": -1195},"foreignAmount": null},"roundUp": null,"cashback": null,"amount": {"currencyCode": "AUD","value": "-11.95","valueInBaseUnits": -1195},"foreignAmount": null,"settledAt": null,"createdAt": "2021-02-20T09:07:58+11:00"},"relationships": {"account": {"data": {"type": "accounts","id": "a1d0f9fb-3a2e-4c99-9363-76c024fffc9b"},"links": {"related": "https://api.up.com.au/api/v1/accounts/a1d0f9fb-3a2e-4c99-9363-76c024fffc9b"}},"transferAccount": {"data": null},"category": {"data": {"type": "categories","id": "tv-and-music"},"links": {"related": "https://api.up.com.au/api/v1/categories/tv-and-music"}},"parentCategory": {"data": {"type": "categories","id": "good-life"},"links": {"related": "https://api.up.com.au/api/v1/categories/good-life"}},"tags": {"data": [],"links": {"self": "https://api.up.com.au/api/v1/transactions/733d8cdb-97d5-4a73-be1e-6378159d934a/relationships/tags"}}},"links": {"self": "https://api.up.com.au/api/v1/transactions/733d8cdb-97d5-4a73-be1e-6378159d934a"}}],"links": {"prev": null,"next": null}}
Some endpoints exist not to expose data, but to test the API itself. Currently there is only one endpoint in this group: ping!
GET /util/pingMake a basic ping request to the API. This is useful to verify that
authentication is functioning correctly. On authentication success an
HTTP 200 status is returned. On failure an HTTP 401 error response
is returned.
metaobject
idstring
The unique identifier of the authenticated customer.
statusEmojistring
A cute emoji that represents the response status.
errorsArray [ErrorObject]
The list of errors returned in this response.
statusstring
The HTTP status code associated with this error. This can also be obtained from the response headers. The status indicates the broad type of error according to HTTP semantics.
titlestring
A short description of this error. This should be stable across multiple occurrences of this type of error and typically expands on the reason for the status code.
detailstring
A detailed description of this error. This should be considered unique to individual occurrences of an error and subject to change. It is useful for debugging purposes.
sourceobject
If applicable, location in the request that this error relates to. This may be a parameter in the query string, or a an attribute in the request body.
parameterstring
If this error relates to a query parameter, the name of the parameter.
pointerstring
If this error relates to an attribute in the request body, a rfc-6901 JSON pointer to the attribute.
Sample Request
curl https://api.up.com.au/api/v1/util/ping \-H 'Authorization: Bearer up:demo:jrmhCCvNg4EPG0v7'
Sample Response
{"meta": {"id": "1a96cd56-5e49-4ecc-ba7e-581bff28bf7e","statusEmoji": "⚡️"}}
Sample Request
curl https://api.up.com.au/api/v1/util/ping
Sample Response
{"errors": [{"status": "401","title": "Not Authorized","detail": "The request was not authenticated because no valid credential was found in the Authorization header, or the Authorization header was not present."}]}
Webhooks provide a mechanism for a configured URL to receive events when transaction activity occurs on Up. You can think of webhooks as being like push notifications for your server-side application.
GET /webhooksRetrieve a list of configured webhooks. The returned list is
paginated and can be scrolled by following the next
and prev links where present. Results are ordered oldest first to
newest last.
page[size]integer
The number of records to return in each page.
?page[size]=30"+" must be encoded as "%2B" in order to be received as a plus-sign and not as a space character.dataArray [WebhookResource]
The list of webhooks returned in this response.
typestring
The type of this resource: webhooks
idstring
The unique identifier for this webhook.
attributesobject
urlstring
The URL that this webhook is configured to POST events to.
descriptionstring
An optional description that was provided at the time the webhook was created.
secretKeystring
A shared secret key used to sign all webhook events sent to the configured webhook URL. This field is returned only once, upon the initial creation of the webhook. If lost, create a new webhook and delete this webhook.
The webhook URL receives a request with a
X-Up-Authenticity-Signature header, which is the SHA-256 HMAC of
the entire raw request body signed using this secretKey. It is
advised to compute and check this signature to verify the
authenticity of requests sent to the webhook URL. See
Handling webhook events for full
details.
createdAtstring (date-time)
The date-time at which this webhook was created.
relationshipsobject
logsobject
linksobject
relatedstring
The link to retrieve the related resource(s) in this relationship.
linksobject
selfstring
The canonical link to this resource within the API.
linksobject
prevstring
The link to the previous page in the results. If this value is null
there is no previous page.
nextstring
The link to the next page in the results. If this value is null
there is no next page.
Sample Request
curl https://api.up.com.au/api/v1/webhooks \-G \-H 'Authorization: Bearer up:demo:c9NSNjUoNWSBrcGm' \-d 'page[size]=1'
Sample Response
{"data": [{"type": "webhooks","id": "0c9389f5-a3e9-42f0-8b2c-de6e561a5f41","attributes": {"url": "http://example.com/webhook-1","description": "Webhook number 1","createdAt": "2021-02-21T13:17:00+11:00"},"relationships": {"logs": {"links": {"related": "https://api.up.com.au/api/v1/webhooks/0c9389f5-a3e9-42f0-8b2c-de6e561a5f41/logs"}}},"links": {"self": "https://api.up.com.au/api/v1/webhooks/0c9389f5-a3e9-42f0-8b2c-de6e561a5f41"}}],"links": {"prev": null,"next": "https://api.up.com.au/api/v1/webhooks?page%5Bafter%5D=WyIyMDIxLTAyLTIxVDAyOjE3OjAwLjU0NDA1NzAwMFoiLCIwYzkzODlmNS1hM2U5LTQyZjAtOGIyYy1kZTZlNTYxYTVmNDEiXQ%3D%3D&page%5Bsize%5D=1"}}
POST /webhooksCreate a new webhook with a given URL. The URL will receive webhook
events as JSON-encoded POST requests. The URL must respond with a HTTP
200 status on success.
There is currently a limit of 10 webhooks at any given time. Once this limit is reached, existing webhooks will need to be deleted before new webhooks can be created.
Event delivery is retried with exponential backoff if the URL is
unreachable or it does not respond with a 200 status. The response
includes a secretKey attribute, which is used to sign requests sent to
the webhook URL. It will not be returned from any other endpoints within
the Up API. If the secretKey is lost, simply create a new webhook with
the same URL, capture its secretKey and then delete the original
webhook. See Handling webhook events for
details on how to process webhook events.
It is probably a good idea to test the webhook by
sending it a PING event after creating
it.
dataWebhookInputResource
The webhook resource to create.
attributesobject
urlstring (uri)
The URL that this webhook should post events to. This must be a valid HTTP or HTTPS URL that does not exceed 300 characters in length.
descriptionstring
An optional description for this webhook, up to 64 characters in length.
dataWebhookResource
The webhook that was created.
typestring
The type of this resource: webhooks
idstring
The unique identifier for this webhook.
attributesobject
urlstring
The URL that this webhook is configured to POST events to.
descriptionstring
An optional description that was provided at the time the webhook was created.
secretKeystring
A shared secret key used to sign all webhook events sent to the configured webhook URL. This field is returned only once, upon the initial creation of the webhook. If lost, create a new webhook and delete this webhook.
The webhook URL receives a request with a
X-Up-Authenticity-Signature header, which is the SHA-256 HMAC of
the entire raw request body signed using this secretKey. It is
advised to compute and check this signature to verify the
authenticity of requests sent to the webhook URL. See
Handling webhook events for full
details.
createdAtstring (date-time)
The date-time at which this webhook was created.
relationshipsobject
logsobject
linksobject
relatedstring
The link to retrieve the related resource(s) in this relationship.
linksobject
selfstring
The canonical link to this resource within the API.
Sample Request
curl https://api.up.com.au/api/v1/webhooks \-XPOST \-H 'Authorization: Bearer up:demo:QrQq3ee8D9fpormf' \-H 'Content-Type: application/json' \--data-binary '{"data": {"attributes": {"url": "http://example.com/webhook","description": "Example webhook"}}}'
Sample Response
{"data": {"type": "webhooks","id": "bbd5c365-8681-4916-bbb4-fd785a7ceefa","attributes": {"url": "http://example.com/webhook","description": "Example webhook","secretKey": "jq4WeQvggTRTHPUKayQ7gADv9hC9cazuEdac8uaG5GZZyovg2E2u9txirR4iizcj","createdAt": "2021-02-23T13:17:01+11:00"},"relationships": {"logs": {"links": {"related": "https://api.up.com.au/api/v1/webhooks/bbd5c365-8681-4916-bbb4-fd785a7ceefa/logs"}}},"links": {"self": "https://api.up.com.au/api/v1/webhooks/bbd5c365-8681-4916-bbb4-fd785a7ceefa"}}}
GET /webhooks/{id}Retrieve a specific webhook by providing its unique identifier.
idstring
The unique identifier for the webhook.
c5f93088-fe0f-4bf9-b58c-ece4dacf0133dataWebhookResource
The webhook returned in this response.
typestring
The type of this resource: webhooks
idstring
The unique identifier for this webhook.
attributesobject
urlstring
The URL that this webhook is configured to POST events to.
descriptionstring
An optional description that was provided at the time the webhook was created.
secretKeystring
A shared secret key used to sign all webhook events sent to the configured webhook URL. This field is returned only once, upon the initial creation of the webhook. If lost, create a new webhook and delete this webhook.
The webhook URL receives a request with a
X-Up-Authenticity-Signature header, which is the SHA-256 HMAC of
the entire raw request body signed using this secretKey. It is
advised to compute and check this signature to verify the
authenticity of requests sent to the webhook URL. See
Handling webhook events for full
details.
createdAtstring (date-time)
The date-time at which this webhook was created.
relationshipsobject
logsobject
linksobject
relatedstring
The link to retrieve the related resource(s) in this relationship.
linksobject
selfstring
The canonical link to this resource within the API.
Sample Request
curl https://api.up.com.au/api/v1/webhooks/afde714b-4198-48c1-af28-0d8dffac1ea4 \-H 'Authorization: Bearer up:demo:IZDcAYGh9dgmI7VH'
Sample Response
{"data": {"type": "webhooks","id": "afde714b-4198-48c1-af28-0d8dffac1ea4","attributes": {"url": "http://example.com/webhook-2","description": "Webhook number 2","createdAt": "2021-02-22T13:17:02+11:00"},"relationships": {"logs": {"links": {"related": "https://api.up.com.au/api/v1/webhooks/afde714b-4198-48c1-af28-0d8dffac1ea4/logs"}}},"links": {"self": "https://api.up.com.au/api/v1/webhooks/afde714b-4198-48c1-af28-0d8dffac1ea4"}}}
DELETE /webhooks/{id}Delete a specific webhook by providing its unique identifier. Once deleted, webhook events will no longer be sent to the configured URL.
idstring
The unique identifier for the webhook.
e7090f89-777b-4d5e-b918-5f312930cd6bSample Request
curl https://api.up.com.au/api/v1/webhooks/9927a5d1-6697-4b3b-8231-f72f11a1bfc9 \-XDELETE \-H 'Authorization: Bearer up:demo:G5ZMAHnCIMHErENn'
POST /webhooks/{webhookId}/pingSend a PING event to a webhook by providing its unique identifier.
This is useful for testing and debugging purposes. The event is delivered
asynchronously and its data is returned in the response to this request.
webhookIdstring
The unique identifier for the webhook.
f95300e7-fc15-496c-9e6a-510e3f08e8a0dataWebhookEventResource
The webhook event data sent to the subscribed webhook.
typestring
The type of this resource: webhook-events
idstring
The unique identifier for this event. This will remain constant across delivery retries.
attributesobject
eventTypeWebhookEventTypeEnum
The type of this event. This can be used to determine what action to take in response to the event.
createdAtstring (date-time)
The date-time at which this event was generated.
relationshipsobject
webhookobject
dataobject
typestring
The type of this resource: webhooks
idstring
The unique identifier of the resource within its type.
linksobject
relatedstring
The link to retrieve the related resource(s) in this relationship.
transactionobject
dataobject
typestring
The type of this resource: transactions
idstring
The unique identifier of the resource within its type.
linksobject
relatedstring
The link to retrieve the related resource(s) in this relationship.
Sample Request
curl https://api.up.com.au/api/v1/webhooks/335ed20b-1df5-4f67-9a9d-593cd6c10078/ping \-XPOST \-H 'Authorization: Bearer up:demo:viUlUyR4OmOIVdTd' \-H 'Content-Type: application/json' \--data-binary ''
Sample Response
{"data": {"type": "webhook-events","id": "8fff032c-df73-432f-b9a9-28ca0c0b1e65","attributes": {"eventType": "PING","createdAt": "2021-02-23T13:17:05+11:00"},"relationships": {"webhook": {"data": {"type": "webhooks","id": "335ed20b-1df5-4f67-9a9d-593cd6c10078"},"links": {"related": "https://api.up.com.au/api/v1/webhooks/335ed20b-1df5-4f67-9a9d-593cd6c10078"}}}}}
GET /webhooks/{webhookId}/logsRetrieve a list of delivery logs for a webhook by providing its unique
identifier. This is useful for analysis and debugging purposes. The
returned list is paginated and can be scrolled by
following the next and prev links where present. Results are ordered
newest first to oldest last. Logs may be automatically purged after a
period of time.
webhookIdstring
The unique identifier for the webhook.
18cbc33f-d374-4c74-aa26-8d210d0bc87bpage[size]integer
The number of records to return in each page.
?page[size]=30"+" must be encoded as "%2B" in order to be received as a plus-sign and not as a space character.dataArray [WebhookDeliveryLogResource]
The list of delivery logs returned in this response.
typestring
The type of this resource: webhook-delivery-logs
idstring
The unique identifier for this log entry.
attributesobject
requestobject
Information about the request that was sent to the webhook URL.
bodystring
The payload that was sent in the request body.
responseobject
Information about the response that was received from the webhook URL.
statusCodeinteger
The HTTP status code received in the response.
bodystring
The payload that was received in the response body.
deliveryStatusWebhookDeliveryStatusEnum
The success or failure status of this delivery attempt.
createdAtstring (date-time)
The date-time at which this log entry was created.
relationshipsobject
webhookEventobject
dataobject
typestring
The type of this resource: webhook-events
idstring
The unique identifier of the resource within its type.
linksobject
prevstring
The link to the previous page in the results. If this value is null
there is no previous page.
nextstring
The link to the next page in the results. If this value is null
there is no next page.
Sample Request
curl https://api.up.com.au/api/v1/webhooks/2be0b041-2b61-45e9-b4a5-671b1c3d80bf/logs \-G \-H 'Authorization: Bearer up:demo:nCGNvpn1rjKCpmyW' \-d 'page[size]=1'
Sample Response
{"data": [{"type": "webhook-delivery-logs","id": "e81d95e5-0f8a-4f32-a99f-7d3b7f0cb75a","attributes": {"request": {"body": "{\"data\":{\"type\":\"webhook-events\",\"id\":\"fd451967-591b-4b39-a0ec-cadbaf5d09cd\",\"attributes\":{\"eventType\":\"TRANSACTION_CREATED\",\"createdAt\":\"2021-02-22T13:18:07+11:00\"},\"relationships\":{\"webhook\":{\"data\":{\"type\":\"webhooks\",\"id\":\"2be0b041-2b61-45e9-b4a5-671b1c3d80bf\"},\"links\":{\"related\":\"https://api.up.com.au/api/v1/webhooks/2be0b041-2b61-45e9-b4a5-671b1c3d80bf\"}},\"transaction\":{\"data\":{\"type\":\"transactions\",\"id\":\"3e471dd2-124d-4ef1-9541-5240fceb7902\"},\"links\":{\"related\":\"https://api.up.com.au/api/v1/transactions/3e471dd2-124d-4ef1-9541-5240fceb7902\"}}}}}"},"response": {"statusCode": 200,"body": "{\"ok\":true}"},"deliveryStatus": "DELIVERED","createdAt": "2021-02-22T13:18:07+11:00"},"relationships": {"webhookEvent": {"data": {"type": "webhook-events","id": "fd451967-591b-4b39-a0ec-cadbaf5d09cd"}}}}],"links": {"prev": null,"next": "https://api.up.com.au/api/v1/webhooks/2be0b041-2b61-45e9-b4a5-671b1c3d80bf/logs?page%5Bafter%5D=WyIyMDIxLTAyLTIyVDAyOjE4OjA3LjU1ODY1ODAwMFoiLCJlODFkOTVlNS0wZjhhLTRmMzItYTk5Zi03ZDNiN2YwY2I3NWEiXQ%3D%3D&page%5Bsize%5D=1"}}
POST {webhookURL}// webhookOnce you have created a webhook in the Up API, events are sent to the
webhook’s configured URL as JSON-encoded POST requests. The webhook
URL must respond with a HTTP 200 status on success.
It is important that the URL responds in a timely manner. If the URL takes too long to respond (currently 30s), the request will be timed out. For this reason it is strongly advised to avoid any heavy processing before a response has been returned from the URL. A common solution to this problem is to use a message broker such as RabbitMQ to do the work asynchronously.
Event delivery is retried with exponential backoff in the case of any
non-200 response status, if the URL is unreachable, or if the request
is timed out.
Refer to the eventType attribute in order to determine what course of
action to take when handling the event. The following event types are
currently sent:
PING
Manually triggered by calls to the webhook ping endpoint. Used for
testing and debugging purposes.
TRANSACTION_CREATED
Triggered whenever a new transaction is created in Up. This event
includes a transaction relationship that provides the unique
identifier for the transaction and a link to the transaction within the
Up API. This link should be used to retrieve the complete transaction
data.
TRANSACTION_SETTLED
Triggered whenever a transaction transitions from the HELD status to
the SETTLED status. This event includes a transaction relationship
that provides the unique identifier for the transaction and a link to
the transaction within the Up API. This link should be used to retrieve
the complete transaction data.
Due to external factors in banking processes, on rare occasions this
event may not be triggered. Separate TRANSACTION_DELETED and
TRANSACTION_CREATED events will be received in its place.
TRANSACTION_DELETED
Triggered whenever a HELD transaction is deleted from Up. This
generally occurs for example when a hotel deposit is returned. This
event includes a transaction relationship that provides the unique
identifier for the transaction, however no link is provided to the
transaction within the Up API as it no longer exists.
Incoming webhook event requests include a X-Up-Authenticity-Signature
header, which can be used to verify that the event was sent by Up.
Verification of the signature requires knowledge of the shared
secretKey that was returned upon creation of the webhook. This key is
known only to your application and to Up.
The verification process involves:
secretKey.X-Up-Authenticity-Signature header.If the computed SHA-256 HMAC signature matches the
X-Up-Authenticity-Signature header, the request is valid.
A few language-specific examples follow.
Ruby:
This example uses the Ruby on Rails framework.
require 'openssl'
def handle_webhook_event
received_signature =
request.headers['X-Up-Authenticity-Signature']
signature = OpenSSL::HMAC.hexdigest(
'SHA256',
secret_key,
request.raw_post,
)
if Rack::Utils.secure_compare(received_signature, signature)
# Process webhook event
end
endPHP:
This example uses the Laravel framework.
public function handleWebhookEvent(Request $request) {
$received_signature = $request->header(
'X-Up-Authenticity-Signature',
''
);
$raw_body = $request->getContent();
$signature = hash_hmac('sha256', $raw_body, $this->secretKey);
if (hash_equals($signature, $received_signature)) {
// Process webhook event
}
}Go:
This example is in plain Go.
import (
"crypto/hmac"
"crypto/sha256"
"encoding/hex"
"io"
"net/http"
)
func handleWebhookEvent(w http.ResponseWriter, r *http.Request) {
receivedSignature, _ := hex.DecodeString(
r.Header.Get("X-Up-Authenticity-Signature"),
)
mac := hmac.New(sha256.New, secretKey)
io.Copy(mac, r.Body)
signature := mac.Sum(nil)
if hmac.Equal(signature, receivedSignature)
// Process webhook event
}
}If the secretKey for a webhook is lost, simply create a new webhook
with the same URL, capture the returned secretKey and delete the
original webhook.
X-Up-Authenticity-Signaturestring
The SHA-256 HMAC signature of the raw request body, signed using
the secretKey of the webhook.
X-Up-Authenticity-Signature: 317c0a8ea81df3f53c1d2aef5dcbf60492d0df557197b2990e71daa4a0693364dataWebhookEventResource
The webhook event data sent to the subscribed webhook.
typestring
The type of this resource: webhook-events
idstring
The unique identifier for this event. This will remain constant across delivery retries.
attributesobject
eventTypeWebhookEventTypeEnum
The type of this event. This can be used to determine what action to take in response to the event.
createdAtstring (date-time)
The date-time at which this event was generated.
relationshipsobject
webhookobject
dataobject
typestring
The type of this resource: webhooks
idstring
The unique identifier of the resource within its type.
linksobject
relatedstring
The link to retrieve the related resource(s) in this relationship.
transactionobject
dataobject
typestring
The type of this resource: transactions
idstring
The unique identifier of the resource within its type.
linksobject
relatedstring
The link to retrieve the related resource(s) in this relationship.
Sample Payload
{"data": {"type": "webhook-events","id": "ca651ec7-816e-4277-9c87-c58e0273329a","attributes": {"eventType": "TRANSACTION_CREATED","createdAt": "2021-02-23T13:17:01+11:00"},"relationships": {"webhook": {"data": {"type": "webhooks","id": "6e333ed8-c0e4-4a9a-977f-fd50fdf1f6f7"},"links": {"related": "https://api.up.com.au/api/v1/webhooks/6e333ed8-c0e4-4a9a-977f-fd50fdf1f6f7"}},"transaction": {"data": {"type": "transactions","id": "45fbcbb4-72ec-4528-bdf6-f8730b1afef3"},"links": {"related": "https://api.up.com.au/api/v1/transactions/45fbcbb4-72ec-4528-bdf6-f8730b1afef3"}}}}}